@infomaximum/widget-sdk 6.0.0-9 → 6.0.0-view-theme.1
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 +91 -40
- package/README.md +3 -1
- package/dist/index.d.ts +39 -18
- package/dist/index.esm.js +156 -147
- package/dist/index.js +158 -147
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -133,35 +133,6 @@ function __rest(s, e) {
|
|
|
133
133
|
return t;
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
function __values(o) {
|
|
137
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
138
|
-
if (m) return m.call(o);
|
|
139
|
-
if (o && typeof o.length === "number") return {
|
|
140
|
-
next: function () {
|
|
141
|
-
if (o && i >= o.length) o = void 0;
|
|
142
|
-
return { value: o && o[i++], done: !o };
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
function __read(o, n) {
|
|
149
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
150
|
-
if (!m) return o;
|
|
151
|
-
var i = m.call(o), r, ar = [], e;
|
|
152
|
-
try {
|
|
153
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
154
|
-
}
|
|
155
|
-
catch (error) { e = { error: error }; }
|
|
156
|
-
finally {
|
|
157
|
-
try {
|
|
158
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
159
|
-
}
|
|
160
|
-
finally { if (e) throw e.error; }
|
|
161
|
-
}
|
|
162
|
-
return ar;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
136
|
function __makeTemplateObject(cooked, raw) {
|
|
166
137
|
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
167
138
|
return cooked;
|
|
@@ -213,9 +184,18 @@ exports.EFormulaFilterFieldKeys = void 0;
|
|
|
213
184
|
EFormulaFilterFieldKeys["lastTimeUnit"] = "lastTimeUnit";
|
|
214
185
|
EFormulaFilterFieldKeys["durationUnit"] = "durationUnit";
|
|
215
186
|
})(exports.EFormulaFilterFieldKeys || (exports.EFormulaFilterFieldKeys = {}));
|
|
187
|
+
exports.EDimensionProcessFilterTimeUnit = void 0;
|
|
188
|
+
(function (EDimensionProcessFilterTimeUnit) {
|
|
189
|
+
EDimensionProcessFilterTimeUnit["YEARS"] = "YEARS";
|
|
190
|
+
EDimensionProcessFilterTimeUnit["MONTHS"] = "MONTHS";
|
|
191
|
+
EDimensionProcessFilterTimeUnit["HOURS"] = "HOURS";
|
|
192
|
+
EDimensionProcessFilterTimeUnit["DAYS"] = "DAYS";
|
|
193
|
+
EDimensionProcessFilterTimeUnit["MINUTES"] = "MINUTES";
|
|
194
|
+
})(exports.EDimensionProcessFilterTimeUnit || (exports.EDimensionProcessFilterTimeUnit = {}));
|
|
216
195
|
var isFormulaFilterValue = function (value) {
|
|
217
196
|
return "filteringMethod" in value;
|
|
218
197
|
};
|
|
198
|
+
var isDimensionProcessFilter = function (filter) { return "value" in filter && "condition" in filter; };
|
|
219
199
|
|
|
220
200
|
var compact = function (items) { return ((items === null || items === void 0 ? void 0 : items.filter(Boolean)) || []); };
|
|
221
201
|
var compactMap = function (items, f) {
|
|
@@ -640,7 +620,7 @@ var formattingConfig = {
|
|
|
640
620
|
},
|
|
641
621
|
};
|
|
642
622
|
|
|
643
|
-
var _a$
|
|
623
|
+
var _a$5;
|
|
644
624
|
exports.EDimensionTemplateNames = void 0;
|
|
645
625
|
(function (EDimensionTemplateNames) {
|
|
646
626
|
EDimensionTemplateNames["dateTime"] = "dateTime";
|
|
@@ -656,19 +636,19 @@ exports.EDimensionTemplateNames = void 0;
|
|
|
656
636
|
EDimensionTemplateNames["hour"] = "hour";
|
|
657
637
|
})(exports.EDimensionTemplateNames || (exports.EDimensionTemplateNames = {}));
|
|
658
638
|
/** Стандартные шаблоны разреза */
|
|
659
|
-
var dimensionTemplateFormulas = (_a$
|
|
660
|
-
_a$
|
|
661
|
-
_a$
|
|
662
|
-
_a$
|
|
663
|
-
_a$
|
|
664
|
-
_a$
|
|
665
|
-
_a$
|
|
666
|
-
_a$
|
|
667
|
-
_a$
|
|
668
|
-
_a$
|
|
669
|
-
_a$
|
|
670
|
-
_a$
|
|
671
|
-
_a$
|
|
639
|
+
var dimensionTemplateFormulas = (_a$5 = {},
|
|
640
|
+
_a$5[exports.EDimensionTemplateNames.dateTime] = "toDateTime({columnFormula})",
|
|
641
|
+
_a$5[exports.EDimensionTemplateNames.date] = "toDate({columnFormula})",
|
|
642
|
+
_a$5[exports.EDimensionTemplateNames.year] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}))",
|
|
643
|
+
_a$5[exports.EDimensionTemplateNames.yearAndQuarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}) * 10 + toQuarter({columnFormula}))",
|
|
644
|
+
_a$5[exports.EDimensionTemplateNames.quarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toQuarter({columnFormula}))",
|
|
645
|
+
_a$5[exports.EDimensionTemplateNames.yearAndMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYYYYMM({columnFormula}))",
|
|
646
|
+
_a$5[exports.EDimensionTemplateNames.month] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toMonth({columnFormula}))",
|
|
647
|
+
_a$5[exports.EDimensionTemplateNames.dayOfMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfMonth({columnFormula}))",
|
|
648
|
+
_a$5[exports.EDimensionTemplateNames.week] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toWeek({columnFormula}))",
|
|
649
|
+
_a$5[exports.EDimensionTemplateNames.dayOfWeek] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfWeek({columnFormula}))",
|
|
650
|
+
_a$5[exports.EDimensionTemplateNames.hour] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toHour({columnFormula}))",
|
|
651
|
+
_a$5);
|
|
672
652
|
|
|
673
653
|
exports.EWidgetIndicatorType = void 0;
|
|
674
654
|
(function (EWidgetIndicatorType) {
|
|
@@ -778,14 +758,14 @@ exports.EEventAppearances = void 0;
|
|
|
778
758
|
})(exports.EEventAppearances || (exports.EEventAppearances = {}));
|
|
779
759
|
|
|
780
760
|
function createAggregationTemplate$1(functionName, options) {
|
|
781
|
-
return "process(".concat(functionName, "(").concat((options === null || options === void 0 ? void 0 : options.distinct) ? "distinct " : "", "{columnFormula}, {eventNameFormula} =
|
|
761
|
+
return "process(".concat(functionName, "(").concat((options === null || options === void 0 ? void 0 : options.distinct) ? "distinct " : "", "{columnFormula}, {eventNameFormula} ={eventName}{filters}), {caseCaseIdFormula})");
|
|
782
762
|
}
|
|
783
763
|
|
|
784
|
-
var countReworksTemplate = "process(if(countIf({eventNameFormula} =
|
|
785
|
-
var countExecutionsTemplate = "process(countIf({eventNameFormula} in
|
|
786
|
-
var lastValueTemplate = "process(argMaxIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} =
|
|
787
|
-
var firstValueTemplate = "process(argMinIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} =
|
|
788
|
-
var topTemplate = "process(topKIf(1)({columnFormula}, {eventNameFormula} =
|
|
764
|
+
var countReworksTemplate = "process(if(countIf({eventNameFormula} = {eventName}{filters}) > 0, countIf({eventNameFormula} = {eventName}{filters}) - 1, 0), {caseCaseIdFormula})";
|
|
765
|
+
var countExecutionsTemplate = "process(countIf({eventNameFormula} in {eventName}{filters}), {caseCaseIdFormula})";
|
|
766
|
+
var lastValueTemplate = "process(argMaxIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})";
|
|
767
|
+
var firstValueTemplate = "process(argMinIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})";
|
|
768
|
+
var topTemplate = "process(topKIf(1)({columnFormula}, {eventNameFormula} = {eventName}{filters})[1], {caseCaseIdFormula})";
|
|
789
769
|
var avgTemplate = createAggregationTemplate$1("avgIf");
|
|
790
770
|
var medianTemplate = createAggregationTemplate$1("medianIf");
|
|
791
771
|
var countTemplate = createAggregationTemplate$1("countIf");
|
|
@@ -794,6 +774,23 @@ var minTemplate = createAggregationTemplate$1("minIf");
|
|
|
794
774
|
var maxTemplate = createAggregationTemplate$1("maxIf");
|
|
795
775
|
var sumTemplate = createAggregationTemplate$1("sumIf");
|
|
796
776
|
|
|
777
|
+
function hasPossibleSingleLineComment(str) {
|
|
778
|
+
return str.indexOf("--") >= 0;
|
|
779
|
+
}
|
|
780
|
+
function sanitizeSingleLineComment(formula, wrapInBrackets) {
|
|
781
|
+
if (!hasPossibleSingleLineComment(formula)) {
|
|
782
|
+
return formula;
|
|
783
|
+
}
|
|
784
|
+
var lines = formula.split("\n");
|
|
785
|
+
var lastLine = lines[lines.length - 1];
|
|
786
|
+
// Кейс, когда хотим избежать повторного добавления переноса строки:
|
|
787
|
+
// уже есть переносы и после последнего переноса нет комментария
|
|
788
|
+
if (lines.length > 1 && lastLine && !hasPossibleSingleLineComment(lastLine)) {
|
|
789
|
+
return formula;
|
|
790
|
+
}
|
|
791
|
+
return wrapInBrackets ? "(".concat(formula, "\n)") : "".concat(formula, "\n");
|
|
792
|
+
}
|
|
793
|
+
|
|
797
794
|
/** @deprecated - следует использовать fillTemplateSql */
|
|
798
795
|
function fillTemplateString(templateString, params) {
|
|
799
796
|
return templateString.replace(/\{(.*?)\}/g, function (_, key) {
|
|
@@ -801,31 +798,6 @@ function fillTemplateString(templateString, params) {
|
|
|
801
798
|
return (_a = params[key]) !== null && _a !== void 0 ? _a : "";
|
|
802
799
|
});
|
|
803
800
|
}
|
|
804
|
-
/** Функция для безопасного заполнения SQL шаблонов с защитой от однострочных SQL комментариев в подставляемых значениях. */
|
|
805
|
-
function fillTemplateSql(templateString, params) {
|
|
806
|
-
var e_1, _a;
|
|
807
|
-
var newParams = {};
|
|
808
|
-
try {
|
|
809
|
-
for (var _b = __values(Object.entries(params)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
810
|
-
var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
|
|
811
|
-
/** Эвристическая проверка на возможное присутствие sql-комментария в значении подставляемом в template
|
|
812
|
-
*/
|
|
813
|
-
if (String(value).indexOf("--") >= 0) {
|
|
814
|
-
newParams[key] = "".concat(value, "\n");
|
|
815
|
-
continue;
|
|
816
|
-
}
|
|
817
|
-
newParams[key] = String(value);
|
|
818
|
-
}
|
|
819
|
-
}
|
|
820
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
821
|
-
finally {
|
|
822
|
-
try {
|
|
823
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
824
|
-
}
|
|
825
|
-
finally { if (e_1) throw e_1.error; }
|
|
826
|
-
}
|
|
827
|
-
return fillTemplateString(templateString, newParams);
|
|
828
|
-
}
|
|
829
801
|
|
|
830
802
|
/** Создать функцию экранирования переданных `specialChars` внутри `str` */
|
|
831
803
|
var createEscaper = function (specialChars) { return function (str) {
|
|
@@ -898,7 +870,7 @@ var escapeSingularQuotes = function (formula) {
|
|
|
898
870
|
};
|
|
899
871
|
|
|
900
872
|
var prepareFormulaForSql = function (formula, simpleType) {
|
|
901
|
-
formula =
|
|
873
|
+
formula = sanitizeSingleLineComment(formula, true);
|
|
902
874
|
return simpleType === exports.ESimpleDataType.OTHER ? "toString(".concat(formula, ")") : formula;
|
|
903
875
|
};
|
|
904
876
|
var clearSingleLineComments = function (formula) {
|
|
@@ -980,7 +952,7 @@ var convertFiltersToFormula = function (filters) {
|
|
|
980
952
|
return filters.length > 0 ? " AND ".concat(convertToFormulasChain(filters)) : "";
|
|
981
953
|
};
|
|
982
954
|
|
|
983
|
-
var _a$
|
|
955
|
+
var _a$4;
|
|
984
956
|
exports.EDimensionAggregationTemplateName = void 0;
|
|
985
957
|
(function (EDimensionAggregationTemplateName) {
|
|
986
958
|
EDimensionAggregationTemplateName["avg"] = "avg";
|
|
@@ -997,20 +969,20 @@ exports.EDimensionAggregationTemplateName = void 0;
|
|
|
997
969
|
EDimensionAggregationTemplateName["countReworks"] = "countReworks";
|
|
998
970
|
})(exports.EDimensionAggregationTemplateName || (exports.EDimensionAggregationTemplateName = {}));
|
|
999
971
|
/** Шаблоны процессных метрик разреза с режимом AGGREGATION */
|
|
1000
|
-
var dimensionAggregationTemplates = (_a$
|
|
1001
|
-
_a$
|
|
1002
|
-
_a$
|
|
1003
|
-
_a$
|
|
1004
|
-
_a$
|
|
1005
|
-
_a$
|
|
1006
|
-
_a$
|
|
1007
|
-
_a$
|
|
1008
|
-
_a$
|
|
1009
|
-
_a$
|
|
1010
|
-
_a$
|
|
1011
|
-
_a$
|
|
1012
|
-
_a$
|
|
1013
|
-
_a$
|
|
972
|
+
var dimensionAggregationTemplates = (_a$4 = {},
|
|
973
|
+
_a$4[exports.EDimensionAggregationTemplateName.avg] = avgTemplate,
|
|
974
|
+
_a$4[exports.EDimensionAggregationTemplateName.median] = medianTemplate,
|
|
975
|
+
_a$4[exports.EDimensionAggregationTemplateName.count] = countTemplate,
|
|
976
|
+
_a$4[exports.EDimensionAggregationTemplateName.countDistinct] = countDistinctTemplate,
|
|
977
|
+
_a$4[exports.EDimensionAggregationTemplateName.min] = minTemplate,
|
|
978
|
+
_a$4[exports.EDimensionAggregationTemplateName.max] = maxTemplate,
|
|
979
|
+
_a$4[exports.EDimensionAggregationTemplateName.sum] = sumTemplate,
|
|
980
|
+
_a$4[exports.EDimensionAggregationTemplateName.top] = topTemplate,
|
|
981
|
+
_a$4[exports.EDimensionAggregationTemplateName.firstValue] = firstValueTemplate,
|
|
982
|
+
_a$4[exports.EDimensionAggregationTemplateName.lastValue] = lastValueTemplate,
|
|
983
|
+
_a$4[exports.EDimensionAggregationTemplateName.countExecutions] = countExecutionsTemplate,
|
|
984
|
+
_a$4[exports.EDimensionAggregationTemplateName.countReworks] = countReworksTemplate,
|
|
985
|
+
_a$4);
|
|
1014
986
|
/** На основе значения режима AGGREGATION подготовить параметры для подстановки в шаблонную формулу */
|
|
1015
987
|
var prepareDimensionAggregationParams = function (value) {
|
|
1016
988
|
if (!value.eventName ||
|
|
@@ -1023,8 +995,7 @@ var prepareDimensionAggregationParams = function (value) {
|
|
|
1023
995
|
var commonParams = {
|
|
1024
996
|
eventNameFormula: value.eventNameFormula,
|
|
1025
997
|
caseCaseIdFormula: value.caseCaseIdFormula,
|
|
1026
|
-
eventName: value.eventName,
|
|
1027
|
-
objectFilters: "1",
|
|
998
|
+
eventName: "'".concat(escapeSingularQuotes(value.eventName), "'"),
|
|
1028
999
|
filters: convertFiltersToFormula(value.filters),
|
|
1029
1000
|
eventTimeFormula: "",
|
|
1030
1001
|
columnFormula: "",
|
|
@@ -1053,13 +1024,13 @@ var timeTemplates = (function () {
|
|
|
1053
1024
|
var generateTemplates = function (innerTemplate) {
|
|
1054
1025
|
var templates = {};
|
|
1055
1026
|
for (var key in dimensionTemplateFormulas) {
|
|
1056
|
-
templates[key] =
|
|
1027
|
+
templates[key] = fillTemplateString(dimensionTemplateFormulas[key], { columnFormula: innerTemplate });
|
|
1057
1028
|
}
|
|
1058
1029
|
return templates;
|
|
1059
1030
|
};
|
|
1060
1031
|
return _a = {},
|
|
1061
|
-
_a[exports.EWidgetIndicatorValueModes.START_TIME] = generateTemplates("process(minIf({eventTimeFormula}, {eventNameFormula} =
|
|
1062
|
-
_a[exports.EWidgetIndicatorValueModes.END_TIME] = generateTemplates("process(maxIf({eventTimeFormula}, {eventNameFormula} =
|
|
1032
|
+
_a[exports.EWidgetIndicatorValueModes.START_TIME] = generateTemplates("process(minIf({eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})"),
|
|
1033
|
+
_a[exports.EWidgetIndicatorValueModes.END_TIME] = generateTemplates("process(maxIf({eventTimeFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula})"),
|
|
1063
1034
|
_a;
|
|
1064
1035
|
})();
|
|
1065
1036
|
/** На основе значения режимов START_TIME/END_TIME подготовить параметры для подстановки в шаблонную формулу */
|
|
@@ -1077,12 +1048,12 @@ var prepareTimeParams = function (value) {
|
|
|
1077
1048
|
eventNameFormula: value.eventNameFormula,
|
|
1078
1049
|
caseCaseIdFormula: value.caseCaseIdFormula,
|
|
1079
1050
|
filters: convertFiltersToFormula(value.filters),
|
|
1080
|
-
eventName: value.eventName,
|
|
1051
|
+
eventName: "'".concat(escapeSingularQuotes(value.eventName), "'"),
|
|
1081
1052
|
};
|
|
1082
1053
|
};
|
|
1083
1054
|
|
|
1084
1055
|
function getDimensionFormula(_a) {
|
|
1085
|
-
var _b;
|
|
1056
|
+
var _b, _c;
|
|
1086
1057
|
var value = _a.value;
|
|
1087
1058
|
if (!value) {
|
|
1088
1059
|
return "";
|
|
@@ -1096,10 +1067,13 @@ function getDimensionFormula(_a) {
|
|
|
1096
1067
|
if (!templateFormula || !tableName || !columnName) {
|
|
1097
1068
|
return "";
|
|
1098
1069
|
}
|
|
1099
|
-
return
|
|
1070
|
+
return fillTemplateString(templateFormula, {
|
|
1100
1071
|
columnFormula: generateColumnFormula(tableName, columnName),
|
|
1101
1072
|
});
|
|
1102
1073
|
}
|
|
1074
|
+
return (_c = getProcessDimensionValueFormula(value)) !== null && _c !== void 0 ? _c : "";
|
|
1075
|
+
}
|
|
1076
|
+
function getProcessDimensionValueFormula(value) {
|
|
1103
1077
|
if (value.mode === exports.EWidgetIndicatorValueModes.AGGREGATION) {
|
|
1104
1078
|
var preparedParams = prepareDimensionAggregationParams(value);
|
|
1105
1079
|
if (!preparedParams) {
|
|
@@ -1109,10 +1083,10 @@ function getDimensionFormula(_a) {
|
|
|
1109
1083
|
? dimensionTemplateFormulas[value.innerTemplateName]
|
|
1110
1084
|
: null;
|
|
1111
1085
|
var columnFormula = innerTemplate
|
|
1112
|
-
?
|
|
1086
|
+
? fillTemplateString(innerTemplate, { columnFormula: preparedParams.columnFormula })
|
|
1113
1087
|
: preparedParams.columnFormula;
|
|
1114
1088
|
var dimensionAggregationTemplate = dimensionAggregationTemplates[value.templateName];
|
|
1115
|
-
return
|
|
1089
|
+
return fillTemplateString(dimensionAggregationTemplate, __assign(__assign({}, preparedParams), { columnFormula: columnFormula }));
|
|
1116
1090
|
}
|
|
1117
1091
|
if (value.mode === exports.EWidgetIndicatorValueModes.START_TIME ||
|
|
1118
1092
|
value.mode === exports.EWidgetIndicatorValueModes.END_TIME) {
|
|
@@ -1121,9 +1095,8 @@ function getDimensionFormula(_a) {
|
|
|
1121
1095
|
return "";
|
|
1122
1096
|
}
|
|
1123
1097
|
var templateFormula = timeTemplates[value.mode][value.templateName];
|
|
1124
|
-
return
|
|
1098
|
+
return fillTemplateString(templateFormula, preparedParams);
|
|
1125
1099
|
}
|
|
1126
|
-
return "";
|
|
1127
1100
|
}
|
|
1128
1101
|
|
|
1129
1102
|
exports.EMeasureAggregationTemplateName = void 0;
|
|
@@ -1143,7 +1116,6 @@ exports.EMeasureAggregationTemplateName = void 0;
|
|
|
1143
1116
|
})(exports.EMeasureAggregationTemplateName || (exports.EMeasureAggregationTemplateName = {}));
|
|
1144
1117
|
/** На основе значения режима AGGREGATION подготовить параметры для подстановки в шаблонную формулу */
|
|
1145
1118
|
var prepareMeasureAggregationParams = function (value) {
|
|
1146
|
-
var _a;
|
|
1147
1119
|
if ((!value.anyEvent && !value.eventName) ||
|
|
1148
1120
|
!value.caseCaseIdFormula ||
|
|
1149
1121
|
!value.eventNameFormula ||
|
|
@@ -1156,8 +1128,7 @@ var prepareMeasureAggregationParams = function (value) {
|
|
|
1156
1128
|
outerAggregation: value.outerAggregation,
|
|
1157
1129
|
eventNameFormula: value.eventNameFormula,
|
|
1158
1130
|
caseCaseIdFormula: value.caseCaseIdFormula,
|
|
1159
|
-
eventName:
|
|
1160
|
-
objectFilters: "1",
|
|
1131
|
+
eventName: value.eventName ? "'".concat(escapeSingularQuotes(value.eventName), "'") : "",
|
|
1161
1132
|
filters: convertFiltersToFormula(value.filters),
|
|
1162
1133
|
eventTimeFormula: "",
|
|
1163
1134
|
columnFormula: "",
|
|
@@ -1178,7 +1149,7 @@ var prepareMeasureAggregationParams = function (value) {
|
|
|
1178
1149
|
return columnParams;
|
|
1179
1150
|
};
|
|
1180
1151
|
|
|
1181
|
-
var _a$
|
|
1152
|
+
var _a$3;
|
|
1182
1153
|
exports.EMeasureTemplateNames = void 0;
|
|
1183
1154
|
(function (EMeasureTemplateNames) {
|
|
1184
1155
|
EMeasureTemplateNames["avg"] = "avg";
|
|
@@ -1190,18 +1161,18 @@ exports.EMeasureTemplateNames = void 0;
|
|
|
1190
1161
|
EMeasureTemplateNames["sum"] = "sum";
|
|
1191
1162
|
})(exports.EMeasureTemplateNames || (exports.EMeasureTemplateNames = {}));
|
|
1192
1163
|
/** Стандартные шаблоны меры */
|
|
1193
|
-
var measureTemplateFormulas = (_a$
|
|
1194
|
-
_a$
|
|
1195
|
-
_a$
|
|
1196
|
-
_a$
|
|
1197
|
-
_a$
|
|
1198
|
-
_a$
|
|
1199
|
-
_a$
|
|
1200
|
-
_a$
|
|
1201
|
-
_a$
|
|
1164
|
+
var measureTemplateFormulas = (_a$3 = {},
|
|
1165
|
+
_a$3[exports.EMeasureTemplateNames.avg] = "avg({columnFormula})",
|
|
1166
|
+
_a$3[exports.EMeasureTemplateNames.count] = "count({columnFormula})",
|
|
1167
|
+
_a$3[exports.EMeasureTemplateNames.countDistinct] = "count(distinct {columnFormula})",
|
|
1168
|
+
_a$3[exports.EMeasureTemplateNames.median] = "medianExact({columnFormula})",
|
|
1169
|
+
_a$3[exports.EMeasureTemplateNames.min] = "min({columnFormula})",
|
|
1170
|
+
_a$3[exports.EMeasureTemplateNames.max] = "max({columnFormula})",
|
|
1171
|
+
_a$3[exports.EMeasureTemplateNames.sum] = "sum({columnFormula})",
|
|
1172
|
+
_a$3);
|
|
1202
1173
|
|
|
1203
1174
|
/** Шаблон процессной метрики меры с режимом CONVERSION */
|
|
1204
|
-
var conversionTemplate = "countIf(\n process(\n minIf(\n {startEventTimeFormula}, \n {startEventNameFormula} =
|
|
1175
|
+
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)";
|
|
1205
1176
|
/** На основе значения режима CONVERSION подготовить параметры для подстановки в шаблонную формулу */
|
|
1206
1177
|
var prepareConversionParams = function (value) {
|
|
1207
1178
|
if (!value.startEventName ||
|
|
@@ -1216,15 +1187,14 @@ var prepareConversionParams = function (value) {
|
|
|
1216
1187
|
return null;
|
|
1217
1188
|
}
|
|
1218
1189
|
return {
|
|
1219
|
-
objectFilters: "1",
|
|
1220
1190
|
startEventTimeFormula: value.startEventTimeFormula,
|
|
1221
1191
|
startEventNameFormula: value.startEventNameFormula,
|
|
1222
1192
|
startEventFilters: convertFiltersToFormula(value.startEventFilters),
|
|
1223
|
-
startEventName: value.startEventName,
|
|
1193
|
+
startEventName: "'".concat(escapeSingularQuotes(value.startEventName), "'"),
|
|
1224
1194
|
endEventTimeFormula: value.endEventTimeFormula,
|
|
1225
1195
|
endCaseCaseIdFormula: value.endCaseCaseIdFormula,
|
|
1226
1196
|
endEventNameFormula: value.endEventNameFormula,
|
|
1227
|
-
endEventName: value.endEventName,
|
|
1197
|
+
endEventName: "'".concat(escapeSingularQuotes(value.endEventName), "'"),
|
|
1228
1198
|
endEventFilters: convertFiltersToFormula(value.endEventFilters),
|
|
1229
1199
|
};
|
|
1230
1200
|
};
|
|
@@ -1232,7 +1202,7 @@ var prepareConversionParams = function (value) {
|
|
|
1232
1202
|
/** Шаблоны процессных метрик меры с режимом DURATION */
|
|
1233
1203
|
var durationTemplates = (function () {
|
|
1234
1204
|
var _a;
|
|
1235
|
-
var innerTemplate = "\n timeDiff(\n process(\n {startEventAggregationName}(\n {startEventTimeFormula}, \n {startEventNameFormula} =
|
|
1205
|
+
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 ";
|
|
1236
1206
|
return _a = {},
|
|
1237
1207
|
_a[exports.EDurationTemplateName.avg] = "avgIf(".concat(innerTemplate, ")"),
|
|
1238
1208
|
_a[exports.EDurationTemplateName.median] = "medianIf(".concat(innerTemplate, ")"),
|
|
@@ -1255,32 +1225,31 @@ var prepareDurationParams = function (value) {
|
|
|
1255
1225
|
return appearance === exports.EEventAppearances.FIRST ? "minIf" : "maxIf";
|
|
1256
1226
|
};
|
|
1257
1227
|
return {
|
|
1258
|
-
objectFilters: "1",
|
|
1259
1228
|
startEventTimeFormula: value.startEventTimeFormula,
|
|
1260
1229
|
startEventNameFormula: value.startEventNameFormula,
|
|
1261
1230
|
startEventFilters: convertFiltersToFormula(value.startEventFilters),
|
|
1262
|
-
startEventName: value.startEventName,
|
|
1231
|
+
startEventName: "'".concat(escapeSingularQuotes(value.startEventName), "'"),
|
|
1263
1232
|
startEventAggregationName: getAggregationNameByAppearances(value.startEventAppearances),
|
|
1264
1233
|
endEventTimeFormula: value.endEventTimeFormula,
|
|
1265
1234
|
endCaseCaseIdFormula: value.endCaseCaseIdFormula,
|
|
1266
1235
|
endEventNameFormula: value.endEventNameFormula,
|
|
1267
|
-
endEventName: value.endEventName,
|
|
1236
|
+
endEventName: "'".concat(escapeSingularQuotes(value.endEventName), "'"),
|
|
1268
1237
|
endEventFilters: convertFiltersToFormula(value.endEventFilters),
|
|
1269
1238
|
endEventAggregationName: getAggregationNameByAppearances(value.endEventAppearances),
|
|
1270
1239
|
};
|
|
1271
1240
|
};
|
|
1272
1241
|
|
|
1273
1242
|
function createAnyEventTemplate(aggregatePart) {
|
|
1274
|
-
return "{outerAggregation}
|
|
1243
|
+
return "{outerAggregation}(process(".concat(aggregatePart, ", {caseCaseIdFormula}))");
|
|
1275
1244
|
}
|
|
1276
1245
|
function createSpecificEventTemplate(fn, additionalFn) {
|
|
1277
|
-
return "{outerAggregation}
|
|
1246
|
+
return "{outerAggregation}(process(".concat(fn, "(").concat(additionalFn ? "".concat(additionalFn, " ") : "", "{columnFormula}, {eventNameFormula} = {eventName}{filters}), {caseCaseIdFormula}))");
|
|
1278
1247
|
}
|
|
1279
1248
|
function createTopLikeTemplate(template) {
|
|
1280
1249
|
return function (outerAggregation) {
|
|
1281
1250
|
return outerAggregation === exports.EOuterAggregation.top
|
|
1282
|
-
? "{outerAggregation}
|
|
1283
|
-
: "{outerAggregation}
|
|
1251
|
+
? "{outerAggregation}K(1)(".concat(template, ")[1]")
|
|
1252
|
+
: "{outerAggregation}(".concat(template, ")");
|
|
1284
1253
|
};
|
|
1285
1254
|
}
|
|
1286
1255
|
function createAggregationTemplate(templateName, _a) {
|
|
@@ -1327,9 +1296,9 @@ function createAggregationTemplate(templateName, _a) {
|
|
|
1327
1296
|
? createAnyEventTemplate("argMax({columnFormula}, {eventTimeFormula})")
|
|
1328
1297
|
: createTopLikeTemplate(lastValueTemplate)(outerAggregation);
|
|
1329
1298
|
case exports.EMeasureAggregationTemplateName.countExecutions:
|
|
1330
|
-
return "{outerAggregation}
|
|
1299
|
+
return "{outerAggregation}(".concat(countExecutionsTemplate, ")");
|
|
1331
1300
|
case exports.EMeasureAggregationTemplateName.countReworks:
|
|
1332
|
-
return "{outerAggregation}
|
|
1301
|
+
return "{outerAggregation}(".concat(countReworksTemplate, ")");
|
|
1333
1302
|
}
|
|
1334
1303
|
}
|
|
1335
1304
|
|
|
@@ -1348,14 +1317,14 @@ function getMeasureFormula(_a) {
|
|
|
1348
1317
|
if (!templateFormula || !tableName || !columnName) {
|
|
1349
1318
|
return "";
|
|
1350
1319
|
}
|
|
1351
|
-
return
|
|
1320
|
+
return fillTemplateString(templateFormula, {
|
|
1352
1321
|
columnFormula: generateColumnFormula(tableName, columnName),
|
|
1353
1322
|
});
|
|
1354
1323
|
}
|
|
1355
1324
|
if (value.mode === exports.EWidgetIndicatorValueModes.AGGREGATION) {
|
|
1356
1325
|
var preparedParams = prepareMeasureAggregationParams(value);
|
|
1357
1326
|
return preparedParams
|
|
1358
|
-
?
|
|
1327
|
+
? fillTemplateString(createAggregationTemplate(value.templateName, {
|
|
1359
1328
|
outerAggregation: preparedParams.outerAggregation,
|
|
1360
1329
|
anyEvent: value.anyEvent,
|
|
1361
1330
|
}), preparedParams)
|
|
@@ -1366,28 +1335,28 @@ function getMeasureFormula(_a) {
|
|
|
1366
1335
|
if (!preparedParams) {
|
|
1367
1336
|
return "";
|
|
1368
1337
|
}
|
|
1369
|
-
return
|
|
1338
|
+
return fillTemplateString(conversionTemplate, preparedParams);
|
|
1370
1339
|
}
|
|
1371
1340
|
if (value.mode === exports.EWidgetIndicatorValueModes.DURATION) {
|
|
1372
1341
|
var preparedParams = prepareDurationParams(value);
|
|
1373
1342
|
if (!preparedParams) {
|
|
1374
1343
|
return "";
|
|
1375
1344
|
}
|
|
1376
|
-
return
|
|
1345
|
+
return fillTemplateString(durationTemplates[value.templateName], preparedParams);
|
|
1377
1346
|
}
|
|
1378
1347
|
return "";
|
|
1379
1348
|
}
|
|
1380
1349
|
|
|
1381
|
-
var _a$
|
|
1350
|
+
var _a$2;
|
|
1382
1351
|
exports.EEventMeasureTemplateNames = void 0;
|
|
1383
1352
|
(function (EEventMeasureTemplateNames) {
|
|
1384
1353
|
EEventMeasureTemplateNames["eventsCount"] = "eventsCount";
|
|
1385
1354
|
EEventMeasureTemplateNames["reworksCount"] = "reworksCount";
|
|
1386
1355
|
})(exports.EEventMeasureTemplateNames || (exports.EEventMeasureTemplateNames = {}));
|
|
1387
|
-
var eventMeasureTemplateFormulas = (_a$
|
|
1388
|
-
_a$
|
|
1389
|
-
_a$
|
|
1390
|
-
_a$
|
|
1356
|
+
var eventMeasureTemplateFormulas = (_a$2 = {},
|
|
1357
|
+
_a$2[exports.EEventMeasureTemplateNames.eventsCount] = "count()",
|
|
1358
|
+
_a$2[exports.EEventMeasureTemplateNames.reworksCount] = "count() - uniqExact({caseCaseIdFormula})",
|
|
1359
|
+
_a$2);
|
|
1391
1360
|
|
|
1392
1361
|
function getEventMeasureFormula(_a, process) {
|
|
1393
1362
|
var value = _a.value;
|
|
@@ -1399,21 +1368,21 @@ function getEventMeasureFormula(_a, process) {
|
|
|
1399
1368
|
}
|
|
1400
1369
|
if (value.mode === exports.EWidgetIndicatorValueModes.TEMPLATE) {
|
|
1401
1370
|
var templateFormula = eventMeasureTemplateFormulas[value.templateName];
|
|
1402
|
-
return templateFormula &&
|
|
1371
|
+
return templateFormula && fillTemplateString(templateFormula, process);
|
|
1403
1372
|
}
|
|
1404
1373
|
return "";
|
|
1405
1374
|
}
|
|
1406
1375
|
|
|
1407
|
-
var _a;
|
|
1376
|
+
var _a$1;
|
|
1408
1377
|
exports.ETransitionMeasureTemplateNames = void 0;
|
|
1409
1378
|
(function (ETransitionMeasureTemplateNames) {
|
|
1410
1379
|
ETransitionMeasureTemplateNames["transitionsCount"] = "transitionsCount";
|
|
1411
1380
|
ETransitionMeasureTemplateNames["medianTime"] = "medianTime";
|
|
1412
1381
|
})(exports.ETransitionMeasureTemplateNames || (exports.ETransitionMeasureTemplateNames = {}));
|
|
1413
|
-
var transitionMeasureTemplateFormulas = (_a = {},
|
|
1414
|
-
_a[exports.ETransitionMeasureTemplateNames.transitionsCount] = "count()",
|
|
1415
|
-
_a[exports.ETransitionMeasureTemplateNames.medianTime] = "medianExact(date_diff(second, begin({eventTimeFormula}), end({eventTimeFormula})))",
|
|
1416
|
-
_a);
|
|
1382
|
+
var transitionMeasureTemplateFormulas = (_a$1 = {},
|
|
1383
|
+
_a$1[exports.ETransitionMeasureTemplateNames.transitionsCount] = "count()",
|
|
1384
|
+
_a$1[exports.ETransitionMeasureTemplateNames.medianTime] = "medianExact(date_diff(second, begin({eventTimeFormula}), end({eventTimeFormula})))",
|
|
1385
|
+
_a$1);
|
|
1417
1386
|
|
|
1418
1387
|
function getTransitionMeasureFormula(_a, process) {
|
|
1419
1388
|
var value = _a.value;
|
|
@@ -1425,7 +1394,7 @@ function getTransitionMeasureFormula(_a, process) {
|
|
|
1425
1394
|
}
|
|
1426
1395
|
if (value.mode === exports.EWidgetIndicatorValueModes.TEMPLATE) {
|
|
1427
1396
|
var templateFormula = transitionMeasureTemplateFormulas[value.templateName];
|
|
1428
|
-
return templateFormula &&
|
|
1397
|
+
return templateFormula && fillTemplateString(templateFormula, process);
|
|
1429
1398
|
}
|
|
1430
1399
|
return "";
|
|
1431
1400
|
}
|
|
@@ -1617,7 +1586,7 @@ var mapFormulaFilterToCalculatorInput = function (filterValue) {
|
|
|
1617
1586
|
if (!isFormulaFilterValue(filterValue)) {
|
|
1618
1587
|
return {
|
|
1619
1588
|
dbDataType: exports.EClickHouseBaseTypes.Bool,
|
|
1620
|
-
formula:
|
|
1589
|
+
formula: fillTemplateString(displayConditionTemplate, {
|
|
1621
1590
|
formula: prepareFormulaForSql(filterValue.formula),
|
|
1622
1591
|
}),
|
|
1623
1592
|
values: ["true"],
|
|
@@ -1652,6 +1621,46 @@ var mapFormulaFiltersToInputs = function (filters) {
|
|
|
1652
1621
|
return compactMap(filters, mapFormulaFilterToCalculatorInput);
|
|
1653
1622
|
};
|
|
1654
1623
|
|
|
1624
|
+
var _a;
|
|
1625
|
+
var intervalByUnit = (_a = {},
|
|
1626
|
+
_a[exports.EDimensionProcessFilterTimeUnit.YEARS] = "year",
|
|
1627
|
+
_a[exports.EDimensionProcessFilterTimeUnit.MONTHS] = "month",
|
|
1628
|
+
_a[exports.EDimensionProcessFilterTimeUnit.DAYS] = "day",
|
|
1629
|
+
_a[exports.EDimensionProcessFilterTimeUnit.HOURS] = "hour",
|
|
1630
|
+
_a[exports.EDimensionProcessFilterTimeUnit.MINUTES] = "minute",
|
|
1631
|
+
_a);
|
|
1632
|
+
function mapDimensionProcessFilterToCalculatorInput(filter) {
|
|
1633
|
+
var formula = filter.value.mode === exports.EWidgetIndicatorValueModes.FORMULA
|
|
1634
|
+
? filter.value.formula
|
|
1635
|
+
: getProcessDimensionValueFormula(filter.value);
|
|
1636
|
+
if (formula === undefined) {
|
|
1637
|
+
throw new Error("Formula generation error");
|
|
1638
|
+
}
|
|
1639
|
+
var _a = filter.condition, timeUnit = _a.timeUnit, filteringMethod = _a.filteringMethod, values = _a.values;
|
|
1640
|
+
if (filteringMethod === "LAST_TIME") {
|
|
1641
|
+
if (!timeUnit) {
|
|
1642
|
+
throw new Error("Missing time unit");
|
|
1643
|
+
}
|
|
1644
|
+
return {
|
|
1645
|
+
dbDataType: exports.EClickHouseBaseTypes.Bool,
|
|
1646
|
+
formula: "date_diff('".concat(intervalByUnit[timeUnit], "', ").concat(formula, ", now())"),
|
|
1647
|
+
values: values,
|
|
1648
|
+
filteringMethod: formulaFilterMethods.LESS_THAN_OR_EQUAL_TO,
|
|
1649
|
+
};
|
|
1650
|
+
}
|
|
1651
|
+
return { formula: formula, filteringMethod: filteringMethod, values: values, dbDataType: filter.dbDataType };
|
|
1652
|
+
}
|
|
1653
|
+
|
|
1654
|
+
var mapSettingsFilterToCalculatorInput = function (filter) {
|
|
1655
|
+
if (isDimensionProcessFilter(filter)) {
|
|
1656
|
+
return mapDimensionProcessFilterToCalculatorInput(filter);
|
|
1657
|
+
}
|
|
1658
|
+
return mapFormulaFilterToCalculatorInput(filter);
|
|
1659
|
+
};
|
|
1660
|
+
var mapSettingsFiltersToInputs = function (filters) {
|
|
1661
|
+
return compactMap(filters, mapSettingsFilterToCalculatorInput);
|
|
1662
|
+
};
|
|
1663
|
+
|
|
1655
1664
|
function mapMeasureToInput(measure, variables, addFormulas) {
|
|
1656
1665
|
if (addFormulas === void 0) { addFormulas = function () { return new Map(); }; }
|
|
1657
1666
|
var mainFormula = getMeasureFormula(measure);
|
|
@@ -2177,7 +2186,6 @@ exports.durationTemplates = durationTemplates;
|
|
|
2177
2186
|
exports.escapeCurlyBracketLinkName = escapeCurlyBracketLinkName;
|
|
2178
2187
|
exports.escapeDoubleQuoteLinkName = escapeDoubleQuoteLinkName;
|
|
2179
2188
|
exports.eventMeasureTemplateFormulas = eventMeasureTemplateFormulas;
|
|
2180
|
-
exports.fillTemplateSql = fillTemplateSql;
|
|
2181
2189
|
exports.fillTemplateString = fillTemplateString;
|
|
2182
2190
|
exports.formattingConfig = formattingConfig;
|
|
2183
2191
|
exports.formulaFilterMethods = formulaFilterMethods;
|
|
@@ -2189,8 +2197,10 @@ exports.getDisplayConditionFormula = getDisplayConditionFormula;
|
|
|
2189
2197
|
exports.getEventMeasureFormula = getEventMeasureFormula;
|
|
2190
2198
|
exports.getLocalizedText = getLocalizedText;
|
|
2191
2199
|
exports.getMeasureFormula = getMeasureFormula;
|
|
2200
|
+
exports.getProcessDimensionValueFormula = getProcessDimensionValueFormula;
|
|
2192
2201
|
exports.getRuleColor = getRuleColor;
|
|
2193
2202
|
exports.getTransitionMeasureFormula = getTransitionMeasureFormula;
|
|
2203
|
+
exports.isDimensionProcessFilter = isDimensionProcessFilter;
|
|
2194
2204
|
exports.isDimensionsHierarchy = isDimensionsHierarchy;
|
|
2195
2205
|
exports.isFormulaFilterValue = isFormulaFilterValue;
|
|
2196
2206
|
exports.isValidColor = isValidColor;
|
|
@@ -2199,6 +2209,7 @@ exports.mapEventMeasuresToInputs = mapEventMeasuresToInputs;
|
|
|
2199
2209
|
exports.mapFormulaFilterToCalculatorInput = mapFormulaFilterToCalculatorInput;
|
|
2200
2210
|
exports.mapFormulaFiltersToInputs = mapFormulaFiltersToInputs;
|
|
2201
2211
|
exports.mapMeasuresToInputs = mapMeasuresToInputs;
|
|
2212
|
+
exports.mapSettingsFiltersToInputs = mapSettingsFiltersToInputs;
|
|
2202
2213
|
exports.mapSortingToInputs = mapSortingToInputs;
|
|
2203
2214
|
exports.mapTransitionMeasuresToInputs = mapTransitionMeasuresToInputs;
|
|
2204
2215
|
exports.measureTemplateFormulas = measureTemplateFormulas;
|