Переглянути джерело

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

Vanessa 1 рік тому
батько
коміт
5b4ad7ae17
2 змінених файлів з 14 додано та 29 видалено
  1. 11 19
      kernel/av/av.go
  2. 3 10
      kernel/model/attribute_view.go

+ 11 - 19
kernel/av/av.go

@@ -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) {

+ 3 - 10
kernel/model/attribute_view.go

@@ -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
 			}