mirror of
https://github.com/Bornholm/formidable.git
synced 2025-07-21 21:11:33 +02:00
chore: tailwindcss theme + goreleaser basic recipe
This commit is contained in:
@ -3,6 +3,7 @@ package route
|
||||
import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"forge.cadoles.com/wpetit/formidable/internal/jsonpointer"
|
||||
@ -66,6 +67,10 @@ func createHandleFormHandlerFunc(schema *jsonschema.Schema, defaults, values int
|
||||
data.Error = validationErr
|
||||
}
|
||||
|
||||
if data.Error == nil {
|
||||
data.SuccessMessage = "Data updated."
|
||||
}
|
||||
|
||||
if err := template.Exec("index.html.tmpl", w, data); err != nil {
|
||||
panic(errors.WithStack(err))
|
||||
}
|
||||
@ -89,6 +94,10 @@ func handleForm(form url.Values, schema *jsonschema.Schema, values interface{})
|
||||
|
||||
switch prefix {
|
||||
case "bool":
|
||||
if fieldValues[0] == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
booVal, err := parseBoolean(fieldValues[0])
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "could not parse boolean field '%s'", property)
|
||||
@ -101,6 +110,23 @@ func handleForm(form url.Values, schema *jsonschema.Schema, values interface{})
|
||||
return nil, errors.Wrapf(err, "could not set property '%s' with value '%v'", property, fieldValues[0])
|
||||
}
|
||||
|
||||
case "num":
|
||||
if fieldValues[0] == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
numVal, err := parseNumeric(fieldValues[0])
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "could not parse numeric field '%s'", property)
|
||||
}
|
||||
|
||||
pointer := jsonpointer.New(property)
|
||||
|
||||
values, err = pointer.Force(values, numVal)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "could not set property '%s' with value '%v'", property, fieldValues[0])
|
||||
}
|
||||
|
||||
case "add":
|
||||
pointer := jsonpointer.New(property)
|
||||
|
||||
@ -146,6 +172,15 @@ func parseBoolean(value string) (bool, error) {
|
||||
}
|
||||
}
|
||||
|
||||
func parseNumeric(value string) (float64, error) {
|
||||
numVal, err := strconv.ParseFloat(value, 64)
|
||||
if err != nil {
|
||||
return 0, errors.WithStack(err)
|
||||
}
|
||||
|
||||
return numVal, nil
|
||||
}
|
||||
|
||||
func parseFieldName(name string) (string, string, error) {
|
||||
tokens := strings.SplitN(name, ":", 2)
|
||||
|
||||
|
@ -1,12 +1,14 @@
|
||||
package route
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/go-chi/chi"
|
||||
"github.com/go-chi/chi/middleware"
|
||||
"github.com/santhosh-tekuri/jsonschema/v5"
|
||||
)
|
||||
|
||||
func NewHandler(schema *jsonschema.Schema, defaults, values interface{}) (*chi.Mux, error) {
|
||||
func NewHandler(schema *jsonschema.Schema, defaults, values interface{}, assetsHandler http.Handler) (*chi.Mux, error) {
|
||||
router := chi.NewRouter()
|
||||
|
||||
router.Use(middleware.RequestID)
|
||||
@ -15,5 +17,7 @@ func NewHandler(schema *jsonschema.Schema, defaults, values interface{}) (*chi.M
|
||||
router.Get("/", createRenderFormHandlerFunc(schema, defaults, values))
|
||||
router.Post("/", createHandleFormHandlerFunc(schema, defaults, values))
|
||||
|
||||
router.Handle("/assets/*", assetsHandler)
|
||||
|
||||
return router, nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user