From 8226329b61b87a74bb48eceac0bc491708e039bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Bouzour=C3=A8ne?= Date: Wed, 15 Jan 2025 16:16:24 +0100 Subject: [PATCH] Started working on optional fields (members) --- controllers/members.go | 44 +++++++++++++--- models/fields.go | 2 + models/lists.go | 5 +- views/person.html | 46 ++++++++++++++++ views/person_form.html | 117 ++++++++++++++++++++++++++++++++++++++++- 5 files changed, 204 insertions(+), 10 deletions(-) diff --git a/controllers/members.go b/controllers/members.go index 64316d2..d744dfb 100644 --- a/controllers/members.go +++ b/controllers/members.go @@ -76,9 +76,23 @@ func MemberShow(c *fiber.Ctx) error { person.FirstName, ) + var fields []models.Field + db.Order("name collate nocase asc").Find( + &fields, "person_type = ?", "member", + ) + + var fieldValues []models.FieldValue + db.Preload("ListItem").Find( + &fieldValues, + "person_id = ?", + person.ID, + ) + return c.Render("person", fiber.Map{ - "PageTitle": title, - "Person": person, + "PageTitle": title, + "Person": person, + "Fields": fields, + "FieldValues": fieldValues, }) } @@ -215,7 +229,7 @@ func MemberEdit(c *fiber.Ctx) error { title := fmt.Sprintf( "%s %s | Modifier membre", person.LastName, - person.LastName, + person.FirstName, ) var sections []models.Section @@ -313,11 +327,27 @@ func MemberEdit(c *fiber.Ctx) error { } } + var fields []models.Field + db.Preload("List").Preload("List.ListItems").Order( + "name collate nocase asc", + ).Find( + &fields, "person_type = ?", "member", + ) + + var fieldValues []models.FieldValue + db.Preload("ListItem").Find( + &fieldValues, + "person_id = ?", + person.ID, + ) + return c.Render("person_form", fiber.Map{ - "PageTitle": title, - "Person": person, - "Sections": sections, - "Errors": errors, + "PageTitle": title, + "Person": person, + "Sections": sections, + "Fields": fields, + "FieldValues": fieldValues, + "Errors": errors, }) } diff --git a/models/fields.go b/models/fields.go index 6f643ff..aab1f17 100644 --- a/models/fields.go +++ b/models/fields.go @@ -19,6 +19,8 @@ type FieldValue struct { gorm.Model FieldID uint Field Field + PersonID uint + Person Person ValueString sql.NullString ValueInt sql.NullInt64 ValueDate sql.NullTime diff --git a/models/lists.go b/models/lists.go index 4145d02..134210d 100644 --- a/models/lists.go +++ b/models/lists.go @@ -4,8 +4,9 @@ import "gorm.io/gorm" type List struct { gorm.Model - Name string - Multi bool + Name string + Multi bool + ListItems []*ListItem } type ListItem struct { diff --git a/views/person.html b/views/person.html index 597acb4..07b39ae 100644 --- a/views/person.html +++ b/views/person.html @@ -159,6 +159,52 @@ + {% if Fields %} +
+ + Champs supplémentaires + +
+ {% endif %} + + {% for Field in Fields %} +
+
+ {{ Field.Name }} +
+
+ +
+
+ {% endfor %} +
{% if Person.IsMember %}
diff --git a/views/person_form.html b/views/person_form.html index c68801b..0af054c 100644 --- a/views/person_form.html +++ b/views/person_form.html @@ -186,7 +186,7 @@
+ {% endif %} + + {% if Field.FieldType == "longtext" %} + + {% endif %} + + {% if Field.FieldType == "number" %} + + {% endif %} + + {% if Field.FieldType == "date" %} + + {% endif %} + + {% if Field.FieldType == "list" and !Field.List.Multi %} + + {% endif %} + + {% if Field.FieldType == "list" and Field.List.Multi %} + {% for ListItem in Field.List.ListItems %} +
+ + +
+ {% endfor %} + {% endif %} + +
+
+ {% endfor %} +