Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2023-12-01 11:48:54 +08:00
commit 5b4ad7ae17
2 changed files with 14 additions and 29 deletions

View file

@ -23,6 +23,7 @@ import (
"math"
"os"
"path/filepath"
"regexp"
"strconv"
"strings"
"time"
@ -747,27 +748,18 @@ func (av *AttributeView) GetBlockKey() (ret *Key) {
return
}
func (av *AttributeView) GetDuplicateViewName(masterViewName string) string {
count := 1
ret := masterViewName + " (" + strconv.Itoa(count) + ")"
existViewByName := func(name string) bool {
for _, v := range av.Views {
if v.Name == name {
return true
}
}
return false
func (av *AttributeView) GetDuplicateViewName(masterViewName string) (ret string) {
ret = masterViewName + " (1)"
r := regexp.MustCompile("^(.*) \\((\\d+)\\)$")
m := r.FindStringSubmatch(masterViewName)
if nil == m || 3 > len(m) {
return
}
for i := 0; i < 32; i++ {
if !existViewByName(ret) {
return ret
}
count++
ret = masterViewName + " (" + strconv.Itoa(count) + ")"
}
return ret
num, _ := strconv.Atoi(m[2])
num++
ret = fmt.Sprintf("%s (%d)", m[1], num)
return
}
func GetAttributeViewDataPath(avID string) (ret string) {

View file

@ -770,7 +770,7 @@ func (tx *Transaction) doSetAttrViewViewName(operation *Operation) (ret *TxErr)
return &TxErr{code: TxErrWriteAttributeView, id: viewID}
}
view.Name = operation.Data.(string)
view.Name = strings.TrimSpace(operation.Data.(string))
if err = av.SaveAttributeView(attrView); nil != err {
logging.LogErrorf("save attribute view [%s] failed: %s", avID, err)
return &TxErr{code: TxErrWriteAttributeView, msg: err.Error(), id: avID}
@ -816,14 +816,7 @@ func setAttributeViewName(operation *Operation) (err error) {
return
}
view, err := attrView.GetCurrentView()
if nil != err {
return
}
attrView.Name = operation.Data.(string)
view.Name = operation.Data.(string)
attrView.Name = strings.TrimSpace(operation.Data.(string))
err = av.SaveAttributeView(attrView)
return
}
@ -1493,7 +1486,7 @@ func updateAttributeViewColumn(operation *Operation) (err error) {
case av.KeyTypeBlock, av.KeyTypeText, av.KeyTypeNumber, av.KeyTypeDate, av.KeyTypeSelect, av.KeyTypeMSelect, av.KeyTypeURL, av.KeyTypeEmail, av.KeyTypePhone, av.KeyTypeMAsset, av.KeyTypeTemplate, av.KeyTypeCreated, av.KeyTypeUpdated, av.KeyTypeCheckbox:
for _, keyValues := range attrView.KeyValues {
if keyValues.Key.ID == operation.ID {
keyValues.Key.Name = operation.Name
keyValues.Key.Name = strings.TrimSpace(operation.Name)
keyValues.Key.Type = colType
break
}