Skip to content

Commit

Permalink
🎨 Add template type column to Attribute View #8766
Browse files Browse the repository at this point in the history
  • Loading branch information
88250 committed Oct 1, 2023
1 parent 7d1e1bf commit 0aa61fe
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 17 deletions.
6 changes: 3 additions & 3 deletions kernel/av/av.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ func (value *Value) String() string {
}
return strings.Join(ret, " ")
case KeyTypeTemplate:
return value.Template.content
return value.Template.Content
default:
return ""
}
Expand Down Expand Up @@ -351,11 +351,11 @@ type ValueAsset struct {
}

type ValueTemplate struct {
content string `json:"content"`
Content string `json:"content"`
}

func (t *ValueTemplate) Render(blockID string, r func(blockID string) string) {
t.content = r(blockID)
t.Content = r(blockID)
}

// View 描述了视图的结构。
Expand Down
26 changes: 13 additions & 13 deletions kernel/av/table.go
Original file line number Diff line number Diff line change
Expand Up @@ -523,7 +523,7 @@ func (table *Table) calcColTemplate(col *TableColumn, colIndex int) {
case CalcOperatorCountValues:
countValues := 0
for _, row := range table.Rows {
if nil != row.Cells[colIndex] && nil != row.Cells[colIndex].Value && nil != row.Cells[colIndex].Value.Template && "" != row.Cells[colIndex].Value.Template.content {
if nil != row.Cells[colIndex] && nil != row.Cells[colIndex].Value && nil != row.Cells[colIndex].Value.Template && "" != row.Cells[colIndex].Value.Template.Content {
countValues++
}
}
Expand All @@ -532,9 +532,9 @@ func (table *Table) calcColTemplate(col *TableColumn, colIndex int) {
countUniqueValues := 0
uniqueValues := map[string]bool{}
for _, row := range table.Rows {
if nil != row.Cells[colIndex] && nil != row.Cells[colIndex].Value && nil != row.Cells[colIndex].Value.Template && "" != row.Cells[colIndex].Value.Template.content {
if !uniqueValues[row.Cells[colIndex].Value.Template.content] {
uniqueValues[row.Cells[colIndex].Value.Template.content] = true
if nil != row.Cells[colIndex] && nil != row.Cells[colIndex].Value && nil != row.Cells[colIndex].Value.Template && "" != row.Cells[colIndex].Value.Template.Content {
if !uniqueValues[row.Cells[colIndex].Value.Template.Content] {
uniqueValues[row.Cells[colIndex].Value.Template.Content] = true
countUniqueValues++
}
}
Expand All @@ -543,23 +543,23 @@ func (table *Table) calcColTemplate(col *TableColumn, colIndex int) {
case CalcOperatorCountEmpty:
countEmpty := 0
for _, row := range table.Rows {
if nil == row.Cells[colIndex] || nil == row.Cells[colIndex].Value || nil == row.Cells[colIndex].Value.Template || "" == row.Cells[colIndex].Value.Template.content {
if nil == row.Cells[colIndex] || nil == row.Cells[colIndex].Value || nil == row.Cells[colIndex].Value.Template || "" == row.Cells[colIndex].Value.Template.Content {
countEmpty++
}
}
col.Calc.Result = &Value{Number: NewFormattedValueNumber(float64(countEmpty), NumberFormatNone)}
case CalcOperatorCountNotEmpty:
countNotEmpty := 0
for _, row := range table.Rows {
if nil != row.Cells[colIndex] && nil != row.Cells[colIndex].Value && nil != row.Cells[colIndex].Value.Template && "" != row.Cells[colIndex].Value.Template.content {
if nil != row.Cells[colIndex] && nil != row.Cells[colIndex].Value && nil != row.Cells[colIndex].Value.Template && "" != row.Cells[colIndex].Value.Template.Content {
countNotEmpty++
}
}
col.Calc.Result = &Value{Number: NewFormattedValueNumber(float64(countNotEmpty), NumberFormatNone)}
case CalcOperatorPercentEmpty:
countEmpty := 0
for _, row := range table.Rows {
if nil == row.Cells[colIndex] || nil == row.Cells[colIndex].Value || nil == row.Cells[colIndex].Value.Template || "" == row.Cells[colIndex].Value.Template.content {
if nil == row.Cells[colIndex] || nil == row.Cells[colIndex].Value || nil == row.Cells[colIndex].Value.Template || "" == row.Cells[colIndex].Value.Template.Content {
countEmpty++
}
}
Expand All @@ -569,7 +569,7 @@ func (table *Table) calcColTemplate(col *TableColumn, colIndex int) {
case CalcOperatorPercentNotEmpty:
countNotEmpty := 0
for _, row := range table.Rows {
if nil != row.Cells[colIndex] && nil != row.Cells[colIndex].Value && nil != row.Cells[colIndex].Value.Template && "" != row.Cells[colIndex].Value.Template.content {
if nil != row.Cells[colIndex] && nil != row.Cells[colIndex].Value && nil != row.Cells[colIndex].Value.Template && "" != row.Cells[colIndex].Value.Template.Content {
countNotEmpty++
}
}
Expand Down Expand Up @@ -969,16 +969,16 @@ func (table *Table) calcColNumber(col *TableColumn, colIndex int) {
}
}
case CalcOperatorMin:
min := math.MaxFloat64
minVal := math.MaxFloat64
for _, row := range table.Rows {
if nil != row.Cells[colIndex] && nil != row.Cells[colIndex].Value && nil != row.Cells[colIndex].Value.Number && row.Cells[colIndex].Value.Number.IsNotEmpty {
if row.Cells[colIndex].Value.Number.Content < min {
min = row.Cells[colIndex].Value.Number.Content
if row.Cells[colIndex].Value.Number.Content < minVal {
minVal = row.Cells[colIndex].Value.Number.Content
}
}
}
if math.MaxFloat64 != min {
col.Calc.Result = &Value{Number: NewFormattedValueNumber(min, col.NumberFormat)}
if math.MaxFloat64 != minVal {
col.Calc.Result = &Value{Number: NewFormattedValueNumber(minVal, col.NumberFormat)}
}
case CalcOperatorMax:
maxVal := -math.MaxFloat64
Expand Down
3 changes: 2 additions & 1 deletion kernel/model/attribute_view.go
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View) (ret *a
}

// 渲染模板列
if av.KeyTypeTemplate == tableCell.ValueType && nil != tableCell.Value && nil != tableCell.Value.Template {
if av.KeyTypeTemplate == tableCell.ValueType {
render := func(blockID string) string {
funcMap := sprig.TxtFuncMap()
goTpl := template.New("").Delims(".action{", "}")
Expand All @@ -250,6 +250,7 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View) (ret *a
return buf.String()
}

tableCell.Value = &av.Value{ID: tableCell.ID, KeyID: col.ID, BlockID: rowID, Type: av.KeyTypeTemplate, Template: &av.ValueTemplate{}}
tableCell.Value.Template.Render(tableCell.Value.BlockID, render)
}

Expand Down

0 comments on commit 0aa61fe

Please sign in to comment.