Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2025-06-30 14:41:06 +08:00
commit 3f6418bf49
18 changed files with 64 additions and 35 deletions

View file

@ -11,7 +11,7 @@
"medium": "متوسط",
"small": "صغير",
"fitImage": "تعديل حجم الصورة تلقائيًا",
"showIcon": "إظهار الأيقونة",
"showIcon": "عرض أيقونة المفتاح الأساسي",
"wrapAllFields": "التفاف الحقول تلقائيًا",
"gallery": "معرض",
"newTag": "علامة جديدة",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -11,7 +11,7 @@
"medium": "בינוני",
"small": "קטן",
"fitImage": "התאמה אוטומטית לגודל התמונה",
"showIcon": "הצג אייקון",
"showIcon": "הצג את סמל המפתח הראשי",
"wrapAllFields": "עטיפת שדות אוטומטית",
"gallery": "גלריה",
"newTag": "תג חדש",

View file

@ -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",

View file

@ -11,7 +11,7 @@
"medium": "中",
"small": "小",
"fitImage": "画像サイズを自動調整",
"showIcon": "アイコンを表示",
"showIcon": "主キーアイコンを表示",
"wrapAllFields": "フィールドを自動折り返し",
"gallery": "ギャラリー",
"newTag": "新しいタグ",

View file

@ -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",

View file

@ -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",

View file

@ -11,7 +11,7 @@
"medium": "Средний",
"small": "Маленький",
"fitImage": "Автоматическая подгонка размера изображения",
"showIcon": "Показать значок",
"showIcon": "Показать значок первичного ключа",
"wrapAllFields": "Автоматический перенос полей",
"gallery": "Галерея",
"newTag": "Новый тег",

View file

@ -11,7 +11,7 @@
"medium": "中",
"small": "小",
"fitImage": "自動調整圖片大小",
"showIcon": "顯示圖示",
"showIcon": "顯示主鍵圖標",
"wrapAllFields": "欄位自動換行",
"gallery": "圖庫",
"newTag": "新建標籤",

View file

@ -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"` // 描述
// 以下是某些字段类型的特有属性

View file

@ -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"` // 字段描述
}

View file

@ -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"` // 计算

View file

@ -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)

View file

@ -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,

View file

@ -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,