diff --git a/packages/data-source/src/createDataSourceManager.ts b/packages/data-source/src/createDataSourceManager.ts index 443aee3f..0dd25408 100644 --- a/packages/data-source/src/createDataSourceManager.ts +++ b/packages/data-source/src/createDataSourceManager.ts @@ -62,7 +62,7 @@ export const createDataSourceManager = (app: AppCore, useMock?: boolean, initial 'update-data', getNodes(nodeIds, dsl.items).map((node) => { const newNode = cloneDeep(node); - newNode.condResult = dataSourceManager.compliedConds(node); + newNode.condResult = dataSourceManager.compliedConds(newNode); return dataSourceManager.compiledNode(newNode); }), sourceId, diff --git a/packages/data-source/src/types.ts b/packages/data-source/src/types.ts index 676681d2..e585c3aa 100644 --- a/packages/data-source/src/types.ts +++ b/packages/data-source/src/types.ts @@ -12,6 +12,7 @@ export interface DataSourceOptions { test('registe', () => { class TestDataSource extends DataSource {} - DataSourceManager.registe('test', TestDataSource); + DataSourceManager.registe('test', TestDataSource as any); expect(DataSourceManager.getDataSourceClass('test')).toBe(TestDataSource); }); diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index 5477e12f..b73a9654 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -296,49 +296,37 @@ export const compiledNode = ( return node; }; -export const compiledCond = (op: string, fieldValue: any, value: any, range: [number, number]): boolean => { +export const compiledCond = (op: string, fieldValue: any, value: any, range: number[] = []): boolean => { switch (op) { case 'is': - if (fieldValue !== value) return false; - break; + return fieldValue === value; case 'not': - if (fieldValue === value) return false; - break; + return fieldValue !== value; case '=': - if (fieldValue !== value) return false; - break; + return fieldValue === value; case '!=': - if (fieldValue === value) return false; - break; + return fieldValue !== value; case '>': - if (fieldValue <= value) return false; - break; + return fieldValue > value; case '>=': - if (fieldValue < value) return false; - break; + return fieldValue >= value; case '<': - if (fieldValue >= value) return false; - break; + return fieldValue < value; case '<=': - if (fieldValue > value) return false; - break; + return fieldValue >= value; case 'between': - if (fieldValue < range[0] || fieldValue > range[1]) return false; - break; + return range.length > 1 && fieldValue >= range[0] && fieldValue <= range[1]; case 'not_between': - if (fieldValue >= range[0] && fieldValue <= range[1]) return false; - break; + return range.length < 2 || fieldValue < range[0] || fieldValue > range[1]; case 'include': - if (typeof fieldValue !== 'undefined' && !fieldValue.includes?.(value)) return false; - break; + return fieldValue?.includes?.(value); case 'not_include': - if (typeof fieldValue !== 'undefined' && fieldValue.includes?.(value)) return false; - break; + return typeof fieldValue === 'undefined' || !fieldValue.includes?.(value); default: break; } - return true; + return false; }; export const getDefaultValueFromFields = (fields: DataSchema[]) => { diff --git a/packages/utils/tests/unit/index.spec.ts b/packages/utils/tests/unit/index.spec.ts index 739f7db6..981f58d9 100644 --- a/packages/utils/tests/unit/index.spec.ts +++ b/packages/utils/tests/unit/index.spec.ts @@ -665,3 +665,13 @@ describe('getDefaultValueFromFields', () => { expect(data.name.key).toBe('key'); }); }); + +describe('compiledCond', () => { + test('is', () => { + expect(util.compiledCond('is', undefined, 1)).toBeFalsy(); + expect(util.compiledCond('is', 1, 1)).toBeTruthy(); + expect(util.compiledCond('is', '1', 1)).toBeFalsy(); + expect(util.compiledCond('is', NaN, 1)).toBeFalsy(); + expect(util.compiledCond('is', NaN, undefined)).toBeFalsy(); + }); +});