83 lines
1.6 KiB
Go
83 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/spf13/viper"
|
|
"gopkg.in/macaron.v1"
|
|
)
|
|
|
|
func outletsPage(ctx *macaron.Context) {
|
|
|
|
ctx.Data["outlets"] = outlets
|
|
|
|
ctx.HTML(200, "outlets")
|
|
}
|
|
|
|
type OutletPostForm struct {
|
|
Description string `form:"description" binding:"Required"`
|
|
OnBoot string `form:"onboot" binding:"Required"`
|
|
}
|
|
|
|
func outletEditPage(ctx *macaron.Context) {
|
|
var err error
|
|
var num uint64
|
|
var o Outlet
|
|
num, err = strconv.ParseUint(ctx.Params(":num"), 10, 64)
|
|
if err != nil {
|
|
ctx.JSON(http.StatusOK, Dictionary{
|
|
"result": "error",
|
|
"error": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
|
|
o = outlets[num]
|
|
ctx.Data["outlet"] = o
|
|
|
|
ctx.Data["onboot_values"] = []string{"on", "off", "last"}
|
|
ctx.HTML(200, "outlet_edit")
|
|
}
|
|
|
|
func outletEditPost(ctx *macaron.Context, f OutletPostForm) {
|
|
var err error
|
|
var num uint64
|
|
|
|
num, err = strconv.ParseUint(ctx.Params(":num"), 10, 64)
|
|
if err != nil {
|
|
ctx.JSON(http.StatusOK, Dictionary{
|
|
"result": "error",
|
|
"error": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
|
|
onboot := "on"
|
|
onbootForm := strings.ToLower(strings.TrimSpace(f.OnBoot))
|
|
switch onbootForm {
|
|
case
|
|
"on",
|
|
"off",
|
|
"last":
|
|
onboot = onbootForm
|
|
default:
|
|
outletsPage(ctx)
|
|
return
|
|
}
|
|
|
|
outlets[num].Channel.OnBoot = onboot
|
|
s1 := fmt.Sprintf("boards.%s.channels.%s.onboot", outlets[num].Board.ID, outlets[num].Channel.ID)
|
|
viper.Set(s1, onboot)
|
|
|
|
outlets[num].Description = strings.TrimSpace(f.Description)
|
|
s2 := fmt.Sprintf("outlets.%s.description", outlets[num].ID)
|
|
viper.Set(s2, outlets[num].Description)
|
|
|
|
viper.WriteConfig()
|
|
|
|
ctx.Redirect("/outlets")
|
|
}
|