package handlers import ( "strconv" "strings" "templ-tests/app/data" "templ-tests/app/templates" "templ-tests/app/types" "github.com/gofiber/fiber/v2" ) var pcInteractive templates.PageContext = templates.PageContext{ Title: "Welcome to the demo - Interactive", ActivePage: "interactive", } func Interactive(f *fiber.Ctx) error { Render(f, templates.Interactive(pcInteractive, data.CatBreeds)) return nil } func InteractiveSwapContent(f *fiber.Ctx) error { contentIndexStr := f.Query("content") contentIndex, err := strconv.Atoi(contentIndexStr) if err != nil { contentIndex = 0 } Render(f, templates.InteractiveSwapContent(pcInteractive, contentIndex)) return nil } func FilterCatBreeds(f *fiber.Ctx) error { breedQuery := strings.ToLower(f.Query("breed")) countryQuery := f.Query("country") var catBreeds []types.CatBreed = []types.CatBreed{} for _, cb := range data.CatBreeds { appendToList := (len(breedQuery) > 0 && strings.Contains(strings.ToLower(cb.Breed), breedQuery) || len(breedQuery) == 0) && ((len(countryQuery) > 0 && cb.Country == countryQuery) || len(countryQuery) == 0) if appendToList { catBreeds = append(catBreeds, cb) } } Render(f, templates.RenderCatBreedsTable(catBreeds)) return nil } func ValidateForm(f *fiber.Ctx) error { content := templates.ValidateFormContent{ Validated: true, NumValue: f.FormValue("number-value"), StrValue: f.FormValue("string-value"), } numValue, err := strconv.Atoi(content.NumValue) if err != nil { content.HasNumValueError = true content.NumValueError = "This is not valid number" } if !content.HasNumValueError { if numValue < 0 { content.HasNumValueError = true content.NumValueError = "Value is less than 0" } if numValue > 100 { content.HasNumValueError = true content.NumValueError = "Value is greater than 100" } } if len(content.StrValue) < 5 { content.HasStrValueError = true content.StrValueError = "String length is less than 5" } if len(content.StrValue) > 10 { content.HasStrValueError = true content.StrValueError = "String length is more than 10" } Render(f, templates.RenderInteractiveForm(content)) return nil }