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

This commit is contained in:
Vanessa 2024-01-12 21:29:08 +08:00
commit 43d0bb1bfe
3 changed files with 93 additions and 23 deletions

View file

@ -26,6 +26,71 @@ import (
"github.com/siyuan-note/siyuan/kernel/util"
)
func addAttributeViewCol(c *gin.Context) {
ret := gulu.Ret.NewResult()
defer c.JSON(http.StatusOK, ret)
arg, _ := util.JsonArg(c, ret)
if nil == arg {
return
}
avID := arg["avID"].(string)
keyID := arg["keyID"].(string)
keyName := arg["keyName"].(string)
keyType := arg["keyType"].(string)
keyIcon := arg["keyIcon"].(string)
previousKeyID := arg["previousKeyID"].(string)
err := model.AddAttributeViewKey(avID, keyID, keyName, keyType, keyIcon, previousKeyID)
if nil != err {
ret.Code = -1
ret.Msg = err.Error()
return
}
}
func removeAttributeViewCol(c *gin.Context) {
ret := gulu.Ret.NewResult()
defer c.JSON(http.StatusOK, ret)
arg, _ := util.JsonArg(c, ret)
if nil == arg {
return
}
avID := arg["avID"].(string)
keyID := arg["keyID"].(string)
err := model.RemoveAttributeViewKey(avID, keyID)
if nil != err {
ret.Code = -1
ret.Msg = err.Error()
return
}
}
func sortAttributeViewCol(c *gin.Context) {
ret := gulu.Ret.NewResult()
defer c.JSON(http.StatusOK, ret)
arg, ok := util.JsonArg(c, ret)
if !ok {
return
}
avID := arg["avID"].(string)
keyID := arg["keyID"].(string)
previousKeyID := arg["previousKeyID"].(string)
err := model.SortAttributeViewKey(avID, keyID, previousKeyID)
if nil != err {
ret.Code = -1
ret.Msg = err.Error()
return
}
}
func getAttributeViewFilterSort(c *gin.Context) {
ret := gulu.Ret.NewResult()
defer c.JSON(http.StatusOK, ret)

View file

@ -398,6 +398,9 @@ func ServeAPI(ginServer *gin.Engine) {
ginServer.Handle("POST", "/api/av/searchAttributeViewRelationKey", model.CheckAuth, model.CheckReadonly, searchAttributeViewRelationKey)
ginServer.Handle("POST", "/api/av/searchAttributeViewNonRelationKey", model.CheckAuth, model.CheckReadonly, searchAttributeViewNonRelationKey)
ginServer.Handle("POST", "/api/av/getAttributeViewFilterSort", model.CheckAuth, model.CheckReadonly, getAttributeViewFilterSort)
ginServer.Handle("POST", "/api/av/addAttributeViewKey", model.CheckAuth, model.CheckReadonly, addAttributeViewCol)
ginServer.Handle("POST", "/api/av/removeAttributeViewKey", model.CheckAuth, model.CheckReadonly, removeAttributeViewCol)
ginServer.Handle("POST", "/api/av/sortAttributeViewKey", model.CheckAuth, model.CheckReadonly, sortAttributeViewCol)
ginServer.Handle("POST", "/api/ai/chatGPT", model.CheckAuth, chatGPT)
ginServer.Handle("POST", "/api/ai/chatGPTWithAction", model.CheckAuth, chatGPTWithAction)

View file

@ -1981,15 +1981,15 @@ func sortAttributeViewRow(operation *Operation) (err error) {
}
func (tx *Transaction) doSortAttrViewColumn(operation *Operation) (ret *TxErr) {
err := sortAttributeViewColumn(operation)
err := SortAttributeViewKey(operation.AvID, operation.ID, operation.PreviousID)
if nil != err {
return &TxErr{code: TxErrWriteAttributeView, id: operation.AvID, msg: err.Error()}
}
return
}
func sortAttributeViewColumn(operation *Operation) (err error) {
attrView, err := av.ParseAttributeView(operation.AvID)
func SortAttributeViewKey(avID, keyID, previousKeyID string) (err error) {
attrView, err := av.ParseAttributeView(avID)
if nil != err {
return
}
@ -2004,7 +2004,7 @@ func sortAttributeViewColumn(operation *Operation) (err error) {
var col *av.ViewTableColumn
var index, previousIndex int
for i, column := range view.Table.Columns {
if column.ID == operation.ID {
if column.ID == keyID {
col = column
index = i
break
@ -2016,7 +2016,7 @@ func sortAttributeViewColumn(operation *Operation) (err error) {
view.Table.Columns = append(view.Table.Columns[:index], view.Table.Columns[index+1:]...)
for i, column := range view.Table.Columns {
if column.ID == operation.PreviousID {
if column.ID == previousKeyID {
previousIndex = i + 1
break
}
@ -2029,30 +2029,32 @@ func sortAttributeViewColumn(operation *Operation) (err error) {
}
func (tx *Transaction) doAddAttrViewColumn(operation *Operation) (ret *TxErr) {
err := addAttributeViewColumn(operation)
var icon string
if nil != operation.Data {
icon = operation.Data.(string)
}
err := AddAttributeViewKey(operation.AvID, operation.ID, operation.Name, operation.Typ, icon, operation.PreviousID)
if nil != err {
return &TxErr{code: TxErrWriteAttributeView, id: operation.AvID, msg: err.Error()}
}
return
}
func addAttributeViewColumn(operation *Operation) (err error) {
attrView, err := av.ParseAttributeView(operation.AvID)
func AddAttributeViewKey(avID, keyID, keyName, keyType, keyIcon, previousKeyID string) (err error) {
attrView, err := av.ParseAttributeView(avID)
if nil != err {
return
}
keyType := av.KeyType(operation.Typ)
switch keyType {
keyTyp := av.KeyType(keyType)
switch keyTyp {
case 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,
av.KeyTypeRelation, av.KeyTypeRollup:
var icon string
if nil != operation.Data {
icon = operation.Data.(string)
}
key := av.NewKey(operation.ID, operation.Name, icon, keyType)
if av.KeyTypeRollup == keyType {
key := av.NewKey(keyID, keyName, keyIcon, keyTyp)
if av.KeyTypeRollup == keyTyp {
key.Rollup = &av.Rollup{Calc: &av.RollupCalc{Operator: av.CalcOperatorNone}}
}
@ -2061,14 +2063,14 @@ func addAttributeViewColumn(operation *Operation) (err error) {
for _, view := range attrView.Views {
switch view.LayoutType {
case av.LayoutTypeTable:
if "" == operation.PreviousID {
if "" == previousKeyID {
view.Table.Columns = append([]*av.ViewTableColumn{{ID: key.ID}}, view.Table.Columns...)
break
}
added := false
for i, column := range view.Table.Columns {
if column.ID == operation.PreviousID {
if column.ID == previousKeyID {
view.Table.Columns = append(view.Table.Columns[:i+1], append([]*av.ViewTableColumn{{ID: key.ID}}, view.Table.Columns[i+1:]...)...)
added = true
break
@ -2176,22 +2178,22 @@ func updateAttributeViewColumn(operation *Operation) (err error) {
}
func (tx *Transaction) doRemoveAttrViewColumn(operation *Operation) (ret *TxErr) {
err := removeAttributeViewColumn(operation)
err := RemoveAttributeViewKey(operation.AvID, operation.ID)
if nil != err {
return &TxErr{code: TxErrWriteAttributeView, id: operation.AvID, msg: err.Error()}
}
return
}
func removeAttributeViewColumn(operation *Operation) (err error) {
attrView, err := av.ParseAttributeView(operation.AvID)
func RemoveAttributeViewKey(avID, keyID string) (err error) {
attrView, err := av.ParseAttributeView(avID)
if nil != err {
return
}
var removedKey *av.Key
for i, keyValues := range attrView.KeyValues {
if keyValues.Key.ID == operation.ID {
if keyValues.Key.ID == keyID {
attrView.KeyValues = append(attrView.KeyValues[:i], attrView.KeyValues[i+1:]...)
removedKey = keyValues.Key
break
@ -2252,7 +2254,7 @@ func removeAttributeViewColumn(operation *Operation) (err error) {
switch view.LayoutType {
case av.LayoutTypeTable:
for i, column := range view.Table.Columns {
if column.ID == operation.ID {
if column.ID == keyID {
view.Table.Columns = append(view.Table.Columns[:i], view.Table.Columns[i+1:]...)
break
}