@infomaximum/widget-sdk 6.0.0-view-theme.0 → 6.0.0-view-theme.2
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.
- package/CHANGELOG.md +78 -4
- package/dist/index.d.ts +5 -2
- package/dist/index.esm.js +40 -23
- package/dist/index.js +40 -23
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,30 +2,104 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [6.0.0-view-theme.2](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-15...v6.0.0-view-theme.2) (2025-10-02)
|
|
6
|
+
|
|
7
|
+
## [6.0.0-view-theme.1](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-14...v6.0.0-view-theme.1) (2025-10-01)
|
|
8
|
+
|
|
9
|
+
## [6.0.0-view-theme.0](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-12...v6.0.0-view-theme.0) (2025-09-29)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* поддержен флаг для темы [BI-15496] ([5196fa6](https://github.com/Infomaximum/widget-sdk/commit/5196fa6c69a521c4529a355e674bcb1f8c1aac39))
|
|
15
|
+
|
|
16
|
+
## [6.0.0-view-theme.1](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-2508.4...v6.0.0-view-theme.1) (2025-10-01)
|
|
17
|
+
|
|
18
|
+
## [6.0.0-15](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-14...v6.0.0-15) (2025-10-02)
|
|
19
|
+
|
|
20
|
+
## [6.0.0-14](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-2508.4...v6.0.0-14) (2025-10-01)
|
|
21
|
+
|
|
22
|
+
## [6.0.0-13](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-2508.3...v6.0.0-13) (2025-10-01)
|
|
23
|
+
|
|
24
|
+
### Bug Fixes
|
|
25
|
+
|
|
26
|
+
- исправлены шаблоны формул и функции подготовки параметров наполнения шаблонов. Отказ от удаления однострочных и многострочных комментариев ([97332be](https://github.com/Infomaximum/widget-sdk/commit/97332be7bddd6942f3670ff806470b9c1a59c122))
|
|
27
|
+
|
|
5
28
|
## [6.0.0-view-theme.0](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-12...v6.0.0-view-theme.0) (2025-09-29)
|
|
6
29
|
|
|
7
30
|
## [6.0.0-12](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-11...v6.0.0-12) (2025-09-29)
|
|
8
31
|
|
|
32
|
+
### Features
|
|
33
|
+
|
|
34
|
+
- поддержен флаг для темы [BI-15496] ([5196fa6](https://github.com/Infomaximum/widget-sdk/commit/5196fa6c69a521c4529a355e674bcb1f8c1aac39))
|
|
35
|
+
|
|
36
|
+
## [6.0.0-11](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-2508.2...v6.0.0-11) (2025-09-23)
|
|
9
37
|
|
|
10
38
|
### Features
|
|
11
39
|
|
|
12
|
-
|
|
40
|
+
- для параметров действий образа добавлен id ([4b92d35](https://github.com/Infomaximum/widget-sdk/commit/4b92d3547a6048b8326db94ec360515d99e17b1a))
|
|
41
|
+
- удален флаг isBordered для IInputControl [BI-15461] ([d60c32d](https://github.com/Infomaximum/widget-sdk/commit/d60c32d02134c10b1aa799dc5a45e2656fe5aefd))
|
|
13
42
|
|
|
14
|
-
## [6.0.0-
|
|
43
|
+
## [6.0.0-10](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-2508.1...v6.0.0-10) (2025-09-12)
|
|
44
|
+
|
|
45
|
+
## [6.0.0-9](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-8...v6.0.0-9) (2025-09-12)
|
|
46
|
+
|
|
47
|
+
### Bug Fixes
|
|
48
|
+
|
|
49
|
+
- исправлен баг с подстановкой значений в template строки ([12166b5](https://github.com/Infomaximum/widget-sdk/commit/12166b587b74e0ff912822b0d065463b8f23121e))
|
|
50
|
+
|
|
51
|
+
## [6.0.0-8](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-2508.0...v6.0.0-8) (2025-09-11)
|
|
52
|
+
|
|
53
|
+
## [6.0.0-13](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-12...v6.0.0-13) (2025-10-01)
|
|
15
54
|
|
|
55
|
+
### Bug Fixes
|
|
56
|
+
|
|
57
|
+
- исправлены шаблоны формул и функции подготовки параметров наполнения шаблонов. Отказ от удаления однострочных и многострочных комментариев ([97332be](https://github.com/Infomaximum/widget-sdk/commit/97332be7bddd6942f3670ff806470b9c1a59c122))
|
|
58
|
+
|
|
59
|
+
## [6.0.0-12](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-11...v6.0.0-12) (2025-09-29)
|
|
60
|
+
|
|
61
|
+
## [6.0.0-11](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-2508.2...v6.0.0-11) (2025-09-23)
|
|
16
62
|
|
|
17
63
|
### Features
|
|
18
64
|
|
|
19
|
-
|
|
65
|
+
- для параметров действий образа добавлен id ([4b92d35](https://github.com/Infomaximum/widget-sdk/commit/4b92d3547a6048b8326db94ec360515d99e17b1a))
|
|
66
|
+
- удален флаг isBordered для IInputControl [BI-15461] ([d60c32d](https://github.com/Infomaximum/widget-sdk/commit/d60c32d02134c10b1aa799dc5a45e2656fe5aefd))
|
|
20
67
|
|
|
21
68
|
## [6.0.0-10](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-2508.1...v6.0.0-10) (2025-09-12)
|
|
22
69
|
|
|
23
70
|
## [6.0.0-9](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-8...v6.0.0-9) (2025-09-12)
|
|
24
71
|
|
|
72
|
+
### Bug Fixes
|
|
73
|
+
|
|
74
|
+
- исправлен баг с подстановкой значений в template строки ([12166b5](https://github.com/Infomaximum/widget-sdk/commit/12166b587b74e0ff912822b0d065463b8f23121e))
|
|
75
|
+
|
|
76
|
+
## [6.0.0-8](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-2508.0...v6.0.0-8) (2025-09-11)
|
|
77
|
+
|
|
78
|
+
## [6.0.0-13](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-12...v6.0.0-13) (2025-10-01)
|
|
25
79
|
|
|
26
80
|
### Bug Fixes
|
|
27
81
|
|
|
28
|
-
|
|
82
|
+
- исправлены шаблоны формул и функции подготовки параметров наполнения шаблонов. Отказ от удаления однострочных и многострочных комментариев ([97332be](https://github.com/Infomaximum/widget-sdk/commit/97332be7bddd6942f3670ff806470b9c1a59c122))
|
|
83
|
+
|
|
84
|
+
## [6.0.0-12](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-11...v6.0.0-12) (2025-09-29)
|
|
85
|
+
|
|
86
|
+
### Features
|
|
87
|
+
|
|
88
|
+
- для параметров действий образа добавлен id ([4b92d35](https://github.com/Infomaximum/widget-sdk/commit/4b92d3547a6048b8326db94ec360515d99e17b1a))
|
|
89
|
+
|
|
90
|
+
## [6.0.0-11](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-10...v6.0.0-11) (2025-09-23)
|
|
91
|
+
|
|
92
|
+
### Features
|
|
93
|
+
|
|
94
|
+
- удален флаг isBordered для IInputControl [BI-15461] ([d60c32d](https://github.com/Infomaximum/widget-sdk/commit/d60c32d02134c10b1aa799dc5a45e2656fe5aefd))
|
|
95
|
+
|
|
96
|
+
## [6.0.0-10](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-2508.1...v6.0.0-10) (2025-09-12)
|
|
97
|
+
|
|
98
|
+
## [6.0.0-9](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-8...v6.0.0-9) (2025-09-12)
|
|
99
|
+
|
|
100
|
+
### Bug Fixes
|
|
101
|
+
|
|
102
|
+
- исправлен баг с подстановкой значений в template строки ([12166b5](https://github.com/Infomaximum/widget-sdk/commit/12166b587b74e0ff912822b0d065463b8f23121e))
|
|
29
103
|
|
|
30
104
|
## [6.0.0-8](https://github.com/Infomaximum/widget-sdk/compare/v6.0.0-2508.0...v6.0.0-8) (2025-09-11)
|
|
31
105
|
|
package/dist/index.d.ts
CHANGED
|
@@ -261,6 +261,7 @@ interface IBaseWidgetSettings {
|
|
|
261
261
|
sorting?: IWidgetSortingIndicator[];
|
|
262
262
|
actionButtons?: IActionButton[];
|
|
263
263
|
paddings?: number | string;
|
|
264
|
+
viewTheme?: boolean;
|
|
264
265
|
}
|
|
265
266
|
|
|
266
267
|
declare enum ESortDirection {
|
|
@@ -2027,7 +2028,7 @@ declare const prepareMeasureAggregationParams: (value: Extract<IWidgetMeasure["v
|
|
|
2027
2028
|
} | null;
|
|
2028
2029
|
|
|
2029
2030
|
/** Шаблон процессной метрики меры с режимом CONVERSION */
|
|
2030
|
-
declare const conversionTemplate = "countIf(\n process(\n minIf(\n {startEventTimeFormula}, \n {startEventNameFormula} =
|
|
2031
|
+
declare const conversionTemplate = "countIf(\n process(\n minIf(\n {startEventTimeFormula}, \n {startEventNameFormula} = {startEventName}{startEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) < \n process(\n maxIf(\n {endEventTimeFormula}, \n {endEventNameFormula} = {endEventName}{endEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) \n and \n process(\n countIf(\n {startEventNameFormula} = {startEventName}{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n) / countIf(\n process(\n countIf(\n {startEventNameFormula} = {startEventName}{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n)";
|
|
2031
2032
|
/** На основе значения режима CONVERSION подготовить параметры для подстановки в шаблонную формулу */
|
|
2032
2033
|
declare const prepareConversionParams: (value: TWidgetIndicatorConversionValue) => {
|
|
2033
2034
|
startEventTimeFormula: string;
|
|
@@ -2084,7 +2085,7 @@ declare const transitionMeasureTemplateFormulas: {
|
|
|
2084
2085
|
readonly medianTime: "medianExact(date_diff(second, begin({eventTimeFormula}), end({eventTimeFormula})))";
|
|
2085
2086
|
};
|
|
2086
2087
|
|
|
2087
|
-
declare const countExecutionsTemplate = "process(countIf({eventNameFormula} in
|
|
2088
|
+
declare const countExecutionsTemplate = "process(countIf({eventNameFormula} in {eventName}{filters}), {caseCaseIdFormula})";
|
|
2088
2089
|
|
|
2089
2090
|
/** @deprecated - следует использовать fillTemplateSql */
|
|
2090
2091
|
declare function fillTemplateString(templateString: string, params: Record<string, any>): string;
|
|
@@ -2326,6 +2327,8 @@ interface IPanelDescription<Settings extends object, GroupSettings extends IGrou
|
|
|
2326
2327
|
useTitle?: boolean;
|
|
2327
2328
|
/** Добавить поле настройки описания */
|
|
2328
2329
|
useMarkdown?: boolean;
|
|
2330
|
+
/** Добавить переключатель темы */
|
|
2331
|
+
useTheme?: boolean;
|
|
2329
2332
|
/** Конфигурация вкладки настроек данных */
|
|
2330
2333
|
dataRecords?: TWidgetLevelRecord<Settings>[];
|
|
2331
2334
|
/** Конфигурация вкладки настроек отображения */
|
package/dist/index.esm.js
CHANGED
|
@@ -786,14 +786,14 @@ var EEventAppearances;
|
|
|
786
786
|
})(EEventAppearances || (EEventAppearances = {}));
|
|
787
787
|
|
|
788
788
|
function createAggregationTemplate$1(functionName, options) {
|
|
789
|
-
return "process(".concat(functionName, "(").concat((options === null || options === void 0 ? void 0 : options.distinct) ? "distinct " : "", "{columnFormula}, {eventNameFormula} =
|
|
789
|
+
return "process(".concat(functionName, "(").concat((options === null || options === void 0 ? void 0 : options.distinct) ? "distinct " : "", "{columnFormula}, {eventNameFormula} ={eventName}{filters}), {caseCaseIdFormula})");
|
|
790
790
|
}
|
|
791
791
|
|
|
792
|
-
var countReworksTemplate = "process(if(countIf({eventNameFormula} =
|
|
793
|
-
var countExecutionsTemplate = "process(countIf({eventNameFormula} in
|
|
794
|
-
var lastValueTemplate = "process(argMaxIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} =
|
|
795
|
-
var firstValueTemplate = "process(argMinIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} =
|
|
796
|
-
var topTemplate = "process(topKIf(1)({columnFormula}, {eventNameFormula} =
|
|
792
|
+
var countReworksTemplate = "process(if(countIf({eventNameFormula} = {eventName}{filters}) > 0, countIf({eventNameFormula} = {eventName}{filters}) - 1, 0), {caseCaseIdFormula})";
|
|
793
|
+
var countExecutionsTemplate = "process(countIf({eventNameFormula} in {eventName}{filters}), {caseCaseIdFormula})";
|
|
794
|
+
var lastValueTemplate = "process(argMaxIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})";
|
|
795
|
+
var firstValueTemplate = "process(argMinIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})";
|
|
796
|
+
var topTemplate = "process(topKIf(1)({columnFormula}, {eventNameFormula} = {eventName}{filters})[1], {caseCaseIdFormula})";
|
|
797
797
|
var avgTemplate = createAggregationTemplate$1("avgIf");
|
|
798
798
|
var medianTemplate = createAggregationTemplate$1("medianIf");
|
|
799
799
|
var countTemplate = createAggregationTemplate$1("countIf");
|
|
@@ -802,6 +802,23 @@ var minTemplate = createAggregationTemplate$1("minIf");
|
|
|
802
802
|
var maxTemplate = createAggregationTemplate$1("maxIf");
|
|
803
803
|
var sumTemplate = createAggregationTemplate$1("sumIf");
|
|
804
804
|
|
|
805
|
+
function hasPossibleSingleLineComment(str) {
|
|
806
|
+
return str.indexOf("--") >= 0;
|
|
807
|
+
}
|
|
808
|
+
function sanitizeSingleLineComment(formula, wrapInBrackets) {
|
|
809
|
+
if (!hasPossibleSingleLineComment(formula)) {
|
|
810
|
+
return formula;
|
|
811
|
+
}
|
|
812
|
+
var lines = formula.split("\n");
|
|
813
|
+
var lastLine = lines[lines.length - 1];
|
|
814
|
+
// Кейс, когда хотим избежать повторного добавления переноса строки:
|
|
815
|
+
// уже есть переносы и после последнего переноса нет комментария
|
|
816
|
+
if (lines.length > 1 && lastLine && !hasPossibleSingleLineComment(lastLine)) {
|
|
817
|
+
return formula;
|
|
818
|
+
}
|
|
819
|
+
return wrapInBrackets ? "(".concat(formula, "\n)") : "".concat(formula, "\n");
|
|
820
|
+
}
|
|
821
|
+
|
|
805
822
|
/** @deprecated - следует использовать fillTemplateSql */
|
|
806
823
|
function fillTemplateString(templateString, params) {
|
|
807
824
|
return templateString.replace(/\{(.*?)\}/g, function (_, key) {
|
|
@@ -813,16 +830,17 @@ function fillTemplateString(templateString, params) {
|
|
|
813
830
|
function fillTemplateSql(templateString, params) {
|
|
814
831
|
var e_1, _a;
|
|
815
832
|
var newParams = {};
|
|
833
|
+
if (templateString.indexOf("'{") >= 0) {
|
|
834
|
+
throw new Error("\u041D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 \u0448\u0430\u0431\u043B\u043E\u043D: \u043F\u043B\u0435\u0439\u0441\u0445\u043E\u043B\u0434\u0435\u0440\u044B \u043D\u0435 \u0434\u043E\u043B\u0436\u043D\u044B \u0437\u0430\u043A\u043B\u044E\u0447\u0430\u0442\u044C\u0441\u044F \u0432 \u043E\u0434\u0438\u043D\u0430\u0440\u043D\u044B\u0435 \u043A\u0430\u0432\u044B\u0447\u043A\u0438.\n \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 {placeholder} \u0432\u043C\u0435\u0441\u0442\u043E '{placeholder}'.\n \u041A\u0430\u0432\u044B\u0447\u043A\u0438 \u0434\u043E\u043B\u0436\u043D\u044B \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C\u0441\u044F \u0434\u043B\u044F \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u044B\u0445 \u043F\u043E\u043B\u0435\u0439 \u043F\u0440\u0438 \u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0438 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432.");
|
|
835
|
+
}
|
|
816
836
|
try {
|
|
817
837
|
for (var _b = __values(Object.entries(params)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
818
838
|
var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
|
|
819
|
-
/** Эвристическая проверка на возможное присутствие sql-комментария в значении подставляемом в template
|
|
820
|
-
*/
|
|
821
839
|
if (String(value).indexOf("--") >= 0) {
|
|
822
840
|
newParams[key] = "".concat(value, "\n");
|
|
823
841
|
continue;
|
|
824
842
|
}
|
|
825
|
-
newParams[key] = String(value);
|
|
843
|
+
newParams[key] = sanitizeSingleLineComment(String(value));
|
|
826
844
|
}
|
|
827
845
|
}
|
|
828
846
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
@@ -906,7 +924,7 @@ var escapeSingularQuotes = function (formula) {
|
|
|
906
924
|
};
|
|
907
925
|
|
|
908
926
|
var prepareFormulaForSql = function (formula, simpleType) {
|
|
909
|
-
formula =
|
|
927
|
+
formula = sanitizeSingleLineComment(formula, true);
|
|
910
928
|
return simpleType === ESimpleDataType.OTHER ? "toString(".concat(formula, ")") : formula;
|
|
911
929
|
};
|
|
912
930
|
var clearSingleLineComments = function (formula) {
|
|
@@ -1031,7 +1049,7 @@ var prepareDimensionAggregationParams = function (value) {
|
|
|
1031
1049
|
var commonParams = {
|
|
1032
1050
|
eventNameFormula: value.eventNameFormula,
|
|
1033
1051
|
caseCaseIdFormula: value.caseCaseIdFormula,
|
|
1034
|
-
eventName: value.eventName,
|
|
1052
|
+
eventName: "'".concat(escapeSingularQuotes(value.eventName), "'"),
|
|
1035
1053
|
filters: convertFiltersToFormula(value.filters),
|
|
1036
1054
|
eventTimeFormula: "",
|
|
1037
1055
|
columnFormula: "",
|
|
@@ -1065,8 +1083,8 @@ var timeTemplates = (function () {
|
|
|
1065
1083
|
return templates;
|
|
1066
1084
|
};
|
|
1067
1085
|
return _a = {},
|
|
1068
|
-
_a[EWidgetIndicatorValueModes.START_TIME] = generateTemplates("process(minIf({eventTimeFormula}, {eventNameFormula} =
|
|
1069
|
-
_a[EWidgetIndicatorValueModes.END_TIME] = generateTemplates("process(maxIf({eventTimeFormula}, {eventNameFormula} =
|
|
1086
|
+
_a[EWidgetIndicatorValueModes.START_TIME] = generateTemplates("process(minIf({eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})"),
|
|
1087
|
+
_a[EWidgetIndicatorValueModes.END_TIME] = generateTemplates("process(maxIf({eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})"),
|
|
1070
1088
|
_a;
|
|
1071
1089
|
})();
|
|
1072
1090
|
/** На основе значения режимов START_TIME/END_TIME подготовить параметры для подстановки в шаблонную формулу */
|
|
@@ -1084,7 +1102,7 @@ var prepareTimeParams = function (value) {
|
|
|
1084
1102
|
eventNameFormula: value.eventNameFormula,
|
|
1085
1103
|
caseCaseIdFormula: value.caseCaseIdFormula,
|
|
1086
1104
|
filters: convertFiltersToFormula(value.filters),
|
|
1087
|
-
eventName: value.eventName,
|
|
1105
|
+
eventName: "'".concat(escapeSingularQuotes(value.eventName), "'"),
|
|
1088
1106
|
};
|
|
1089
1107
|
};
|
|
1090
1108
|
|
|
@@ -1152,7 +1170,6 @@ var EMeasureAggregationTemplateName;
|
|
|
1152
1170
|
})(EMeasureAggregationTemplateName || (EMeasureAggregationTemplateName = {}));
|
|
1153
1171
|
/** На основе значения режима AGGREGATION подготовить параметры для подстановки в шаблонную формулу */
|
|
1154
1172
|
var prepareMeasureAggregationParams = function (value) {
|
|
1155
|
-
var _a;
|
|
1156
1173
|
if ((!value.anyEvent && !value.eventName) ||
|
|
1157
1174
|
!value.caseCaseIdFormula ||
|
|
1158
1175
|
!value.eventNameFormula ||
|
|
@@ -1165,7 +1182,7 @@ var prepareMeasureAggregationParams = function (value) {
|
|
|
1165
1182
|
outerAggregation: value.outerAggregation,
|
|
1166
1183
|
eventNameFormula: value.eventNameFormula,
|
|
1167
1184
|
caseCaseIdFormula: value.caseCaseIdFormula,
|
|
1168
|
-
eventName:
|
|
1185
|
+
eventName: value.eventName ? "'".concat(escapeSingularQuotes(value.eventName), "'") : "",
|
|
1169
1186
|
filters: convertFiltersToFormula(value.filters),
|
|
1170
1187
|
eventTimeFormula: "",
|
|
1171
1188
|
columnFormula: "",
|
|
@@ -1209,7 +1226,7 @@ var measureTemplateFormulas = (_a$3 = {},
|
|
|
1209
1226
|
_a$3);
|
|
1210
1227
|
|
|
1211
1228
|
/** Шаблон процессной метрики меры с режимом CONVERSION */
|
|
1212
|
-
var conversionTemplate = "countIf(\n process(\n minIf(\n {startEventTimeFormula}, \n {startEventNameFormula} =
|
|
1229
|
+
var conversionTemplate = "countIf(\n process(\n minIf(\n {startEventTimeFormula}, \n {startEventNameFormula} = {startEventName}{startEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) < \n process(\n maxIf(\n {endEventTimeFormula}, \n {endEventNameFormula} = {endEventName}{endEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) \n and \n process(\n countIf(\n {startEventNameFormula} = {startEventName}{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n) / countIf(\n process(\n countIf(\n {startEventNameFormula} = {startEventName}{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n)";
|
|
1213
1230
|
/** На основе значения режима CONVERSION подготовить параметры для подстановки в шаблонную формулу */
|
|
1214
1231
|
var prepareConversionParams = function (value) {
|
|
1215
1232
|
if (!value.startEventName ||
|
|
@@ -1227,11 +1244,11 @@ var prepareConversionParams = function (value) {
|
|
|
1227
1244
|
startEventTimeFormula: value.startEventTimeFormula,
|
|
1228
1245
|
startEventNameFormula: value.startEventNameFormula,
|
|
1229
1246
|
startEventFilters: convertFiltersToFormula(value.startEventFilters),
|
|
1230
|
-
startEventName: value.startEventName,
|
|
1247
|
+
startEventName: "'".concat(escapeSingularQuotes(value.startEventName), "'"),
|
|
1231
1248
|
endEventTimeFormula: value.endEventTimeFormula,
|
|
1232
1249
|
endCaseCaseIdFormula: value.endCaseCaseIdFormula,
|
|
1233
1250
|
endEventNameFormula: value.endEventNameFormula,
|
|
1234
|
-
endEventName: value.endEventName,
|
|
1251
|
+
endEventName: "'".concat(escapeSingularQuotes(value.endEventName), "'"),
|
|
1235
1252
|
endEventFilters: convertFiltersToFormula(value.endEventFilters),
|
|
1236
1253
|
};
|
|
1237
1254
|
};
|
|
@@ -1239,7 +1256,7 @@ var prepareConversionParams = function (value) {
|
|
|
1239
1256
|
/** Шаблоны процессных метрик меры с режимом DURATION */
|
|
1240
1257
|
var durationTemplates = (function () {
|
|
1241
1258
|
var _a;
|
|
1242
|
-
var innerTemplate = "\n timeDiff(\n process(\n {startEventAggregationName}(\n {startEventTimeFormula}, \n {startEventNameFormula} =
|
|
1259
|
+
var innerTemplate = "\n timeDiff(\n process(\n {startEventAggregationName}(\n {startEventTimeFormula}, \n {startEventNameFormula} = {startEventName}{startEventFilters}\n ), \n {endCaseCaseIdFormula}\n ), \n process(\n {endEventAggregationName}(\n {endEventTimeFormula}, \n {endEventNameFormula} = {endEventName}{endEventFilters}\n ), \n {endCaseCaseIdFormula}\n )\n ), \n process(\n {startEventAggregationName}(\n {startEventTimeFormula}, \n {startEventNameFormula} = {startEventName}{startEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) < \n process(\n {endEventAggregationName}(\n {endEventTimeFormula}, \n {endEventNameFormula} = {endEventName}{endEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) \n and \n process(\n countIf(\n {startEventNameFormula} = {startEventName}{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n ";
|
|
1243
1260
|
return _a = {},
|
|
1244
1261
|
_a[EDurationTemplateName.avg] = "avgIf(".concat(innerTemplate, ")"),
|
|
1245
1262
|
_a[EDurationTemplateName.median] = "medianIf(".concat(innerTemplate, ")"),
|
|
@@ -1265,12 +1282,12 @@ var prepareDurationParams = function (value) {
|
|
|
1265
1282
|
startEventTimeFormula: value.startEventTimeFormula,
|
|
1266
1283
|
startEventNameFormula: value.startEventNameFormula,
|
|
1267
1284
|
startEventFilters: convertFiltersToFormula(value.startEventFilters),
|
|
1268
|
-
startEventName: value.startEventName,
|
|
1285
|
+
startEventName: "'".concat(escapeSingularQuotes(value.startEventName), "'"),
|
|
1269
1286
|
startEventAggregationName: getAggregationNameByAppearances(value.startEventAppearances),
|
|
1270
1287
|
endEventTimeFormula: value.endEventTimeFormula,
|
|
1271
1288
|
endCaseCaseIdFormula: value.endCaseCaseIdFormula,
|
|
1272
1289
|
endEventNameFormula: value.endEventNameFormula,
|
|
1273
|
-
endEventName: value.endEventName,
|
|
1290
|
+
endEventName: "'".concat(escapeSingularQuotes(value.endEventName), "'"),
|
|
1274
1291
|
endEventFilters: convertFiltersToFormula(value.endEventFilters),
|
|
1275
1292
|
endEventAggregationName: getAggregationNameByAppearances(value.endEventAppearances),
|
|
1276
1293
|
};
|
|
@@ -1280,7 +1297,7 @@ function createAnyEventTemplate(aggregatePart) {
|
|
|
1280
1297
|
return "{outerAggregation}(process(".concat(aggregatePart, ", {caseCaseIdFormula}))");
|
|
1281
1298
|
}
|
|
1282
1299
|
function createSpecificEventTemplate(fn, additionalFn) {
|
|
1283
|
-
return "{outerAggregation}(process(".concat(fn, "(").concat(additionalFn ? "".concat(additionalFn, " ") : "", "{columnFormula}, {eventNameFormula} =
|
|
1300
|
+
return "{outerAggregation}(process(".concat(fn, "(").concat(additionalFn ? "".concat(additionalFn, " ") : "", "{columnFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula}))");
|
|
1284
1301
|
}
|
|
1285
1302
|
function createTopLikeTemplate(template) {
|
|
1286
1303
|
return function (outerAggregation) {
|
package/dist/index.js
CHANGED
|
@@ -787,14 +787,14 @@ exports.EEventAppearances = void 0;
|
|
|
787
787
|
})(exports.EEventAppearances || (exports.EEventAppearances = {}));
|
|
788
788
|
|
|
789
789
|
function createAggregationTemplate$1(functionName, options) {
|
|
790
|
-
return "process(".concat(functionName, "(").concat((options === null || options === void 0 ? void 0 : options.distinct) ? "distinct " : "", "{columnFormula}, {eventNameFormula} =
|
|
790
|
+
return "process(".concat(functionName, "(").concat((options === null || options === void 0 ? void 0 : options.distinct) ? "distinct " : "", "{columnFormula}, {eventNameFormula} ={eventName}{filters}), {caseCaseIdFormula})");
|
|
791
791
|
}
|
|
792
792
|
|
|
793
|
-
var countReworksTemplate = "process(if(countIf({eventNameFormula} =
|
|
794
|
-
var countExecutionsTemplate = "process(countIf({eventNameFormula} in
|
|
795
|
-
var lastValueTemplate = "process(argMaxIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} =
|
|
796
|
-
var firstValueTemplate = "process(argMinIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} =
|
|
797
|
-
var topTemplate = "process(topKIf(1)({columnFormula}, {eventNameFormula} =
|
|
793
|
+
var countReworksTemplate = "process(if(countIf({eventNameFormula} = {eventName}{filters}) > 0, countIf({eventNameFormula} = {eventName}{filters}) - 1, 0), {caseCaseIdFormula})";
|
|
794
|
+
var countExecutionsTemplate = "process(countIf({eventNameFormula} in {eventName}{filters}), {caseCaseIdFormula})";
|
|
795
|
+
var lastValueTemplate = "process(argMaxIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})";
|
|
796
|
+
var firstValueTemplate = "process(argMinIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})";
|
|
797
|
+
var topTemplate = "process(topKIf(1)({columnFormula}, {eventNameFormula} = {eventName}{filters})[1], {caseCaseIdFormula})";
|
|
798
798
|
var avgTemplate = createAggregationTemplate$1("avgIf");
|
|
799
799
|
var medianTemplate = createAggregationTemplate$1("medianIf");
|
|
800
800
|
var countTemplate = createAggregationTemplate$1("countIf");
|
|
@@ -803,6 +803,23 @@ var minTemplate = createAggregationTemplate$1("minIf");
|
|
|
803
803
|
var maxTemplate = createAggregationTemplate$1("maxIf");
|
|
804
804
|
var sumTemplate = createAggregationTemplate$1("sumIf");
|
|
805
805
|
|
|
806
|
+
function hasPossibleSingleLineComment(str) {
|
|
807
|
+
return str.indexOf("--") >= 0;
|
|
808
|
+
}
|
|
809
|
+
function sanitizeSingleLineComment(formula, wrapInBrackets) {
|
|
810
|
+
if (!hasPossibleSingleLineComment(formula)) {
|
|
811
|
+
return formula;
|
|
812
|
+
}
|
|
813
|
+
var lines = formula.split("\n");
|
|
814
|
+
var lastLine = lines[lines.length - 1];
|
|
815
|
+
// Кейс, когда хотим избежать повторного добавления переноса строки:
|
|
816
|
+
// уже есть переносы и после последнего переноса нет комментария
|
|
817
|
+
if (lines.length > 1 && lastLine && !hasPossibleSingleLineComment(lastLine)) {
|
|
818
|
+
return formula;
|
|
819
|
+
}
|
|
820
|
+
return wrapInBrackets ? "(".concat(formula, "\n)") : "".concat(formula, "\n");
|
|
821
|
+
}
|
|
822
|
+
|
|
806
823
|
/** @deprecated - следует использовать fillTemplateSql */
|
|
807
824
|
function fillTemplateString(templateString, params) {
|
|
808
825
|
return templateString.replace(/\{(.*?)\}/g, function (_, key) {
|
|
@@ -814,16 +831,17 @@ function fillTemplateString(templateString, params) {
|
|
|
814
831
|
function fillTemplateSql(templateString, params) {
|
|
815
832
|
var e_1, _a;
|
|
816
833
|
var newParams = {};
|
|
834
|
+
if (templateString.indexOf("'{") >= 0) {
|
|
835
|
+
throw new Error("\u041D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 \u0448\u0430\u0431\u043B\u043E\u043D: \u043F\u043B\u0435\u0439\u0441\u0445\u043E\u043B\u0434\u0435\u0440\u044B \u043D\u0435 \u0434\u043E\u043B\u0436\u043D\u044B \u0437\u0430\u043A\u043B\u044E\u0447\u0430\u0442\u044C\u0441\u044F \u0432 \u043E\u0434\u0438\u043D\u0430\u0440\u043D\u044B\u0435 \u043A\u0430\u0432\u044B\u0447\u043A\u0438.\n \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 {placeholder} \u0432\u043C\u0435\u0441\u0442\u043E '{placeholder}'.\n \u041A\u0430\u0432\u044B\u0447\u043A\u0438 \u0434\u043E\u043B\u0436\u043D\u044B \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C\u0441\u044F \u0434\u043B\u044F \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u044B\u0445 \u043F\u043E\u043B\u0435\u0439 \u043F\u0440\u0438 \u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0438 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432.");
|
|
836
|
+
}
|
|
817
837
|
try {
|
|
818
838
|
for (var _b = __values(Object.entries(params)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
819
839
|
var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
|
|
820
|
-
/** Эвристическая проверка на возможное присутствие sql-комментария в значении подставляемом в template
|
|
821
|
-
*/
|
|
822
840
|
if (String(value).indexOf("--") >= 0) {
|
|
823
841
|
newParams[key] = "".concat(value, "\n");
|
|
824
842
|
continue;
|
|
825
843
|
}
|
|
826
|
-
newParams[key] = String(value);
|
|
844
|
+
newParams[key] = sanitizeSingleLineComment(String(value));
|
|
827
845
|
}
|
|
828
846
|
}
|
|
829
847
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
@@ -907,7 +925,7 @@ var escapeSingularQuotes = function (formula) {
|
|
|
907
925
|
};
|
|
908
926
|
|
|
909
927
|
var prepareFormulaForSql = function (formula, simpleType) {
|
|
910
|
-
formula =
|
|
928
|
+
formula = sanitizeSingleLineComment(formula, true);
|
|
911
929
|
return simpleType === exports.ESimpleDataType.OTHER ? "toString(".concat(formula, ")") : formula;
|
|
912
930
|
};
|
|
913
931
|
var clearSingleLineComments = function (formula) {
|
|
@@ -1032,7 +1050,7 @@ var prepareDimensionAggregationParams = function (value) {
|
|
|
1032
1050
|
var commonParams = {
|
|
1033
1051
|
eventNameFormula: value.eventNameFormula,
|
|
1034
1052
|
caseCaseIdFormula: value.caseCaseIdFormula,
|
|
1035
|
-
eventName: value.eventName,
|
|
1053
|
+
eventName: "'".concat(escapeSingularQuotes(value.eventName), "'"),
|
|
1036
1054
|
filters: convertFiltersToFormula(value.filters),
|
|
1037
1055
|
eventTimeFormula: "",
|
|
1038
1056
|
columnFormula: "",
|
|
@@ -1066,8 +1084,8 @@ var timeTemplates = (function () {
|
|
|
1066
1084
|
return templates;
|
|
1067
1085
|
};
|
|
1068
1086
|
return _a = {},
|
|
1069
|
-
_a[exports.EWidgetIndicatorValueModes.START_TIME] = generateTemplates("process(minIf({eventTimeFormula}, {eventNameFormula} =
|
|
1070
|
-
_a[exports.EWidgetIndicatorValueModes.END_TIME] = generateTemplates("process(maxIf({eventTimeFormula}, {eventNameFormula} =
|
|
1087
|
+
_a[exports.EWidgetIndicatorValueModes.START_TIME] = generateTemplates("process(minIf({eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})"),
|
|
1088
|
+
_a[exports.EWidgetIndicatorValueModes.END_TIME] = generateTemplates("process(maxIf({eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})"),
|
|
1071
1089
|
_a;
|
|
1072
1090
|
})();
|
|
1073
1091
|
/** На основе значения режимов START_TIME/END_TIME подготовить параметры для подстановки в шаблонную формулу */
|
|
@@ -1085,7 +1103,7 @@ var prepareTimeParams = function (value) {
|
|
|
1085
1103
|
eventNameFormula: value.eventNameFormula,
|
|
1086
1104
|
caseCaseIdFormula: value.caseCaseIdFormula,
|
|
1087
1105
|
filters: convertFiltersToFormula(value.filters),
|
|
1088
|
-
eventName: value.eventName,
|
|
1106
|
+
eventName: "'".concat(escapeSingularQuotes(value.eventName), "'"),
|
|
1089
1107
|
};
|
|
1090
1108
|
};
|
|
1091
1109
|
|
|
@@ -1153,7 +1171,6 @@ exports.EMeasureAggregationTemplateName = void 0;
|
|
|
1153
1171
|
})(exports.EMeasureAggregationTemplateName || (exports.EMeasureAggregationTemplateName = {}));
|
|
1154
1172
|
/** На основе значения режима AGGREGATION подготовить параметры для подстановки в шаблонную формулу */
|
|
1155
1173
|
var prepareMeasureAggregationParams = function (value) {
|
|
1156
|
-
var _a;
|
|
1157
1174
|
if ((!value.anyEvent && !value.eventName) ||
|
|
1158
1175
|
!value.caseCaseIdFormula ||
|
|
1159
1176
|
!value.eventNameFormula ||
|
|
@@ -1166,7 +1183,7 @@ var prepareMeasureAggregationParams = function (value) {
|
|
|
1166
1183
|
outerAggregation: value.outerAggregation,
|
|
1167
1184
|
eventNameFormula: value.eventNameFormula,
|
|
1168
1185
|
caseCaseIdFormula: value.caseCaseIdFormula,
|
|
1169
|
-
eventName:
|
|
1186
|
+
eventName: value.eventName ? "'".concat(escapeSingularQuotes(value.eventName), "'") : "",
|
|
1170
1187
|
filters: convertFiltersToFormula(value.filters),
|
|
1171
1188
|
eventTimeFormula: "",
|
|
1172
1189
|
columnFormula: "",
|
|
@@ -1210,7 +1227,7 @@ var measureTemplateFormulas = (_a$3 = {},
|
|
|
1210
1227
|
_a$3);
|
|
1211
1228
|
|
|
1212
1229
|
/** Шаблон процессной метрики меры с режимом CONVERSION */
|
|
1213
|
-
var conversionTemplate = "countIf(\n process(\n minIf(\n {startEventTimeFormula}, \n {startEventNameFormula} =
|
|
1230
|
+
var conversionTemplate = "countIf(\n process(\n minIf(\n {startEventTimeFormula}, \n {startEventNameFormula} = {startEventName}{startEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) < \n process(\n maxIf(\n {endEventTimeFormula}, \n {endEventNameFormula} = {endEventName}{endEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) \n and \n process(\n countIf(\n {startEventNameFormula} = {startEventName}{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n) / countIf(\n process(\n countIf(\n {startEventNameFormula} = {startEventName}{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n)";
|
|
1214
1231
|
/** На основе значения режима CONVERSION подготовить параметры для подстановки в шаблонную формулу */
|
|
1215
1232
|
var prepareConversionParams = function (value) {
|
|
1216
1233
|
if (!value.startEventName ||
|
|
@@ -1228,11 +1245,11 @@ var prepareConversionParams = function (value) {
|
|
|
1228
1245
|
startEventTimeFormula: value.startEventTimeFormula,
|
|
1229
1246
|
startEventNameFormula: value.startEventNameFormula,
|
|
1230
1247
|
startEventFilters: convertFiltersToFormula(value.startEventFilters),
|
|
1231
|
-
startEventName: value.startEventName,
|
|
1248
|
+
startEventName: "'".concat(escapeSingularQuotes(value.startEventName), "'"),
|
|
1232
1249
|
endEventTimeFormula: value.endEventTimeFormula,
|
|
1233
1250
|
endCaseCaseIdFormula: value.endCaseCaseIdFormula,
|
|
1234
1251
|
endEventNameFormula: value.endEventNameFormula,
|
|
1235
|
-
endEventName: value.endEventName,
|
|
1252
|
+
endEventName: "'".concat(escapeSingularQuotes(value.endEventName), "'"),
|
|
1236
1253
|
endEventFilters: convertFiltersToFormula(value.endEventFilters),
|
|
1237
1254
|
};
|
|
1238
1255
|
};
|
|
@@ -1240,7 +1257,7 @@ var prepareConversionParams = function (value) {
|
|
|
1240
1257
|
/** Шаблоны процессных метрик меры с режимом DURATION */
|
|
1241
1258
|
var durationTemplates = (function () {
|
|
1242
1259
|
var _a;
|
|
1243
|
-
var innerTemplate = "\n timeDiff(\n process(\n {startEventAggregationName}(\n {startEventTimeFormula}, \n {startEventNameFormula} =
|
|
1260
|
+
var innerTemplate = "\n timeDiff(\n process(\n {startEventAggregationName}(\n {startEventTimeFormula}, \n {startEventNameFormula} = {startEventName}{startEventFilters}\n ), \n {endCaseCaseIdFormula}\n ), \n process(\n {endEventAggregationName}(\n {endEventTimeFormula}, \n {endEventNameFormula} = {endEventName}{endEventFilters}\n ), \n {endCaseCaseIdFormula}\n )\n ), \n process(\n {startEventAggregationName}(\n {startEventTimeFormula}, \n {startEventNameFormula} = {startEventName}{startEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) < \n process(\n {endEventAggregationName}(\n {endEventTimeFormula}, \n {endEventNameFormula} = {endEventName}{endEventFilters}\n ), \n {endCaseCaseIdFormula}\n ) \n and \n process(\n countIf(\n {startEventNameFormula} = {startEventName}{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n ";
|
|
1244
1261
|
return _a = {},
|
|
1245
1262
|
_a[exports.EDurationTemplateName.avg] = "avgIf(".concat(innerTemplate, ")"),
|
|
1246
1263
|
_a[exports.EDurationTemplateName.median] = "medianIf(".concat(innerTemplate, ")"),
|
|
@@ -1266,12 +1283,12 @@ var prepareDurationParams = function (value) {
|
|
|
1266
1283
|
startEventTimeFormula: value.startEventTimeFormula,
|
|
1267
1284
|
startEventNameFormula: value.startEventNameFormula,
|
|
1268
1285
|
startEventFilters: convertFiltersToFormula(value.startEventFilters),
|
|
1269
|
-
startEventName: value.startEventName,
|
|
1286
|
+
startEventName: "'".concat(escapeSingularQuotes(value.startEventName), "'"),
|
|
1270
1287
|
startEventAggregationName: getAggregationNameByAppearances(value.startEventAppearances),
|
|
1271
1288
|
endEventTimeFormula: value.endEventTimeFormula,
|
|
1272
1289
|
endCaseCaseIdFormula: value.endCaseCaseIdFormula,
|
|
1273
1290
|
endEventNameFormula: value.endEventNameFormula,
|
|
1274
|
-
endEventName: value.endEventName,
|
|
1291
|
+
endEventName: "'".concat(escapeSingularQuotes(value.endEventName), "'"),
|
|
1275
1292
|
endEventFilters: convertFiltersToFormula(value.endEventFilters),
|
|
1276
1293
|
endEventAggregationName: getAggregationNameByAppearances(value.endEventAppearances),
|
|
1277
1294
|
};
|
|
@@ -1281,7 +1298,7 @@ function createAnyEventTemplate(aggregatePart) {
|
|
|
1281
1298
|
return "{outerAggregation}(process(".concat(aggregatePart, ", {caseCaseIdFormula}))");
|
|
1282
1299
|
}
|
|
1283
1300
|
function createSpecificEventTemplate(fn, additionalFn) {
|
|
1284
|
-
return "{outerAggregation}(process(".concat(fn, "(").concat(additionalFn ? "".concat(additionalFn, " ") : "", "{columnFormula}, {eventNameFormula} =
|
|
1301
|
+
return "{outerAggregation}(process(".concat(fn, "(").concat(additionalFn ? "".concat(additionalFn, " ") : "", "{columnFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula}))");
|
|
1285
1302
|
}
|
|
1286
1303
|
function createTopLikeTemplate(template) {
|
|
1287
1304
|
return function (outerAggregation) {
|