mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-09-22 00:20:47 +02:00
🎨 The database template field supports using other template fields https://github.com/siyuan-note/siyuan/issues/15517
This commit is contained in:
parent
8934856d75
commit
916c00e714
4 changed files with 22 additions and 23 deletions
|
@ -26,7 +26,6 @@ import (
|
|||
|
||||
"github.com/88250/gulu"
|
||||
"github.com/88250/lute/ast"
|
||||
"github.com/jinzhu/copier"
|
||||
jsoniter "github.com/json-iterator/go"
|
||||
"github.com/siyuan-note/filelock"
|
||||
"github.com/siyuan-note/logging"
|
||||
|
@ -39,7 +38,6 @@ type AttributeView struct {
|
|||
ID string `json:"id"` // 属性视图 ID
|
||||
Name string `json:"name"` // 属性视图名称
|
||||
KeyValues []*KeyValues `json:"keyValues"` // 属性视图属性键值
|
||||
OriginalKeyValues []*KeyValues `json:"-"` // 原始属性视图属性键值
|
||||
KeyIDs []string `json:"keyIDs"` // 属性视图属性键 ID,用于排序
|
||||
ViewID string `json:"viewID"` // 当前视图 ID
|
||||
Views []*View `json:"views"` // 视图
|
||||
|
@ -472,13 +470,6 @@ func ParseAttributeView(avID string) (ret *AttributeView, err error) {
|
|||
return
|
||||
}
|
||||
}
|
||||
|
||||
ret.OriginalKeyValues = []*KeyValues{}
|
||||
for _, keyValues := range ret.KeyValues {
|
||||
cloned := &KeyValues{}
|
||||
copier.CopyWithOption(cloned, keyValues, copier.Option{DeepCopy: true})
|
||||
ret.OriginalKeyValues = append(ret.OriginalKeyValues, cloned)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -249,7 +249,7 @@ func RenderTemplateField(ial map[string]string, keyValues []*av.KeyValues, tplCo
|
|||
|
||||
func generateAttrViewItems(attrView *av.AttributeView, view *av.View) (ret map[string][]*av.KeyValues) {
|
||||
ret = map[string][]*av.KeyValues{}
|
||||
for _, keyValues := range attrView.OriginalKeyValues {
|
||||
for _, keyValues := range attrView.KeyValues {
|
||||
for _, val := range keyValues.Values {
|
||||
values := ret[val.BlockID]
|
||||
if nil == values {
|
||||
|
@ -533,19 +533,27 @@ func fillAttributeViewTemplateValues(attrView *av.AttributeView, view *av.View,
|
|||
|
||||
func fillAttributeViewKeyValues(attrView *av.AttributeView, collection av.Collection) {
|
||||
fieldValues := map[string][]*av.Value{}
|
||||
for _, card := range collection.GetItems() {
|
||||
for _, val := range card.GetValues() {
|
||||
for _, item := range collection.GetItems() {
|
||||
for _, val := range item.GetValues() {
|
||||
keyID := val.KeyID
|
||||
fieldValues[keyID] = append(fieldValues[keyID], val)
|
||||
}
|
||||
}
|
||||
for keyID, values := range fieldValues {
|
||||
keyValues, _ := attrView.GetKeyValues(keyID)
|
||||
keyValues.Values = nil
|
||||
for _, val := range values {
|
||||
exist := false
|
||||
for _, kv := range keyValues.Values {
|
||||
if kv.ID == val.ID {
|
||||
exist = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !exist {
|
||||
keyValues.Values = append(keyValues.Values, val)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func FillAttributeViewNilValue(value *av.Value, typ av.KeyType) {
|
||||
|
|
|
@ -120,7 +120,7 @@ func RenderAttributeViewGallery(attrView *av.AttributeView, view *av.View, query
|
|||
// 渲染自动生成的字段值,比如关联、汇总、创建时间和更新时间
|
||||
fillAttributeViewAutoGeneratedValues(attrView, ret, ials, depth, renderedAttrViews)
|
||||
|
||||
// 最后单独渲染模板字段,这样模板就可以使用汇总、关联、创建时间和更新时间的值了
|
||||
// 最后渲染模板字段,这样模板就可以使用汇总、关联、创建时间和更新时间的值了
|
||||
renderTemplateErr := fillAttributeViewTemplateValues(attrView, view, ret, ials)
|
||||
if nil != renderTemplateErr {
|
||||
util.PushErrMsg(fmt.Sprintf(util.Langs[util.Lang][44], util.EscapeHTML(renderTemplateErr.Error())), 30000)
|
||||
|
|
|
@ -113,7 +113,7 @@ func RenderAttributeViewTable(attrView *av.AttributeView, view *av.View, query s
|
|||
// 渲染自动生成的字段值,比如关联、汇总、创建时间和更新时间
|
||||
fillAttributeViewAutoGeneratedValues(attrView, ret, ials, depth, renderedAttrViews)
|
||||
|
||||
// 最后单独渲染模板字段,这样模板就可以使用汇总、关联、创建时间和更新时间的值了
|
||||
// 最后渲染模板字段,这样模板就可以使用汇总、关联、创建时间和更新时间的值了
|
||||
renderTemplateErr := fillAttributeViewTemplateValues(attrView, view, ret, ials)
|
||||
if nil != renderTemplateErr {
|
||||
util.PushErrMsg(fmt.Sprintf(util.Langs[util.Lang][44], util.EscapeHTML(renderTemplateErr.Error())), 30000)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue