소스 검색

:art: Improve database template field to use relation/rollup field Fix https://github.com/siyuan-note/siyuan/issues/11029

Daniel 1 년 전
부모
커밋
1ae39777a6
1개의 변경된 파일24개의 추가작업 그리고 3개의 파일을 삭제
  1. 24 3
      kernel/treenode/node.go

+ 24 - 3
kernel/treenode/node.go

@@ -1050,9 +1050,30 @@ func renderTemplateCol(ial map[string]string, rowValues []*av.KeyValues, tplCont
 					dataModel[rowValue.Key.Name] = time.UnixMilli(v.Date.Content)
 				}
 			} else if av.KeyTypeRollup == v.Type {
-				if 0 < len(v.Rollup.Contents) && av.KeyTypeNumber == v.Rollup.Contents[0].Type {
-					// 汇总数字时仅取第一个数字填充模板
-					dataModel[rowValue.Key.Name] = v.Rollup.Contents[0].Number.Content
+				if 0 < len(v.Rollup.Contents) {
+					var numbers []float64
+					var contents []string
+					for _, content := range v.Rollup.Contents {
+						if av.KeyTypeNumber == content.Type {
+							numbers = append(numbers, content.Number.Content)
+						} else {
+							contents = append(contents, content.String(true))
+						}
+					}
+
+					if 0 < len(numbers) {
+						dataModel[rowValue.Key.Name] = numbers
+					} else {
+						dataModel[rowValue.Key.Name] = contents
+					}
+				}
+			} else if av.KeyTypeRelation == v.Type {
+				if 0 < len(v.Relation.Contents) {
+					var contents []string
+					for _, content := range v.Relation.Contents {
+						contents = append(contents, content.String(true))
+					}
+					dataModel[rowValue.Key.Name] = contents
 				}
 			} else {
 				dataModel[rowValue.Key.Name] = v.String(true)