This commit is contained in:
Daniel 2025-07-04 16:42:37 +08:00
parent eafe42fe59
commit 99db625cf7
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
5 changed files with 24 additions and 17 deletions

View file

@ -192,13 +192,19 @@ type View struct {
Gallery *LayoutGallery `json:"gallery,omitempty"` // 卡片布局 Gallery *LayoutGallery `json:"gallery,omitempty"` // 卡片布局
ItemIDs []string `json:"itemIds,omitempty"` // 项目 ID 列表,用于维护所有项目 ItemIDs []string `json:"itemIds,omitempty"` // 项目 ID 列表,用于维护所有项目
Groups []*View `json:"groups,omitempty"` // 分组视图列表 Groups []*View `json:"groups,omitempty"` // 分组视图列表
GroupItemIDs []string `json:"groupItemIds,omitempty"` // 分组项目 ID 列表,用于维护分组中的所有项目 GroupItemIDs []string `json:"groupItemIds,omitempty"` // 分组项目 ID 列表,用于维护分组中的所有项目
GroupCalcSum bool `json:"groupCalcSum,omitempty"` // 分组是否计算总和 GroupCalc *GroupCalc `json:"groupCalc,omitempty"` // 分组计算规则
GroupName string `json:"groupName,omitempty"` // 分组名称 GroupName string `json:"groupName,omitempty"` // 分组名称
GroupFolded bool `json:"groupFolded,omitempty"` // 分组是否折叠 GroupFolded bool `json:"groupFolded,omitempty"` // 分组是否折叠
GroupHidden bool `json:"groupHidden,omitempty"` // 分组是否隐藏 GroupHidden bool `json:"groupHidden,omitempty"` // 分组是否隐藏
GroupDefault bool `json:"groupDefault,omitempty"` // 是否为默认分组 GroupDefault bool `json:"groupDefault,omitempty"` // 是否为默认分组
}
// GroupCalc 描述了分组计算规则和结果的结构。
type GroupCalc struct {
Field string `json:"field"` // 字段 ID
FieldCalc `json:"calc"` // 计算规则和结果
} }
// LayoutType 描述了视图布局类型。 // LayoutType 描述了视图布局类型。

View file

@ -16,8 +16,8 @@
package av package av
// ColumnCalc 描述了列(字段)计算操作和结果的结构。 // FieldCalc 描述了字段计算操作和结果的结构。
type ColumnCalc struct { type FieldCalc struct {
Operator CalcOperator `json:"operator"` // 计算操作符 Operator CalcOperator `json:"operator"` // 计算操作符
Result *Value `json:"result"` // 计算结果 Result *Value `json:"result"` // 计算结果
} }

View file

@ -67,7 +67,8 @@ type BaseInstance struct {
Folded bool `json:"folded,omitempty"` // 是否折叠 Folded bool `json:"folded,omitempty"` // 是否折叠
Hidden bool `json:"hidden,omitempty"` // 是否隐藏 Hidden bool `json:"hidden,omitempty"` // 是否隐藏
Groups []Viewable `json:"groups,omitempty"` // 分组实例列表 Groups []Viewable `json:"groups,omitempty"` // 分组实例列表
GroupCalc *GroupCalc `json:"groupCalc,omitempty"` // 分组计算规则和结果
} }
func (baseInstance *BaseInstance) GetSorts() []*ViewSort { func (baseInstance *BaseInstance) GetSorts() []*ViewSort {

View file

@ -45,9 +45,9 @@ func NewLayoutTable() *LayoutTable {
type ViewTableColumn struct { type ViewTableColumn struct {
*BaseField *BaseField
Pin bool `json:"pin"` // 是否固定 Pin bool `json:"pin"` // 是否固定
Width string `json:"width"` // 列宽度 Width string `json:"width"` // 列宽度
Calc *ColumnCalc `json:"calc,omitempty"` // 计算 Calc *FieldCalc `json:"calc,omitempty"` // 计算规则
} }
// Table 描述了表格视图实例的结构。 // Table 描述了表格视图实例的结构。
@ -63,9 +63,9 @@ type Table struct {
type TableColumn struct { type TableColumn struct {
*BaseInstanceField *BaseInstanceField
Pin bool `json:"pin"` // 是否固定 Pin bool `json:"pin"` // 是否固定
Width string `json:"width"` // 列宽度 Width string `json:"width"` // 列宽度
Calc *ColumnCalc `json:"calc"` // 计算 Calc *FieldCalc `json:"calc"` // 计算规则和结果
} }
// TableRow 描述了表格实例行的结构。 // TableRow 描述了表格实例行的结构。

View file

@ -2346,7 +2346,7 @@ func setAttributeViewColumnCalc(operation *Operation) (err error) {
return return
} }
calc := &av.ColumnCalc{} calc := &av.FieldCalc{}
switch view.LayoutType { switch view.LayoutType {
case av.LayoutTypeTable: case av.LayoutTypeTable:
if err = gulu.JSON.UnmarshalJSON(data, calc); err != nil { if err = gulu.JSON.UnmarshalJSON(data, calc); err != nil {