@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
|
package/dist/controllers/Flow.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
696
|
-
|
|
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