@infomaximum/widget-sdk 5.8.0 → 5.9.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
@@ -776,21 +776,35 @@ var replaceDisplayCondition = function (dimension, displayCondition) {
776
776
  return isNil(displayCondition) ? dimension : __assign(__assign({}, dimension), { displayCondition: displayCondition });
777
777
  };
778
778
 
779
- var escapeSpecialCharacters = function (formula) {
780
- return formula
781
- .replaceAll("\\", "\\\\")
782
- .replaceAll('"', '\\"')
783
- .replaceAll("`", "\\`");
784
- };
785
-
786
- function generateColumnFormula(tableName, columnName) {
787
- var preparedTableName = escapeSpecialCharacters(tableName);
788
- var preparedColumnName = escapeSpecialCharacters(columnName);
789
- return "\"".concat(preparedTableName, "\".\"").concat(preparedColumnName, "\"");
790
- }
791
- function fillTemplateString(templateString, params) {
792
- return templateString.replace(/\{(.*?)\}/g, function (_, key) { var _a; return (_a = params[key]) !== null && _a !== void 0 ? _a : ""; });
793
- }
779
+ var _a$5;
780
+ exports.EDimensionTemplateNames = void 0;
781
+ (function (EDimensionTemplateNames) {
782
+ EDimensionTemplateNames["dateTime"] = "dateTime";
783
+ EDimensionTemplateNames["date"] = "date";
784
+ EDimensionTemplateNames["year"] = "year";
785
+ EDimensionTemplateNames["yearAndQuarter"] = "yearAndQuarter";
786
+ EDimensionTemplateNames["quarter"] = "quarter";
787
+ EDimensionTemplateNames["yearAndMonth"] = "yearAndMonth";
788
+ EDimensionTemplateNames["dayOfMonth"] = "dayOfMonth";
789
+ EDimensionTemplateNames["month"] = "month";
790
+ EDimensionTemplateNames["week"] = "week";
791
+ EDimensionTemplateNames["dayOfWeek"] = "dayOfWeek";
792
+ EDimensionTemplateNames["hour"] = "hour";
793
+ })(exports.EDimensionTemplateNames || (exports.EDimensionTemplateNames = {}));
794
+ /** Стандартные шаблоны разреза */
795
+ var dimensionTemplateFormulas = (_a$5 = {},
796
+ _a$5[exports.EDimensionTemplateNames.dateTime] = "toDateTime({columnFormula})",
797
+ _a$5[exports.EDimensionTemplateNames.date] = "toDate({columnFormula})",
798
+ _a$5[exports.EDimensionTemplateNames.year] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}))",
799
+ _a$5[exports.EDimensionTemplateNames.yearAndQuarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}) * 10 + toQuarter({columnFormula}))",
800
+ _a$5[exports.EDimensionTemplateNames.quarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toQuarter({columnFormula}))",
801
+ _a$5[exports.EDimensionTemplateNames.yearAndMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYYYYMM({columnFormula}))",
802
+ _a$5[exports.EDimensionTemplateNames.month] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toMonth({columnFormula}))",
803
+ _a$5[exports.EDimensionTemplateNames.dayOfMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfMonth({columnFormula}))",
804
+ _a$5[exports.EDimensionTemplateNames.week] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toWeek({columnFormula}))",
805
+ _a$5[exports.EDimensionTemplateNames.dayOfWeek] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfWeek({columnFormula}))",
806
+ _a$5[exports.EDimensionTemplateNames.hour] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toHour({columnFormula}))",
807
+ _a$5);
794
808
 
795
809
  exports.EWidgetIndicatorType = void 0;
796
810
  (function (EWidgetIndicatorType) {
@@ -820,6 +834,8 @@ exports.EWidgetIndicatorValueModes = void 0;
820
834
  EWidgetIndicatorValueModes["AGGREGATION"] = "AGGREGATION";
821
835
  EWidgetIndicatorValueModes["DURATION"] = "DURATION";
822
836
  EWidgetIndicatorValueModes["CONVERSION"] = "CONVERSION";
837
+ EWidgetIndicatorValueModes["START_TIME"] = "START_TIME";
838
+ EWidgetIndicatorValueModes["END_TIME"] = "END_TIME";
823
839
  })(exports.EWidgetIndicatorValueModes || (exports.EWidgetIndicatorValueModes = {}));
824
840
  /** Режимы сортировки (на что ссылается сортировка) */
