Skip to content

Commit

Permalink
🎨 Add template type column to Attribute View #8766
Browse files Browse the repository at this point in the history
  • Loading branch information
88250 committed Oct 1, 2023
1 parent dbdddd7 commit b833087
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 4 deletions.
2 changes: 1 addition & 1 deletion kernel/av/av.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ type Key struct {

Options []*KeySelectOption `json:"options,omitempty"` // 选项列表
NumberFormat NumberFormat `json:"numberFormat"` // 列数字格式化
Template string `json:"template"` // 模板内容
}

func NewKey(id, name string, keyType KeyType) *Key {
Expand Down Expand Up @@ -350,7 +351,6 @@ type ValueAsset struct {
}

type ValueTemplate struct {
Content string `json:"content"`
RenderedContent string `json:"renderedContent"`
}

Expand Down
1 change: 1 addition & 0 deletions kernel/av/table.go
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,7 @@ type TableColumn struct {

Options []*KeySelectOption `json:"options,omitempty"` // 选项列表
NumberFormat NumberFormat `json:"numberFormat"` // 列数字格式化
Template string `json:"template"` // 模板内容
}

type TableRow struct {
Expand Down
35 changes: 32 additions & 3 deletions kernel/model/attribute_view.go
Original file line number Diff line number Diff line change
Expand Up @@ -235,16 +235,16 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View) (ret *a
render := func(blockID string) string {
funcMap := sprig.TxtFuncMap()
goTpl := template.New("").Delims(".action{", "}")
tpl, tplErr := goTpl.Funcs(funcMap).Parse(tableCell.Value.Template.Content)
tpl, tplErr := goTpl.Funcs(funcMap).Parse(col.Template)
if nil != tplErr {
logging.LogWarnf("parse template [%s] failed: %s", tableCell.Value.Template.Content, tplErr)
logging.LogWarnf("parse template [%s] failed: %s", col.Template, tplErr)
return ""
}

buf := &bytes.Buffer{}
ial := GetBlockAttrs(blockID)
if err = tpl.Execute(buf, ial); nil != err {
logging.LogWarnf("execute template [%s] failed: %s", tableCell.Value.Template.Content, err)
logging.LogWarnf("execute template [%s] failed: %s", col.Template, err)
}
return buf.String()
}
Expand Down Expand Up @@ -827,6 +827,35 @@ func addAttributeViewColumn(operation *Operation) (err error) {
return
}

func (tx *Transaction) doUpdateAttrViewColTemplate(operation *Operation) (ret *TxErr) {
err := updateAttributeViewColTemplate(operation)
if nil != err {
return &TxErr{code: TxErrWriteAttributeView, id: operation.AvID, msg: err.Error()}
}
return
}

func updateAttributeViewColTemplate(operation *Operation) (err error) {
attrView, err := av.ParseAttributeView(operation.AvID)
if nil != err {
return
}

colType := av.KeyType(operation.Typ)
switch colType {
case av.KeyTypeTemplate:
for _, keyValues := range attrView.KeyValues {
if keyValues.Key.ID == operation.ID && av.KeyTypeTemplate == keyValues.Key.Type {
keyValues.Key.Template = operation.Data.(string)
break
}
}
}

err = av.SaveAttributeView(attrView)
return
}

func (tx *Transaction) doUpdateAttrViewColNumberFormat(operation *Operation) (ret *TxErr) {
err := updateAttributeViewColNumberFormat(operation)
if nil != err {
Expand Down
2 changes: 2 additions & 0 deletions kernel/model/transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,8 @@ func performTx(tx *Transaction) (ret *TxErr) {
ret = tx.doUpdateAttrViewColNumberFormat(op)
case "replaceAttrViewBlock":
ret = tx.doReplaceAttrViewBlock(op)
case "updateAttrViewColTemplate":
ret = tx.doUpdateAttrViewColTemplate(op)
}

if nil != ret {
Expand Down

0 comments on commit b833087

Please sign in to comment.