♻️ Refactor av data structure

This commit is contained in:
Daniel 2023-07-12 21:39:55 +08:00
parent cb73513941
commit 36f7083529
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
3 changed files with 32 additions and 32 deletions

View file

@ -47,7 +47,7 @@ func renderAttributeView(c *gin.Context) {
view := map[string]interface{}{ view := map[string]interface{}{
"id": v.ID, "id": v.ID,
"name": v.Name, "name": v.Name,
"type": v.CurrentLayoutType, "type": v.LayoutType,
} }
views = append(views, view) views = append(views, view)

View file

@ -31,12 +31,12 @@ import (
// AttributeView 描述了属性视图的结构。 // AttributeView 描述了属性视图的结构。
type AttributeView struct { type AttributeView struct {
Spec int `json:"spec"` // 格式版本 Spec int `json:"spec"` // 格式版本
ID string `json:"id"` // 属性视图 ID ID string `json:"id"` // 属性视图 ID
Name string `json:"name"` // 属性视图名称 Name string `json:"name"` // 属性视图名称
KeyValues []*KeyValues `json:"keyValues"` // 属性视图属性列值 KeyValues []*KeyValues `json:"keyValues"` // 属性视图属性列值
CurrentViewID string `json:"currentViewID"` // 当前视图 ID ViewID string `json:"viewID"` // 当前视图 ID
Views []*View `json:"views"` // 视图 Views []*View `json:"views"` // 视图
} }
// KeyValues 描述了属性视图属性列值的结构。 // KeyValues 描述了属性视图属性列值的结构。
@ -130,9 +130,9 @@ type View struct {
ID string `json:"id"` // 视图 ID ID string `json:"id"` // 视图 ID
Name string `json:"name"` // 视图名称 Name string `json:"name"` // 视图名称
CurrentLayoutID string `json:"currentLayoutID"` // 当前布局 ID LayoutID string `json:"layoutID"` // 当前布局 ID
CurrentLayoutType LayoutType `json:"type"` // 当前布局类型 LayoutType LayoutType `json:"type"` // 当前布局类型
Table *LayoutTable `json:"table,omitempty"` // 表格布局 Table *LayoutTable `json:"table,omitempty"` // 表格布局
} }
// LayoutType 描述了视图布局的类型。 // LayoutType 描述了视图布局的类型。
@ -146,10 +146,10 @@ func NewView() *View {
name := "Table" name := "Table"
layoutID := ast.NewNodeID() layoutID := ast.NewNodeID()
return &View{ return &View{
ID: ast.NewNodeID(), ID: ast.NewNodeID(),
Name: name, Name: name,
CurrentLayoutID: layoutID, LayoutID: layoutID,
CurrentLayoutType: LayoutTypeTable, LayoutType: LayoutTypeTable,
Table: &LayoutTable{ Table: &LayoutTable{
Spec: 0, Spec: 0,
ID: layoutID, ID: layoutID,
@ -173,11 +173,11 @@ func NewAttributeView(id string) (ret *AttributeView) {
view := NewView() view := NewView()
key := NewKey("Block", KeyTypeBlock) key := NewKey("Block", KeyTypeBlock)
ret = &AttributeView{ ret = &AttributeView{
Spec: 0, Spec: 0,
ID: id, ID: id,
KeyValues: []*KeyValues{{Key: key}}, KeyValues: []*KeyValues{{Key: key}},
CurrentViewID: view.ID, ViewID: view.ID,
Views: []*View{view}, Views: []*View{view},
} }
view.Table.Columns = []*ViewTableColumn{{ID: key.ID}} view.Table.Columns = []*ViewTableColumn{{ID: key.ID}}
return return

View file

@ -44,9 +44,9 @@ func RenderAttributeView(avID string) (viewable av.Viewable, attrView *av.Attrib
} }
var view *av.View var view *av.View
if "" != attrView.CurrentViewID { if "" != attrView.ViewID {
for _, v := range attrView.Views { for _, v := range attrView.Views {
if v.ID == attrView.CurrentViewID { if v.ID == attrView.ViewID {
view = v view = v
break break
} }
@ -55,7 +55,7 @@ func RenderAttributeView(avID string) (viewable av.Viewable, attrView *av.Attrib
view = attrView.Views[0] view = attrView.Views[0]
} }
switch view.CurrentLayoutType { switch view.LayoutType {
case av.LayoutTypeTable: case av.LayoutTypeTable:
viewable, err = renderAttributeViewTable(attrView, view) viewable, err = renderAttributeViewTable(attrView, view)
} }
@ -184,7 +184,7 @@ func setAttributeViewFilters(operation *Operation) (err error) {
return return
} }
switch view.CurrentLayoutType { switch view.LayoutType {
case av.LayoutTypeTable: case av.LayoutTypeTable:
if err = gulu.JSON.UnmarshalJSON(data, &view.Table.Filters); nil != err { if err = gulu.JSON.UnmarshalJSON(data, &view.Table.Filters); nil != err {
return return
@ -221,7 +221,7 @@ func setAttributeViewSorts(operation *Operation) (err error) {
return return
} }
switch view.CurrentLayoutType { switch view.LayoutType {
case av.LayoutTypeTable: case av.LayoutTypeTable:
if err = gulu.JSON.UnmarshalJSON(data, &view.Table.Sorts); nil != err { if err = gulu.JSON.UnmarshalJSON(data, &view.Table.Sorts); nil != err {
return return
@ -311,7 +311,7 @@ func addAttributeViewBlock(blockID string, operation *Operation, tree *parse.Tre
return return
} }
switch view.CurrentLayoutType { switch view.LayoutType {
case av.LayoutTypeTable: case av.LayoutTypeTable:
if "" != operation.PreviousID { if "" != operation.PreviousID {
for i, id := range view.Table.RowIDs { for i, id := range view.Table.RowIDs {
@ -375,7 +375,7 @@ func setAttributeViewColWidth(operation *Operation) (err error) {
return return
} }
switch view.CurrentLayoutType { switch view.LayoutType {
case av.LayoutTypeTable: case av.LayoutTypeTable:
for _, column := range view.Table.Columns { for _, column := range view.Table.Columns {
if column.ID == operation.ID { if column.ID == operation.ID {
@ -408,7 +408,7 @@ func setAttributeViewColWrap(operation *Operation) (err error) {
return return
} }
switch view.CurrentLayoutType { switch view.LayoutType {
case av.LayoutTypeTable: case av.LayoutTypeTable:
for _, column := range view.Table.Columns { for _, column := range view.Table.Columns {
if column.ID == operation.ID { if column.ID == operation.ID {
@ -441,7 +441,7 @@ func setAttributeViewColHidden(operation *Operation) (err error) {
return return
} }
switch view.CurrentLayoutType { switch view.LayoutType {
case av.LayoutTypeTable: case av.LayoutTypeTable:
for _, column := range view.Table.Columns { for _, column := range view.Table.Columns {
if column.ID == operation.ID { if column.ID == operation.ID {
@ -487,7 +487,7 @@ func sortAttributeViewRow(operation *Operation) (err error) {
return return
} }
switch view.CurrentLayoutType { switch view.LayoutType {
case av.LayoutTypeTable: case av.LayoutTypeTable:
view.Table.RowIDs = append(view.Table.RowIDs[:index], view.Table.RowIDs[index+1:]...) view.Table.RowIDs = append(view.Table.RowIDs[:index], view.Table.RowIDs[index+1:]...)
for i, r := range view.Table.RowIDs { for i, r := range view.Table.RowIDs {
@ -522,7 +522,7 @@ func sortAttributeViewColumn(operation *Operation) (err error) {
return return
} }
switch view.CurrentLayoutType { switch view.LayoutType {
case av.LayoutTypeTable: case av.LayoutTypeTable:
var col *av.ViewTableColumn var col *av.ViewTableColumn
var index, previousIndex int var index, previousIndex int
@ -576,7 +576,7 @@ func addAttributeViewColumn(operation *Operation) (err error) {
key := av.NewKey(operation.Name, keyType) key := av.NewKey(operation.Name, keyType)
attrView.KeyValues = append(attrView.KeyValues, &av.KeyValues{Key: key}) attrView.KeyValues = append(attrView.KeyValues, &av.KeyValues{Key: key})
switch view.CurrentLayoutType { switch view.LayoutType {
case av.LayoutTypeTable: case av.LayoutTypeTable:
view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{ID: key.ID}) view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{ID: key.ID})
} }
@ -638,7 +638,7 @@ func removeAttributeViewColumn(operation *Operation) (err error) {
} }
for _, view := range attrView.Views { for _, view := range attrView.Views {
switch view.CurrentLayoutType { switch view.LayoutType {
case av.LayoutTypeTable: case av.LayoutTypeTable:
for i, column := range view.Table.Columns { for i, column := range view.Table.Columns {
if column.ID == operation.ID { if column.ID == operation.ID {