🎨 Update av

This commit is contained in:
Daniel 2023-06-10 17:20:51 +08:00
parent 42f9c6e657
commit 461a438df0
No known key found for this signature in database
GPG Key ID: 86211BA83DF03017
2 changed files with 13 additions and 25 deletions

View File

@ -17,21 +17,9 @@
package av package av
type Cell struct { type Cell struct {
ID string `json:"id"` ID string `json:"id"`
Value *CellValue `json:"value"` Value string `json:"value"`
Color string `json:"color"` RenderValue interface{} `json:"renderValue"`
BgColor string `json:"bgColor"` Color string `json:"color"`
} BgColor string `json:"bgColor"`
type CellValue struct {
Type ColumnType `json:"type"`
Data interface{} `json:"data"`
}
func (v *CellValue) String() string {
switch v.Type {
case ColumnTypeText:
return v.Data.(string)
}
return v.Data.(string)
} }

View File

@ -56,7 +56,7 @@ func (tx *Transaction) doUpdateAttrViewCell(operation *Operation) (ret *TxErr) {
continue continue
} }
blockID = row.Cells[0].Value.String() blockID = row.Cells[0].Value
for _, cell := range row.Cells[1:] { for _, cell := range row.Cells[1:] {
if cell.ID == operation.ID { if cell.ID == operation.ID {
c = cell c = cell
@ -80,9 +80,9 @@ func (tx *Transaction) doUpdateAttrViewCell(operation *Operation) (ret *TxErr) {
return return
} }
c.Value.Data = operation.Data c.Value = parseCellData(operation.Data, av.ColumnType(operation.Typ))
attrs := parse.IAL2Map(node.KramdownIAL) attrs := parse.IAL2Map(node.KramdownIAL)
attrs[NodeAttrNamePrefixAvCol+c.ID] = c.Value.String() attrs[NodeAttrNamePrefixAvCol+c.ID] = c.Value
if err = setNodeAttrsWithTx(tx, node, tree, attrs); nil != err { if err = setNodeAttrsWithTx(tx, node, tree, attrs); nil != err {
return return
} }
@ -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} col := &av.Column{ID: "av" + ast.NewNodeID(), Name: name, Type: colType}
attrView.Columns = append(attrView.Columns, col) attrView.Columns = append(attrView.Columns, col)
for _, row := range attrView.Rows { for _, row := range attrView.Rows {
row.Cells = append(row.Cells, &av.Cell{ID: ast.NewNodeID(), Value: &av.CellValue{Type: colType}}) row.Cells = append(row.Cells, &av.Cell{ID: ast.NewNodeID()})
} }
default: default:
msg := fmt.Sprintf("invalid column type [%s]", typ) msg := fmt.Sprintf("invalid column type [%s]", typ)
@ -233,7 +233,7 @@ func removeAttributeViewBlock(blockID, avID string, tree *parse.Tree) (ret *av.A
} }
for i, row := range ret.Rows { for i, row := range ret.Rows {
if row.Cells[0].Value.String() == blockID { if row.Cells[0].Value == blockID {
// 从行中移除,但是不移除属性 // 从行中移除,但是不移除属性
ret.Rows = append(ret.Rows[:i], ret.Rows[i+1:]...) ret.Rows = append(ret.Rows[:i], ret.Rows[i+1:]...)
break break
@ -269,18 +269,18 @@ func addAttributeViewBlock(blockID, avID string, tree *parse.Tree, tx *Transacti
// 不允许重复添加相同的块到属性视图中 // 不允许重复添加相同的块到属性视图中
for _, row := range ret.Rows { for _, row := range ret.Rows {
if row.Cells[0].Value.String() == blockID { if row.Cells[0].Value == blockID {
return return
} }
} }
row := av.NewRow() row := av.NewRow()
row.Cells = append(row.Cells, &av.Cell{ID: ast.NewNodeID(), Value: &av.CellValue{Type: av.ColumnTypeBlock, Data: blockID}}) row.Cells = append(row.Cells, &av.Cell{ID: ast.NewNodeID(), Value: blockID})
if 1 < len(ret.Columns) { if 1 < len(ret.Columns) {
attrs := parse.IAL2Map(node.KramdownIAL) attrs := parse.IAL2Map(node.KramdownIAL)
for _, col := range ret.Columns[1:] { for _, col := range ret.Columns[1:] {
attrs[NodeAttrNamePrefixAvCol+col.ID] = "" // 将列作为属性添加到块中 attrs[NodeAttrNamePrefixAvCol+col.ID] = "" // 将列作为属性添加到块中
row.Cells = append(row.Cells, &av.Cell{ID: ast.NewNodeID(), Value: &av.CellValue{Type: col.Type}}) row.Cells = append(row.Cells, &av.Cell{ID: ast.NewNodeID()})
} }
if err = setNodeAttrsWithTx(tx, node, tree, attrs); nil != err { if err = setNodeAttrsWithTx(tx, node, tree, attrs); nil != err {