Browse Source

chore: cleanup

pull/7268/head
Pranav C 11 months ago
parent
commit
ece0749f54
  1. 69
      packages/nc-gui/components/smartsheet/column/FormulaOptions.vue
  2. 40
      packages/nocodb-sdk/src/lib/formulaHelpers.ts

69
packages/nc-gui/components/smartsheet/column/FormulaOptions.vue

@ -25,7 +25,6 @@ import {
NcAutocompleteTree, NcAutocompleteTree,
computed, computed,
formulaList, formulaList,
formulaTypes,
formulas, formulas,
getUIDTIcon, getUIDTIcon,
getWordUntilCaret, getWordUntilCaret,
@ -62,18 +61,6 @@ const { t } = useI18n()
const { predictFunction: _predictFunction } = useNocoEe() const { predictFunction: _predictFunction } = useNocoEe()
enum JSEPNode {
COMPOUND = 'Compound',
IDENTIFIER = 'Identifier',
MEMBER_EXP = 'MemberExpression',
LITERAL = 'Literal',
THIS_EXP = 'ThisExpression',
CALL_EXP = 'CallExpression',
UNARY_EXP = 'UnaryExpression',
BINARY_EXP = 'BinaryExpression',
ARRAY_EXP = 'ArrayExpression',
}
const meta = inject(MetaInj, ref()) const meta = inject(MetaInj, ref())
const supportedColumns = computed( const supportedColumns = computed(
@ -107,16 +94,12 @@ const validators = {
try { try {
validateFormulaAndExtractTreeWithType({ formula, columns: supportedColumns.value, clientOrSqlUi: sqlUi.value }) validateFormulaAndExtractTreeWithType({ formula, columns: supportedColumns.value, clientOrSqlUi: sqlUi.value })
} catch (e: any) { } catch (e: any) {
console.log(e)
if (e instanceof FormulaError && e.extra?.key) { if (e instanceof FormulaError && e.extra?.key) {
return reject(new Error(t(e.extra.key, e.extra))) return reject(new Error(t(e.extra.key, e.extra)))
} }
return reject(new Error(e.message)) return reject(new Error(e.message))
} }
// if (res !== true) {
// return reject(new Error(res))
// }
resolve() resolve()
}) })
}, },
@ -610,53 +593,6 @@ function validateAgainstType(
type = formulaTypes.DATE type = formulaTypes.DATE
break break
case UITypes.Rollup: {
const rollupFunction = col.colOptions.rollup_function
if (['count', 'avg', 'sum', 'countDistinct', 'sumDistinct', 'avgDistinct'].includes(rollupFunction)) {
// these functions produce a numeric value, which can be used in numeric functions
if (expectedType !== formulaTypes.NUMERIC) {
typeErrors.add(
t('msg.formula.columnWithTypeFoundButExpected', {
columnName: parsedTree.name,
columnType: formulaTypes.NUMERIC,
expectedType,
}),
)
}
} else {
// the value is based on the foreign rollup column type
const selectedTable = refTables.value.find((t) => t.column.id === col.colOptions.fk_relation_column_id)
const refTableColumns = metas.value[selectedTable.id].columns.filter(
(c: ColumnType) =>
vModel.value.fk_lookup_column_id === c.id ||
(!isSystemColumn(c) && c.id !== vModel.value.id && c.uidt !== UITypes.Links),
)
const childFieldColumn = refTableColumns.find(
(column: ColumnType) => column.id === col.colOptions.fk_rollup_column_id,
)
const abstractType = sqlUi.value.getAbstractType(childFieldColumn)
if (expectedType === formulaTypes.DATE && !isDate(childFieldColumn, sqlUi.value.getAbstractType(childFieldColumn))) {
typeErrors.add(
t('msg.formula.columnWithTypeFoundButExpected', {
columnName: parsedTree.name,
columnType: abstractType,
expectedType,
}),
)
} else if (expectedType === formulaTypes.NUMERIC && !isNumericCol(childFieldColumn)) {
typeErrors.add(
t('msg.formula.columnWithTypeFoundButExpected', {
columnName: parsedTree.name,
columnType: abstractType,
expectedType,
}),
)
}
}
break
}
// not supported // not supported
case UITypes.ForeignKey: case UITypes.ForeignKey:
case UITypes.Attachment: case UITypes.Attachment:
@ -664,6 +600,7 @@ function validateAgainstType(
case UITypes.Time: case UITypes.Time:
case UITypes.Percent: case UITypes.Percent:
case UITypes.Duration: case UITypes.Duration:
case UITypes.Rollup:
case UITypes.Lookup: case UITypes.Lookup:
case UITypes.Barcode: case UITypes.Barcode:
case UITypes.Button: case UITypes.Button:
@ -871,10 +808,6 @@ setAdditionalValidations({
onMounted(() => { onMounted(() => {
jsep.plugins.register(jsepCurlyHook) jsep.plugins.register(jsepCurlyHook)
}) })
// const predictFunction = async () => {
// await _predictFunction(formState, meta, supportedColumns, suggestionsList, vModel)
// }
</script> </script>
<template> <template>

40
packages/nocodb-sdk/src/lib/formulaHelpers.ts

@ -88,46 +88,6 @@ function validateDateWithUnknownFormat(v: string) {
return false; return false;
} }
/*
export const jsepCurlyHook = {
name: 'curly',
init(jsep) {
jsep.hooks.add('gobble-token', function gobbleCurlyLiteral(env) {
const OCURLY_CODE = 123; // {
const CCURLY_CODE = 125; // }
let start = -1;
const { context } = env;
if (
!jsep.isIdentifierStart(context.code) &&
context.code === OCURLY_CODE
) {
if (start == -1) {
start = context.index;
}
context.index += 1;
context.gobbleExpressions(CCURLY_CODE);
if (context.code === CCURLY_CODE) {
context.index += 1;
env.node = {
type: jsep.IDENTIFIER,
name: /{{(.*?)}}/.test(context.expr)
? // start would be the position of the first curly bracket
// add 2 to point to the first character for expressions like {{col1}}
context.expr.slice(start + 2, context.index - 1)
: // start would be the position of the first curly bracket
// add 1 to point to the first character for expressions like {col1}
context.expr.slice(start + 1, context.index - 1),
};
return env.node;
} else {
context.throwError('Unclosed }');
}
}
});
},
} as jsep.IPlugin;
*/
export async function substituteColumnAliasWithIdInFormula( export async function substituteColumnAliasWithIdInFormula(
formula, formula,
columns: ColumnType[] columns: ColumnType[]

Loading…
Cancel
Save