mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-09-22 00:20:47 +02:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
71ac6d648b
2 changed files with 59 additions and 10 deletions
|
@ -1710,9 +1710,35 @@ func calcFieldRollup(collection Collection, field Field, fieldIndex int) {
|
|||
values := item.GetValues()
|
||||
if nil != values[fieldIndex] && nil != values[fieldIndex].Rollup {
|
||||
for _, content := range values[fieldIndex].Rollup.Contents {
|
||||
if !uniqueValues[content.String(true)] {
|
||||
uniqueValues[content.String(true)] = true
|
||||
countUniqueValues++
|
||||
switch content.Type {
|
||||
case KeyTypeRelation:
|
||||
for _, relationVal := range content.Relation.Contents {
|
||||
key := relationVal.String(true)
|
||||
if !uniqueValues[key] {
|
||||
uniqueValues[key] = true
|
||||
countUniqueValues++
|
||||
}
|
||||
}
|
||||
case KeyTypeMSelect:
|
||||
for _, mSelectVal := range content.MSelect {
|
||||
if !uniqueValues[mSelectVal.Content] {
|
||||
uniqueValues[mSelectVal.Content] = true
|
||||
countUniqueValues++
|
||||
}
|
||||
}
|
||||
case KeyTypeMAsset:
|
||||
for _, mAssetVal := range content.MAsset {
|
||||
if !uniqueValues[mAssetVal.Content] {
|
||||
uniqueValues[mAssetVal.Content] = true
|
||||
countUniqueValues++
|
||||
}
|
||||
}
|
||||
default:
|
||||
key := content.String(true)
|
||||
if !uniqueValues[key] {
|
||||
uniqueValues[key] = true
|
||||
countUniqueValues++
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -835,16 +835,39 @@ func (r *ValueRollup) calcContents(calc *RollupCalc, destKey *Key) {
|
|||
switch calc.Operator {
|
||||
case CalcOperatorNone:
|
||||
case CalcOperatorUniqueValues:
|
||||
var newContents []*Value
|
||||
uniqueValues := map[string]bool{}
|
||||
for _, v := range r.Contents {
|
||||
key := v.String(true)
|
||||
if !uniqueValues[key] {
|
||||
uniqueValues[key] = true
|
||||
newContents = append(newContents, v)
|
||||
for _, content := range r.Contents {
|
||||
switch content.Type {
|
||||
case KeyTypeRelation:
|
||||
var newRelationContents []*Value
|
||||
for _, relationVal := range content.Relation.Contents {
|
||||
key := relationVal.String(true)
|
||||
if !uniqueValues[key] {
|
||||
uniqueValues[key] = true
|
||||
newRelationContents = append(newRelationContents, relationVal)
|
||||
}
|
||||
}
|
||||
content.Relation.Contents = newRelationContents
|
||||
case KeyTypeMSelect:
|
||||
var newMSelect []*ValueSelect
|
||||
for _, mSelect := range content.MSelect {
|
||||
if !uniqueValues[mSelect.Content] {
|
||||
uniqueValues[mSelect.Content] = true
|
||||
newMSelect = append(newMSelect, mSelect)
|
||||
}
|
||||
}
|
||||
content.MSelect = newMSelect
|
||||
case KeyTypeMAsset:
|
||||
var newMAsset []*ValueAsset
|
||||
for _, mAsset := range content.MAsset {
|
||||
if !uniqueValues[mAsset.Content] {
|
||||
uniqueValues[mAsset.Content] = true
|
||||
newMAsset = append(newMAsset, mAsset)
|
||||
}
|
||||
}
|
||||
content.MAsset = newMAsset
|
||||
}
|
||||
}
|
||||
r.Contents = newContents
|
||||
case CalcOperatorCountAll:
|
||||
r.Contents = []*Value{{Type: KeyTypeNumber, Number: NewFormattedValueNumber(float64(len(r.Contents)), NumberFormatNone)}}
|
||||
case CalcOperatorCountValues:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue