@pxp-nd/flow 1.0.86 → 1.0.88

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ # flow-nd
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@pxp-nd/flow",
3
+ "version": "1.0.83",
4
+ "description": "Workflow module for pxp-nd framework",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "prepublish": "tsc",
8
+ "scripts": {
9
+ "test": "echo \"Error: no test specified\" && exit 1",
10
+ "build": "rimraf ./dist && tsc",
11
+ "dev:publish": "yalc publish",
12
+ "prod:publish": "npm publish",
13
+ "dev": "tsc-watch --target es2017 --outDir ./dist --onSuccess \"node .\"",
14
+ "start": "npm run build && node dist/index.js"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/kplian/flow-nd.git"
19
+ },
20
+ "keywords": [
21
+ "flow",
22
+ "pxp",
23
+ "pxp-nd"
24
+ ],
25
+ "author": "Kplian",
26
+ "license": "ISC",
27
+ "bugs": {
28
+ "url": "https://github.com/kplian/flow-nd/issues"
29
+ },
30
+ "homepage": "https://github.com/kplian/flow-nd#readme",
31
+ "dependencies": {
32
+ "@pxp-nd/common": "^1.1.4",
33
+ "@pxp-nd/core": "^1.1.13",
34
+ "axios": "^0.21.1",
35
+ "lodash": "^4.17.21",
36
+ "typeorm": "^0.2.36"
37
+ },
38
+ "yalcSig": "cde9f14a08a99b57ae1fa35548ae318d"
39
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es2019",
4
+ "module": "commonjs",
5
+ "allowJs": false,
6
+ "outDir": "dist",
7
+ "rootDir": "src",
8
+ "strict": false,
9
+ "noImplicitAny": true,
10
+ "esModuleInterop": true,
11
+ "resolveJsonModule": true,
12
+ "skipLibCheck": true,
13
+ "forceConsistentCasingInFileNames": true,
14
+ "emitDecoratorMetadata": true,
15
+ "experimentalDecorators": true,
16
+ "moduleResolution": "node",
17
+ "declaration": true,
18
+ "isolatedModules": true,
19
+ "strictPropertyInitialization": false,
20
+ },
21
+ "include": [
22
+ "custom.d.ts",
23
+ "src/**/*.ts"
24
+ ],
25
+ "exclude": [
26
+ "node_modules",
27
+ "dist"
28
+ ]
29
+ }
@@ -0,0 +1 @@
1
+ cde9f14a08a99b57ae1fa35548ae318d
@@ -378,13 +378,20 @@ let Flow = class Flow extends core_1.Controller {
378
378
  .where(`n.isActive = 1 and n.flowId = :flowId`, { flowId: params.flowId })
379
379
  .getOne();
380
380
  let cond = " and 0=0";
381
+ console.log("totalNodes::::", totalNodes);
381
382
  if (!totalNodes) {
382
383
  cond = " and at.name= 'EVENT' ";
383
384
  }
384
385
  else {
385
386
  const oName = (_a = totalNodes === null || totalNodes === void 0 ? void 0 : totalNodes.action) === null || _a === void 0 ? void 0 : _a.originName;
386
- //
387
- cond = `and at.name != 'EVENT' and (a.originName is null or a.originName = '${oName}')`;
387
+ if (flow.templateType == 'funnel') {
388
+ console.log("es funnel???");
389
+ cond = `and at.name = 'PAGE' `;
390
+ }
391
+ else {
392
+ cond = `and (at.name != 'EVENT' and at.name!='PAGE') and (a.originName is null or a.originName = '${oName}')`;
393
+ }
394
+ console.log("cond:", cond);
388
395
  }
389
396
  let actions = await (0, typeorm_1.getManager)()
390
397
  .createQueryBuilder(Action_1.default, "a")
@@ -691,52 +698,53 @@ let Flow = class Flow extends core_1.Controller {
691
698
  queryBuilder.andWhere(`f.${params.genericFilterFields} LIKE :genericFilterValue`, { genericFilterValue: `%${params.genericFilterValue}%` });
692
699
  }
693
700
  }
