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 c0424ca commit b69e8d3
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
4 changes: 4 additions & 0 deletions kernel/av/av.go
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,10 @@ type ValueTemplate struct {
RenderedContent string `json:"renderedContent"`
}

func (t *ValueTemplate) Render(blockID string, r func(blockID string) string) {
t.RenderedContent = r(blockID)
}

// View 描述了视图的结构。
type View struct {
ID string `json:"id"` // 视图 ID
Expand Down
24 changes: 24 additions & 0 deletions kernel/model/attribute_view.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,15 @@
package model

import (
"bytes"
"sort"
"strings"
"text/template"

"github.com/88250/gulu"
"github.com/88250/lute/ast"
"github.com/88250/lute/parse"
"github.com/Masterminds/sprig/v3"
"github.com/siyuan-note/logging"
"github.com/siyuan-note/siyuan/kernel/av"
"github.com/siyuan-note/siyuan/kernel/treenode"
Expand Down Expand Up @@ -227,6 +230,27 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View) (ret *a
tableCell.Value.Number.FormatNumber()
}

// 渲染模板列
if av.KeyTypeTemplate == tableCell.ValueType && nil != tableCell.Value && nil != tableCell.Value.Template {
render := func(blockID string) string {
funcMap := sprig.TxtFuncMap()
goTpl := template.New("").Delims(".action{", "}")
tpl, tplErr := goTpl.Funcs(funcMap).Parse(tableCell.Value.Template.Content)
if nil != tplErr {
logging.LogWarnf("parse template [%s] failed: %s", tableCell.Value.Template.Content, err)
}

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)
}
return buf.String()
}

tableCell.Value.Template.Render(tableCell.Value.BlockID, render)
}

tableRow.Cells = append(tableRow.Cells, tableCell)
}
ret.Rows = append(ret.Rows, &tableRow)
Expand Down

0 comments on commit b69e8d3

Please sign in to comment.