summaryrefslogtreecommitdiff
path: root/courses.go (follow)
Commit message (Expand)AuthorAgeFilesLines
* *.go, tmpl/staff.html: Allow staff to export choicesRunxi Yu2024-10-091-0/+2
* {courses,wsc}.go: Atomic 64-bit alignmentRunxi Yu2024-10-091-3/+6
* *.go: Update commentsRunxi Yu2024-10-091-9/+4
* {courses,index}.go, student.html, style.css: Group by course groupRunxi Yu2024-10-091-9/+11
* *.go: Use sync.Map instead of map[int]*courseT for coursesRunxi Yu2024-10-091-35/+18
* {courses,wsc,wsp}.go: Usems should be sync.MapRunxi Yu2024-10-091-5/+2
* {courses,wsc,wsm}.go: map[courseGroupT](bool->struct{})Runxi Yu2024-10-081-3/+3
* *.go: Further wrap errorsRunxi Yu2024-10-081-8/+14
* err.go: Create, and unify some error definitionsRunxi Yu2024-10-081-7/+0
* {courses,wsm,wsp}.go: Make course.Selected atomicRunxi Yu2024-10-071-4/+5
* *.go: Limit to approximately 80 characters per lineRunxi Yu2024-10-061-12/+56
* {courses,wsc,wsm,wsp}.go: Send course number immediately on user interactionRunxi Yu2024-10-061-2/+9
* *: Overhaul structure again and embed everythingRunxi Yu2024-10-061-0/+229
* *.go: Move to backendRunxi Yu2024-10-051-229/+0
* {courses,wsm}.go: Use in-memory structure to fetch cgroup, not SQLRunxi Yu2024-10-051-17/+6
* {courses,sem,ws,wsm}.go: Second step towards an efficient state propagatorRunxi Yu2024-10-051-4/+6
* {courses,sem,ws}.go: First step towards an efficient state propagatorRunxi Yu2024-10-051-1/+10
* courses.go: ReformatRunxi Yu2024-10-051-1/+1
* {courses,wsm}.go: Add getCourseByIDRunxi Yu2024-10-051-0/+6
* {courses,wsm}.go: Add (*courseT).decrementSelectedAndPropagateRunxi Yu2024-10-051-0/+11
* {courses,ws,wsm}.go: Update userCourseGroups during choose/unchooseRunxi Yu2024-10-051-7/+18
* {courses,ws}.go: Populate userCourseGroups in a separate functionRunxi Yu2024-10-051-0/+34
* {courses,ws}.go: Populate userCourseGroups for each connectionRunxi Yu2024-10-041-5/+19
* courses.go, schema.sql: Validate course{Type,Group} in server, not SQLRunxi Yu2024-10-041-10/+44
* courses.go: Propagate course.Selected when setting up coursesRunxi Yu2024-10-011-2/+7
* *: Change license to AGPL-3.0-or-laterRunxi Yu2024-09-301-21/+11
* courses.go: courseT.{Lock->SelectedLock}Runxi Yu2024-09-291-12/+12
* courses.go: Add a RWMutex to courseTRunxi Yu2024-09-281-8/+15
* courses.go, etc: Make courses a map instead of a sliceRunxi Yu2024-09-261-3/+3
* *.go, cca.scfg.example: Expose performance optionsRunxi Yu2024-09-261-1/+1
* *.go: Wrap errorsRunxi Yu2024-09-261-3/+4
* *.go: LintingRunxi Yu2024-09-241-11/+11
* courses.go: Comment out coursetype_t enum to make linter happy for nowRunxi Yu2024-09-241-5/+7
* *.go: Add more licensesRunxi Yu2024-09-091-0/+30
* *.go: Add commentsRunxi Yu2024-09-091-2/+18
* courses.go: Remove unused importsRunxi Yu2024-09-081-1/+0
* *: Display coursesRunxi Yu2024-09-081-0/+69