701
+ const applyDynamicFilters = (queryBuilder, filters, logicOperator) => {
702
+ filters.forEach((filter, index) => {
703
+ const { field, operator, value } = filter;
704
+ const queryField = `f.${field}`;
705
+ const parameterName = `filterValue${index}`;
706
+ let condition;
707
+ switch (operator) {
708
+ case 'contains':
709
+ condition = `${queryField} LIKE :${parameterName}`;
710
+ queryBuilder.setParameter(parameterName, `%${value}%`);
711
+ break;
712
+ case 'equals':
713
+ condition = `${queryField} = :${parameterName}`;
714
+ queryBuilder.setParameter(parameterName, value);
715
+ break;
716
+ case 'startsWith':
717
+ condition = `${queryField} LIKE :${parameterName}`;
718
+ queryBuilder.setParameter(parameterName, `${value}%`);
719
+ break;
720
+ case 'endsWith':
721
+ condition = `${queryField} LIKE :${parameterName}`;
722
+ queryBuilder.setParameter(parameterName, `%${value}`);
723
+ break;
724
+ case 'isEmpty':
725
+ condition = `${queryField} IS NULL OR ${queryField} = ''`;
726
+ break;
727
+ case 'isNotEmpty':
728
+ condition = `${queryField} IS NOT NULL AND ${queryField} <> ''`;
729
+ break;
730
+ case 'isAnyOf':
731
+ condition = `${queryField} IN (:...${parameterName})`;
732
+ queryBuilder.setParameter(parameterName, value.split(','));
733
+ break;
734
+ default:
735
+ throw new Error(`Operator ${operator} is not supported.`);
736
+ }
737
+ if (index === 0) {
738
+ queryBuilder.andWhere(condition);
739
+ }
740
+ else {
741
+ queryBuilder[logicOperator === 'OR' ? 'orWhere' : 'andWhere'](condition);
742
+ }
743
+ });
744
+ };
694
745
  // Dynamic filters
695
- filters.forEach((filter, index) => {
696
- const { field, operator, value } = filter;
697
- //if (allowedColumns.includes(field)) {
698
- const queryField = `f.${field}`;
699
- const parameterName = `filterValue${index}`;
700
- let condition;
701
- switch (operator) {
702
- case 'contains':
703
- condition = `${queryField} LIKE :${parameterName}`;
704
- queryBuilder.setParameter(parameterName, `%${value}%`);
705
- break;
706
- case 'equals':
707
- condition = `${queryField} = :${parameterName}`;
708
- queryBuilder.setParameter(parameterName, value);
709
- break;
710
- case 'startsWith':
711
- condition = `${queryField} LIKE :${parameterName}`;
712
- queryBuilder.setParameter(parameterName, `${value}%`);
713
- break;
714
- case 'endsWith':
715
- condition = `${queryField} LIKE :${parameterName}`;
716
- queryBuilder.setParameter(parameterName, `%${value}`);
717
- break;
718
- case 'isEmpty':
719
- condition = `${queryField} IS NULL OR ${queryField} = ''`;
720
- break;
721
- case 'isNotEmpty':
722
- condition = `${queryField} IS NOT NULL AND ${queryField} <> ''`;
723
- break;
724
- case 'isAnyOf':
725
- condition = `${queryField} IN (:...${parameterName})`;
726
- queryBuilder.setParameter(parameterName, value.split(',')); // Asume que `value` es una cadena separada por comas.
727
- break;
728
- // Puedes agregar más casos aquí si hay otros operadores.
729
- default:
730
- throw new Error(`Operator ${operator} is not supported.`);
731
- }
732
- if (index === 0) {
733
- queryBuilder.andWhere(condition);
734
- }
735
- else {
736
- queryBuilder[logicOperator === 'OR' ? 'orWhere' : 'andWhere'](condition);
737
- }
738
- //}
739
- });
746
+ // Aplicar filtros dinámicos
747
+ applyDynamicFilters(queryBuilder, filters, logicOperator);
740
748
  queryBuilder.groupBy([
741
749
  'f.flow_id',
742
750
  'f.vendor_id',
@@ -782,6 +790,8 @@ let Flow = class Flow extends core_1.Controller {
782
790
  countQuery.andWhere(`f.${params.genericFilterFields} LIKE :genericFilterValue`, { genericFilterValue: `%${params.genericFilterValue}%` });
783
791
  }
784
792
  }
793
+ // Aplicar los mismos filtros dinámicos al query de conteo
794
+ applyDynamicFilters(countQuery, filters, logicOperator);
785
795
  const totalCount = await countQuery.getRawOne();
786
796
  const count = totalCount.count;
787
797
  return { data, count };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pxp-nd/flow",
3
- "version": "1.0.86",
3
+ "version": "1.0.88",
4
4
  "description": "Workflow module for pxp-nd framework",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/yalc.lock ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "v1",
3
+ "packages": {
4
+ "@pxp-nd/flow": {
5
+ "signature": "cde9f14a08a99b57ae1fa35548ae318d",
6
+ "file": true
7
+ }
8
+ }
9
+ }