diff --git a/kernel/av/cell.go b/kernel/av/cell.go index c7c06c567..de5deef07 100644 --- a/kernel/av/cell.go +++ b/kernel/av/cell.go @@ -16,10 +16,47 @@ package av +import "github.com/88250/lute/ast" + type Cell struct { ID string `json:"id"` Value string `json:"value"` + ValueType ColumnType `json:"valueType"` RenderValue interface{} `json:"renderValue"` Color string `json:"color"` BgColor string `json:"bgColor"` } + +func NewCellBlock(blockID, blockContent string) *Cell { + return &Cell{ + ID: ast.NewNodeID(), + Value: blockID, + ValueType: ColumnTypeBlock, + RenderValue: &RenderValueBlock{ID: blockID, Content: blockContent}, + } +} + +func NewCellText(text string) *Cell { + return &Cell{ + ID: ast.NewNodeID(), + Value: text, + ValueType: ColumnTypeText, + RenderValue: &RenderValueText{Content: text}, + } +} + +func NewCell(valueType ColumnType) *Cell { + return &Cell{ + ID: ast.NewNodeID(), + ValueType: valueType, + } +} + +type RenderValueBlock struct { + ID string `json:"id"` + Content string `json:"content"` +} + +type RenderValueText struct { + Content string `json:"content"` +} diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index a5896847c..df504501a 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -183,7 +183,7 @@ func addAttributeViewColumn(name string, typ string, avID string) (err error) { col := &av.Column{ID: "av" + ast.NewNodeID(), Name: name, Type: colType} attrView.Columns = append(attrView.Columns, col) for _, row := range attrView.Rows { - row.Cells = append(row.Cells, &av.Cell{ID: ast.NewNodeID()}) + row.Cells = append(row.Cells, av.NewCell(colType)) } default: msg := fmt.Sprintf("invalid column type [%s]", typ) @@ -275,12 +275,12 @@ func addAttributeViewBlock(blockID, avID string, tree *parse.Tree, tx *Transacti } row := av.NewRow() - row.Cells = append(row.Cells, &av.Cell{ID: ast.NewNodeID(), Value: blockID}) + row.Cells = append(row.Cells, av.NewCellBlock(blockID, getNodeRefText(node))) if 1 < len(ret.Columns) { attrs := parse.IAL2Map(node.KramdownIAL) for _, col := range ret.Columns[1:] { attrs[NodeAttrNamePrefixAvCol+col.ID] = "" // 将列作为属性添加到块中 - row.Cells = append(row.Cells, &av.Cell{ID: ast.NewNodeID()}) + row.Cells = append(row.Cells, av.NewCell(col.Type)) } if err = setNodeAttrsWithTx(tx, node, tree, attrs); nil != err {