Browse Source

fix: incorrect formulaPaths

pull/2090/head
Wing-Kam Wong 3 years ago
parent
commit
a74a631883
  1. 16
      packages/nc-gui/components/project/spreadsheet/components/editColumn/FormulaOptions.vue

16
packages/nc-gui/components/project/spreadsheet/components/editColumn/FormulaOptions.vue

@ -294,12 +294,9 @@ export default {
// check circular reference
// e.g. formula1 -> formula2 -> formula1 should return circular reference error
const formulaPaths = [
// all formula fields excluding itself
...this.meta.columns.filter(c => c.id !== this.column.id && c.uidt === UITypes.Formula),
// include target formula field before saving
...this.meta.columns.filter(c => c.title === pt.name && c.uidt === UITypes.Formula)
].reduce((res, c) => {
// get all formula columns excluding itself
const formulaPaths = this.meta.columns.filter(c => c.id !== this.column.id && c.uidt === UITypes.Formula).reduce((res, c) => {
// in `formula`, get all the target neighbours
// i.e. all column id (e.g. cl_xxxxxxxxxxxxxx) with formula type
const neighbours = (c.colOptions.formula.match(/cl_\w{14}/g) || []).filter(colId => (this.meta.columns.filter(col => (col.id === colId && col.uidt === UITypes.Formula)).length))
@ -309,6 +306,13 @@ export default {
}
return res
}, [])
// include target formula column (i.e. the one to be saved if applicable)
const targetFormulaCol = this.meta.columns.find(c => c.title === pt.name && c.uidt === UITypes.Formula)
if (targetFormulaCol) {
formulaPaths.push({
[this.column.id]: [targetFormulaCol.id]
})
}
const vertices = formulaPaths.length
if (vertices > 0) {
// perform kahn's algo for cycle detection

Loading…
Cancel
Save