@infomaximum/widget-sdk 3.14.0
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/LICENSE +201 -0
- package/dist/index.d.ts +1288 -0
- package/dist/index.esm.js +966 -0
- package/dist/index.js +1008 -0
- package/package.json +41 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,1288 @@
|
|
|
1
|
+
import { ELanguages } from '@infomaximum/localization';
|
|
2
|
+
export { ELanguages } from '@infomaximum/localization';
|
|
3
|
+
export { EFilteringMethodValues } from '@infomaximum/base-filter';
|
|
4
|
+
|
|
5
|
+
type TNullable<T> = T | null | undefined;
|
|
6
|
+
type valueof<T> = T[keyof T];
|
|
7
|
+
|
|
8
|
+
declare enum ESimpleDataType {
|
|
9
|
+
OTHER = "OTHER",
|
|
10
|
+
DATE = "DATE",
|
|
11
|
+
FLOAT = "FLOAT",
|
|
12
|
+
DATETIME = "DATETIME",
|
|
13
|
+
STRING = "STRING",
|
|
14
|
+
INTEGER = "INTEGER",
|
|
15
|
+
DATETIME64 = "DATETIME64"
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
declare enum EControlType {
|
|
19
|
+
inputNumber = "inputNumber",
|
|
20
|
+
switch = "switch",
|
|
21
|
+
input = "input",
|
|
22
|
+
formattingTemplate = "formattingTemplate",
|
|
23
|
+
radioIconGroup = "radioIconGroup",
|
|
24
|
+
select = "select",
|
|
25
|
+
tagSet = "tagSet",
|
|
26
|
+
formula = "formula",
|
|
27
|
+
typedFormula = "typedFormula",
|
|
28
|
+
inputRange = "inputRange",
|
|
29
|
+
colorPicker = "colorPicker",
|
|
30
|
+
/** @deprecated - удалится в ближайшее время */
|
|
31
|
+
filterMode = "filterMode",
|
|
32
|
+
displayCondition = "displayCondition",
|
|
33
|
+
eventsColor = "eventsColor",
|
|
34
|
+
inputMarkdown = "inputMarkdown"
|
|
35
|
+
}
|
|
36
|
+
/** Конфигурация элемента управления настройкой */
|
|
37
|
+
interface IControlRecord<Settings extends object, Value, ControlType = EControlType> {
|
|
38
|
+
key: string;
|
|
39
|
+
/** Локализация заголовка настройки */
|
|
40
|
+
title?: string;
|
|
41
|
+
/** Тип используемого элемента управления настройкой из предложенных нашей системой */
|
|
42
|
+
type: ControlType | string;
|
|
43
|
+
/** Объект дополнительных параметров элемента управления */
|
|
44
|
+
props?: object | ((settings: Settings) => object);
|
|
45
|
+
/** Описание доступа к значению настройки */
|
|
46
|
+
accessor: TRecordAccessor<Settings, Value>;
|
|
47
|
+
/**
|
|
48
|
+
* Рекурсивное определение мета-описания, в элемент управления будет передана функция dive
|
|
49
|
+
* для погружения на уровень ниже.
|
|
50
|
+
*/
|
|
51
|
+
description?: IDivePanelDescription<Settings>;
|
|
52
|
+
shouldDisplay?: IDisplayPredicate<Settings>;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
interface ICalculator<Input, Output> {
|
|
56
|
+
/** Запрос к вычислителю */
|
|
57
|
+
calculate(input: Input): Promise<Output>;
|
|
58
|
+
/** Актуализировать ключ кеша для ответа вычислителя */
|
|
59
|
+
actualizeCacheKey(staleInput: Input, input: Input): void;
|
|
60
|
+
isLoading: boolean;
|
|
61
|
+
}
|
|
62
|
+
interface ICalculatorIndicatorInput {
|
|
63
|
+
alias: string;
|
|
64
|
+
displayConditionFormula?: TNullable<string>;
|
|
65
|
+
}
|
|
66
|
+
interface ICalculatorIndicatorOutput {
|
|
67
|
+
values: string[];
|
|
68
|
+
}
|
|
69
|
+
interface ICalculatorDimensionInput extends ICalculatorIndicatorInput {
|
|
70
|
+
formula: string;
|
|
71
|
+
hideEmpty?: boolean;
|
|
72
|
+
}
|
|
73
|
+
interface ICalculatorDimensionOutput extends ICalculatorIndicatorOutput {
|
|
74
|
+
}
|
|
75
|
+
interface ICalculatorMeasureInput extends ICalculatorIndicatorInput {
|
|
76
|
+
mainFormula: string;
|
|
77
|
+
/** Временно поддерживается обратная совместимость с форматом { alias: string; formula: string }[] */
|
|
78
|
+
additionalFormulas?: Map<string, string>;
|
|
79
|
+
}
|
|
80
|
+
interface ICalculatorMeasureOutput extends ICalculatorIndicatorOutput {
|
|
81
|
+
/** Значения, вычисленные на основе дополнительных формул */
|
|
82
|
+
additionalValues: Map<string, string[]>;
|
|
83
|
+
}
|
|
84
|
+
declare enum ECalculatorFilterMethods {
|
|
85
|
+
EQUAL_TO = "EQUAL_TO",
|
|
86
|
+
NOT_EQUAL_TO = "NOT_EQUAL_TO",
|
|
87
|
+
GREATER_THAN = "GREATER_THAN",
|
|
88
|
+
LESS_THAN = "LESS_THAN",
|
|
89
|
+
GREATER_THAN_OR_EQUAL_TO = "GREATER_THAN_OR_EQUAL_TO",
|
|
90
|
+
LESS_THAN_OR_EQUAL_TO = "LESS_THAN_OR_EQUAL_TO",
|
|
91
|
+
STARTS_WITH = "STARTS_WITH",
|
|
92
|
+
ENDS_WITH = "ENDS_WITH",
|
|
93
|
+
CONTAINS = "CONTAINS",
|
|
94
|
+
NOT_CONTAINS = "NOT_CONTAINS",
|
|
95
|
+
IN_RANGE = "IN_RANGE",
|
|
96
|
+
NOT_IN_RANGE = "NOT_IN_RANGE",
|
|
97
|
+
INCLUDE = "INCLUDE",
|
|
98
|
+
EXCLUDE = "EXCLUDE",
|
|
99
|
+
NONEMPTY = "NONEMPTY",
|
|
100
|
+
EMPTY = "EMPTY"
|
|
101
|
+
}
|
|
102
|
+
interface ICalculatorFilter {
|
|
103
|
+
/** Формула фильтра */
|
|
104
|
+
formula: string;
|
|
105
|
+
/** Тип данных для формулы фильтра */
|
|
106
|
+
dataType: ESimpleDataType;
|
|
107
|
+
/** Значения фильтра */
|
|
108
|
+
values: string[];
|
|
109
|
+
/** Метод фильтрации */
|
|
110
|
+
filteringMethod: valueof<typeof formulaFilterMethods>;
|
|
111
|
+
}
|
|
112
|
+
interface IExportColumnOrder {
|
|
113
|
+
alias: string;
|
|
114
|
+
exportName: string;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
declare enum EFormatTypes {
|
|
118
|
+
/** Дата */
|
|
119
|
+
DATE = "DATE",
|
|
120
|
+
/** Число */
|
|
121
|
+
NUMBER = "NUMBER",
|
|
122
|
+
/** Месяц */
|
|
123
|
+
MONTH = "MONTH",
|
|
124
|
+
/** Дата и время */
|
|
125
|
+
DATETIME = "DATETIME",
|
|
126
|
+
/** Строка */
|
|
127
|
+
STRING = "STRING",
|
|
128
|
+
/** День недели */
|
|
129
|
+
DAY_OF_WEEK = "DAY_OF_WEEK",
|
|
130
|
+
/** Длительность */
|
|
131
|
+
DURATION = "DURATION",
|
|
132
|
+
/** Час */
|
|
133
|
+
HOUR = "HOUR",
|
|
134
|
+
/** Месяц и год */
|
|
135
|
+
MONTH_YEAR = "MONTH_YEAR",
|
|
136
|
+
/** Год */
|
|
137
|
+
YEAR = "YEAR",
|
|
138
|
+
/** Квартал */
|
|
139
|
+
QUARTER = "QUARTER",
|
|
140
|
+
/** Квартал и год */
|
|
141
|
+
QUARTER_YEAR = "QUARTER_YEAR",
|
|
142
|
+
/** День месяца */
|
|
143
|
+
DAY_OF_MONTH = "DAY_OF_MONTH",
|
|
144
|
+
/** Неделя */
|
|
145
|
+
WEEK = "WEEK"
|
|
146
|
+
}
|
|
147
|
+
declare enum EFormattingPresets {
|
|
148
|
+
"AUTO" = "AUTO",
|
|
149
|
+
"TUNE" = "TUNE",
|
|
150
|
+
"DD/M/YYYY" = "DD/M/YYYY",
|
|
151
|
+
"YYYY-MM-DD" = "YYYY-MM-DD",
|
|
152
|
+
"DD MM YYYY" = "DD MM YYYY",
|
|
153
|
+
"DD MMM YYYY" = "DD MMM YYYY",
|
|
154
|
+
"MM.DD.YYYY" = "MM.DD.YYYY",
|
|
155
|
+
"DD MMMM YYYY" = "DD MMMM YYYY",
|
|
156
|
+
"DD/MM/YYYY" = "DD/MM/YYYY",
|
|
157
|
+
"MMMM DD, YYYY" = "MMMM DD, YYYY",
|
|
158
|
+
"DD.MM.YYYY" = "DD.MM.YYYY",
|
|
159
|
+
"MM.DD.YYYY hh:mm a" = "MM.DD.YYYY hh:mm a",
|
|
160
|
+
"DD/M/YYYY HH:mm" = "DD/M/YYYY HH:mm",
|
|
161
|
+
"YYYY-MM-DD HH:mm" = "YYYY-MM-DD HH:mm",
|
|
162
|
+
"YYYY-MM-DD HH:mm:ss" = "YYYY-MM-DD HH:mm:ss",
|
|
163
|
+
"DD MM YYYY HH:mm" = "DD MM YYYY HH:mm",
|
|
164
|
+
"DD MMM YYYY, HH:mm" = "DD MMM YYYY, HH:mm",
|
|
165
|
+
"DD MMMM YYYY, HH:mm" = "DD MMMM YYYY, HH:mm",
|
|
166
|
+
"DD.MM.YYYY, HH:mm:ss" = "DD.MM.YYYY, HH:mm:ss",
|
|
167
|
+
"DD.MM.YYYY HH:mm:ss" = "DD.MM.YYYY HH:mm:ss",
|
|
168
|
+
"DD/MM/YYYY HH:mm:ss" = "DD/MM/YYYY HH:mm:ss",
|
|
169
|
+
"DD" = "DD",
|
|
170
|
+
"D" = "D",
|
|
171
|
+
"DDDD" = "DDDD",
|
|
172
|
+
"MMM" = "MMM",
|
|
173
|
+
"MM" = "MM",
|
|
174
|
+
"MMMM" = "MMMM",
|
|
175
|
+
"k" = "k",
|
|
176
|
+
"#,##x" = "#,##x",
|
|
177
|
+
"#,##x.x" = "#,##x.x",
|
|
178
|
+
"#,##x.xx" = "#,##x.xx",
|
|
179
|
+
"x[%]" = "x[%]",
|
|
180
|
+
"x.x[%]" = "x.x[%]",
|
|
181
|
+
"[$]x" = "[$]x",
|
|
182
|
+
"zx.xx[%]" = "zx.xx[%]",
|
|
183
|
+
"hh:mm:ss" = "hh:mm:ss",
|
|
184
|
+
"dd:hh:mm:ss" = "dd:hh:mm:ss",
|
|
185
|
+
"d" = "d",
|
|
186
|
+
"h" = "h",
|
|
187
|
+
"dk" = "dk",
|
|
188
|
+
"hk" = "hk",
|
|
189
|
+
"dd" = "dd",
|
|
190
|
+
"HH" = "HH",
|
|
191
|
+
"hh a" = "hh a",
|
|
192
|
+
"MMM, YYYY" = "MMM, YYYY",
|
|
193
|
+
"MM.YYYY" = "MM.YYYY",
|
|
194
|
+
"MMMM YYYY" = "MMMM YYYY",
|
|
195
|
+
"[Q]q" = "[Q]q",
|
|
196
|
+
"R" = "R",
|
|
197
|
+
"[Q]q[-]YYYY" = "[Q]q[-]YYYY",
|
|
198
|
+
"R[-]YYYY" = "R[-]YYYY"
|
|
199
|
+
}
|
|
200
|
+
interface IWidgetFormatting {
|
|
201
|
+
getFormattedValue: (value: string, formatType: EFormatTypes, formatTemplate: TNullable<string>) => string;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
declare enum ELastTimeUnit {
|
|
205
|
+
DAYS = "DAYS",
|
|
206
|
+
MONTHS = "MONTHS",
|
|
207
|
+
YEARS = "YEARS"
|
|
208
|
+
}
|
|
209
|
+
declare enum EDurationUnit {
|
|
210
|
+
DAYS = "DAYS",
|
|
211
|
+
HOURS = "HOURS",
|
|
212
|
+
MINUTES = "MINUTES",
|
|
213
|
+
SECONDS = "SECONDS"
|
|
214
|
+
}
|
|
215
|
+
declare const mapFormulaFilterToCalculatorInput: (filterValue: IFormulaFilterValue | string) => TNullable<ICalculatorFilter>;
|
|
216
|
+
declare const mapFormulaFiltersToInputs: (filters: (string | IFormulaFilterValue)[]) => ICalculatorFilter[];
|
|
217
|
+
|
|
218
|
+
declare const formulaFilterMethods: {
|
|
219
|
+
readonly LAST_TIME: "LAST_TIME";
|
|
220
|
+
readonly EQUAL_TO: ECalculatorFilterMethods.EQUAL_TO;
|
|
221
|
+
readonly NOT_EQUAL_TO: ECalculatorFilterMethods.NOT_EQUAL_TO;
|
|
222
|
+
readonly GREATER_THAN: ECalculatorFilterMethods.GREATER_THAN;
|
|
223
|
+
readonly LESS_THAN: ECalculatorFilterMethods.LESS_THAN;
|
|
224
|
+
readonly GREATER_THAN_OR_EQUAL_TO: ECalculatorFilterMethods.GREATER_THAN_OR_EQUAL_TO;
|
|
225
|
+
readonly LESS_THAN_OR_EQUAL_TO: ECalculatorFilterMethods.LESS_THAN_OR_EQUAL_TO;
|
|
226
|
+
readonly STARTS_WITH: ECalculatorFilterMethods.STARTS_WITH;
|
|
227
|
+
readonly ENDS_WITH: ECalculatorFilterMethods.ENDS_WITH;
|
|
228
|
+
readonly CONTAINS: ECalculatorFilterMethods.CONTAINS;
|
|
229
|
+
readonly NOT_CONTAINS: ECalculatorFilterMethods.NOT_CONTAINS;
|
|
230
|
+
readonly IN_RANGE: ECalculatorFilterMethods.IN_RANGE;
|
|
231
|
+
readonly NOT_IN_RANGE: ECalculatorFilterMethods.NOT_IN_RANGE;
|
|
232
|
+
readonly INCLUDE: ECalculatorFilterMethods.INCLUDE;
|
|
233
|
+
readonly EXCLUDE: ECalculatorFilterMethods.EXCLUDE;
|
|
234
|
+
readonly NONEMPTY: ECalculatorFilterMethods.NONEMPTY;
|
|
235
|
+
readonly EMPTY: ECalculatorFilterMethods.EMPTY;
|
|
236
|
+
};
|
|
237
|
+
declare enum EProcessFilterNames {
|
|
238
|
+
/** Наличие события */
|
|
239
|
+
presenceOfEvent = "presenceOfEvent",
|
|
240
|
+
/** Количество повторов события */
|
|
241
|
+
repetitionOfEvent = "repetitionOfEvent",
|
|
242
|
+
/** Наличие перехода */
|
|
243
|
+
presenceOfTransition = "presenceOfTransition",
|
|
244
|
+
/** Длительность перехода */
|
|
245
|
+
durationOfTransition = "durationOfTransition"
|
|
246
|
+
}
|
|
247
|
+
interface IWidgetFormulaFilterValue extends ICalculatorFilter {
|
|
248
|
+
/**
|
|
249
|
+
* Название фильтра
|
|
250
|
+
* @deprecated необходимо использовать @see {@link IWidgetFormulaFilterValue.name}
|
|
251
|
+
*/
|
|
252
|
+
caption?: TNullable<string>;
|
|
253
|
+
/** Название фильтра */
|
|
254
|
+
name: TNullable<string>;
|
|
255
|
+
/** Формат */
|
|
256
|
+
format?: EFormatTypes;
|
|
257
|
+
}
|
|
258
|
+
interface IProcessFilterValue {
|
|
259
|
+
/**
|
|
260
|
+
* События, доступные при выборе процесса.
|
|
261
|
+
* Если параметр не передан, используются все события процесса на основе запроса к вычислителю.
|
|
262
|
+
*/
|
|
263
|
+
eventsNamesByProcessGuidMap?: Map<string, string[]>;
|
|
264
|
+
}
|
|
265
|
+
interface IProcessEventFilterValue extends IProcessFilterValue {
|
|
266
|
+
processGuid: string;
|
|
267
|
+
eventName: string;
|
|
268
|
+
}
|
|
269
|
+
interface IProcessTransitionFilterValue extends IProcessFilterValue {
|
|
270
|
+
startEventProcessGuid: string;
|
|
271
|
+
startEventName: string;
|
|
272
|
+
endEventProcessGuid: string;
|
|
273
|
+
endEventName: string;
|
|
274
|
+
}
|
|
275
|
+
interface IAddPresenceOfEventFilter {
|
|
276
|
+
(name: EProcessFilterNames.presenceOfEvent, value: IProcessEventFilterValue): void;
|
|
277
|
+
}
|
|
278
|
+
interface IAddRepetitionOfEventFilter {
|
|
279
|
+
(name: EProcessFilterNames.repetitionOfEvent, value: IProcessEventFilterValue): void;
|
|
280
|
+
}
|
|
281
|
+
interface IAddPresenceOfTransitionFilter {
|
|
282
|
+
(name: EProcessFilterNames.presenceOfTransition, value: IProcessTransitionFilterValue): void;
|
|
283
|
+
}
|
|
284
|
+
interface IAddDurationOfTransitionFilter {
|
|
285
|
+
(name: EProcessFilterNames.durationOfTransition, value: IProcessTransitionFilterValue): void;
|
|
286
|
+
}
|
|
287
|
+
interface IWidgetFiltration {
|
|
288
|
+
/** Значения фильтров, подготовленные для передачи в вычислитель */
|
|
289
|
+
preparedFilterValues: ICalculatorFilter[];
|
|
290
|
+
/** Добавить фильтр по формуле */
|
|
291
|
+
addFormulaFilter(value: IWidgetFormulaFilterValue): void;
|
|
292
|
+
/** Удалить фильтр по формуле */
|
|
293
|
+
removeFormulaFilter(formula: string): void;
|
|
294
|
+
addProcessFilter(...args: Parameters<IAddPresenceOfEventFilter> | Parameters<IAddRepetitionOfEventFilter> | Parameters<IAddPresenceOfTransitionFilter> | Parameters<IAddDurationOfTransitionFilter>): void;
|
|
295
|
+
}
|
|
296
|
+
declare enum EFormulaFilterFieldKeys {
|
|
297
|
+
date = "date",
|
|
298
|
+
dateRange = "dateRange",
|
|
299
|
+
duration = "duration",
|
|
300
|
+
number = "number",
|
|
301
|
+
numberRange = "numberRange",
|
|
302
|
+
string = "string",
|
|
303
|
+
lastTimeValue = "lastTimeValue",
|
|
304
|
+
lastTimeUnit = "lastTimeUnit",
|
|
305
|
+
durationUnit = "durationUnit"
|
|
306
|
+
}
|
|
307
|
+
interface IFormulaFilterValue {
|
|
308
|
+
/** Заголовок фильтра */
|
|
309
|
+
name: TNullable<string>;
|
|
310
|
+
/** Формула */
|
|
311
|
+
formula: string;
|
|
312
|
+
/** Тип данных формулы */
|
|
313
|
+
dataType: ESimpleDataType;
|
|
314
|
+
/** Формат */
|
|
315
|
+
format: EFormatTypes;
|
|
316
|
+
/** Метод фильтрации */
|
|
317
|
+
filteringMethod: valueof<typeof formulaFilterMethods>;
|
|
318
|
+
/** Выбранные в списке значения в виде моделей */
|
|
319
|
+
checkedValues: string[];
|
|
320
|
+
/** Значения полей формы редактора */
|
|
321
|
+
formValues: Partial<{
|
|
322
|
+
[EFormulaFilterFieldKeys.date]: string | null;
|
|
323
|
+
[EFormulaFilterFieldKeys.dateRange]: [string, string];
|
|
324
|
+
[EFormulaFilterFieldKeys.duration]: string;
|
|
325
|
+
[EFormulaFilterFieldKeys.number]: number;
|
|
326
|
+
[EFormulaFilterFieldKeys.numberRange]: Partial<[number, number]>;
|
|
327
|
+
[EFormulaFilterFieldKeys.string]: string;
|
|
328
|
+
[EFormulaFilterFieldKeys.lastTimeValue]: number;
|
|
329
|
+
[EFormulaFilterFieldKeys.lastTimeUnit]: ELastTimeUnit;
|
|
330
|
+
[EFormulaFilterFieldKeys.durationUnit]: EDurationUnit;
|
|
331
|
+
}>;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
interface IPlacement {
|
|
335
|
+
left: number;
|
|
336
|
+
top: number;
|
|
337
|
+
width: number;
|
|
338
|
+
height: number;
|
|
339
|
+
zIndex: number;
|
|
340
|
+
}
|
|
341
|
+
declare enum EWidgetFilterMode {
|
|
342
|
+
DEFAULT = "DEFAULT",
|
|
343
|
+
SINGLE = "SINGLE",
|
|
344
|
+
MULTI = "MULTI",
|
|
345
|
+
DISABLED = "DISABLED"
|
|
346
|
+
}
|
|
347
|
+
type TWidgetFiltering = {
|
|
348
|
+
ignore: true;
|
|
349
|
+
mode: EWidgetFilterMode.SINGLE | EWidgetFilterMode.MULTI;
|
|
350
|
+
} | {
|
|
351
|
+
ignore: false;
|
|
352
|
+
mode: EWidgetFilterMode;
|
|
353
|
+
};
|
|
354
|
+
declare enum EColorMode {
|
|
355
|
+
FORMULA = "FORMULA",
|
|
356
|
+
BASE = "BASE",
|
|
357
|
+
GRADIENT = "GRADIENT",
|
|
358
|
+
AUTO = "AUTO"
|
|
359
|
+
}
|
|
360
|
+
/** Настройка цвета */
|
|
361
|
+
type TColor = {
|
|
362
|
+
mode: EColorMode.FORMULA;
|
|
363
|
+
formula: string;
|
|
364
|
+
} | {
|
|
365
|
+
mode: EColorMode.BASE;
|
|
366
|
+
value?: string;
|
|
367
|
+
defaultColor?: string;
|
|
368
|
+
} | {
|
|
369
|
+
mode: EColorMode.GRADIENT;
|
|
370
|
+
startValue: string;
|
|
371
|
+
endValue: string;
|
|
372
|
+
} | {
|
|
373
|
+
mode: EColorMode.AUTO;
|
|
374
|
+
};
|
|
375
|
+
declare enum EDisplayConditionMode {
|
|
376
|
+
DISABLED = "DISABLED",
|
|
377
|
+
FORMULA = "FORMULA",
|
|
378
|
+
VARIABLE = "VARIABLE"
|
|
379
|
+
}
|
|
380
|
+
/** Условие отображения для компонента и меры */
|
|
381
|
+
type TDisplayCondition = {
|
|
382
|
+
mode: EDisplayConditionMode.DISABLED;
|
|
383
|
+
} | {
|
|
384
|
+
mode: EDisplayConditionMode.FORMULA;
|
|
385
|
+
formula: TNullable<string>;
|
|
386
|
+
} | {
|
|
387
|
+
mode: EDisplayConditionMode.VARIABLE;
|
|
388
|
+
variableGuid: TNullable<string>;
|
|
389
|
+
variableValue: TNullable<string>;
|
|
390
|
+
};
|
|
391
|
+
interface IRange {
|
|
392
|
+
unit?: string;
|
|
393
|
+
min?: number;
|
|
394
|
+
max?: number;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
declare enum ESortDirection {
|
|
398
|
+
descend = "DESC",
|
|
399
|
+
ascend = "ASC",
|
|
400
|
+
ASC = "ascend",
|
|
401
|
+
DESC = "descend"
|
|
402
|
+
}
|
|
403
|
+
type TSortDirection = ESortDirection.ascend | ESortDirection.descend;
|
|
404
|
+
interface ISortOrder {
|
|
405
|
+
formula: string;
|
|
406
|
+
direction: TSortDirection;
|
|
407
|
+
}
|
|
408
|
+
type TWidgetSortingValueRelatedWidgetMeasure = {
|
|
409
|
+
mode: ESortingValueModes.MEASURE_IN_WIDGET;
|
|
410
|
+
index: number;
|
|
411
|
+
};
|
|
412
|
+
type TWidgetSortingValueRelatedWidgetDimension = {
|
|
413
|
+
mode: ESortingValueModes.DIMENSION_IN_WIDGET | ESortingValueModes.HIERARCHY;
|
|
414
|
+
index: number;
|
|
415
|
+
};
|
|
416
|
+
type TWidgetSortingValueRelatedWidgetIndicator = TWidgetSortingValueRelatedWidgetMeasure | TWidgetSortingValueRelatedWidgetDimension;
|
|
417
|
+
type TWidgetSortingValue = {
|
|
418
|
+
mode: ESortingValueModes.FORMULA | ESortingValueModes.QUANTITY;
|
|
419
|
+
formula: string;
|
|
420
|
+
} | TWidgetSortingValueRelatedWidgetIndicator | {
|
|
421
|
+
mode: ESortingValueModes.IN_DASHBOARD | ESortingValueModes.IN_WORKSPACE;
|
|
422
|
+
guid: string;
|
|
423
|
+
formula: string;
|
|
424
|
+
};
|
|
425
|
+
|
|
426
|
+
declare enum EWidgetIndicatorType {
|
|
427
|
+
MEASURE = "MEASURE",
|
|
428
|
+
EVENT_INDICATOR = "EVENT_INDICATOR",
|
|
429
|
+
TRANSITION_INDICATOR = "TRANSITION_INDICATOR",
|
|
430
|
+
DIMENSION = "DIMENSION",
|
|
431
|
+
DIMENSION_HIERARCHY = "DIMENSION_HIERARCHY",
|
|
432
|
+
VARIABLE = "VARIABLE",
|
|
433
|
+
SORTING = "SORTING",
|
|
434
|
+
CUSTOM = "CUSTOM"
|
|
435
|
+
}
|
|
436
|
+
declare enum EDbType {
|
|
437
|
+
CH = "CH",
|
|
438
|
+
HADOOP = "HADOOP"
|
|
439
|
+
}
|
|
440
|
+
interface IWidgetIndicator {
|
|
441
|
+
/** Идентификатор, генерируемый на основе текущего времени */
|
|
442
|
+
id: number;
|
|
443
|
+
type: EWidgetIndicatorType;
|
|
444
|
+
name: string;
|
|
445
|
+
}
|
|
446
|
+
type TProcessIndicatorValue = {
|
|
447
|
+
mode: EWidgetIndicatorValueModes.FORMULA;
|
|
448
|
+
formula: string;
|
|
449
|
+
} | {
|
|
450
|
+
mode: EWidgetIndicatorValueModes.TEMPLATE;
|
|
451
|
+
/** Тип базы данных */
|
|
452
|
+
dbType: EDbType;
|
|
453
|
+
/** Имя шаблонной формулы, использующей колонку таблицы */
|
|
454
|
+
templateName: string;
|
|
455
|
+
};
|
|
456
|
+
/** Общий интерфейс разреза и меры */
|
|
457
|
+
interface IProcessIndicator extends IWidgetIndicator {
|
|
458
|
+
value?: TProcessIndicatorValue;
|
|
459
|
+
/**
|
|
460
|
+
* Тип данных. Добавляется в показатель автоматически
|
|
461
|
+
* (нужен только для определения доступных форматов)
|
|
462
|
+
*/
|
|
463
|
+
dataType?: ESimpleDataType;
|
|
464
|
+
format?: EFormatTypes;
|
|
465
|
+
formatting?: EFormattingPresets;
|
|
466
|
+
formattingTemplate?: string;
|
|
467
|
+
displayCondition?: TDisplayCondition;
|
|
468
|
+
}
|
|
469
|
+
interface IProcessEventIndicator extends IProcessIndicator {
|
|
470
|
+
type: EWidgetIndicatorType.EVENT_INDICATOR;
|
|
471
|
+
}
|
|
472
|
+
interface IProcessTransitionIndicator extends IProcessIndicator {
|
|
473
|
+
type: EWidgetIndicatorType.TRANSITION_INDICATOR;
|
|
474
|
+
}
|
|
475
|
+
/** Индикатор для сортировки */
|
|
476
|
+
interface IWidgetSortingIndicator extends IWidgetIndicator {
|
|
477
|
+
direction: TSortDirection;
|
|
478
|
+
value: TWidgetSortingValue;
|
|
479
|
+
}
|
|
480
|
+
/** Режимы значения показателя (на основе чего генерируется формула) */
|
|
481
|
+
declare enum EWidgetIndicatorValueModes {
|
|
482
|
+
/** Готовая формула (как правило, введенная пользователем через редактор формул) */
|
|
483
|
+
FORMULA = "FORMULA",
|
|
484
|
+
/** Шаблон формулы, предоставляемый системой */
|
|
485
|
+
TEMPLATE = "TEMPLATE"
|
|
486
|
+
}
|
|
487
|
+
/** Режимы сортировки (на что ссылается сортировка) */
|
|
488
|
+
declare enum ESortingValueModes {
|
|
489
|
+
/** Сортировка по формуле */
|
|
490
|
+
FORMULA = "FORMULA",
|
|
491
|
+
/** Пункт "Количество" */
|
|
492
|
+
QUANTITY = "QUANTITY",
|
|
493
|
+
/** @deprecated Для сортировки по иерархии используется режим DIMENSION_IN_WIDGET */
|
|
494
|
+
HIERARCHY = "HIERARCHY",
|
|
495
|
+
/** Сортировка по мере виджета */
|
|
496
|
+
MEASURE_IN_WIDGET = "MEASURE_IN_WIDGET",
|
|
497
|
+
/** Сортировка по разрезу(в т.ч. по иерархии) виджета */
|
|
498
|
+
DIMENSION_IN_WIDGET = "DIMENSION_IN_WIDGET",
|
|
499
|
+
/** Сортировка по мере отчета */
|
|
500
|
+
IN_DASHBOARD = "IN_DASHBOARD",
|
|
501
|
+
/** Сортировка по мере пространства */
|
|
502
|
+
IN_WORKSPACE = "IN_WORKSPACE"
|
|
503
|
+
}
|
|
504
|
+
interface ICommonColumnIndicator {
|
|
505
|
+
guid: string;
|
|
506
|
+
name: string;
|
|
507
|
+
formula: string;
|
|
508
|
+
}
|
|
509
|
+
type TColumnIndicatorValue = {
|
|
510
|
+
mode: EWidgetIndicatorValueModes.FORMULA;
|
|
511
|
+
formula: string;
|
|
512
|
+
} | {
|
|
513
|
+
mode: EWidgetIndicatorValueModes.TEMPLATE;
|
|
514
|
+
/** Тип базы данных */
|
|
515
|
+
dbType: EDbType;
|
|
516
|
+
/** Имя шаблонной формулы, использующей колонку таблицы */
|
|
517
|
+
templateName: string;
|
|
518
|
+
/** Имя таблицы */
|
|
519
|
+
tableName: string;
|
|
520
|
+
/** Имя колонки */
|
|
521
|
+
columnName: string;
|
|
522
|
+
};
|
|
523
|
+
/** Общий интерфейс разреза и меры */
|
|
524
|
+
interface IWidgetColumnIndicator extends IWidgetIndicator {
|
|
525
|
+
value?: TColumnIndicatorValue;
|
|
526
|
+
/**
|
|
527
|
+
* Тип данных. Добавляется в показатель автоматически
|
|
528
|
+
* (нужен только для определения доступных форматов)
|
|
529
|
+
*/
|
|
530
|
+
dataType?: ESimpleDataType;
|
|
531
|
+
format?: EFormatTypes;
|
|
532
|
+
formatting?: EFormattingPresets;
|
|
533
|
+
formattingTemplate?: string;
|
|
534
|
+
displayCondition?: TDisplayCondition;
|
|
535
|
+
}
|
|
536
|
+
interface IWidgetDimensionHierarchy<D extends IWidgetDimension = IWidgetDimension> {
|
|
537
|
+
/** Идентификатор, генерируемый на основе текущего времени */
|
|
538
|
+
id: number;
|
|
539
|
+
type: EWidgetIndicatorType.DIMENSION_HIERARCHY;
|
|
540
|
+
name: string;
|
|
541
|
+
dimensions: D[];
|
|
542
|
+
displayCondition?: TDisplayCondition;
|
|
543
|
+
}
|
|
544
|
+
interface IWidgetDimension extends IWidgetColumnIndicator {
|
|
545
|
+
type: EWidgetIndicatorType.DIMENSION;
|
|
546
|
+
hideEmptyValues: boolean;
|
|
547
|
+
}
|
|
548
|
+
interface IWidgetMeasure extends IWidgetColumnIndicator {
|
|
549
|
+
type: EWidgetIndicatorType.MEASURE;
|
|
550
|
+
}
|
|
551
|
+
/** Тип показателя */
|
|
552
|
+
declare enum EIndicatorType {
|
|
553
|
+
/** Показатели процесса */
|
|
554
|
+
PROCESS_MEASURE = "PROCESS_MEASURE",
|
|
555
|
+
/** Статичное значение */
|
|
556
|
+
STATIC = "STATIC",
|
|
557
|
+
/** Статический список */
|
|
558
|
+
STATIC_LIST = "STATIC_LIST",
|
|
559
|
+
/** Динамический список */
|
|
560
|
+
DYNAMIC_LIST = "DYNAMIC_LIST",
|
|
561
|
+
/** Разрез */
|
|
562
|
+
DIMENSION = "DIMENSION",
|
|
563
|
+
/** Мера */
|
|
564
|
+
MEASURE = "MEASURE",
|
|
565
|
+
/** Иерархия */
|
|
566
|
+
DYNAMIC_DIMENSION = "DYNAMIC_DIMENSION",
|
|
567
|
+
/** Пользовательская сортировка */
|
|
568
|
+
USER_SORTING = "USER_SORTING"
|
|
569
|
+
}
|
|
570
|
+
type TWidgetVariable = {
|
|
571
|
+
/** Тип переменной */
|
|
572
|
+
type: EIndicatorType.STATIC;
|
|
573
|
+
/** Имя переменной */
|
|
574
|
+
name: string;
|
|
575
|
+
/** Значение */
|
|
576
|
+
value: string;
|
|
577
|
+
/** Дефолтное значение */
|
|
578
|
+
defaultValue: string;
|
|
579
|
+
/** Тип данных */
|
|
580
|
+
dataType: ESimpleDataType;
|
|
581
|
+
} | {
|
|
582
|
+
/** Тип переменной */
|
|
583
|
+
type: EIndicatorType.STATIC_LIST;
|
|
584
|
+
/** Имя переменной */
|
|
585
|
+
name: string;
|
|
586
|
+
/** Значение */
|
|
587
|
+
value: TNullable<string> | string[];
|
|
588
|
+
/** Дефолтное значение */
|
|
589
|
+
defaultValue: TNullable<string>;
|
|
590
|
+
/** Элементы статического списка */
|
|
591
|
+
options: TNullable<string>[];
|
|
592
|
+
/** Тип данных */
|
|
593
|
+
dataType: ESimpleDataType.STRING;
|
|
594
|
+
/** Множественный выбор */
|
|
595
|
+
multipleChoice: boolean;
|
|
596
|
+
} | {
|
|
597
|
+
/** Тип переменной */
|
|
598
|
+
type: EIndicatorType.DYNAMIC_LIST;
|
|
599
|
+
/** Имя переменной */
|
|
600
|
+
name: string;
|
|
601
|
+
/** Значение */
|
|
602
|
+
value: string | string[];
|
|
603
|
+
/** Дефолтное значение */
|
|
604
|
+
defaultValue: string;
|
|
605
|
+
/** Формула для отображения списка */
|
|
606
|
+
listFormula: TNullable<string>;
|
|
607
|
+
/** Тип данных */
|
|
608
|
+
dataType: ESimpleDataType;
|
|
609
|
+
/** Множественный выбор */
|
|
610
|
+
multipleChoice: boolean;
|
|
611
|
+
/** Фильтры */
|
|
612
|
+
filters: (string | IFormulaFilterValue)[];
|
|
613
|
+
};
|
|
614
|
+
declare function isHierarchy(indicator: IWidgetColumnIndicator): indicator is IWidgetDimensionHierarchy;
|
|
615
|
+
|
|
616
|
+
interface IWidgetTableColumn {
|
|
617
|
+
/** Имя колонки */
|
|
618
|
+
name: string;
|
|
619
|
+
/** Тип данных колонки */
|
|
620
|
+
dataType: ESimpleDataType;
|
|
621
|
+
}
|
|
622
|
+
interface IActionScript {
|
|
623
|
+
guid: string | undefined;
|
|
624
|
+
fieldsGuids: Set<string>;
|
|
625
|
+
}
|
|
626
|
+
interface IWidgetTable {
|
|
627
|
+
/** Имя таблицы */
|
|
628
|
+
name: string;
|
|
629
|
+
/** Колонки таблицы */
|
|
630
|
+
columns: Map<string, IWidgetTableColumn>;
|
|
631
|
+
}
|
|
632
|
+
/**
|
|
633
|
+
* preview - упрощенный
|
|
634
|
+
*
|
|
635
|
+
* full - полный
|
|
636
|
+
*/
|
|
637
|
+
type TDisplayMode = "preview" | "full";
|
|
638
|
+
interface IWidgetsContext {
|
|
639
|
+
/** используемый язык в системе */
|
|
640
|
+
language: ELanguages;
|
|
641
|
+
processes: Map<string, IWidgetProcess>;
|
|
642
|
+
reportMeasures: TNullable<Map<string, ICommonColumnIndicator>>;
|
|
643
|
+
workspaceMeasures: TNullable<Map<string, ICommonColumnIndicator>>;
|
|
644
|
+
/** Переменные отчета */
|
|
645
|
+
variables: Map<string, TWidgetVariable>;
|
|
646
|
+
/** Метод установки значения переменной отчета */
|
|
647
|
+
setVariableValue(guid: string, value: TNullable<string> | string[]): void;
|
|
648
|
+
statesGuids: Set<string>;
|
|
649
|
+
reportName: string;
|
|
650
|
+
/**
|
|
651
|
+
* режим дашборда
|
|
652
|
+
* @deprecated 2401 - необходимо использовать displayMode */
|
|
653
|
+
isViewMode: boolean;
|
|
654
|
+
/** Режим отображения виджета */
|
|
655
|
+
displayMode: TDisplayMode;
|
|
656
|
+
/** @deprecated необходимо получать из системной переменной "Login" */
|
|
657
|
+
userLogin: string;
|
|
658
|
+
scripts: Map<string, IActionScript>;
|
|
659
|
+
tables: Set<string>;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
declare enum EWidgetActionInputMode {
|
|
663
|
+
FROM_COLUMN = "FROM_COLUMN",
|
|
664
|
+
FROM_VARIABLE = "FROM_VARIABLE",
|
|
665
|
+
STATIC_LIST = "STATIC_LIST",
|
|
666
|
+
DYNAMIC_LIST = "DYNAMIC_LIST",
|
|
667
|
+
FORMULA = "FORMULA",
|
|
668
|
+
MANUALLY = "MANUALLY"
|
|
669
|
+
}
|
|
670
|
+
type TWidgetActionInputValue = {
|
|
671
|
+
mode: EWidgetActionInputMode.FROM_COLUMN;
|
|
672
|
+
tableName: string;
|
|
673
|
+
columnName: string;
|
|
674
|
+
} | {
|
|
675
|
+
mode: EWidgetActionInputMode.FROM_VARIABLE;
|
|
676
|
+
guid: string;
|
|
677
|
+
} | {
|
|
678
|
+
mode: EWidgetActionInputMode.FORMULA;
|
|
679
|
+
formula: string;
|
|
680
|
+
} | {
|
|
681
|
+
mode: EWidgetActionInputMode.MANUALLY;
|
|
682
|
+
description: string;
|
|
683
|
+
} | {
|
|
684
|
+
mode: EWidgetActionInputMode.STATIC_LIST;
|
|
685
|
+
options: string[];
|
|
686
|
+
defaultOptionIndex: number;
|
|
687
|
+
} | {
|
|
688
|
+
mode: EWidgetActionInputMode.DYNAMIC_LIST;
|
|
689
|
+
formula: string;
|
|
690
|
+
defaultValue: string;
|
|
691
|
+
};
|
|
692
|
+
interface IWidgetActionInput {
|
|
693
|
+
guid: string;
|
|
694
|
+
value: TWidgetActionInputValue;
|
|
695
|
+
}
|
|
696
|
+
interface IWidgetAction {
|
|
697
|
+
id: number;
|
|
698
|
+
name: string;
|
|
699
|
+
description: string;
|
|
700
|
+
filters: (IFormulaFilterValue | string)[];
|
|
701
|
+
scriptGuid?: string;
|
|
702
|
+
/** Поле name необходимо, чтобы показать название скрипта, который был удален */
|
|
703
|
+
scriptName?: string;
|
|
704
|
+
inputs: IWidgetActionInput[];
|
|
705
|
+
shouldRefreshWidgetsAfterExecution: boolean;
|
|
706
|
+
}
|
|
707
|
+
declare const isActionValid: (action: IWidgetAction, { scripts, tables }: IWidgetsContext) => boolean;
|
|
708
|
+
|
|
709
|
+
interface IBaseWidgetSettings {
|
|
710
|
+
apiVersion: string;
|
|
711
|
+
type: string;
|
|
712
|
+
header?: string;
|
|
713
|
+
headerSize?: number;
|
|
714
|
+
stateGuid?: string | null;
|
|
715
|
+
filters?: (IFormulaFilterValue | string)[];
|
|
716
|
+
filterMode?: EWidgetFilterMode;
|
|
717
|
+
ignoreFilters?: boolean;
|
|
718
|
+
placement: IPlacement;
|
|
719
|
+
sorting?: IWidgetSortingIndicator[];
|
|
720
|
+
actions?: IWidgetAction[];
|
|
721
|
+
displayCondition?: TDisplayCondition;
|
|
722
|
+
displayConditionComment?: string;
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
interface ILens<T extends TNullable<object>, Value> {
|
|
726
|
+
get(obj: T): TNullable<Value>;
|
|
727
|
+
set(obj: T, value: Value): void;
|
|
728
|
+
}
|
|
729
|
+
type TValuePath = string | string[];
|
|
730
|
+
type TRecordAccessor<Settings extends object, Value> = TValuePath | ILens<Settings, Value>;
|
|
731
|
+
interface IDisplayPredicate<Settings> {
|
|
732
|
+
(s: Settings): boolean;
|
|
733
|
+
}
|
|
734
|
+
/** Конфигурация разделителя */
|
|
735
|
+
interface IDividerRecord<Settings extends object = object> {
|
|
736
|
+
type: "divider";
|
|
737
|
+
shouldDisplay?: IDisplayPredicate<Settings>;
|
|
738
|
+
}
|
|
739
|
+
/** Конфигурация набора групп */
|
|
740
|
+
interface IGroupSetRecord {
|
|
741
|
+
type: "groupSet";
|
|
742
|
+
groupSetKey: string;
|
|
743
|
+
}
|
|
744
|
+
type TEmptyRecord = boolean | null | undefined;
|
|
745
|
+
/** Набор конфигураций, которые могут встречаться на уровне виджета */
|
|
746
|
+
type TWidgetLevelRecord<Settings extends object> = IControlRecord<Settings, any, EControlType> | IDividerRecord<Settings> | IGroupSetRecord | TEmptyRecord;
|
|
747
|
+
/** Набор конфигураций, которые могут встречаться на уровне группы */
|
|
748
|
+
type TGroupLevelRecord<LevelGroupSettings extends object> = IControlRecord<LevelGroupSettings, any, EControlType> | IDividerRecord<LevelGroupSettings> | TEmptyRecord;
|
|
749
|
+
interface ISelectOption {
|
|
750
|
+
value: string;
|
|
751
|
+
label: string;
|
|
752
|
+
}
|
|
753
|
+
interface ICustomAddButtonProps {
|
|
754
|
+
options?: ISelectOption[];
|
|
755
|
+
fetchOptions?: () => Promise<ISelectOption[]>;
|
|
756
|
+
onSelect: (value: string, update: <T extends object>(f: (prevItems: T[]) => T[]) => void) => void;
|
|
757
|
+
}
|
|
758
|
+
/** Кнопка добавления группы в набор */
|
|
759
|
+
type TAddButton = {
|
|
760
|
+
title: string;
|
|
761
|
+
indicatorType: Exclude<EWidgetIndicatorType, EWidgetIndicatorType.CUSTOM>;
|
|
762
|
+
} | {
|
|
763
|
+
title: string;
|
|
764
|
+
indicatorType: EWidgetIndicatorType.CUSTOM;
|
|
765
|
+
props: ICustomAddButtonProps;
|
|
766
|
+
};
|
|
767
|
+
interface IAutoIdentifiedArrayItem {
|
|
768
|
+
/**
|
|
769
|
+
* Идентификатор, добавляемый системой "на лету" для удобства разработки, не сохраняется на сервер.
|
|
770
|
+
* Гарантируется уникальность id в пределах settings виджета.
|
|
771
|
+
*/
|
|
772
|
+
id: number;
|
|
773
|
+
}
|
|
774
|
+
interface IGroupSettings extends IAutoIdentifiedArrayItem, Record<string, any> {
|
|
775
|
+
}
|
|
776
|
+
/** Конфигурация набора групп */
|
|
777
|
+
interface IGroupSetDescription<Settings extends object, GroupSettings extends object> {
|
|
778
|
+
/** Заголовок */
|
|
779
|
+
title: string;
|
|
780
|
+
/** Максимальное количество групп в наборе */
|
|
781
|
+
maxCount: number;
|
|
782
|
+
/** Описание доступа к настройкам групп */
|
|
783
|
+
accessor: TRecordAccessor<Settings, GroupSettings[]>;
|
|
784
|
+
/** Кнопки добавления группы в набор */
|
|
785
|
+
addButtons: TAddButton[];
|
|
786
|
+
/** Создать элементы управления внутри группы (для вкладки настроек данных) */
|
|
787
|
+
createDataRecords?(group: IGroupSettings): TGroupLevelRecord<GroupSettings>[];
|
|
788
|
+
/** Создать элементы управления внутри группы (для вкладки настроек отображения) */
|
|
789
|
+
createDisplayRecords?(group: IGroupSettings): TGroupLevelRecord<GroupSettings>[];
|
|
790
|
+
/** Получить название для плашки */
|
|
791
|
+
getGroupTitle?(group: IGroupSettings): string;
|
|
792
|
+
/** Валидная ли группа */
|
|
793
|
+
isValid?(group: IGroupSettings): boolean;
|
|
794
|
+
/** Находится ли группа в состоянии загрузки */
|
|
795
|
+
isLoading?(group: IGroupSettings): boolean;
|
|
796
|
+
}
|
|
797
|
+
/** Конфигурация левой панели */
|
|
798
|
+
interface IPanelDescription<Settings extends object, GroupSettings extends IGroupSettings = IGroupSettings> {
|
|
799
|
+
/** Конфигурация настроек данных виджета */
|
|
800
|
+
dataRecords?: TWidgetLevelRecord<Settings>[];
|
|
801
|
+
/** Конфигурация настроек отображения виджета */
|
|
802
|
+
displayRecords?: TWidgetLevelRecord<Settings>[];
|
|
803
|
+
/** Конфигурации наборов групп */
|
|
804
|
+
groupSetDescriptions?: Record<string, IGroupSetDescription<Settings, GroupSettings>>;
|
|
805
|
+
}
|
|
806
|
+
interface IWidgetProcess {
|
|
807
|
+
guid: string;
|
|
808
|
+
/** Имя процесса */
|
|
809
|
+
name: string;
|
|
810
|
+
/** Формула имени события */
|
|
811
|
+
eventNameFormula: string;
|
|
812
|
+
/** Формула времени события */
|
|
813
|
+
eventTimeFormula: string;
|
|
814
|
+
/** Формула CaseId события */
|
|
815
|
+
eventCaseIdFormula: string;
|
|
816
|
+
/** Формула CaseId кейса */
|
|
817
|
+
caseCaseIdFormula: string;
|
|
818
|
+
/** Имя колонки CaseId события */
|
|
819
|
+
eventCaseIdColumnName: string;
|
|
820
|
+
/** Тип данных CaseId */
|
|
821
|
+
caseIdDataType: ESimpleDataType;
|
|
822
|
+
/** Тип данных времени события */
|
|
823
|
+
eventTimeDataType: ESimpleDataType;
|
|
824
|
+
/** Является ли процесс валидным */
|
|
825
|
+
isValid: boolean;
|
|
826
|
+
}
|
|
827
|
+
/** Конфигурация левой панели при погружении на уровень вниз */
|
|
828
|
+
interface IDivePanelDescription<Settings extends object, GroupSettings extends IGroupSettings = IGroupSettings> extends IPanelDescription<Settings, GroupSettings> {
|
|
829
|
+
}
|
|
830
|
+
interface IPanelDescriptionCreator<Settings extends IBaseWidgetSettings, GroupSettings extends IGroupSettings> {
|
|
831
|
+
(context: IWidgetsContext, panelSettings: Settings): IPanelDescription<Settings, GroupSettings>;
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
interface IWidgetPlaceholderController {
|
|
835
|
+
setError(value: Error | null): void;
|
|
836
|
+
setConfigured(value: boolean): void;
|
|
837
|
+
setDisplay(value: boolean): void;
|
|
838
|
+
setEmpty(value: boolean): void;
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
/** Вид переменной для калькулятора */
|
|
842
|
+
interface ICalculatorVariable {
|
|
843
|
+
dataType: ESimpleDataType;
|
|
844
|
+
value: string | string[];
|
|
845
|
+
}
|
|
846
|
+
/** Коллекция значений переменных по их имени */
|
|
847
|
+
interface ICalculatorVariablesValues extends Map<string, ICalculatorVariable> {
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
/** Формат входного параметра GeneralCalculator */
|
|
851
|
+
interface IBaseDimensionsAndMeasuresCalculatorInput {
|
|
852
|
+
/** Разрезы */
|
|
853
|
+
dimensions: ICalculatorDimensionInput[];
|
|
854
|
+
/** Меры */
|
|
855
|
+
measures: ICalculatorMeasureInput[];
|
|
856
|
+
/** Значения переменных */
|
|
857
|
+
variablesValues?: ICalculatorVariablesValues;
|
|
858
|
+
/** Фильтры, использующие WHERE */
|
|
859
|
+
filters: ICalculatorFilter[];
|
|
860
|
+
/** Фильтры, использующие HAVING */
|
|
861
|
+
postFilters?: ICalculatorFilter[];
|
|
862
|
+
/** Лимит мер (будут вычислены первые measuresLimit мер, попавшие под условие отображения) */
|
|
863
|
+
measuresLimit?: number;
|
|
864
|
+
/** Лимит разрезов (будут вычислены первые dimensionsLimit разрезов, попавшие под условие отображения) */
|
|
865
|
+
dimensionsLimit?: number;
|
|
866
|
+
/** Удалять ли строки, в которых значения всех мер пустые */
|
|
867
|
+
isHideEmptyMeasures?: boolean;
|
|
868
|
+
/**
|
|
869
|
+
* Направления сортировки (в качестве ключа - формула показателя)
|
|
870
|
+
* todo: widgets - удалить вариант с Map, т.к. при сортировке важен порядок элементов,
|
|
871
|
+
* правильнее будет указывать его явно через массив.
|
|
872
|
+
*/
|
|
873
|
+
sortOrders?: ISortOrder[] | Map<string, TSortDirection>;
|
|
874
|
+
/** Формула условия отображения */
|
|
875
|
+
displayConditionFormula?: TNullable<string>;
|
|
876
|
+
}
|
|
877
|
+
interface IBaseDimensionsAndMeasuresCalculatorOutput {
|
|
878
|
+
dimensions: Map<string, ICalculatorDimensionOutput>;
|
|
879
|
+
measures: Map<string, ICalculatorMeasureOutput>;
|
|
880
|
+
isDisplay: boolean;
|
|
881
|
+
isValuesEmpty: boolean;
|
|
882
|
+
}
|
|
883
|
+
interface IBaseDimensionsAndMeasuresCalculator<Input extends IBaseDimensionsAndMeasuresCalculatorInput, Output extends IBaseDimensionsAndMeasuresCalculatorOutput> extends ICalculator<Input, Output> {
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
interface IGeneralCalculatorInput extends IBaseDimensionsAndMeasuresCalculatorInput {
|
|
887
|
+
/** Лимит строк */
|
|
888
|
+
limit?: number;
|
|
889
|
+
/** Смещение при выборе строк */
|
|
890
|
+
offset?: number;
|
|
891
|
+
/** Вычислять ли итоговые значения */
|
|
892
|
+
isCalculateTotals?: boolean;
|
|
893
|
+
}
|
|
894
|
+
interface IGeneralCalculatorExportInput extends IGeneralCalculatorInput {
|
|
895
|
+
fileName: string;
|
|
896
|
+
columnsOrder: IExportColumnOrder[];
|
|
897
|
+
}
|
|
898
|
+
interface IGeneralCalculatorOutput extends IBaseDimensionsAndMeasuresCalculatorOutput {
|
|
899
|
+
/** Итоги по мерам */
|
|
900
|
+
totals: Map<string, string>;
|
|
901
|
+
}
|
|
902
|
+
interface IGeneralCalculator extends IBaseDimensionsAndMeasuresCalculator<IGeneralCalculatorInput, IGeneralCalculatorOutput> {
|
|
903
|
+
export(input: IGeneralCalculatorExportInput): Promise<void>;
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
interface IHistogramCalculatorInput {
|
|
907
|
+
/** Разрез */
|
|
908
|
+
dimensions: ICalculatorDimensionInput[];
|
|
909
|
+
/** Лимит корзин */
|
|
910
|
+
binsLimit: number;
|
|
911
|
+
/** Значения переменных */
|
|
912
|
+
variablesValues?: ICalculatorVariablesValues;
|
|
913
|
+
/** Формула условия отображения */
|
|
914
|
+
displayConditionFormula?: TNullable<string>;
|
|
915
|
+
/** Фильтры, использующие WHERE */
|
|
916
|
+
filters: ICalculatorFilter[];
|
|
917
|
+
/** Имя таблицы */
|
|
918
|
+
generalTable?: string;
|
|
919
|
+
}
|
|
920
|
+
interface IHistogramBin {
|
|
921
|
+
lowerBound: string;
|
|
922
|
+
upperBound: string;
|
|
923
|
+
height: string;
|
|
924
|
+
}
|
|
925
|
+
interface IHistogramCalculatorOutput {
|
|
926
|
+
bins: IHistogramBin[];
|
|
927
|
+
isDisplay: boolean;
|
|
928
|
+
}
|
|
929
|
+
interface IHistogramCalculator extends ICalculator<IHistogramCalculatorInput, IHistogramCalculatorOutput> {
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
interface IPieCalculatorInput extends IBaseDimensionsAndMeasuresCalculatorInput {
|
|
933
|
+
/** Лимит строк */
|
|
934
|
+
limit?: number;
|
|
935
|
+
}
|
|
936
|
+
interface IPieCalculatorOutput extends IBaseDimensionsAndMeasuresCalculatorOutput {
|
|
937
|
+
totals: string;
|
|
938
|
+
}
|
|
939
|
+
interface IPieCalculator extends IBaseDimensionsAndMeasuresCalculator<IPieCalculatorInput, IPieCalculatorOutput> {
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
interface IGraphElement {
|
|
943
|
+
/** Значения мер по alias */
|
|
944
|
+
values: Map<string, string>;
|
|
945
|
+
/** Коллекция дополнительных значений мер по alias меры */
|
|
946
|
+
additionalValues: Map<string, Map<string, string>>;
|
|
947
|
+
}
|
|
948
|
+
interface IVertex extends IGraphElement {
|
|
949
|
+
name: string;
|
|
950
|
+
}
|
|
951
|
+
interface IEdge extends IGraphElement {
|
|
952
|
+
beginName: string | null;
|
|
953
|
+
endName: string | null;
|
|
954
|
+
}
|
|
955
|
+
interface IProcessGraphCalculatorInput {
|
|
956
|
+
processGuid: string;
|
|
957
|
+
vertexLimit: number | null;
|
|
958
|
+
edgeLimit: number;
|
|
959
|
+
vertexMeasures: ICalculatorMeasureInput[];
|
|
960
|
+
edgeMeasures: ICalculatorMeasureInput[];
|
|
961
|
+
filters: ICalculatorFilter[];
|
|
962
|
+
eventFilters?: ICalculatorFilter[];
|
|
963
|
+
displayConditionFormula?: TNullable<string>;
|
|
964
|
+
/** Значения переменных */
|
|
965
|
+
variablesValues?: ICalculatorVariablesValues;
|
|
966
|
+
}
|
|
967
|
+
interface IProcessGraphCalculatorOutput {
|
|
968
|
+
vertexMaxLimit: number;
|
|
969
|
+
/** Значение веса вершины по умолчанию, если вес не был передан явно */
|
|
970
|
+
defaultVertexLimit: number | null;
|
|
971
|
+
/** alias'ы мер, попавших под условие отображения */
|
|
972
|
+
vertexMeasuresAliases: Set<string>;
|
|
973
|
+
vertices: IVertex[];
|
|
974
|
+
edgeMaxLimit: number;
|
|
975
|
+
/** alias'ы мер, попавших под условие отображения */
|
|
976
|
+
edgeMeasuresAliases: Set<string>;
|
|
977
|
+
edges: IEdge[];
|
|
978
|
+
isDisplay: boolean;
|
|
979
|
+
}
|
|
980
|
+
interface IProcessGraphCalculator extends ICalculator<IProcessGraphCalculatorInput, IProcessGraphCalculatorOutput> {
|
|
981
|
+
}
|
|
982
|
+
|
|
983
|
+
interface ITwoLimitsCalculatorInput {
|
|
984
|
+
/** Разрезы первой группы*/
|
|
985
|
+
dimensionsFirstGroup: ICalculatorDimensionInput[];
|
|
986
|
+
/** Разрезы второй группы */
|
|
987
|
+
dimensionsSecondGroup: ICalculatorDimensionInput[];
|
|
988
|
+
/** Меры */
|
|
989
|
+
measures: ICalculatorMeasureInput[];
|
|
990
|
+
/** Значения переменных */
|
|
991
|
+
variablesValues?: ICalculatorVariablesValues;
|
|
992
|
+
/** Фильтры, использующие WHERE */
|
|
993
|
+
filters: ICalculatorFilter[];
|
|
994
|
+
/** Фильтры, использующие HAVING */
|
|
995
|
+
postFilters?: ICalculatorFilter[];
|
|
996
|
+
/** Лимит мер (будут вычислены первые measuresLimit мер, попавшие под условие отображения) */
|
|
997
|
+
measuresLimit?: number;
|
|
998
|
+
/** Удалять ли строки, в которых значения всех мер пустые */
|
|
999
|
+
isHideEmptyMeasures?: boolean;
|
|
1000
|
+
/**
|
|
1001
|
+
* Направления сортировки (в качестве ключа - формула показателя)
|
|
1002
|
+
* todo: widgets - удалить вариант с Map, т.к. при сортировке важен порядок элементов,
|
|
1003
|
+
* правильнее будет указывать его явно через массив.
|
|
1004
|
+
*/
|
|
1005
|
+
sortOrders?: ISortOrder[] | Map<string, TSortDirection>;
|
|
1006
|
+
/** Формула условия отображения */
|
|
1007
|
+
displayConditionFormula?: TNullable<string>;
|
|
1008
|
+
/** Лимит строк */
|
|
1009
|
+
limit?: number;
|
|
1010
|
+
/** Второй лимит */
|
|
1011
|
+
secondLimit?: number;
|
|
1012
|
+
}
|
|
1013
|
+
interface ITwoLimitsCalculatorExportInput extends ITwoLimitsCalculatorInput {
|
|
1014
|
+
fileName: string;
|
|
1015
|
+
columnsOrder: IExportColumnOrder[];
|
|
1016
|
+
}
|
|
1017
|
+
interface ITwoLimitsCalculatorOutput {
|
|
1018
|
+
dimensions: Map<string, ICalculatorDimensionOutput>;
|
|
1019
|
+
measures: Map<string, ICalculatorMeasureOutput>;
|
|
1020
|
+
isDisplay: boolean;
|
|
1021
|
+
isValuesEmpty: boolean;
|
|
1022
|
+
}
|
|
1023
|
+
interface ITwoLimitsCalculator extends ICalculator<ITwoLimitsCalculatorInput, ITwoLimitsCalculatorOutput> {
|
|
1024
|
+
export(input: ITwoLimitsCalculatorExportInput): Promise<void>;
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
interface ITypeCalculatorInput {
|
|
1028
|
+
formula: string;
|
|
1029
|
+
variablesValues: ICalculatorVariablesValues;
|
|
1030
|
+
}
|
|
1031
|
+
interface ITypeCalculatorOutput {
|
|
1032
|
+
type: ESimpleDataType;
|
|
1033
|
+
}
|
|
1034
|
+
interface ITypeCalculator extends ICalculator<ITypeCalculatorInput, ITypeCalculatorOutput> {
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
declare const prepareValuesForSql: (dataType: ESimpleDataType, values: string[]) => string[];
|
|
1038
|
+
|
|
1039
|
+
declare function mapVariablesToInputs(variables: Map<string, TWidgetVariable>): ICalculatorVariablesValues;
|
|
1040
|
+
|
|
1041
|
+
declare function checkDisplayCondition(displayCondition: TNullable<TDisplayCondition>, variables: Map<string, TWidgetVariable>): boolean;
|
|
1042
|
+
declare function getDisplayConditionFormula(displayCondition: TNullable<TDisplayCondition>): TNullable<string>;
|
|
1043
|
+
declare const replaceDisplayCondition: <I extends IWidgetColumnIndicator>(dimension: I, displayCondition: TNullable<TDisplayCondition>) => TNullable<I>;
|
|
1044
|
+
|
|
1045
|
+
/** Конвертировать меры виджета во входы для вычислителя */
|
|
1046
|
+
declare function mapMeasuresToInputs<T extends IWidgetMeasure>(measures: T[], variables: Map<string, TWidgetVariable>, addFormulas?: (measure: T) => Map<string, string>): ICalculatorMeasureInput[];
|
|
1047
|
+
|
|
1048
|
+
/** Конвертировать разрезы виджета во входы для вычислителя */
|
|
1049
|
+
declare function mapDimensionsToInputs(dimensions: IWidgetDimension[], variables: Map<string, TWidgetVariable>): ICalculatorDimensionInput[];
|
|
1050
|
+
|
|
1051
|
+
/** Конвертировать процессные показатели виджета во входы для вычислителя */
|
|
1052
|
+
declare function mapTransitionMeasuresToInputs<T extends IProcessIndicator>(indicators: T[], process: IWidgetProcess, variables: Map<string, TWidgetVariable>, addFormulas?: (indicator: T) => Map<string, string>): ICalculatorMeasureInput[];
|
|
1053
|
+
|
|
1054
|
+
/** Конвертировать показатели процессных событий виджета во входы для вычислителя */
|
|
1055
|
+
declare function mapEventMeasuresToInputs<T extends IProcessIndicator>(indicators: T[], process: IWidgetProcess, variables: Map<string, TWidgetVariable>, addFormulas?: (indicator: T) => Map<string, string>): ICalculatorMeasureInput[];
|
|
1056
|
+
|
|
1057
|
+
/**
|
|
1058
|
+
* Преобразовать объекты сортировок из settings виджета в sortOrders вычислителя
|
|
1059
|
+
* @param sortingIndicators объекты сортировок из settings виджета
|
|
1060
|
+
* @param dimensionsInOriginalOrder разрезы виджета (конкретный разрез будет браться по индексу)
|
|
1061
|
+
* @param measuresInOriginalOrder меры виджета (конкретная мера будет браться по индексу)
|
|
1062
|
+
* @returns
|
|
1063
|
+
*/
|
|
1064
|
+
declare function mapSortingToInputs(sortingIndicators?: IWidgetSortingIndicator[], dimensionsInOriginalOrder?: IWidgetDimension[], measuresInOriginalOrder?: IWidgetMeasure[]): ISortOrder[];
|
|
1065
|
+
|
|
1066
|
+
/**
|
|
1067
|
+
* Выбрать активный разрез иерархии на основе активных фильтров.
|
|
1068
|
+
* Принцип:
|
|
1069
|
+
* Если к разрезу иерархии применяется INCLUDE-фильтр с одним значением - выбираем следующий за ним разрез
|
|
1070
|
+
* Если к разрезу иерархии применяется INCLUDE-фильтр с несколькими значениями - выбираем данный разрез
|
|
1071
|
+
*/
|
|
1072
|
+
declare function selectDimensionFromHierarchy<H extends IWidgetDimensionHierarchy<D>, D extends IWidgetDimension>({ dimensions }: H, filters: ICalculatorFilter[]): TNullable<D>;
|
|
1073
|
+
|
|
1074
|
+
declare const replaceHierarchiesWithDimensions: <D extends IWidgetDimension = IWidgetDimension>(dimensions: (D | IWidgetDimensionHierarchy<D>)[], filters: ICalculatorFilter[]) => D[];
|
|
1075
|
+
|
|
1076
|
+
type TBoundedContentWithIndicator<Output extends ICalculatorIndicatorOutput, Indicator extends IWidgetIndicator> = Output & {
|
|
1077
|
+
indicator: Indicator;
|
|
1078
|
+
};
|
|
1079
|
+
declare function bindContentWithIndicator<Output extends ICalculatorIndicatorOutput, Indicator extends IWidgetIndicator>(outputs: Map<string, Output>, indicator: Indicator): TBoundedContentWithIndicator<Output, Indicator> | undefined;
|
|
1080
|
+
/**
|
|
1081
|
+
* Связать показатели с вычисленным для них контентом
|
|
1082
|
+
* @param outputs Map выходов вычислителя по идентификатору показателя
|
|
1083
|
+
* @param indicators массив показателей из settings виджета
|
|
1084
|
+
* Массив объектов, каждый из которых содержит показатель и его контент
|
|
1085
|
+
*/
|
|
1086
|
+
declare function bindContentsWithIndicators<Output extends ICalculatorIndicatorOutput, Indicator extends IWidgetIndicator>(outputs: Map<string, Output>, indicators: Indicator[]): TBoundedContentWithIndicator<Output, Indicator>[];
|
|
1087
|
+
|
|
1088
|
+
interface ICalculatorFactory {
|
|
1089
|
+
general: () => IGeneralCalculator;
|
|
1090
|
+
pie: () => IPieCalculator;
|
|
1091
|
+
processGraph: () => IProcessGraphCalculator;
|
|
1092
|
+
histogram: () => IHistogramCalculator;
|
|
1093
|
+
twoLimits: () => ITwoLimitsCalculator;
|
|
1094
|
+
type: () => ITypeCalculator;
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
interface IDefinition<WidgetSettings extends IBaseWidgetSettings, GroupSettings extends IGroupSettings> {
|
|
1098
|
+
/** возвращает конфигурацию настроек для отображения */
|
|
1099
|
+
createPanelDescription: IPanelDescriptionCreator<WidgetSettings, GroupSettings>;
|
|
1100
|
+
/** заполняет настройки значениями по умолчанию */
|
|
1101
|
+
fillSettings: IFillSettings<WidgetSettings>;
|
|
1102
|
+
getDimensions?(settings: WidgetSettings): (IWidgetDimension | IWidgetDimensionHierarchy)[];
|
|
1103
|
+
getMeasures?(settings: WidgetSettings): IWidgetMeasure[];
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
|
+
interface IWidgetProps<WidgetSettings extends IBaseWidgetSettings = IBaseWidgetSettings> {
|
|
1107
|
+
/** guid виджета */
|
|
1108
|
+
guid: string;
|
|
1109
|
+
/** Настройки виджета */
|
|
1110
|
+
settings: WidgetSettings;
|
|
1111
|
+
/** Объект для взаимодействия с фильтрацией */
|
|
1112
|
+
filtration: IWidgetFiltration;
|
|
1113
|
+
/** Функция для подписки на расфокусировку виджета */
|
|
1114
|
+
subscribeOnFocusOut(subscriber: () => void): void;
|
|
1115
|
+
/** Захватить фокус: остальные виджеты будут оповещены о расфокусировке */
|
|
1116
|
+
captureFocus(): void;
|
|
1117
|
+
/** Фабрика вычислителей. */
|
|
1118
|
+
calculatorFactory: ICalculatorFactory;
|
|
1119
|
+
/**
|
|
1120
|
+
* Корневой контейнер отчета.
|
|
1121
|
+
* Служит для возможности использования портала внутри виджетов.
|
|
1122
|
+
*/
|
|
1123
|
+
rootViewContainer: HTMLDivElement;
|
|
1124
|
+
/** Объект для управления плейсхолдером */
|
|
1125
|
+
placeholder: IWidgetPlaceholderController;
|
|
1126
|
+
/** Контекст виджета */
|
|
1127
|
+
widgetsContext: IWidgetsContext;
|
|
1128
|
+
/** Вызывает модальное окно для запуска действия */
|
|
1129
|
+
launchAction(params: {
|
|
1130
|
+
action: IWidgetAction;
|
|
1131
|
+
onSuccess: () => void;
|
|
1132
|
+
filters: ICalculatorFilter[];
|
|
1133
|
+
}): void;
|
|
1134
|
+
}
|
|
1135
|
+
interface ICustomWidgetProps<WidgetSettings extends IBaseWidgetSettings = IBaseWidgetSettings> extends IWidgetProps<WidgetSettings> {
|
|
1136
|
+
/** @deprecated - нужно использовать из widgetsContext */
|
|
1137
|
+
language: ELanguages;
|
|
1138
|
+
/**
|
|
1139
|
+
* режим дашборда
|
|
1140
|
+
* @deprecated 2401 - необходимо использовать displayMode из widgetsContext */
|
|
1141
|
+
isViewMode: boolean;
|
|
1142
|
+
/** манифест виджета */
|
|
1143
|
+
manifest: Record<string, any>;
|
|
1144
|
+
/** @deprecated - процессы приходят в widgetsContext */
|
|
1145
|
+
processes: Map<string, IWidgetProcess>;
|
|
1146
|
+
/** body DOM элемент родительского приложения */
|
|
1147
|
+
bodyElement: HTMLBodyElement;
|
|
1148
|
+
/** @deprecated - значения переменных на дашборде нужно использовать из widgetsContext */
|
|
1149
|
+
variables: Map<string, TWidgetVariable>;
|
|
1150
|
+
/** Форматирование */
|
|
1151
|
+
formatting: IWidgetFormatting;
|
|
1152
|
+
/** Получить ресурс виджета по имени файла */
|
|
1153
|
+
getWidgetAsset: (fileName: string) => Promise<Blob | null>;
|
|
1154
|
+
}
|
|
1155
|
+
interface IWidget<WidgetSettings extends IBaseWidgetSettings> {
|
|
1156
|
+
/** метод будет вызван при добавлении виджета в отчет
|
|
1157
|
+
* и после загрузки исходного кода виджета. В данном методе
|
|
1158
|
+
* можно инициализировать библиотеку отображения, создать
|
|
1159
|
+
* дополнительные DOM-элементы и подготовить виджет перед
|
|
1160
|
+
* вызовом метода mount
|
|
1161
|
+
*
|
|
1162
|
+
* @param container - DOM элемент в котором будет отображаться виджет
|
|
1163
|
+
* */
|
|
1164
|
+
initialize(container: HTMLElement): void;
|
|
1165
|
+
/**
|
|
1166
|
+
* метод будет вызван после добавления виджета в отчет, в тот момент
|
|
1167
|
+
* когда система будет готова отобразить виджет. В данном методе можно
|
|
1168
|
+
* начать визуализировать виджет
|
|
1169
|
+
* @param container - DOM элемент в котором будет отображаться виджет
|
|
1170
|
+
* @param props - содержит информацию которую система передаёт виджетам,
|
|
1171
|
+
* например, язык используемый системой, информация об отчете, настройки,
|
|
1172
|
+
* фабрику вычислителей и.др.
|
|
1173
|
+
*/
|
|
1174
|
+
mount(container: HTMLElement, props: ICustomWidgetProps<WidgetSettings>): void;
|
|
1175
|
+
/**
|
|
1176
|
+
* метод будет вызываться каждый раз, когда props были обновлены и необходимо
|
|
1177
|
+
* выполнить перерисовку виджета
|
|
1178
|
+
* @param container - DOM элемент в котором будет отображаться виджет
|
|
1179
|
+
* @param props - содержит информацию которую система передаёт виджетам,
|
|
1180
|
+
* например, язык используемый системой, информация об отчете, настройки,
|
|
1181
|
+
* фабрику вычислителей и.др.
|
|
1182
|
+
*/
|
|
1183
|
+
update(container: HTMLElement, props: ICustomWidgetProps<WidgetSettings>): void;
|
|
1184
|
+
/**
|
|
1185
|
+
* метод будет вызван когда происходит размонтирование виджета, например,
|
|
1186
|
+
* пользователь удаляет виджет со страницы отчета
|
|
1187
|
+
* @param container - DOM элемент в котором отображался виджет
|
|
1188
|
+
*/
|
|
1189
|
+
unmount(container: HTMLElement): void;
|
|
1190
|
+
}
|
|
1191
|
+
interface IFillSettings<WidgetSettings extends IBaseWidgetSettings> {
|
|
1192
|
+
(settings: Partial<WidgetSettings>, context: IWidgetsContext): void;
|
|
1193
|
+
}
|
|
1194
|
+
interface IWidgetEntity<WidgetSettings extends IBaseWidgetSettings, GroupSettings extends IGroupSettings> {
|
|
1195
|
+
new (): IWidget<WidgetSettings>;
|
|
1196
|
+
definition: IDefinition<WidgetSettings, GroupSettings>;
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1199
|
+
declare function generateColumnFormula(tableName: string, columnName: string): string;
|
|
1200
|
+
declare function fillTemplateString(templateString: string, params: Record<string, any>): string;
|
|
1201
|
+
|
|
1202
|
+
declare enum EDimensionTemplateNames {
|
|
1203
|
+
dateTime = "dateTime",
|
|
1204
|
+
date = "date",
|
|
1205
|
+
year = "year",
|
|
1206
|
+
yearAndQuarter = "yearAndQuarter",
|
|
1207
|
+
quarter = "quarter",
|
|
1208
|
+
yearAndMonth = "yearAndMonth",
|
|
1209
|
+
dayOfMonth = "dayOfMonth",
|
|
1210
|
+
month = "month",
|
|
1211
|
+
week = "week",
|
|
1212
|
+
dayOfWeek = "dayOfWeek",
|
|
1213
|
+
hour = "hour"
|
|
1214
|
+
}
|
|
1215
|
+
declare const dimensionTemplateFormulas: {
|
|
1216
|
+
readonly dateTime: "toDateTime({columnFormula})";
|
|
1217
|
+
readonly date: "toDate({columnFormula})";
|
|
1218
|
+
readonly year: "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}))";
|
|
1219
|
+
readonly yearAndQuarter: "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYear({columnFormula}) * 10 + toQuarter({columnFormula}))";
|
|
1220
|
+
readonly quarter: "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toQuarter({columnFormula}))";
|
|
1221
|
+
readonly yearAndMonth: "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toYYYYMM({columnFormula}))";
|
|
1222
|
+
readonly month: "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toMonth({columnFormula}))";
|
|
1223
|
+
readonly dayOfMonth: "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfMonth({columnFormula}))";
|
|
1224
|
+
readonly week: "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toWeek({columnFormula}))";
|
|
1225
|
+
readonly dayOfWeek: "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toDayOfWeek({columnFormula}))";
|
|
1226
|
+
readonly hour: "if(defaultValueOfArgumentType({columnFormula}) = {columnFormula}, 0, toHour({columnFormula}))";
|
|
1227
|
+
};
|
|
1228
|
+
declare function getDimensionFormula({ value }: IWidgetDimension): string;
|
|
1229
|
+
|
|
1230
|
+
declare enum EMeasureTemplateNames {
|
|
1231
|
+
avg = "avg",
|
|
1232
|
+
median = "median",
|
|
1233
|
+
count = "count",
|
|
1234
|
+
countDistinct = "countDistinct",
|
|
1235
|
+
min = "min",
|
|
1236
|
+
max = "max",
|
|
1237
|
+
sum = "sum"
|
|
1238
|
+
}
|
|
1239
|
+
declare const measureTemplateFormulas: {
|
|
1240
|
+
readonly avg: "avg({columnFormula})";
|
|
1241
|
+
readonly count: "count({columnFormula})";
|
|
1242
|
+
readonly countDistinct: "count(distinct {columnFormula})";
|
|
1243
|
+
readonly median: "medianExact({columnFormula})";
|
|
1244
|
+
readonly min: "min({columnFormula})";
|
|
1245
|
+
readonly max: "max({columnFormula})";
|
|
1246
|
+
readonly sum: "sum({columnFormula})";
|
|
1247
|
+
};
|
|
1248
|
+
declare function getMeasureFormula({ value }: IWidgetMeasure): string;
|
|
1249
|
+
|
|
1250
|
+
declare enum EEventMeasureTemplateNames {
|
|
1251
|
+
count = "count",
|
|
1252
|
+
reworksCount = "reworksCount"
|
|
1253
|
+
}
|
|
1254
|
+
declare const eventMeasureTemplateFormulas: {
|
|
1255
|
+
readonly count: "count()";
|
|
1256
|
+
readonly reworksCount: "count() - uniqExact({caseCaseIdFormula})";
|
|
1257
|
+
};
|
|
1258
|
+
declare function getEventMeasureFormula({ value }: IProcessIndicator, process: IWidgetProcess): string;
|
|
1259
|
+
|
|
1260
|
+
declare enum ETransitionMeasureTemplateNames {
|
|
1261
|
+
count = "count",
|
|
1262
|
+
medianTime = "medianTime"
|
|
1263
|
+
}
|
|
1264
|
+
declare const transitionMeasureTemplateFormulas: {
|
|
1265
|
+
readonly count: "count()";
|
|
1266
|
+
readonly medianTime: "medianExact(date_diff(second, begin({eventTimeFormula}), end({eventTimeFormula})))";
|
|
1267
|
+
};
|
|
1268
|
+
declare function getTransitionMeasureFormula({ value }: IProcessIndicator, process: IWidgetProcess): string;
|
|
1269
|
+
|
|
1270
|
+
interface IDimensionSelection {
|
|
1271
|
+
values: Set<string>;
|
|
1272
|
+
replacedFilter: ICalculatorFilter | null;
|
|
1273
|
+
}
|
|
1274
|
+
interface IDimensionSelectionByFormula extends Map<string, IDimensionSelection> {
|
|
1275
|
+
}
|
|
1276
|
+
type TUpdateSelection = (selection: IDimensionSelectionByFormula, formula: string, value: string, filters: ICalculatorFilter[]) => void;
|
|
1277
|
+
declare const updateDefaultModeSelection: TUpdateSelection;
|
|
1278
|
+
declare const updateSingleModeSelection: TUpdateSelection;
|
|
1279
|
+
declare const updateMultiModeSelection: TUpdateSelection;
|
|
1280
|
+
declare const replaceFiltersBySelection: (filters: ICalculatorFilter[], selection: IDimensionSelectionByFormula) => ICalculatorFilter[];
|
|
1281
|
+
|
|
1282
|
+
declare global {
|
|
1283
|
+
interface Infomaximum {
|
|
1284
|
+
defineWidget: <WidgetSettings extends IBaseWidgetSettings, GroupSettings extends IGroupSettings>(uuid: string, Widget: IWidgetEntity<WidgetSettings, GroupSettings>) => void;
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1287
|
+
|
|
1288
|
+
export { ECalculatorFilterMethods, EColorMode, EControlType, EDbType, EDimensionTemplateNames, EDisplayConditionMode, EDurationUnit, EEventMeasureTemplateNames, EFormatTypes, EFormattingPresets, EFormulaFilterFieldKeys, EIndicatorType, ELastTimeUnit, EMeasureTemplateNames, EProcessFilterNames, ESimpleDataType, ESortDirection, ESortingValueModes, ETransitionMeasureTemplateNames, EWidgetActionInputMode, EWidgetFilterMode, EWidgetIndicatorType, EWidgetIndicatorValueModes, type IActionScript, type IAddDurationOfTransitionFilter, type IAddPresenceOfEventFilter, type IAddPresenceOfTransitionFilter, type IAddRepetitionOfEventFilter, type IBaseDimensionsAndMeasuresCalculator, type IBaseDimensionsAndMeasuresCalculatorInput, type IBaseDimensionsAndMeasuresCalculatorOutput, type IBaseWidgetSettings, type ICalculator, type ICalculatorDimensionInput, type ICalculatorDimensionOutput, type ICalculatorFactory, type ICalculatorFilter, type ICalculatorIndicatorInput, type ICalculatorIndicatorOutput, type ICalculatorMeasureInput, type ICalculatorMeasureOutput, type ICalculatorVariable, type ICalculatorVariablesValues, type ICommonColumnIndicator, type IControlRecord, type ICustomAddButtonProps, type ICustomWidgetProps, type IDefinition, type IDimensionSelection, type IDimensionSelectionByFormula, type IDisplayPredicate, type IDivePanelDescription, type IDividerRecord, type IEdge, type IExportColumnOrder, type IFillSettings, type IFormulaFilterValue, type IGeneralCalculator, type IGeneralCalculatorExportInput, type IGeneralCalculatorInput, type IGeneralCalculatorOutput, type IGraphElement, type IGroupSetDescription, type IGroupSetRecord, type IGroupSettings, type IHistogramBin, type IHistogramCalculator, type IHistogramCalculatorInput, type IHistogramCalculatorOutput, type ILens, type IPanelDescription, type IPanelDescriptionCreator, type IPieCalculator, type IPieCalculatorInput, type IPieCalculatorOutput, type IPlacement, type IProcessEventFilterValue, type IProcessEventIndicator, type IProcessGraphCalculator, type IProcessGraphCalculatorInput, type IProcessGraphCalculatorOutput, type IProcessIndicator, type IProcessTransitionFilterValue, type IProcessTransitionIndicator, type IRange, type ISelectOption, type ISortOrder, type ITwoLimitsCalculator, type ITwoLimitsCalculatorExportInput, type ITwoLimitsCalculatorInput, type ITwoLimitsCalculatorOutput, type ITypeCalculator, type ITypeCalculatorInput, type ITypeCalculatorOutput, type IVertex, type IWidget, type IWidgetAction, type IWidgetActionInput, type IWidgetColumnIndicator, type IWidgetDimension, type IWidgetDimensionHierarchy, type IWidgetEntity, type IWidgetFiltration, type IWidgetFormatting, type IWidgetFormulaFilterValue, type IWidgetIndicator, type IWidgetMeasure, type IWidgetPlaceholderController, type IWidgetProcess, type IWidgetProps, type IWidgetSortingIndicator, type IWidgetTable, type IWidgetTableColumn, type IWidgetsContext, type TBoundedContentWithIndicator, type TColor, type TColumnIndicatorValue, type TDisplayCondition, type TDisplayMode, type TEmptyRecord, type TGroupLevelRecord, type TProcessIndicatorValue, type TRecordAccessor, type TSortDirection, type TUpdateSelection, type TValuePath, type TWidgetActionInputValue, type TWidgetFiltering, type TWidgetLevelRecord, type TWidgetSortingValue, type TWidgetSortingValueRelatedWidgetDimension, type TWidgetSortingValueRelatedWidgetIndicator, type TWidgetSortingValueRelatedWidgetMeasure, type TWidgetVariable, bindContentWithIndicator, bindContentsWithIndicators, checkDisplayCondition, dimensionTemplateFormulas, eventMeasureTemplateFormulas, fillTemplateString, formulaFilterMethods, generateColumnFormula, getDimensionFormula, getDisplayConditionFormula, getEventMeasureFormula, getMeasureFormula, getTransitionMeasureFormula, isActionValid, isHierarchy, mapDimensionsToInputs, mapEventMeasuresToInputs, mapFormulaFilterToCalculatorInput, mapFormulaFiltersToInputs, mapMeasuresToInputs, mapSortingToInputs, mapTransitionMeasuresToInputs, mapVariablesToInputs, measureTemplateFormulas, prepareValuesForSql, replaceDisplayCondition, replaceFiltersBySelection, replaceHierarchiesWithDimensions, selectDimensionFromHierarchy, transitionMeasureTemplateFormulas, updateDefaultModeSelection, updateMultiModeSelection, updateSingleModeSelection };
|