set selected tags in edititem

This commit is contained in:
2025-04-16 01:55:40 +02:00
parent ae36903e73
commit d17c33f6ee
3 changed files with 50 additions and 13 deletions

View File

@@ -432,15 +432,45 @@ func (rc *shopItemController) AddItemsHandler(c *gin.Context) {
c.HTML(http.StatusOK, "batchupload.html", data) c.HTML(http.StatusOK, "batchupload.html", data)
} }
func (rc *shopItemController) EditItemView(c *gin.Context) { func GetCheckedTags(item models.ShopItem) ([]models.CheckedTag, error) {
shopItem, err := repositories.ShopItems.GetById(c.Param("id")) allTags, err := repositories.Tags.GetAll()
tags, err := repositories.Tags.GetAll()
if err != nil { if err != nil {
c.HTML(http.StatusBadRequest, "edititem.html", gin.H{"error": err}) return nil, err
} }
fmt.Println(shopItem) var tags []models.CheckedTag
for _, tag := range allTags {
tmpTag := models.CheckedTag{
Tag: tag,
Checked: "",
}
for _, itemTag := range item.Tags {
if itemTag.Name == tmpTag.Name {
tmpTag.Checked = "checked"
break
}
}
tags = append(tags, tmpTag)
}
return tags, nil
}
func (rc *shopItemController) EditItemView(c *gin.Context) {
shopItem, err := repositories.ShopItems.GetById(c.Param("id"))
if err != nil {
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": err})
}
tags, err := GetCheckedTags(shopItem)
if err != nil {
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": err})
}
data := CreateSessionData(c, gin.H{ data := CreateSessionData(c, gin.H{
"error": "", "error": "",
@@ -489,7 +519,7 @@ func (rc *shopItemController) EditItemHandler(c *gin.Context) {
newShopItem.PrintMode = shopItem.PrintMode newShopItem.PrintMode = shopItem.PrintMode
tags, err := repositories.Tags.GetAll() tags, err := GetCheckedTags(newShopItem)
if err != nil { if err != nil {
c.HTML(http.StatusBadRequest, "edititem.html", gin.H{"error": err}) c.HTML(http.StatusBadRequest, "edititem.html", gin.H{"error": err})
return return
@@ -498,9 +528,10 @@ func (rc *shopItemController) EditItemHandler(c *gin.Context) {
_, err = repositories.ShopItems.Update(newShopItem) _, err = repositories.ShopItems.Update(newShopItem)
if err != nil { if err != nil {
data := CreateSessionData(c, gin.H{ data := CreateSessionData(c, gin.H{
"error": err, "error": err,
"success": "", "success": "",
"tags": tags, "shopItem": newShopItem,
"tags": tags,
}) })
c.HTML(http.StatusOK, "edititem.html", data) c.HTML(http.StatusOK, "edititem.html", data)
@@ -508,9 +539,10 @@ func (rc *shopItemController) EditItemHandler(c *gin.Context) {
} }
data := CreateSessionData(c, gin.H{ data := CreateSessionData(c, gin.H{
"error": "", "error": "",
"success": fmt.Sprintf("Item '%s' Updated", newShopItem.Name), "success": fmt.Sprintf("Item '%s' Updated", newShopItem.Name),
"tags": tags, "shopItem": newShopItem,
"tags": tags,
}) })
c.HTML(http.StatusOK, "edititem.html", data) c.HTML(http.StatusOK, "edititem.html", data)

View File

@@ -14,6 +14,11 @@ type Tag struct {
ShopItems []ShopItem `gorm:"many2many:item_tags;"` ShopItems []ShopItem `gorm:"many2many:item_tags;"`
} }
type CheckedTag struct {
Tag
Checked string
}
func NewTag(ctx *gin.Context) (Tag, error) { func NewTag(ctx *gin.Context) (Tag, error) {
colors := []string{ colors := []string{
"red", "red",

View File

@@ -37,7 +37,7 @@
<div class="space-y-2"> <div class="space-y-2">
{{ range .data.tags }} {{ range .data.tags }}
<label class="flex text-sm/6 items-center"> <label class="flex text-sm/6 items-center">
<input type="checkbox" class="form-checkbox h-4 w-4 text-gray-900" value="{{ .ID }}" name="tags[]"> <input type="checkbox" {{ .Checked }} class="form-checkbox h-4 w-4 text-gray-900" value="{{ .ID }}" name="tags[]">
<span class="ml-2 text-sm/6 text-gray-900">{{ .Name }}</span> <span class="ml-2 text-sm/6 text-gray-900">{{ .Name }}</span>
</label> </label>
{{ end }} {{ end }}