|
@@ -49,6 +49,7 @@ type SearchAttributeViewResult struct {
|
|
|
AvID string `json:"avID"`
|
|
|
AvName string `json:"avName"`
|
|
|
BlockID string `json:"blockID"`
|
|
|
+ HPath string `json:"hPath"`
|
|
|
}
|
|
|
|
|
|
func SearchAttributeView(keyword string, page int, pageSize int) (ret []*SearchAttributeViewResult, pageCount int) {
|
|
@@ -102,11 +103,23 @@ func SearchAttributeView(keyword string, page int, pageSize int) (ret []*SearchA
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ var hPath string
|
|
|
+ baseBlock := treenode.GetBlockTreeRootByPath(node.Box, node.Path)
|
|
|
+ if nil != baseBlock {
|
|
|
+ hPath = baseBlock.HPath
|
|
|
+ }
|
|
|
+ box := Conf.Box(node.Box)
|
|
|
+ if nil != box {
|
|
|
+ hPath = box.Name + hPath
|
|
|
+ }
|
|
|
+
|
|
|
if !exist {
|
|
|
ret = append(ret, &SearchAttributeViewResult{
|
|
|
AvID: avID,
|
|
|
AvName: attrView.Name,
|
|
|
BlockID: block.ID,
|
|
|
+ HPath: hPath,
|
|
|
})
|
|
|
}
|
|
|
}
|
|
@@ -170,6 +183,20 @@ func GetBlockAttributeViewKeys(blockID string) (ret []*BlockAttributeViewKeys) {
|
|
|
// 先处理创建时间和更新时间
|
|
|
for _, kv := range keyValues {
|
|
|
switch kv.Key.Type {
|
|
|
+ case av.KeyTypeRelation:
|
|
|
+ relKey, _ := attrView.GetKey(kv.Values[0].KeyID)
|
|
|
+ if nil != relKey && nil != relKey.Relation {
|
|
|
+ destAv, _ := av.ParseAttributeView(relKey.Relation.AvID)
|
|
|
+ if nil != destAv {
|
|
|
+ blocks := map[string]string{}
|
|
|
+ for _, blockValue := range destAv.GetBlockKeyValues().Values {
|
|
|
+ blocks[blockValue.BlockID] = blockValue.Block.Content
|
|
|
+ }
|
|
|
+ for _, blockID := range kv.Values[0].Relation.BlockIDs {
|
|
|
+ kv.Values[0].Relation.Contents = append(kv.Values[0].Relation.Contents, blocks[blockID])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
case av.KeyTypeCreated:
|
|
|
createdStr := blockID[:len("20060102150405")]
|
|
|
created, parseErr := time.ParseInLocation("20060102150405", createdStr, time.Local)
|
|
@@ -673,10 +700,19 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View) (ret *a
|
|
|
content := renderTemplateCol(ial, cell.Value.Template.Content, keyValues)
|
|
|
cell.Value.Template.Content = content
|
|
|
case av.KeyTypeRelation: // 渲染关联列
|
|
|
-
|
|
|
- //for _, blockID := range cell.Value.Relation.BlockIDs {
|
|
|
- //
|
|
|
- //}
|
|
|
+ relKey, _ := attrView.GetKey(cell.Value.KeyID)
|
|
|
+ if nil != relKey && nil != relKey.Relation {
|
|
|
+ destAv, _ := av.ParseAttributeView(relKey.Relation.AvID)
|
|
|
+ if nil != destAv {
|
|
|
+ blocks := map[string]string{}
|
|
|
+ for _, blockValue := range destAv.GetBlockKeyValues().Values {
|
|
|
+ blocks[blockValue.BlockID] = blockValue.Block.Content
|
|
|
+ }
|
|
|
+ for _, blockID := range cell.Value.Relation.BlockIDs {
|
|
|
+ cell.Value.Relation.Contents = append(cell.Value.Relation.Contents, blocks[blockID])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
case av.KeyTypeCreated: // 渲染创建时间
|
|
|
createdStr := row.ID[:len("20060102150405")]
|
|
|
created, parseErr := time.ParseInLocation("20060102150405", createdStr, time.Local)
|