825
841
  exports.ESortingValueModes = void 0;
@@ -889,94 +905,28 @@ exports.EEventAppearances = void 0;
889
905
  EEventAppearances["LAST"] = "LAST";
890
906
  })(exports.EEventAppearances || (exports.EEventAppearances = {}));
891
907
 
892
- var _a$4;
893
- exports.EDimensionTemplateNames = void 0;
894
- (function (EDimensionTemplateNames) {
895
- EDimensionTemplateNames["dateTime"] = "dateTime";
896
- EDimensionTemplateNames["date"] = "date";
897
- EDimensionTemplateNames["year"] = "year";
898
- EDimensionTemplateNames["yearAndQuarter"] = "yearAndQuarter";
899
- EDimensionTemplateNames["quarter"] = "quarter";
900
- EDimensionTemplateNames["yearAndMonth"] = "yearAndMonth";
901
- EDimensionTemplateNames["dayOfMonth"] = "dayOfMonth";
902
- EDimensionTemplateNames["month"] = "month";
903
- EDimensionTemplateNames["week"] = "week";
904
- EDimensionTemplateNames["dayOfWeek"] = "dayOfWeek";
905
- EDimensionTemplateNames["hour"] = "hour";
906
- })(exports.EDimensionTemplateNames || (exports.EDimensionTemplateNames = {}));
907
- var dimensionTemplateFormulas = (_a$4 = {},
908
- _a$4[exports.EDimensionTemplateNames.dateTime] = "toDateTime({columnFormula})",
909
- _a$4[exports.EDimensionTemplateNames.date] = "toDate({columnFormula})",
910
- _a$4[exports.EDimensionTemplateNames.year] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}))",
911
- _a$4[exports.EDimensionTemplateNames.yearAndQuarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}) * 10 + toQuarter({columnFormula}))",
912
- _a$4[exports.EDimensionTemplateNames.quarter] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toQuarter({columnFormula}))",
913
- _a$4[exports.EDimensionTemplateNames.yearAndMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYYYYMM({columnFormula}))",
914
- _a$4[exports.EDimensionTemplateNames.month] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toMonth({columnFormula}))",
915
- _a$4[exports.EDimensionTemplateNames.dayOfMonth] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfMonth({columnFormula}))",
916
- _a$4[exports.EDimensionTemplateNames.week] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toWeek({columnFormula}))",
917
- _a$4[exports.EDimensionTemplateNames.dayOfWeek] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfWeek({columnFormula}))",
918
- _a$4[exports.EDimensionTemplateNames.hour] = "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toHour({columnFormula}))",
919
- _a$4);
920
- function getDimensionFormula(_a) {
921
- var _b;
922
- var value = _a.value;
923
- if (!value) {
924
- return "";
925
- }
926
- if (value.mode === exports.EWidgetIndicatorValueModes.FORMULA) {
927
- return (_b = value.formula) !== null && _b !== void 0 ? _b : "";
928
- }
929
- if (value.mode === exports.EWidgetIndicatorValueModes.TEMPLATE) {
930
- var templateName = value.templateName, tableName = value.tableName, columnName = value.columnName;
931
- var templateFormula = dimensionTemplateFormulas[templateName];
932
- if (!templateFormula || !tableName || !columnName) {
933
- return "";
934
- }
935
- return fillTemplateString(templateFormula, {
936
- columnFormula: generateColumnFormula(tableName, columnName),
937
- });
938
- }
939
- return "";
908
+ var countReworksTemplate = "process(if(countIf({eventNameFormula} = '{eventName}'{filters}) > 0, countIf({eventNameFormula} = '{eventName}'{filters}) - 1, 0), {caseCaseIdFormula})";
909
+ var countExecutionsTemplate = "process(countIf({eventNameFormula} in '{eventName}'{filters}), {caseCaseIdFormula})";
910
+ var lastValueTemplate = "process(argMaxIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula})";
911
+ var firstValueTemplate = "process(argMinIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula})";
912
+ var topTemplate = "process(topKIf(1)({columnFormula}, {eventNameFormula} = '{eventName}'{filters})[1], {caseCaseIdFormula})";
913
+
914
+ function fillTemplateString(templateString, params) {
915
+ return templateString.replace(/\{(.*?)\}/g, function (_, key) { var _a; return (_a = params[key]) !== null && _a !== void 0 ? _a : ""; });
940
916
  }
941
917
 
942
- var _a$3, _b;
943
- exports.EMeasureAggregationTemplateName = void 0;
944
- (function (EMeasureAggregationTemplateName) {
945
- EMeasureAggregationTemplateName["agvIf"] = "agvIf";
946
- EMeasureAggregationTemplateName["medianIf"] = "medianIf";
947
- EMeasureAggregationTemplateName["countIf"] = "countIf";
948
- EMeasureAggregationTemplateName["countIfDistinct"] = "countIfDistinct";
949
- EMeasureAggregationTemplateName["minIf"] = "minIf";
950
- EMeasureAggregationTemplateName["maxIf"] = "maxIf";
951
- EMeasureAggregationTemplateName["sumIf"] = "sumIf";
952
- EMeasureAggregationTemplateName["top"] = "top";
953
- EMeasureAggregationTemplateName["firstValue"] = "firstValue";
954
- EMeasureAggregationTemplateName["lastValue"] = "lastValue";
955
- EMeasureAggregationTemplateName["countExecutions"] = "countExecutions";
956
- EMeasureAggregationTemplateName["countReworks"] = "countReworks";
957
- })(exports.EMeasureAggregationTemplateName || (exports.EMeasureAggregationTemplateName = {}));
958
- 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) * 100 / countIf(\n process(\n countIf(\n {startEventNameFormula} = '{startEventName}'{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n)";
959
- var durationTemplate = "\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";
960
- var durationTemplates = (_a$3 = {},
961
- _a$3[exports.EDurationTemplateName.avg] = "avgIf(".concat(durationTemplate, ")"),
962
- _a$3[exports.EDurationTemplateName.median] = "medianIf(".concat(durationTemplate, ")"),
963
- _a$3);
964
- var countReworksTemplate = "{outerAggregation}If(process(if(countIf({eventNameFormula} = '{eventName}'{filters}) > 0, countIf({eventNameFormula} = '{eventName}'{filters}) - 1, 0), {caseCaseIdFormula}),{objectFilters})";
965
- var countExecutionsTemplate = "process(countIf({eventNameFormula} in '{eventName}'{filters}), {caseCaseIdFormula})";
966
- var measureAggregationTemplates = (_b = {},
967
- _b[exports.EMeasureAggregationTemplateName.agvIf] = "{outerAggregation}If(process(avgIf({columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
968
- _b[exports.EMeasureAggregationTemplateName.medianIf] = "{outerAggregation}If(process(medianIf({columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
969
- _b[exports.EMeasureAggregationTemplateName.countIf] = "{outerAggregation}If(process(countIf({columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
970
- _b[exports.EMeasureAggregationTemplateName.countIfDistinct] = "{outerAggregation}If(process(countIf(distinct {columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
971
- _b[exports.EMeasureAggregationTemplateName.minIf] = "{outerAggregation}If(process(minIf({columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
972
- _b[exports.EMeasureAggregationTemplateName.maxIf] = "{outerAggregation}If(process(maxIf({columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
973
- _b[exports.EMeasureAggregationTemplateName.sumIf] = "{outerAggregation}If(process(sumIf({columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
974
- _b[exports.EMeasureAggregationTemplateName.top] = "{outerAggregation}If(process(topKIf(1)({columnFormula}, {eventNameFormula} = '{eventName}'{filters})[1], {caseCaseIdFormula}), {objectFilters})",
975
- _b[exports.EMeasureAggregationTemplateName.firstValue] = "{outerAggregation}If(process(argMinIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
976
- _b[exports.EMeasureAggregationTemplateName.lastValue] = "{outerAggregation}If(process(argMaxIf({columnFormula}, {eventTimeFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
977
- _b[exports.EMeasureAggregationTemplateName.countExecutions] = "{outerAggregation}If(".concat(countExecutionsTemplate, ",{objectFilters})"),
978
- _b[exports.EMeasureAggregationTemplateName.countReworks] = countReworksTemplate,
979
- _b);
918
+ var escapeSpecialCharacters = function (formula) {
919
+ return formula
920
+ .replaceAll("\\", "\\\\")
921
+ .replaceAll('"', '\\"')
922
+ .replaceAll("`", "\\`");
923
+ };
924
+
925
+ function generateColumnFormula(tableName, columnName) {
926
+ var preparedTableName = escapeSpecialCharacters(tableName);
927
+ var preparedColumnName = escapeSpecialCharacters(columnName);
928
+ return "\"".concat(preparedTableName, "\".\"").concat(preparedColumnName, "\"");
929
+ }
980
930
 
981
931
  var escapeSingularQuotes = function (formula) {
982
932
  if (typeof formula !== "string") {
@@ -1068,27 +1018,171 @@ var convertFiltersToFormula = function (filters) {
1068
1018
  return filters.length > 0 ? " AND ".concat(convertToFormulasChain(filters)) : "";
1069
1019
  };
1070
1020
 
1071
- var _a$2;
1072
- exports.EMeasureTemplateNames = void 0;
1073
- (function (EMeasureTemplateNames) {
1074
- EMeasureTemplateNames["avg"] = "avg";
1075
- EMeasureTemplateNames["median"] = "median";
1076
- EMeasureTemplateNames["count"] = "count";
1077
- EMeasureTemplateNames["countDistinct"] = "countDistinct";
1078
- EMeasureTemplateNames["min"] = "min";
1079
- EMeasureTemplateNames["max"] = "max";
1080
- EMeasureTemplateNames["sum"] = "sum";
1081
- })(exports.EMeasureTemplateNames || (exports.EMeasureTemplateNames = {}));
1082
- var measureTemplateFormulas = (_a$2 = {},
1083
- _a$2[exports.EMeasureTemplateNames.avg] = "avg({columnFormula})",
1084
- _a$2[exports.EMeasureTemplateNames.count] = "count({columnFormula})",
1085
- _a$2[exports.EMeasureTemplateNames.countDistinct] = "count(distinct {columnFormula})",
1086
- _a$2[exports.EMeasureTemplateNames.median] = "medianExact({columnFormula})",
1087
- _a$2[exports.EMeasureTemplateNames.min] = "min({columnFormula})",
1088
- _a$2[exports.EMeasureTemplateNames.max] = "max({columnFormula})",
1089
- _a$2[exports.EMeasureTemplateNames.sum] = "sum({columnFormula})",
1090
- _a$2);
1091
- var prepareAggregationParams = function (value) {
1021
+ var _a$4;
1022
+ exports.EDimensionAggregationTemplateName = void 0;
1023
+ (function (EDimensionAggregationTemplateName) {
1024
+ EDimensionAggregationTemplateName["top"] = "top";
1025
+ EDimensionAggregationTemplateName["firstValue"] = "firstValue";
1026
+ EDimensionAggregationTemplateName["lastValue"] = "lastValue";
1027
+ EDimensionAggregationTemplateName["countExecutions"] = "countExecutions";
1028
+ EDimensionAggregationTemplateName["countReworks"] = "countReworks";
1029
+ })(exports.EDimensionAggregationTemplateName || (exports.EDimensionAggregationTemplateName = {}));
1030
+ /** Шаблоны процессных метрик разреза с режимом AGGREGATION */
1031
+ var dimensionAggregationTemplates = (_a$4 = {},
1032
+ _a$4[exports.EDimensionAggregationTemplateName.top] = topTemplate,
1033
+ _a$4[exports.EDimensionAggregationTemplateName.firstValue] = firstValueTemplate,
1034
+ _a$4[exports.EDimensionAggregationTemplateName.lastValue] = lastValueTemplate,
1035
+ _a$4[exports.EDimensionAggregationTemplateName.countExecutions] = countExecutionsTemplate,
1036
+ _a$4[exports.EDimensionAggregationTemplateName.countReworks] = countReworksTemplate,
1037
+ _a$4);
1038
+ /** На основе значения режима AGGREGATION подготовить параметры для подстановки в шаблонную формулу */
1039
+ var prepareDimensionAggregationParams = function (value) {
1040
+ if (!value.eventName ||
1041
+ !value.caseCaseIdFormula ||
1042
+ !value.eventNameFormula ||
1043
+ !value.processName ||
1044
+ !value.templateName) {
1045
+ return null;
1046
+ }
1047
+ var commonParams = {
1048
+ eventNameFormula: value.eventNameFormula,
1049
+ caseCaseIdFormula: value.caseCaseIdFormula,
1050
+ eventName: value.eventName,
1051
+ objectFilters: "1",
1052
+ filters: convertFiltersToFormula(value.filters),
1053
+ eventTimeFormula: "",
1054
+ columnFormula: "",
1055
+ };
1056
+ if (value.templateName === exports.EDimensionAggregationTemplateName.countReworks ||
1057
+ value.templateName === exports.EDimensionAggregationTemplateName.countExecutions) {
1058
+ return commonParams;
1059
+ }
1060
+ if (!value.tableName || !value.columnName) {
1061
+ return null;
1062
+ }
1063
+ var columnParams = __assign(__assign(__assign({}, commonParams), (value.innerTemplateName && { innerTemplateName: value.innerTemplateName })), { columnFormula: generateColumnFormula(value.tableName, value.columnName) });
1064
+ if (value.templateName === exports.EDimensionAggregationTemplateName.firstValue ||
1065
+ value.templateName === exports.EDimensionAggregationTemplateName.lastValue) {
1066
+ if (!value.eventTimeFormula) {
1067
+ return null;
1068
+ }
1069
+ return __assign(__assign({}, columnParams), { eventTimeFormula: value.eventTimeFormula });
1070
+ }
1071
+ return columnParams;
1072
+ };
1073
+
1074
+ /** Шаблоны процессных метрик разреза с режимами START_TIME/END_TIME */
1075
+ var timeTemplates = (function () {
1076
+ var _a;
1077
+ var generateTemplates = function (innerTemplate) {
1078
+ var templates = {};
1079
+ for (var key in dimensionTemplateFormulas) {
1080
+ templates[key] = fillTemplateString(dimensionTemplateFormulas[key], { columnFormula: innerTemplate });
1081
+ }
1082
+ return templates;
1083
+ };
1084
+ return _a = {},
1085
+ _a[exports.EWidgetIndicatorValueModes.START_TIME] = generateTemplates("process(minIf({eventTimeFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula})"),
1086
+ _a[exports.EWidgetIndicatorValueModes.END_TIME] = generateTemplates("process(maxIf({eventTimeFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula})"),
1087
+ _a;
1088
+ })();
1089
+ /** На основе значения режимов START_TIME/END_TIME подготовить параметры для подстановки в шаблонную формулу */
1090
+ var prepareTimeParams = function (value) {
1091
+ if (!value.eventName ||
1092
+ !value.caseCaseIdFormula ||
1093
+ !value.eventNameFormula ||
1094
+ !value.processName ||
1095
+ !value.templateName ||
1096
+ !value.eventTimeFormula) {
1097
+ return;
1098
+ }
1099
+ return {
1100
+ eventTimeFormula: value.eventTimeFormula,
1101
+ eventNameFormula: value.eventNameFormula,
1102
+ caseCaseIdFormula: value.caseCaseIdFormula,
1103
+ filters: convertFiltersToFormula(value.filters),
1104
+ eventName: value.eventName,
1105
+ };
1106
+ };
1107
+
1108
+ function getDimensionFormula(_a) {
1109
+ var _b;
1110
+ var value = _a.value;
1111
+ if (!value) {
1112
+ return "";
1113
+ }
1114
+ if (value.mode === exports.EWidgetIndicatorValueModes.FORMULA) {
1115
+ return (_b = value.formula) !== null && _b !== void 0 ? _b : "";
1116
+ }
1117
+ if (value.mode === exports.EWidgetIndicatorValueModes.TEMPLATE) {
1118
+ var templateName = value.templateName, tableName = value.tableName, columnName = value.columnName;
1119
+ var templateFormula = dimensionTemplateFormulas[templateName];
1120
+ if (!templateFormula || !tableName || !columnName) {
1121
+ return "";
1122
+ }
1123
+ return fillTemplateString(templateFormula, {
1124
+ columnFormula: generateColumnFormula(tableName, columnName),
1125
+ });
1126
+ }
1127
+ if (value.mode === exports.EWidgetIndicatorValueModes.AGGREGATION) {
1128
+ var preparedParams = prepareDimensionAggregationParams(value);
1129
+ if (!preparedParams) {
1130
+ return "";
1131
+ }
1132
+ var innerTemplate = value.innerTemplateName
1133
+ ? dimensionTemplateFormulas[value.innerTemplateName]
1134
+ : null;
1135
+ var columnFormula = innerTemplate
1136
+ ? fillTemplateString(innerTemplate, { columnFormula: preparedParams.columnFormula })
1137
+ : preparedParams.columnFormula;
1138
+ var dimensionAggregationTemplate = dimensionAggregationTemplates[value.templateName];
1139
+ return fillTemplateString(dimensionAggregationTemplate, __assign(__assign({}, preparedParams), { columnFormula: columnFormula }));
1140
+ }
1141
+ if (value.mode === exports.EWidgetIndicatorValueModes.START_TIME ||
1142
+ value.mode === exports.EWidgetIndicatorValueModes.END_TIME) {
1143
+ var preparedParams = prepareTimeParams(value);
1144
+ if (!preparedParams) {
1145
+ return "";
1146
+ }
1147
+ var templateFormula = timeTemplates[value.mode][value.templateName];
1148
+ return fillTemplateString(templateFormula, preparedParams);
1149
+ }
1150
+ return "";
1151
+ }
1152
+
1153
+ var _a$3;
1154
+ exports.EMeasureAggregationTemplateName = void 0;
1155
+ (function (EMeasureAggregationTemplateName) {
1156
+ EMeasureAggregationTemplateName["agvIf"] = "agvIf";
1157
+ EMeasureAggregationTemplateName["medianIf"] = "medianIf";
1158
+ EMeasureAggregationTemplateName["countIf"] = "countIf";
1159
+ EMeasureAggregationTemplateName["countIfDistinct"] = "countIfDistinct";
1160
+ EMeasureAggregationTemplateName["minIf"] = "minIf";
1161
+ EMeasureAggregationTemplateName["maxIf"] = "maxIf";
1162
+ EMeasureAggregationTemplateName["sumIf"] = "sumIf";
1163
+ EMeasureAggregationTemplateName["top"] = "top";
1164
+ EMeasureAggregationTemplateName["firstValue"] = "firstValue";
1165
+ EMeasureAggregationTemplateName["lastValue"] = "lastValue";
1166
+ EMeasureAggregationTemplateName["countExecutions"] = "countExecutions";
1167
+ EMeasureAggregationTemplateName["countReworks"] = "countReworks";
1168
+ })(exports.EMeasureAggregationTemplateName || (exports.EMeasureAggregationTemplateName = {}));
1169
+ /** Шаблоны процессных метрик меры с режимом AGGREGATION */
1170
+ var measureAggregationTemplates = (_a$3 = {},
1171
+ _a$3[exports.EMeasureAggregationTemplateName.agvIf] = "{outerAggregation}If(process(avgIf({columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
1172
+ _a$3[exports.EMeasureAggregationTemplateName.medianIf] = "{outerAggregation}If(process(medianIf({columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
1173
+ _a$3[exports.EMeasureAggregationTemplateName.countIf] = "{outerAggregation}If(process(countIf({columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
1174
+ _a$3[exports.EMeasureAggregationTemplateName.countIfDistinct] = "{outerAggregation}If(process(countIf(distinct {columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
1175
+ _a$3[exports.EMeasureAggregationTemplateName.minIf] = "{outerAggregation}If(process(minIf({columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
1176
+ _a$3[exports.EMeasureAggregationTemplateName.maxIf] = "{outerAggregation}If(process(maxIf({columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
1177
+ _a$3[exports.EMeasureAggregationTemplateName.sumIf] = "{outerAggregation}If(process(sumIf({columnFormula}, {eventNameFormula} = '{eventName}'{filters}), {caseCaseIdFormula}), {objectFilters})",
1178
+ _a$3[exports.EMeasureAggregationTemplateName.top] = "{outerAggregation}If(".concat(topTemplate, ", {objectFilters})"),
1179
+ _a$3[exports.EMeasureAggregationTemplateName.firstValue] = "{outerAggregation}If(".concat(firstValueTemplate, ", {objectFilters})"),
1180
+ _a$3[exports.EMeasureAggregationTemplateName.lastValue] = "{outerAggregation}If(".concat(lastValueTemplate, ", {objectFilters})"),
1181
+ _a$3[exports.EMeasureAggregationTemplateName.countExecutions] = "{outerAggregation}If(".concat(countExecutionsTemplate, ",{objectFilters})"),
1182
+ _a$3[exports.EMeasureAggregationTemplateName.countReworks] = "{outerAggregation}If(".concat(countReworksTemplate, ",{objectFilters})"),
1183
+ _a$3);
1184
+ /** На основе значения режима AGGREGATION подготовить параметры для подстановки в шаблонную формулу */
1185
+ var prepareMeasureAggregationParams = function (value) {
1092
1186
  if (!value.eventName ||
1093
1187
  !value.caseCaseIdFormula ||
1094
1188
  !value.eventNameFormula ||
@@ -1122,6 +1216,32 @@ var prepareAggregationParams = function (value) {
1122
1216
  }
1123
1217
  return columnParams;
1124
1218
  };
1219
+
1220
+ var _a$2;
1221
+ exports.EMeasureTemplateNames = void 0;
1222
+ (function (EMeasureTemplateNames) {
1223
+ EMeasureTemplateNames["avg"] = "avg";
1224
+ EMeasureTemplateNames["median"] = "median";
1225
+ EMeasureTemplateNames["count"] = "count";
1226
+ EMeasureTemplateNames["countDistinct"] = "countDistinct";
1227
+ EMeasureTemplateNames["min"] = "min";
1228
+ EMeasureTemplateNames["max"] = "max";
1229
+ EMeasureTemplateNames["sum"] = "sum";
1230
+ })(exports.EMeasureTemplateNames || (exports.EMeasureTemplateNames = {}));
1231
+ /** Стандартные шаблоны меры */
1232
+ var measureTemplateFormulas = (_a$2 = {},
1233
+ _a$2[exports.EMeasureTemplateNames.avg] = "avg({columnFormula})",
1234
+ _a$2[exports.EMeasureTemplateNames.count] = "count({columnFormula})",
1235
+ _a$2[exports.EMeasureTemplateNames.countDistinct] = "count(distinct {columnFormula})",
1236
+ _a$2[exports.EMeasureTemplateNames.median] = "medianExact({columnFormula})",
1237
+ _a$2[exports.EMeasureTemplateNames.min] = "min({columnFormula})",
1238
+ _a$2[exports.EMeasureTemplateNames.max] = "max({columnFormula})",
1239
+ _a$2[exports.EMeasureTemplateNames.sum] = "sum({columnFormula})",
1240
+ _a$2);
1241
+
1242
+ /** Шаблон процессной метрики меры с режимом CONVERSION */
1243
+ 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) * 100 / countIf(\n process(\n countIf(\n {startEventNameFormula} = '{startEventName}'{startEventFilters}\n ) != 0, \n {endCaseCaseIdFormula}\n ) != 0\n)";
1244
+ /** На основе значения режима CONVERSION подготовить параметры для подстановки в шаблонную формулу */
1125
1245
  var prepareConversionParams = function (value) {
1126
1246
  if (!value.startEventName ||
1127
1247
  !value.endEventName ||
@@ -1147,6 +1267,17 @@ var prepareConversionParams = function (value) {
1147
1267
  endEventFilters: convertFiltersToFormula(value.endEventFilters),
1148
1268
  };
1149
1269
  };
1270
+
1271
+ /** Шаблоны процессных метрик меры с режимом DURATION */
1272
+ var durationTemplates = (function () {
1273
+ var _a;
1274
+ 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 ";
1275
+ return _a = {},
1276
+ _a[exports.EDurationTemplateName.avg] = "avgIf(".concat(innerTemplate, ")"),
1277
+ _a[exports.EDurationTemplateName.median] = "medianIf(".concat(innerTemplate, ")"),
1278
+ _a;
1279
+ })();
1280
+ /** На основе значения режима DURATION подготовить параметры для подстановки в шаблонную формулу */
1150
1281
  var prepareDurationParams = function (value) {
1151
1282
  if (!value.startEventName ||
1152
1283
  !value.endEventName ||
@@ -1160,7 +1291,7 @@ var prepareDurationParams = function (value) {
1160
1291
  return null;
1161
1292
  }
1162
1293
  var getAggregationNameByAppearances = function (appearance) {
1163
- return appearance === "FIRST" ? "minIf" : "maxIf";
1294
+ return appearance === exports.EEventAppearances.FIRST ? "minIf" : "maxIf";
1164
1295
  };
1165
1296
  return {
1166
1297
  objectFilters: "1",
@@ -1177,6 +1308,7 @@ var prepareDurationParams = function (value) {
1177
1308
  endEventAggregationName: getAggregationNameByAppearances(value.endEventAppearances),
1178
1309
  };
1179
1310
  };
1311
+
1180
1312
  function getMeasureFormula(_a) {
1181
1313
  var _b;
1182
1314
  var value = _a.value;
@@ -1197,7 +1329,7 @@ function getMeasureFormula(_a) {
1197
1329
  });
1198
1330
  }
1199
1331
  if (value.mode === exports.EWidgetIndicatorValueModes.AGGREGATION) {
1200
- var preparedParams = prepareAggregationParams(value);
1332
+ var preparedParams = prepareMeasureAggregationParams(value);
1201
1333
  if (!preparedParams) {
1202
1334
  return "";
1203
1335
  }
@@ -1216,7 +1348,7 @@ function getMeasureFormula(_a) {
1216
1348
  if (!preparedParams) {
1217
1349
  return "";
1218
1350
  }
1219
- return fillTemplateString(conversionTemplate, preparedParams);
1351
+ return fillTemplateString(durationTemplates[value.templateName], preparedParams);
1220
1352
  }
1221
1353
  return "";
1222
1354
  }
@@ -1231,6 +1363,7 @@ var eventMeasureTemplateFormulas = (_a$1 = {},
1231
1363
  _a$1[exports.EEventMeasureTemplateNames.eventsCount] = "count()",
1232
1364
  _a$1[exports.EEventMeasureTemplateNames.reworksCount] = "count() - uniqExact({caseCaseIdFormula})",
1233
1365
  _a$1);
1366
+
1234
1367
  function getEventMeasureFormula(_a, process) {
1235
1368
  var value = _a.value;
1236
1369
  if (!value) {
@@ -1256,6 +1389,7 @@ var transitionMeasureTemplateFormulas = (_a = {},
1256
1389
  _a[exports.ETransitionMeasureTemplateNames.transitionsCount] = "count()",
1257
1390
  _a[exports.ETransitionMeasureTemplateNames.medianTime] = "medianExact(date_diff(second, begin({eventTimeFormula}), end({eventTimeFormula})))",
1258
1391
  _a);
1392
+
1259
1393
  function getTransitionMeasureFormula(_a, process) {
1260
1394
  var value = _a.value;
1261
1395
  if (!value) {
@@ -1800,8 +1934,8 @@ exports.conversionTemplate = conversionTemplate;
1800
1934
  exports.convertFiltersToFormula = convertFiltersToFormula;
1801
1935
  exports.convertToFormulasChain = convertToFormulasChain;
1802
1936
  exports.countExecutionsTemplate = countExecutionsTemplate;
1803
- exports.countReworksTemplate = countReworksTemplate;
1804
1937
  exports.dashboardLinkRegExp = dashboardLinkRegExp;
1938
+ exports.dimensionAggregationTemplates = dimensionAggregationTemplates;
1805
1939
  exports.dimensionTemplateFormulas = dimensionTemplateFormulas;
1806
1940
  exports.durationTemplates = durationTemplates;
1807
1941
  exports.escapeSpecialCharacters = escapeSpecialCharacters;
@@ -1834,16 +1968,19 @@ exports.measureAggregationTemplates = measureAggregationTemplates;
1834
1968
  exports.measureTemplateFormulas = measureTemplateFormulas;
1835
1969
  exports.parseClickHouseType = parseClickHouseType;
1836
1970
  exports.parseIndicatorLink = parseIndicatorLink;
1837
- exports.prepareAggregationParams = prepareAggregationParams;
1838
1971
  exports.prepareConversionParams = prepareConversionParams;
1972
+ exports.prepareDimensionAggregationParams = prepareDimensionAggregationParams;
1839
1973
  exports.prepareDurationParams = prepareDurationParams;
1840
1974
  exports.prepareFormulaForSql = prepareFormulaForSql;
1975
+ exports.prepareMeasureAggregationParams = prepareMeasureAggregationParams;
1841
1976
  exports.prepareSortOrders = prepareSortOrders;
1977
+ exports.prepareTimeParams = prepareTimeParams;
1842
1978
  exports.prepareValuesForSql = prepareValuesForSql;
1843
1979
  exports.replaceDisplayCondition = replaceDisplayCondition;
1844
1980
  exports.replaceFiltersBySelection = replaceFiltersBySelection;
1845
1981
  exports.replaceHierarchiesWithDimensions = replaceHierarchiesWithDimensions;
1846
1982
  exports.selectDimensionFromHierarchy = selectDimensionFromHierarchy;
1983
+ exports.timeTemplates = timeTemplates;
1847
1984
  exports.transitionMeasureTemplateFormulas = transitionMeasureTemplateFormulas;
1848
1985
  exports.unescapeSpecialCharacters = unescapeSpecialCharacters;
1849
1986
  exports.updateDefaultModeSelection = updateDefaultModeSelection;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infomaximum/widget-sdk",
3
- "version": "5.8.0",
3
+ "version": "5.9.1",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.esm.js",
6
6
  "types": "./dist/index.d.ts",