mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-17 07:00:12 +01:00
🎨 The database rollup field supports using the template field https://github.com/siyuan-note/siyuan/issues/12384
This commit is contained in:
parent
511c174e65
commit
f6694810e2
2 changed files with 15 additions and 25 deletions
|
|
@ -1022,7 +1022,7 @@ func SearchAttributeViewNonRelationKey(avID, keyword string) (ret []*av.Key) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, keyValues := range attrView.KeyValues {
|
for _, keyValues := range attrView.KeyValues {
|
||||||
if av.KeyTypeRelation != keyValues.Key.Type && av.KeyTypeRollup != keyValues.Key.Type && av.KeyTypeTemplate != keyValues.Key.Type && av.KeyTypeCreated != keyValues.Key.Type && av.KeyTypeUpdated != keyValues.Key.Type && av.KeyTypeLineNumber != keyValues.Key.Type {
|
if av.KeyTypeRelation != keyValues.Key.Type && av.KeyTypeRollup != keyValues.Key.Type && av.KeyTypeCreated != keyValues.Key.Type && av.KeyTypeUpdated != keyValues.Key.Type && av.KeyTypeLineNumber != keyValues.Key.Type {
|
||||||
if strings.Contains(strings.ToLower(keyValues.Key.Name), strings.ToLower(keyword)) {
|
if strings.Contains(strings.ToLower(keyValues.Key.Name), strings.ToLower(keyword)) {
|
||||||
ret = append(ret, keyValues.Key)
|
ret = append(ret, keyValues.Key)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -334,8 +334,22 @@ func fillAttributeViewAutoGeneratedValues(attrView *av.AttributeView, collection
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var viewable av.Viewable
|
||||||
|
if av.KeyTypeTemplate == destKey.Type {
|
||||||
|
viewable = RenderView(destAv, destAv.Views[0], "")
|
||||||
|
}
|
||||||
|
|
||||||
for _, blockID := range relVal.Relation.BlockIDs {
|
for _, blockID := range relVal.Relation.BlockIDs {
|
||||||
destVal := destAv.GetValue(rollupKey.Rollup.KeyID, blockID)
|
destVal := destAv.GetValue(rollupKey.Rollup.KeyID, blockID)
|
||||||
|
if nil == destVal && av.KeyTypeTemplate == destKey.Type && nil != viewable {
|
||||||
|
for _, destItem := range viewable.(av.Collection).GetItems() {
|
||||||
|
if blockID == destItem.GetID() {
|
||||||
|
destVal = destItem.GetValue(destKey.ID)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if nil == destVal {
|
if nil == destVal {
|
||||||
if destAv.ExistBlock(blockID) { // 数据库中存在行但是列值不存在是数据未初始化,这里补一个默认值
|
if destAv.ExistBlock(blockID) { // 数据库中存在行但是列值不存在是数据未初始化,这里补一个默认值
|
||||||
destVal = av.GetAttributeViewDefaultValue(ast.NewNodeID(), rollupKey.Rollup.KeyID, blockID, destKey.Type)
|
destVal = av.GetAttributeViewDefaultValue(ast.NewNodeID(), rollupKey.Rollup.KeyID, blockID, destKey.Type)
|
||||||
|
|
@ -465,30 +479,6 @@ func fillAttributeViewTemplateValues(attrView *av.AttributeView, collection av.C
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func fillAttributeViewTemplateValue(value *av.Value, item av.Item, attrView *av.AttributeView, ials map[string]map[string]string, items map[string][]*av.KeyValues) (err error) {
|
|
||||||
itemID := item.GetID()
|
|
||||||
|
|
||||||
switch value.Type {
|
|
||||||
case av.KeyTypeTemplate: // 渲染模板字段
|
|
||||||
keyValues := items[itemID]
|
|
||||||
ial := ials[itemID]
|
|
||||||
if nil == ial {
|
|
||||||
ial = map[string]string{}
|
|
||||||
}
|
|
||||||
content, renderErr := RenderTemplateField(ial, keyValues, value.Template.Content)
|
|
||||||
value.Template.Content = content
|
|
||||||
if nil != renderErr {
|
|
||||||
key, _ := attrView.GetKey(value.KeyID)
|
|
||||||
keyName := ""
|
|
||||||
if nil != key {
|
|
||||||
keyName = key.Name
|
|
||||||
}
|
|
||||||
err = fmt.Errorf("database [%s] template field [%s] rendering failed: %s", getAttrViewName(attrView), keyName, renderErr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func FillAttributeViewNilValue(value *av.Value, typ av.KeyType) {
|
func FillAttributeViewNilValue(value *av.Value, typ av.KeyType) {
|
||||||
value.Type = typ
|
value.Type = typ
|
||||||
switch typ {
|
switch typ {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue