diff --git a/kernel/av/layout.go b/kernel/av/layout.go index c3d7e2fb8..a4115cfdf 100644 --- a/kernel/av/layout.go +++ b/kernel/av/layout.go @@ -23,6 +23,9 @@ type BaseLayout struct { Spec int `json:"spec"` // 布局格式版本 ID string `json:"id"` // 布局 ID + ShowIcon bool `json:"showIcon"` // 是否显示字段图标 + WrapField bool `json:"wrapField"` // 是否换行字段内容 + // TODO 以下三个字段已经废弃,计划于 2026 年 6 月 30 日后删除 https://github.com/siyuan-note/siyuan/issues/15162 //Deprecated @@ -51,6 +54,8 @@ type BaseInstance struct { Sorts []*ViewSort `json:"sorts"` // 排序规则 Group *ViewGroup `json:"group"` // 分组规则 PageSize int `json:"pageSize"` // 每页项目数 + ShowIcon bool `json:"showIcon"` // 是否显示字段图标 + WrapField bool `json:"wrapField"` // 是否换行字段内容 } func (baseInstance *BaseInstance) GetSorts() []*ViewSort { @@ -64,11 +69,12 @@ func (baseInstance *BaseInstance) GetFilters() []*ViewFilter { // BaseInstanceField 描述了实例字段的基础结构。 type BaseInstanceField struct { ID string `json:"id"` // ID - Name string `json:"name"` // 字段名 - Type KeyType `json:"type"` // 字段类型 - Icon string `json:"icon"` // 字段图标 + Name string `json:"name"` // 名称 + Type KeyType `json:"type"` // 类型 + Icon string `json:"icon"` // 图标 + Wrap bool `json:"wrap"` // 是否换行 Hidden bool `json:"hidden"` // 是否隐藏 - Desc string `json:"desc"` // 字段描述 + Desc string `json:"desc"` // 描述 // 以下是某些字段类型的特有属性 diff --git a/kernel/av/layout_gallery.go b/kernel/av/layout_gallery.go index 3a14f568b..9974c931b 100644 --- a/kernel/av/layout_gallery.go +++ b/kernel/av/layout_gallery.go @@ -29,8 +29,6 @@ type LayoutGallery struct { CardAspectRatio CardAspectRatio `json:"cardAspectRatio"` // 卡片宽高比 CardSize CardSize `json:"cardSize"` // 卡片大小,0:小卡片,1:中卡片,2:大卡片 FitImage bool `json:"fitImage"` // 是否适应封面图片大小 - ShowIcon bool `json:"showIcon"` // 是否显示字段图标 - WrapField bool `json:"wrapField"` // 是否换行字段内容 CardFields []*ViewGalleryCardField `json:"fields"` // 画廊卡片字段 CardIDs []string `json:"cardIds"` // 卡片 ID,用于自定义排序 @@ -43,13 +41,13 @@ func (layoutGallery *LayoutGallery) GetItemIDs() (ret []string) { func NewLayoutGallery() *LayoutGallery { return &LayoutGallery{ BaseLayout: &BaseLayout{ - Spec: 0, - ID: ast.NewNodeID(), + Spec: 0, + ID: ast.NewNodeID(), + ShowIcon: true, }, CoverFrom: CoverFromContentImage, CardAspectRatio: CardAspectRatio16_9, CardSize: CardSizeMedium, - ShowIcon: true, } } @@ -86,6 +84,7 @@ const ( type ViewGalleryCardField struct { ID string `json:"id"` // 字段 ID + Wrap bool `json:"wrap"` // 是否换行 Hidden bool `json:"hidden"` // 是否隐藏 Desc string `json:"desc,omitempty"` // 字段描述 } diff --git a/kernel/av/layout_table.go b/kernel/av/layout_table.go index b47a42e9b..b4abaf2b4 100644 --- a/kernel/av/layout_table.go +++ b/kernel/av/layout_table.go @@ -35,8 +35,9 @@ func (layoutTable *LayoutTable) GetItemIDs() (ret []string) { func NewLayoutTable() *LayoutTable { return &LayoutTable{ BaseLayout: &BaseLayout{ - Spec: 0, - ID: ast.NewNodeID(), + Spec: 0, + ID: ast.NewNodeID(), + ShowIcon: true, }, } } @@ -66,7 +67,6 @@ type Table struct { type TableColumn struct { *BaseInstanceField - Wrap bool `json:"wrap"` // 是否换行 Pin bool `json:"pin"` // 是否固定 Width string `json:"width"` // 列宽度 Calc *ColumnCalc `json:"calc"` // 计算 diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 40daca59f..2a1c671d9 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -195,11 +195,18 @@ func setAttrViewWrapField(operation *Operation) (err error) { return } + allFieldWrap := operation.Data.(bool) switch view.LayoutType { case av.LayoutTypeTable: - return + view.Table.WrapField = allFieldWrap + for _, col := range view.Table.Columns { + col.Wrap = allFieldWrap + } case av.LayoutTypeGallery: - view.Gallery.WrapField = operation.Data.(bool) + view.Gallery.WrapField = allFieldWrap + for _, field := range view.Gallery.CardFields { + field.Wrap = allFieldWrap + } } err = av.SaveAttributeView(attrView) @@ -227,7 +234,7 @@ func setAttrViewShowIcon(operation *Operation) (err error) { switch view.LayoutType { case av.LayoutTypeTable: - return + view.Table.ShowIcon = operation.Data.(bool) case av.LayoutTypeGallery: view.Gallery.ShowIcon = operation.Data.(bool) } @@ -1900,10 +1907,13 @@ func (tx *Transaction) doDuplicateAttrViewView(operation *Operation) (ret *TxErr } view.Table.RowIDs = masterView.Table.RowIDs + view.Table.ShowIcon = masterView.Table.ShowIcon + view.Table.WrapField = masterView.Table.WrapField case av.LayoutTypeGallery: for _, field := range masterView.Gallery.CardFields { view.Gallery.CardFields = append(view.Gallery.CardFields, &av.ViewGalleryCardField{ ID: field.ID, + Wrap: field.Wrap, Hidden: field.Hidden, Desc: field.Desc, }) @@ -2749,8 +2759,10 @@ func duplicateAttributeViewKey(operation *Operation) (err error) { if field.ID == key.ID { view.Gallery.CardFields = append(view.Gallery.CardFields[:i+1], append([]*av.ViewGalleryCardField{ { - ID: copyKey.ID, - Desc: field.Desc, + ID: copyKey.ID, + Wrap: field.Wrap, + Hidden: field.Hidden, + Desc: field.Desc, }, }, view.Gallery.CardFields[i+1:]...)...) break @@ -2817,16 +2829,25 @@ func setAttributeViewColWrap(operation *Operation) (err error) { return } + newWrap := operation.Data.(bool) + allFieldWrap := true switch view.LayoutType { case av.LayoutTypeTable: for _, column := range view.Table.Columns { if column.ID == operation.ID { - column.Wrap = operation.Data.(bool) - break + column.Wrap = newWrap } + allFieldWrap = allFieldWrap && column.Wrap } + view.Table.WrapField = allFieldWrap case av.LayoutTypeGallery: - return + for _, field := range view.Gallery.CardFields { + if field.ID == operation.ID { + field.Wrap = newWrap + } + allFieldWrap = allFieldWrap && field.Wrap + } + view.Gallery.WrapField = allFieldWrap } err = av.SaveAttributeView(attrView) diff --git a/kernel/sql/av_gallery.go b/kernel/sql/av_gallery.go index cc9d0ef50..0f225de32 100644 --- a/kernel/sql/av_gallery.go +++ b/kernel/sql/av_gallery.go @@ -26,14 +26,14 @@ func RenderAttributeViewGallery(attrView *av.AttributeView, view *av.View, query Filters: view.Filters, Sorts: view.Sorts, Group: view.Group, + ShowIcon: view.Gallery.ShowIcon, + WrapField: view.Gallery.WrapField, }, CoverFrom: view.Gallery.CoverFrom, CoverFromAssetKeyID: view.Gallery.CoverFromAssetKeyID, CardAspectRatio: view.Gallery.CardAspectRatio, CardSize: view.Gallery.CardSize, FitImage: view.Gallery.FitImage, - ShowIcon: view.Gallery.ShowIcon, - WrapField: view.Gallery.WrapField, Fields: []*av.GalleryField{}, Cards: []*av.GalleryCard{}, } @@ -53,6 +53,7 @@ func RenderAttributeViewGallery(attrView *av.AttributeView, view *av.View, query Name: key.Name, Type: key.Type, Icon: key.Icon, + Wrap: field.Wrap, Hidden: field.Hidden, Desc: key.Desc, Options: key.Options, diff --git a/kernel/sql/av_table.go b/kernel/sql/av_table.go index 6a2a72b7e..5049cbded 100644 --- a/kernel/sql/av_table.go +++ b/kernel/sql/av_table.go @@ -33,6 +33,8 @@ func RenderAttributeViewTable(attrView *av.AttributeView, view *av.View, query s Filters: view.Filters, Sorts: view.Sorts, Group: view.Group, + ShowIcon: view.Table.ShowIcon, + WrapField: view.Table.WrapField, }, Columns: []*av.TableColumn{}, Rows: []*av.TableRow{}, @@ -53,6 +55,7 @@ func RenderAttributeViewTable(attrView *av.AttributeView, view *av.View, query s Name: key.Name, Type: key.Type, Icon: key.Icon, + Wrap: col.Wrap, Hidden: col.Hidden, Desc: key.Desc, Options: key.Options, @@ -62,7 +65,6 @@ func RenderAttributeViewTable(attrView *av.AttributeView, view *av.View, query s Rollup: key.Rollup, Date: key.Date, }, - Wrap: col.Wrap, Width: col.Width, Pin: col.Pin, Calc: col.Calc,