@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/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$4;
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$4 = {},
660
- _a$4[exports.EDimensionTemplateNames.dateTime] = "toDateTime({columnFormula})",
661
- _a$4[exports.EDimensionTemplateNames.date] = "toDate({columnFormula})",
662
- _a$4[exports.EDimensionTemplateNames.year] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}))",
663
- _a$4[exports.EDimensionTemplateNames.yearAndQuarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}) * 10 + toQuarter({columnFormula}))",
664
- _a$4[exports.EDimensionTemplateNames.quarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toQuarter({columnFormula}))",
665
- _a$4[exports.EDimensionTemplateNames.yearAndMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYYYYMM({columnFormula}))",
666
- _a$4[exports.EDimensionTemplateNames.month] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toMonth({columnFormula}))",
667
- _a$4[exports.EDimensionTemplateNames.dayOfMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfMonth({columnFormula}))",
668
- _a$4[exports.EDimensionTemplateNames.week] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toWeek({columnFormula}))",
669
- _a$4[exports.EDimensionTemplateNames.dayOfWeek] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfWeek({columnFormula}))",
670
- _a$4[exports.EDimensionTemplateNames.hour] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toHour({columnFormula}))",
671
- _a$4);
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} = '{eventName}'{filters}), {caseCaseIdFormula})");
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} = '{eventName}'{filters}) > 0, countIf({eventNameFormula} = '{eventName}'{filters}) - 1, 0), {caseCaseIdFormula})";
785
- var countExecutionsTemplate = "process(countIf({eventNameFormula} in '{eventName}'{filters}), {caseCaseIdFormula})";
786
- var lastValueTemplate = "process(argMaxIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula})";
787
- var firstValueTemplate = "process(argMinIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula})";
788
- var topTemplate = "process(topKIf(1)({columnFormula}, {eventNameFormula} = '{eventName}'{filters})[1], {caseCaseIdFormula})";
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 = clearSingleLineComments(clearMultiLineComments(formula)).trim();
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$3;
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$3 = {},
1001
- _a$3[exports.EDimensionAggregationTemplateName.avg] = avgTemplate,
1002
- _a$3[exports.EDimensionAggregationTemplateName.median] = medianTemplate,
1003
- _a$3[exports.EDimensionAggregationTemplateName.count] = countTemplate,
1004
- _a$3[exports.EDimensionAggregationTemplateName.countDistinct] = countDistinctTemplate,
1005
- _a$3[exports.EDimensionAggregationTemplateName.min] = minTemplate,
1006
- _a$3[exports.EDimensionAggregationTemplateName.max] = maxTemplate,
1007
- _a$3[exports.EDimensionAggregationTemplateName.sum] = sumTemplate,
1008
- _a$3[exports.EDimensionAggregationTemplateName.top] = topTemplate,
1009
- _a$3[exports.EDimensionAggregationTemplateName.firstValue] = firstValueTemplate,
1010
- _a$3[exports.EDimensionAggregationTemplateName.lastValue] = lastValueTemplate,
1011
- _a$3[exports.EDimensionAggregationTemplateName.countExecutions] = countExecutionsTemplate,
1012
- _a$3[exports.EDimensionAggregationTemplateName.countReworks] = countReworksTemplate,
1013
- _a$3);
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] = fillTemplateSql(dimensionTemplateFormulas[key], { columnFormula: innerTemplate });
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} = '{eventName}'{filters}), {caseCaseIdFormula})"),
1062
- _a[exports.EWidgetIndicatorValueModes.END_TIME] = generateTemplates("process(maxIf({eventTimeFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula})"),
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 fillTemplateSql(templateFormula, {
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
- ? fillTemplateSql(innerTemplate, { columnFormula: preparedParams.columnFormula })
1086
+ ? fillTemplateString(innerTemplate, { columnFormula: preparedParams.columnFormula })
1113
1087
  : preparedParams.columnFormula;
1114
1088
  var dimensionAggregationTemplate = dimensionAggregationTemplates[value.templateName];
1115
- return fillTemplateSql(dimensionAggregationTemplate, __assign(__assign({}, preparedParams), { columnFormula: columnFormula }));
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 fillTemplateSql(templateFormula, preparedParams);
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: (_a = value.eventName) !== null && _a !== void 0 ? _a : "",
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$2;
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$2 = {},
1194
- _a$2[exports.EMeasureTemplateNames.avg] = "avg({columnFormula})",
1195
- _a$2[exports.EMeasureTemplateNames.count] = "count({columnFormula})",
1196
- _a$2[exports.EMeasureTemplateNames.countDistinct] = "count(distinct {columnFormula})",
1197
- _a$2[exports.EMeasureTemplateNames.median] = "medianExact({columnFormula})",
1198
- _a$2[exports.EMeasureTemplateNames.min] = "min({columnFormula})",
1199
- _a$2[exports.EMeasureTemplateNames.max] = "max({columnFormula})",
1200
- _a$2[exports.EMeasureTemplateNames.sum] = "sum({columnFormula})",
1201
- _a$2);
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} = '{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)";
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} = '{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 ";
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}If(process(".concat(aggregatePart, ", {caseCaseIdFormula}), {objectFilters})");
1243
+ return "{outerAggregation}(process(".concat(aggregatePart, ", {caseCaseIdFormula}))");
1275
1244
  }
1276
1245
  function createSpecificEventTemplate(fn, additionalFn) {
1277
- return "{outerAggregation}If(process(".concat(fn, "(").concat(additionalFn ? "".concat(additionalFn, " ") : "", "{columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})");
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}KIf(1)(".concat(template, ", {objectFilters})[1]")
1283
- : "{outerAggregation}If(".concat(template, ", {objectFilters})");
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}If(".concat(countExecutionsTemplate, ", {objectFilters})");
1299
+ return "{outerAggregation}(".concat(countExecutionsTemplate, ")");
1331
1300
  case exports.EMeasureAggregationTemplateName.countReworks:
1332
- return "{outerAggregation}If(".concat(countReworksTemplate, ", {objectFilters})");
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 fillTemplateSql(templateFormula, {
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
- ? fillTemplateSql(createAggregationTemplate(value.templateName, {
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 fillTemplateSql(conversionTemplate, preparedParams);
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 fillTemplateSql(durationTemplates[value.templateName], preparedParams);
1345
+ return fillTemplateString(durationTemplates[value.templateName], preparedParams);
1377
1346
  }
1378
1347
  return "";
1379
1348
  }
1380
1349
 
1381
- var _a$1;
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$1 = {},
1388
- _a$1[exports.EEventMeasureTemplateNames.eventsCount] = "count()",
1389
- _a$1[exports.EEventMeasureTemplateNames.reworksCount] = "count() - uniqExact({caseCaseIdFormula})",
1390
- _a$1);
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 && fillTemplateSql(templateFormula, process);
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 && fillTemplateSql(templateFormula, process);
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: fillTemplateSql(displayConditionTemplate, {
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infomaximum/widget-sdk",
3
- "version": "6.0.0-9",
3
+ "version": "6.0.0-view-theme.1",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.esm.js",
6
6
  "types": "./dist/index.d.ts",