102 lines
2.6 KiB
Go
102 lines
2.6 KiB
Go
package views
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"fyne.io/fyne/v2"
|
|
"fyne.io/fyne/v2/container"
|
|
"fyne.io/fyne/v2/dialog"
|
|
"fyne.io/fyne/v2/widget"
|
|
"regexp"
|
|
"work_cation/global"
|
|
"work_cation/models"
|
|
"work_cation/models/repo"
|
|
"work_cation/pkg/utils"
|
|
)
|
|
|
|
func CreateErlangCard(w fyne.Window) fyne.CanvasObject {
|
|
|
|
// user := repo.UserRepo.GetUserInfo(global.DB)
|
|
var erlangCard = models.ErlangCards{
|
|
UUID: utils.CreateUUID(),
|
|
UserIp: utils.Get192Ip(),
|
|
}
|
|
|
|
var items = []*widget.FormItem{
|
|
{Text: "名称", Widget: widget.NewEntry()},
|
|
{Text: "描述", Widget: widget.NewEntry()},
|
|
{Text: "封面", Widget: widget.NewEntry(), HintText: "暂未支持可不填"},
|
|
{Text: "是否默认展示", Widget: widget.NewEntry()},
|
|
{Text: "模版内容", Widget: widget.NewEntry()},
|
|
}
|
|
|
|
var items2 []*widget.FormItem
|
|
form2 := &widget.Form{
|
|
Items: items2,
|
|
SubmitText: "保存创建",
|
|
OnSubmit: func() {
|
|
for _, item := range items {
|
|
switch item.Text {
|
|
case "名称":
|
|
erlangCard.Title = item.Widget.(*widget.Entry).Text
|
|
case "描述":
|
|
erlangCard.Text = item.Widget.(*widget.Entry).Text
|
|
case "封面":
|
|
erlangCard.Covers = []string{item.Widget.(*widget.Entry).Text}
|
|
case "是否默认展示":
|
|
erlangCard.IsShowOut = item.Widget.(*widget.Entry).Text == "1"
|
|
case "模版内容":
|
|
erlangCard.Template = item.Widget.(*widget.Entry).Text
|
|
default:
|
|
|
|
}
|
|
}
|
|
|
|
if countVarOccurrences(erlangCard.Template) != len(items2) {
|
|
dialog.ShowError(errors.New("变量名数量异常"), w)
|
|
return
|
|
}
|
|
|
|
for _, item2 := range items2 {
|
|
fmt.Println("key:", item2.Text, "value:", item2.Widget.(*widget.Entry).Text)
|
|
erlangCard.VarName = append(erlangCard.VarName, item2.Widget.(*widget.Entry).Text)
|
|
}
|
|
err := repo.ErlangCardRepo.Create(global.DB, &erlangCard)
|
|
if err != nil {
|
|
dialog.ShowError(err, w)
|
|
}
|
|
},
|
|
}
|
|
|
|
form := &widget.Form{
|
|
Items: items,
|
|
SubmitText: "生成变量表单",
|
|
OnSubmit: func() {
|
|
for _, item := range items {
|
|
switch item.Text {
|
|
case "模版内容":
|
|
varSum := countVarOccurrences(item.Widget.(*widget.Entry).Text)
|
|
for i := 0; i < varSum; i++ {
|
|
newItem := &widget.FormItem{Text: fmt.Sprintf("变量%d", i+1), Widget: widget.NewEntry()}
|
|
items2 = append(items2, newItem)
|
|
form2.AppendItem(newItem)
|
|
}
|
|
default:
|
|
}
|
|
}
|
|
|
|
},
|
|
}
|
|
return container.NewBorder(widget.NewSeparator(), nil, nil, nil, container.NewScroll(
|
|
container.NewVBox(
|
|
form,
|
|
form2,
|
|
)))
|
|
}
|
|
|
|
func countVarOccurrences(input string) int {
|
|
re := regexp.MustCompile(`\$var`)
|
|
matches := re.FindAllStringIndex(input, -1)
|
|
return len(matches)
|
|
}
|