Add filter facets, new-to-Helios flag, and original-style student cards

This commit is contained in:
Ian Gulliver
2026-08-15 23:07:09 -07:00
parent dcb6266493
commit b4baa415f8
9 changed files with 411 additions and 31 deletions
+50
View File
@@ -0,0 +1,50 @@
// Command columns prints the column names of each directory table in the configured source.
package main
import (
"fmt"
"log"
"os"
"sort"
"heliosian/internal/data"
)
func main() {
sheetID := os.Getenv("DIRECTORY_SHEET")
var source data.Source
if sheetID == "" {
source = data.Dir{Root: "sampledata"}
} else {
s, err := data.NewSheet(map[string]string{"directory": sheetID})
if err != nil {
log.Fatalf("[ERROR] load directory sheet: %v", err)
}
source = s
}
for _, name := range []string{"Basic Directory", "Staff Details", "Classrooms", "Schedules", "Grade Lookup", "Room Parents", "Departments"} {
rows, err := source.Table("directory", name)
if err != nil {
log.Fatalf("[ERROR] table %s: %v", name, err)
}
if len(rows) == 0 {
fmt.Printf("%s: no rows\n", name)
continue
}
seen := map[string]bool{}
columns := []string{}
for _, row := range rows {
for column := range row {
if !seen[column] {
seen[column] = true
columns = append(columns, column)
}
}
}
sort.Strings(columns)
fmt.Printf("%s:\n", name)
for _, column := range columns {
fmt.Printf(" %s\n", column)
}
}
}