Files
HeatGuard/internal/cli/toggle.go
vikingowl 1c9db02334 feat: add web UI with full CRUD setup page
Add server-side rendered setup UI accessible via `heatwave web`.
The dashboard is now re-rendered per request and includes a nav bar
linking to the new /setup page. Setup provides full CRUD for profiles,
rooms, devices, occupants, AC units (with room assignment), scenario
toggles, and forecast fetching — all via POST/redirect/GET forms.

- Add ShowNav field to DashboardData for conditional nav bar
- Extract fetchForecastForProfile() for reuse by web handler
- Create setup.html.tmpl with Tailwind-styled entity sections
- Create web_handlers.go with 15 route handlers and flash cookies
- Switch web.go from pre-rendered to per-request dashboard rendering
- Graceful dashboard fallback when no forecast data exists
2026-02-09 10:39:00 +01:00

35 lines
679 B
Go

package cli
import (
"fmt"
"github.com/spf13/cobra"
)
func init() {
toggleCmd := &cobra.Command{
Use: "toggle <scenario>",
Short: "Toggle a scenario (gaming, cooking, ac-off)",
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
p, err := getActiveProfile()
if err != nil {
return err
}
name := args[0]
active, _ := db.GetActiveToggleNames(p.ID)
newState := !active[name]
if err := db.SetToggle(p.ID, name, newState); err != nil {
return err
}
state := "OFF"
if newState {
state = "ON"
}
fmt.Printf("Toggle %q: %s\n", name, state)
return nil
},
}
rootCmd.AddCommand(toggleCmd)
}