siyuan/kernel/av/cell.go

86 lines
2.1 KiB
Go
Raw Normal View History

// SiYuan - Refactor your thinking
// Copyright (c) 2020-present, b3log.org
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
package av
2023-07-01 10:23:58 +08:00
import (
2023-07-01 11:19:59 +08:00
"time"
2023-07-01 10:23:58 +08:00
"github.com/88250/gulu"
"github.com/88250/lute/ast"
)
2023-06-10 17:52:10 +08:00
type Cell struct {
2023-07-01 11:19:45 +08:00
ID string `json:"id"`
Value *Value `json:"value"`
ValueType ColumnType `json:"valueType"`
Color string `json:"color"`
BgColor string `json:"bgColor"`
}
2023-06-10 17:52:10 +08:00
2023-07-01 10:23:58 +08:00
type Value struct {
2023-07-01 11:19:45 +08:00
Block *ValueBlock `json:"block"`
Text *ValueText `json:"text"`
Number *ValueNumber `json:"number"`
Date *ValueDate `json:"date"`
Select *ValueSelect `json:"select"`
MSelect []*ValueSelect `json:"mSelect"`
2023-07-01 10:23:58 +08:00
}
func (value *Value) ToJSONString() string {
data, err := gulu.JSON.MarshalJSON(value)
if nil != err {
return ""
2023-06-10 17:52:10 +08:00
}
2023-07-01 10:23:58 +08:00
return string(data)
2023-06-10 17:52:10 +08:00
}
2023-07-01 10:23:58 +08:00
func NewCellBlock(blockID, blockContent string) *Cell {
2023-06-10 17:52:10 +08:00
return &Cell{
2023-07-01 11:19:45 +08:00
ID: ast.NewNodeID(),
Value: &Value{Block: &ValueBlock{ID: blockID, Content: blockContent}},
ValueType: ColumnTypeBlock,
2023-06-10 17:52:10 +08:00
}
}
func NewCell(valueType ColumnType) *Cell {
return &Cell{
ID: ast.NewNodeID(),
ValueType: valueType,
}
}
2023-07-01 11:19:45 +08:00
type ValueBlock struct {
2023-06-10 17:52:10 +08:00
ID string `json:"id"`
Content string `json:"content"`
}
2023-07-01 11:19:45 +08:00
type ValueText struct {
Content string `json:"content"`
}
type ValueNumber struct {
Content float64 `json:"content"`
}
type ValueDate struct {
Content time.Time `json:"content"`
}
type ValueSelect struct {
Content string `json:"content"`
}