This commit is contained in:
Daniel 2025-06-29 15:53:56 +08:00
parent b77f3907f7
commit 276ea42188
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
5 changed files with 27 additions and 13 deletions

View file

@ -178,18 +178,18 @@ type SelectOption struct {
// View 描述了视图的结构。 // View 描述了视图的结构。
type View struct { type View struct {
ID string `json:"id"` // 视图 ID ID string `json:"id"` // 视图 ID
Icon string `json:"icon"` // 视图图标 Icon string `json:"icon"` // 视图图标
Name string `json:"name"` // 视图名称 Name string `json:"name"` // 视图名称
HideAttrViewName bool `json:"hideAttrViewName"` // 是否隐藏属性视图名称 HideAttrViewName bool `json:"hideAttrViewName"` // 是否隐藏属性视图名称
Desc string `json:"desc"` // 视图描述 Desc string `json:"desc"` // 视图描述
Filters []*ViewFilter `json:"filters,omitempty"` // 过滤规则 Filters []*ViewFilter `json:"filters,omitempty"` // 过滤规则
Sorts []*ViewSort `json:"sorts,omitempty"` // 排序规则 Sorts []*ViewSort `json:"sorts,omitempty"` // 排序规则
PageSize int `json:"pageSize"` // 每页条目数 Group *ViewGroup `json:"group,omitempty"` // 分组规则
PageSize int `json:"pageSize"` // 每页条目数
LayoutType LayoutType `json:"type"` // 当前布局类型 LayoutType LayoutType `json:"type"` // 当前布局类型
Table *LayoutTable `json:"table,omitempty"` // 表格布局 Table *LayoutTable `json:"table,omitempty"` // 表格布局
Gallery *LayoutGallery `json:"gallery,omitempty"` // 画廊布局 Gallery *LayoutGallery `json:"gallery,omitempty"` // 画廊布局
} }
// LayoutType 描述了视图布局类型。 // LayoutType 描述了视图布局类型。
@ -585,6 +585,10 @@ func (av *AttributeView) Clone() (ret *AttributeView) {
s.Column = keyIDMap[s.Column] s.Column = keyIDMap[s.Column]
} }
if nil != view.Group {
view.Group.Field = keyIDMap[view.Group.Field]
}
switch view.LayoutType { switch view.LayoutType {
case LayoutTypeTable: case LayoutTypeTable:
for _, column := range view.Table.Columns { for _, column := range view.Table.Columns {

View file

@ -49,7 +49,8 @@ type BaseInstance struct {
HideAttrViewName bool `json:"hideAttrViewName"` // 是否隐藏属性视图名称 HideAttrViewName bool `json:"hideAttrViewName"` // 是否隐藏属性视图名称
Filters []*ViewFilter `json:"filters"` // 过滤规则 Filters []*ViewFilter `json:"filters"` // 过滤规则
Sorts []*ViewSort `json:"sorts"` // 排序规则 Sorts []*ViewSort `json:"sorts"` // 排序规则
PageSize int `json:"pageSize"` // 每页项目 Group *ViewGroup `json:"group"` // 分组规则
PageSize int `json:"pageSize"` // 每页项目数
} }
func (baseInstance *BaseInstance) GetSorts() []*ViewSort { func (baseInstance *BaseInstance) GetSorts() []*ViewSort {

View file

@ -1876,6 +1876,13 @@ func (tx *Transaction) doDuplicateAttrViewView(operation *Operation) (ret *TxErr
}) })
} }
if nil != masterView.Group {
if copyErr := copier.Copy(view.Group, masterView.Group); nil != copyErr {
logging.LogErrorf("copy group failed: %s", copyErr)
return &TxErr{code: TxErrWriteAttributeView, id: avID, msg: copyErr.Error()}
}
}
view.PageSize = masterView.PageSize view.PageSize = masterView.PageSize
switch masterView.LayoutType { switch masterView.LayoutType {

View file

@ -25,6 +25,7 @@ func RenderAttributeViewGallery(attrView *av.AttributeView, view *av.View, query
HideAttrViewName: view.HideAttrViewName, HideAttrViewName: view.HideAttrViewName,
Filters: view.Filters, Filters: view.Filters,
Sorts: view.Sorts, Sorts: view.Sorts,
Group: view.Group,
}, },
CoverFrom: view.Gallery.CoverFrom, CoverFrom: view.Gallery.CoverFrom,
CoverFromAssetKeyID: view.Gallery.CoverFromAssetKeyID, CoverFromAssetKeyID: view.Gallery.CoverFromAssetKeyID,

View file

@ -32,6 +32,7 @@ func RenderAttributeViewTable(attrView *av.AttributeView, view *av.View, query s
HideAttrViewName: view.HideAttrViewName, HideAttrViewName: view.HideAttrViewName,
Filters: view.Filters, Filters: view.Filters,
Sorts: view.Sorts, Sorts: view.Sorts,
Group: view.Group,
}, },
Columns: []*av.TableColumn{}, Columns: []*av.TableColumn{},
Rows: []*av.TableRow{}, Rows: []*av.TableRow{},