diff --git a/kernel/av/table.go b/kernel/av/table.go index a4ba6406c..77f0cdf78 100644 --- a/kernel/av/table.go +++ b/kernel/av/table.go @@ -39,6 +39,7 @@ type ViewTableColumn struct { Wrap bool `json:"wrap"` // 是否换行 Hidden bool `json:"hidden"` // 是否隐藏 + Pin bool `json:"pin"` // 是否固定 Width string `json:"width"` // 列宽度 Calc *ColumnCalc `json:"calc,omitempty"` // 计算 } @@ -562,6 +563,7 @@ type TableColumn struct { Icon string `json:"icon"` // 列图标 Wrap bool `json:"wrap"` // 是否换行 Hidden bool `json:"hidden"` // 是否隐藏 + 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 603ff105b..7de99c1ea 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -366,6 +366,7 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View) (ret *a Wrap: col.Wrap, Hidden: col.Hidden, Width: col.Width, + Pin: col.Pin, Calc: col.Calc, }) } @@ -947,6 +948,39 @@ func setAttributeViewColHidden(operation *Operation) (err error) { return } +func (tx *Transaction) doSetAttrViewColumnPin(operation *Operation) (ret *TxErr) { + err := setAttributeViewColPin(operation) + if nil != err { + return &TxErr{code: TxErrWriteAttributeView, id: operation.AvID, msg: err.Error()} + } + return +} + +func setAttributeViewColPin(operation *Operation) (err error) { + attrView, err := av.ParseAttributeView(operation.AvID) + if nil != err { + return + } + + view, err := attrView.GetView() + if nil != err { + return + } + + switch view.LayoutType { + case av.LayoutTypeTable: + for _, column := range view.Table.Columns { + if column.ID == operation.ID { + column.Pin = operation.Data.(bool) + break + } + } + } + + err = av.SaveAttributeView(attrView) + return +} + func (tx *Transaction) doSetAttrViewColumnIcon(operation *Operation) (ret *TxErr) { err := setAttributeViewColIcon(operation) if nil != err { diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index ef5318a1b..460c23efc 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -208,6 +208,8 @@ func performTx(tx *Transaction) (ret *TxErr) { ret = tx.doSetAttrViewColumnWrap(op) case "setAttrViewColHidden": ret = tx.doSetAttrViewColumnHidden(op) + case "setAttrViewColPin": + ret = tx.doSetAttrViewColumnPin(op) case "setAttrViewColIcon": ret = tx.doSetAttrViewColumnIcon(op) case "insertAttrViewBlock": diff --git a/kernel/treenode/node.go b/kernel/treenode/node.go index 8658f215d..70621b178 100644 --- a/kernel/treenode/node.go +++ b/kernel/treenode/node.go @@ -582,6 +582,7 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View) (ret *a Wrap: col.Wrap, Hidden: col.Hidden, Width: col.Width, + Pin: col.Pin, Calc: col.Calc, }) }