♻️ Refactor av data structure

This commit is contained in:
Daniel 2023-07-11 22:44:31 +08:00
parent 05e9133c7c
commit c605c496ee
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
2 changed files with 89 additions and 90 deletions

View file

@ -258,11 +258,11 @@ func addAttributeViewBlock(blockID string, operation *Operation, tree *parse.Tre
return
}
if "" == operation.PreviousRowID {
if "" == operation.PreviousID {
attrView.Rows = append([]*av.Row{row}, attrView.Rows...)
} else {
for i, r := range attrView.Rows {
if r.ID == operation.PreviousRowID {
if r.ID == operation.PreviousID {
attrView.Rows = append(attrView.Rows[:i+1], append([]*av.Row{row}, attrView.Rows[i+1:]...)...)
break
}
@ -306,6 +306,81 @@ func removeAttributeViewBlock(blockID string, operation *Operation) (err error)
return
}
func (tx *Transaction) doSetAttrViewColumnWidth(operation *Operation) (ret *TxErr) {
err := setAttributeViewColWidth(operation)
if nil != err {
return &TxErr{code: TxErrWriteAttributeView, id: operation.ParentID, msg: err.Error()}
}
return
}
func setAttributeViewColWidth(operation *Operation) (err error) {
attrView, err := av.ParseAttributeView(operation.AvID)
if nil != err {
return
}
for _, column := range attrView.Columns {
if column.ID == operation.ID {
column.Width = operation.Data.(string)
break
}
}
err = av.SaveAttributeView(attrView)
return
}
func (tx *Transaction) doSetAttrViewColumnWrap(operation *Operation) (ret *TxErr) {
err := setAttributeViewColWrap(operation)
if nil != err {
return &TxErr{code: TxErrWriteAttributeView, id: operation.ParentID, msg: err.Error()}
}
return
}
func setAttributeViewColWrap(operation *Operation) (err error) {
attrView, err := av.ParseAttributeView(operation.AvID)
if nil != err {
return
}
for _, column := range attrView.Columns {
if column.ID == operation.ID {
column.Wrap = operation.Data.(bool)
break
}
}
err = av.SaveAttributeView(attrView)
return
}
func (tx *Transaction) doSetAttrViewColumnHidden(operation *Operation) (ret *TxErr) {
err := setAttributeViewColHidden(operation)
if nil != err {
return &TxErr{code: TxErrWriteAttributeView, id: operation.ParentID, msg: err.Error()}
}
return
}
func setAttributeViewColHidden(operation *Operation) (err error) {
attrView, err := av.ParseAttributeView(operation.AvID)
if nil != err {
return
}
for _, column := range attrView.Columns {
if column.ID == operation.ID {
column.Hidden = operation.Data.(bool)
break
}
}
err = av.SaveAttributeView(attrView)
return
}
// TODO 下面的方法要重写
func (tx *Transaction) doUpdateAttrViewCell(operation *Operation) (ret *TxErr) {
@ -437,30 +512,6 @@ func (tx *Transaction) doSortAttrViewRow(operation *Operation) (ret *TxErr) {
return
}
func (tx *Transaction) doSetAttrViewColumnHidden(operation *Operation) (ret *TxErr) {
err := setAttributeViewColHidden(operation.Data.(bool), operation.ID, operation.ParentID)
if nil != err {
return &TxErr{code: TxErrWriteAttributeView, id: operation.ParentID, msg: err.Error()}
}
return
}
func (tx *Transaction) doSetAttrViewColumnWrap(operation *Operation) (ret *TxErr) {
err := setAttributeViewColWrap(operation.Data.(bool), operation.ID, operation.ParentID)
if nil != err {
return &TxErr{code: TxErrWriteAttributeView, id: operation.ParentID, msg: err.Error()}
}
return
}
func (tx *Transaction) doSetAttrViewColumnWidth(operation *Operation) (ret *TxErr) {
err := setAttributeViewColWidth(operation.Data.(string), operation.ID, operation.ParentID)
if nil != err {
return &TxErr{code: TxErrWriteAttributeView, id: operation.ParentID, msg: err.Error()}
}
return
}
func (tx *Transaction) doSetAttrView(operation *Operation) (ret *TxErr) {
err := setAttributeView(operation)
if nil != err {
@ -781,57 +832,6 @@ func sortAttributeViewRow(rowID, previousRowID, avID string) (err error) {
return
}
func setAttributeViewColHidden(hidden bool, columnID, avID string) (err error) {
attrView, err := av.ParseAttributeView(avID)
if nil != err {
return
}
for _, column := range attrView.Columns {
if column.ID == columnID {
column.Hidden = hidden
break
}
}
err = av.SaveAttributeView(attrView)
return
}
func setAttributeViewColWrap(wrap bool, columnID, avID string) (err error) {
attrView, err := av.ParseAttributeView(avID)
if nil != err {
return
}
for _, column := range attrView.Columns {
if column.ID == columnID {
column.Wrap = wrap
break
}
}
err = av.SaveAttributeView(attrView)
return
}
func setAttributeViewColWidth(width, columnID, avID string) (err error) {
attrView, err := av.ParseAttributeView(avID)
if nil != err {
return
}
for _, column := range attrView.Columns {
if column.ID == columnID {
column.Width = width
break
}
}
err = av.SaveAttributeView(attrView)
return
}
func setAttributeView(operation *Operation) (err error) {
avID := operation.ID
attrViewMap, err := av.ParseAttributeViewMap(avID)