diff --git a/src/cmd/server/handler/testdata/index.tmpl b/src/cmd/server/handler/testdata/index.tmpl index ea96d10..618a6d1 100644 --- a/src/cmd/server/handler/testdata/index.tmpl +++ b/src/cmd/server/handler/testdata/index.tmpl @@ -1,11 +1,6 @@
-

Feeds

@@ -13,7 +8,7 @@
{{ range feeds }}
-

() {{ namespan "version.url" .Version.URL }}

+

{{ .Version.URL }}

{{ .Version.Created }} (last {{ .Execution.Executed }})
@{{ .Version.Cron }} ~"{{ .Version.Pattern }}"
{{ .Version.WebhookMethod }} {{ .Version.WebhookURL }} | {{ .Version.WebhookBody }}
@@ -21,16 +16,22 @@ {{ end }}
-
+


-

New

+

+ {{ if eq "" .editing.ID }} + New + {{ else }} + Update (clear) + {{ end }} +

- {{ range feedsVersionFields }} - {{ if ne . "Created" }} + {{ range $k, $v := .editing }} + {{ if not (in $k "Created" "Deleted" "Updated" "ID") }}
- - + +
{{ end }} {{ end }} diff --git a/src/cmd/server/handler/ui.go b/src/cmd/server/handler/ui.go index f2fe373..a019bc9 100644 --- a/src/cmd/server/handler/ui.go +++ b/src/cmd/server/handler/ui.go @@ -2,7 +2,6 @@ package handler import ( "encoding/json" - "fmt" "net/http" "os" "path" @@ -30,16 +29,27 @@ func (h Handler) ui(w http.ResponseWriter, r *http.Request) error { func (h Handler) uiIndex(w http.ResponseWriter, r *http.Request) error { ctx := r.Context() + var editing struct { + feeds.Entry `json:",inline"` + feeds.Version `json:",inline"` + } + all := []feeds.Feed{} + if err := feeds.ForEach(ctx, func(f feeds.Feed) error { + all = append(all, f) + if f.Entry.ID == r.URL.Query().Get("edit") { + editing.Entry = f.Entry + editing.Version = f.Version + } + return ctx.Err() + }); err != nil { + return err + } + b, _ := os.ReadFile(path.Join(dir, "index.tmpl")) tmpl := template.New(r.URL.Path).Funcs(template.FuncMap{ - "feeds": func() ([]feeds.Feed, error) { - all := []feeds.Feed{} - err := feeds.ForEach(ctx, func(f feeds.Feed) error { - all = append(all, f) - return ctx.Err() - }) - return all, err + "feeds": func() []feeds.Feed { + return all }, "feedsVersionFields": func() []string { b, _ := json.Marshal(feeds.Version{}) @@ -52,8 +62,8 @@ func (h Handler) uiIndex(w http.ResponseWriter, r *http.Request) error { slices.Sort(ks) return ks }, - "namespan": func(k string, v any) string { - return fmt.Sprintf("%s", k, v) + "in": func(k string, v ...string) bool { + return slices.Contains(v, k) }, }) @@ -62,5 +72,14 @@ func (h Handler) uiIndex(w http.ResponseWriter, r *http.Request) error { return err } - return tmpl.Execute(w, nil) + args := map[string]any{} + + { + b, _ := json.Marshal(editing) + var m map[string]any + json.Unmarshal(b, &m) + args["editing"] = m + } + + return tmpl.Execute(w, args) }