diff --git a/app/appearance/langs/ar_SA.json b/app/appearance/langs/ar_SA.json index 528958d3a..a42f435d1 100644 --- a/app/appearance/langs/ar_SA.json +++ b/app/appearance/langs/ar_SA.json @@ -11,7 +11,7 @@ "medium": "متوسط", "small": "صغير", "fitImage": "تعديل حجم الصورة تلقائيًا", - "showIcon": "إظهار الأيقونة", + "showIcon": "عرض أيقونة المفتاح الأساسي", "wrapAllFields": "التفاف الحقول تلقائيًا", "gallery": "معرض", "newTag": "علامة جديدة", diff --git a/app/appearance/langs/de_DE.json b/app/appearance/langs/de_DE.json index 5eba4acc4..70f1f23dd 100644 --- a/app/appearance/langs/de_DE.json +++ b/app/appearance/langs/de_DE.json @@ -11,7 +11,7 @@ "medium": "Mittel", "small": "Klein", "fitImage": "Bildgröße automatisch anpassen", - "showIcon": "Symbol anzeigen", + "showIcon": "Primärschlüssel-Symbol anzeigen", "wrapAllFields": "Felder automatisch umbrechen", "gallery": "Galerie", "newTag": "Neuer Tag", diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index ccd7a1184..4199a27b7 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -11,7 +11,7 @@ "medium": "Medium", "small": "Small", "fitImage": "Auto-fit image size", - "showIcon": "Show icon", + "showIcon": "Show primary key icon", "wrapAllFields": "Auto-wrap fields", "gallery": "Gallery", "newTag": "New tag", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index f1425ad64..5d62a177c 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -11,7 +11,7 @@ "medium": "Mediano", "small": "Pequeño", "fitImage": "Ajustar automáticamente el tamaño de la imagen", - "showIcon": "Mostrar ícono", + "showIcon": "Mostrar ícono de clave primaria", "wrapAllFields": "Ajuste automático de campos", "gallery": "Galería", "newTag": "Nueva etiqueta", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index add699f1f..5f4e9bc7c 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -11,7 +11,7 @@ "medium": "Moyen", "small": "Petit", "fitImage": "Ajuster automatiquement la taille de l'image", - "showIcon": "Afficher l'icône", + "showIcon": "Afficher l'icône de la clé primaire", "wrapAllFields": "Retour automatique des champs", "gallery": "Galerie", "newTag": "Nouvelle étiquette", diff --git a/app/appearance/langs/he_IL.json b/app/appearance/langs/he_IL.json index 7a84a70ee..28def3c15 100644 --- a/app/appearance/langs/he_IL.json +++ b/app/appearance/langs/he_IL.json @@ -11,7 +11,7 @@ "medium": "בינוני", "small": "קטן", "fitImage": "התאמה אוטומטית לגודל התמונה", - "showIcon": "הצג אייקון", + "showIcon": "הצג את סמל המפתח הראשי", "wrapAllFields": "עטיפת שדות אוטומטית", "gallery": "גלריה", "newTag": "תג חדש", diff --git a/app/appearance/langs/it_IT.json b/app/appearance/langs/it_IT.json index c6860b6a1..94ae6744a 100644 --- a/app/appearance/langs/it_IT.json +++ b/app/appearance/langs/it_IT.json @@ -11,7 +11,7 @@ "medium": "Medio", "small": "Piccolo", "fitImage": "Adatta automaticamente la dimensione dell'immagine", - "showIcon": "Mostra icona", + "showIcon": "Mostra l'icona della chiave primaria", "wrapAllFields": "Avvolgi automaticamente i campi", "gallery": "Galleria", "newTag": "Nuova etichetta", diff --git a/app/appearance/langs/ja_JP.json b/app/appearance/langs/ja_JP.json index 5b195717f..118809b45 100644 --- a/app/appearance/langs/ja_JP.json +++ b/app/appearance/langs/ja_JP.json @@ -11,7 +11,7 @@ "medium": "中", "small": "小", "fitImage": "画像サイズを自動調整", - "showIcon": "アイコンを表示", + "showIcon": "主キーアイコンを表示", "wrapAllFields": "フィールドを自動折り返し", "gallery": "ギャラリー", "newTag": "新しいタグ", diff --git a/app/appearance/langs/pl_PL.json b/app/appearance/langs/pl_PL.json index 2183377d6..8a1add4cf 100644 --- a/app/appearance/langs/pl_PL.json +++ b/app/appearance/langs/pl_PL.json @@ -11,7 +11,7 @@ "medium": "Średni", "small": "Mały", "fitImage": "Automatyczne dopasowanie rozmiaru obrazu", - "showIcon": "Pokaż ikonę", + "showIcon": "Pokaż ikonę klucza głównego", "wrapAllFields": "Automatyczne zawijanie pól", "gallery": "Galeria", "newTag": "Nowy tag", diff --git a/app/appearance/langs/pt_BR.json b/app/appearance/langs/pt_BR.json index f07248eae..75078fc09 100644 --- a/app/appearance/langs/pt_BR.json +++ b/app/appearance/langs/pt_BR.json @@ -11,7 +11,7 @@ "medium": "Médio", "small": "Pequeno", "fitImage": "Ajustar automaticamente o tamanho da imagem", - "showIcon": "Mostrar ícone", + "showIcon": "Mostrar ícone da chave primária", "wrapAllFields": "Quebrar automaticamente os campos", "gallery": "Galeria", "newTag": "Nova tag", diff --git a/app/appearance/langs/ru_RU.json b/app/appearance/langs/ru_RU.json index b5187143f..ab14691fa 100644 --- a/app/appearance/langs/ru_RU.json +++ b/app/appearance/langs/ru_RU.json @@ -11,7 +11,7 @@ "medium": "Средний", "small": "Маленький", "fitImage": "Автоматическая подгонка размера изображения", - "showIcon": "Показать значок", + "showIcon": "Показать значок первичного ключа", "wrapAllFields": "Автоматический перенос полей", "gallery": "Галерея", "newTag": "Новый тег", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 4f7340490..c91e9433f 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -11,7 +11,7 @@ "medium": "中", "small": "小", "fitImage": "自動調整圖片大小", - "showIcon": "顯示圖示", + "showIcon": "顯示主鍵圖標", "wrapAllFields": "欄位自動換行", "gallery": "圖庫", "newTag": "新建標籤", 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,