This commit is contained in:
parent
90044e1f26
commit
5ba23bf204
5 changed files with 52 additions and 8 deletions
|
@ -68,6 +68,16 @@ func (av *AttributeView) GetColumnNames() (ret []string) {
|
|||
return
|
||||
}
|
||||
|
||||
func (av *AttributeView) InsertColumn(index int, column Column) {
|
||||
if 0 > index || len(av.Columns) == index {
|
||||
av.Columns = append(av.Columns, column)
|
||||
return
|
||||
}
|
||||
|
||||
av.Columns = append(av.Columns[:index+1], av.Columns[index:]...)
|
||||
av.Columns[index] = column
|
||||
}
|
||||
|
||||
type AttributeViewFilter struct {
|
||||
Column string `json:"column"`
|
||||
Operator FilterOperator `json:"operator"`
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
|
||||
package av
|
||||
|
||||
import "github.com/88250/lute/ast"
|
||||
|
||||
// Column 描述了属性视图的列。
|
||||
type Column interface {
|
||||
|
||||
|
@ -59,3 +61,11 @@ func (c *BaseColumn) Name() string {
|
|||
func (c *BaseColumn) Type() ColumnType {
|
||||
return c.BaseType
|
||||
}
|
||||
|
||||
func NewBaseColumn(name string, columnType ColumnType) *BaseColumn {
|
||||
return &BaseColumn{
|
||||
BaseID: ast.NewNodeID(),
|
||||
BaseName: name,
|
||||
BaseType: columnType,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,18 +16,12 @@
|
|||
|
||||
package av
|
||||
|
||||
import "github.com/88250/lute/ast"
|
||||
|
||||
type ColumnBlock struct {
|
||||
*BaseColumn
|
||||
}
|
||||
|
||||
func NewColumnBlock() *ColumnBlock {
|
||||
return &ColumnBlock{
|
||||
BaseColumn: &BaseColumn{
|
||||
BaseID: ast.NewNodeID(),
|
||||
BaseName: "Block",
|
||||
BaseType: ColumnTypeBlock,
|
||||
},
|
||||
BaseColumn: NewBaseColumn("Block", ColumnTypeBlock),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,3 +19,9 @@ package av
|
|||
type ColumnText struct {
|
||||
*BaseColumn
|
||||
}
|
||||
|
||||
func NewColumnText(name string) *ColumnText {
|
||||
return &ColumnText{
|
||||
BaseColumn: NewBaseColumn(name, ColumnTypeText),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,13 +17,37 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/88250/lute/parse"
|
||||
"github.com/siyuan-note/logging"
|
||||
"github.com/siyuan-note/siyuan/kernel/av"
|
||||
"github.com/siyuan-note/siyuan/kernel/sql"
|
||||
"github.com/siyuan-note/siyuan/kernel/treenode"
|
||||
)
|
||||
|
||||
func AddBlockToAttributeView(blockID, avID string) (err error) {
|
||||
func AddAttributeViewColumn(name string, typ string, columnIndex int, avID string) (err error) {
|
||||
attrView, err := av.ParseAttributeView(avID)
|
||||
if nil != err {
|
||||
return
|
||||
}
|
||||
|
||||
switch av.ColumnType(typ) {
|
||||
case av.ColumnTypeText:
|
||||
attrView.InsertColumn(columnIndex, av.NewColumnText(name))
|
||||
default:
|
||||
msg := fmt.Sprintf("invalid column type [%s]", typ)
|
||||
logging.LogErrorf(msg)
|
||||
err = errors.New(msg)
|
||||
return
|
||||
}
|
||||
|
||||
err = av.SaveAttributeView(attrView)
|
||||
return
|
||||
}
|
||||
|
||||
func AddAttributeViewBlock(blockID, avID string) (err error) {
|
||||
tree, err := loadTreeByBlockID(blockID)
|
||||
if nil != err {
|
||||
return
|
||||
|
|
Loading…
Add table
Reference in a new issue