widget-common-container 0.0.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.
Files changed (87) hide show
  1. package/.angular/cache/19.2.26/ng-packagr/0997d7866dbb7999756bcd6dce071e827244865f4ff149c26d049d1515686b01 +1 -0
  2. package/.angular/cache/19.2.26/ng-packagr/882519e10fb587011272af89a34932495c0e2cc97d0c030536d1033ee55ce561 +1 -0
  3. package/.angular/cache/19.2.26/ng-packagr/8b15b546ec32b4e82b20945f62d23ba911050bdc6a4a60d34875eea6fe236635 +1 -0
  4. package/.angular/cache/19.2.26/ng-packagr/9711df1afdc00e2ac901d2b22d9559a220e74d16c0bf6d3917e410c565aed496 +1 -0
  5. package/.angular/cache/19.2.26/ng-packagr/tsbuildinfo/inspark-widget-common.tsbuildinfo +1 -0
  6. package/.editorconfig +13 -0
  7. package/.eslintrc.json +28 -0
  8. package/README.md +27 -0
  9. package/angular.json +46 -0
  10. package/e2e/protractor.conf.js +28 -0
  11. package/e2e/src/app.e2e-spec.ts +14 -0
  12. package/e2e/src/app.po.ts +11 -0
  13. package/e2e/tsconfig.e2e.json +13 -0
  14. package/package.json +75 -0
  15. package/projects/widget-common/copy.json +8 -0
  16. package/projects/widget-common/karma.conf.js +31 -0
  17. package/projects/widget-common/ng-package.json +7 -0
  18. package/projects/widget-common/package-lock.json +78 -0
  19. package/projects/widget-common/package.json +23 -0
  20. package/projects/widget-common/src/assets/error.svg +6 -0
  21. package/projects/widget-common/src/assets/falsevalue.svg +6 -0
  22. package/projects/widget-common/src/assets/icon.svg +6 -0
  23. package/projects/widget-common/src/assets/none.svg +6 -0
  24. package/projects/widget-common/src/assets/success.svg +6 -0
  25. package/projects/widget-common/src/assets/warning.svg +6 -0
  26. package/projects/widget-common/src/lib/common.ts +23 -0
  27. package/projects/widget-common/src/lib/communication.service.ts +59 -0
  28. package/projects/widget-common/src/lib/echart/echart.component.html +2 -0
  29. package/projects/widget-common/src/lib/echart/echart.component.scss +40 -0
  30. package/projects/widget-common/src/lib/echart/echart.component.ts +703 -0
  31. package/projects/widget-common/src/lib/echart/en.ts +156 -0
  32. package/projects/widget-common/src/lib/echart/ru.ts +156 -0
  33. package/projects/widget-common/src/lib/forge/ParamAssign.ts +187 -0
  34. package/projects/widget-common/src/lib/forge/Script.service.ts +86 -0
  35. package/projects/widget-common/src/lib/forge/extenstion.ts +263 -0
  36. package/projects/widget-common/src/lib/forge/forge.component.html +2 -0
  37. package/projects/widget-common/src/lib/forge/forge.component.scss +6 -0
  38. package/projects/widget-common/src/lib/forge/forge.component.ts +184 -0
  39. package/projects/widget-common/src/lib/forge/forge.interface.ts +4 -0
  40. package/projects/widget-common/src/lib/loader.ts +19 -0
  41. package/projects/widget-common/src/lib/pie-chart/pie-chart.component.html +1 -0
  42. package/projects/widget-common/src/lib/pie-chart/pie-chart.component.scss +3 -0
  43. package/projects/widget-common/src/lib/pie-chart/pie-chart.component.ts +252 -0
  44. package/projects/widget-common/src/lib/shared.module.ts +40 -0
  45. package/projects/widget-common/src/lib/sprintf.ts +212 -0
  46. package/projects/widget-common/src/lib/widget-container/widget-container.component.ts +53 -0
  47. package/projects/widget-common/src/lib/widget.api.ts +24 -0
  48. package/projects/widget-common/src/lib/widget.component.ts +87 -0
  49. package/projects/widget-common/src/lib/widget.dialog.ts +14 -0
  50. package/projects/widget-common/src/lib/widget.generator.ts +1532 -0
  51. package/projects/widget-common/src/lib/widget.interface.ts +871 -0
  52. package/projects/widget-common/src/lib/widget.utils.ts +634 -0
  53. package/projects/widget-common/src/public_api.ts +9 -0
  54. package/projects/widget-common/src/scss/main.scss +24 -0
  55. package/projects/widget-common/src/test.ts +22 -0
  56. package/projects/widget-common/tsconfig.lib.json +38 -0
  57. package/projects/widget-common/tsconfig.lib.prod.json +6 -0
  58. package/projects/widget-common/tsconfig.spec.json +17 -0
  59. package/projects/widget-common/tslint.json +17 -0
  60. package/projects/widget-common/versions/full/copy.json +15 -0
  61. package/projects/widget-common/versions/full/package.json +7 -0
  62. package/projects/widget-common/versions/full/public_api.ts +19 -0
  63. package/projects/widget-common/versions/interfaces/copy.json +15 -0
  64. package/projects/widget-common/versions/interfaces/package.json +7 -0
  65. package/projects/widget-common/versions/interfaces/public_api.ts +9 -0
  66. package/src/app/app.component.html +20 -0
  67. package/src/app/app.component.scss +0 -0
  68. package/src/app/app.component.spec.ts +31 -0
  69. package/src/app/app.component.ts +10 -0
  70. package/src/app/app.module.ts +16 -0
  71. package/src/assets/.gitkeep +0 -0
  72. package/src/browserslist +11 -0
  73. package/src/environments/environment.prod.ts +3 -0
  74. package/src/environments/environment.ts +16 -0
  75. package/src/favicon.ico +0 -0
  76. package/src/index.html +14 -0
  77. package/src/karma.conf.js +31 -0
  78. package/src/main.ts +12 -0
  79. package/src/polyfills.ts +80 -0
  80. package/src/styles.scss +1 -0
  81. package/src/test.ts +20 -0
  82. package/src/tsconfig.app.json +11 -0
  83. package/src/tsconfig.spec.json +18 -0
  84. package/src/tslint.json +17 -0
  85. package/tsconfig.json +34 -0
  86. package/tslint.json +131 -0
  87. package/update_full.js +27 -0
@@ -0,0 +1,871 @@
1
+ export enum ITEM_TYPE {
2
+ 'single' = 1, // Единичные значения параметров
3
+ 'series' = 2, // Ряды данных
4
+ 'events' = 3, // Лента событий
5
+ 'sysinfo' = 4, // Системные событий
6
+ 'interval' = 5, // Значения параметров на заданном интервале
7
+ 'table' = 6, // Таблица значений параметров
8
+ 'custom' = 7, // Поле не требующее обработки сервера
9
+ 'object' = 8, // Объект
10
+ 'objstate' = 9, // Объект
11
+ 'liftinfo' = 10, // Классификатор + объекты
12
+ }
13
+
14
+ // нет контроля, норма, отклонение, критическое, хз todo Скорей всего нужно перенести в css
15
+ export const STATE_COLORS = ['#FFFAFA', '#00e4c8', '#ffd452', '#c95e46', '#f71800', '#008B8B', '#5F9EA0'];
16
+
17
+ // Типы параметров
18
+ export enum PARAM_TYPE {
19
+ 'signal' = 1, // сигнальный
20
+ 'value' = 2, // мгновенное значение
21
+ 'increment' = 3, // нарастающий итог
22
+ 'pulse_counter' = 4, // счетчик импульсов
23
+ 'string' = 5, // строковый
24
+ 'image' = 6, // изображение
25
+ 'text' = 7, // текстовый
26
+ 'coordinates' = 8, // Координаты
27
+
28
+ 'custom_string' = 11,
29
+ 'custom_archer' = 12,
30
+ 'custom_external' = 13, // загрузка параметров через внешний файл
31
+ 'custom_file' = 14, // загрузка файлов
32
+ 'custom_json' = 15, // Текст JSON
33
+ 'custom_select' = 16, // Список
34
+ 'custom_forge' = 17, // Работа с Autodesk Forge
35
+ 'custom_dashboard' = 18,
36
+ 'custom_objstate' = 19,
37
+ 'custom_fuxa' = 20,
38
+
39
+
40
+ // группа виртуальных объектов для работы конфигуратора
41
+ 'virtual_object' = 90,
42
+
43
+ }
44
+
45
+ export const PARAM_TYPE_ITOS = {
46
+ 1: 'param_type_signal',
47
+ 2: 'param_type_value',
48
+ 3: 'param_type_increment'
49
+ };
50
+
51
+ // Типы значений
52
+ export enum VALUE_TYPE {
53
+ 'absolute' = 1,
54
+ 'relative' = 2,
55
+ 'signal' = 3,
56
+ 'increment' = 4,
57
+ }
58
+
59
+
60
+ // Возможные пересечения типа параметров и типа значения
61
+ export const INTERVAL_PARAM_VALUE = {
62
+ [PARAM_TYPE.signal]: [VALUE_TYPE.signal],
63
+ [PARAM_TYPE.value]: [VALUE_TYPE.absolute, VALUE_TYPE.relative],
64
+ [PARAM_TYPE.increment]: [VALUE_TYPE.absolute, VALUE_TYPE.relative, VALUE_TYPE.increment]
65
+ };
66
+
67
+ export const SINGLE_PARAM_VALUE = {
68
+ [PARAM_TYPE.signal]: [VALUE_TYPE.signal],
69
+ [PARAM_TYPE.value]: [VALUE_TYPE.absolute, VALUE_TYPE.relative],
70
+ [PARAM_TYPE.increment]: [VALUE_TYPE.absolute, VALUE_TYPE.relative]
71
+ };
72
+
73
+
74
+ export interface Border {
75
+ state: { id: number, name: string, color: string, comment: string };
76
+ intervals: { from: number, to: number }[];
77
+ }
78
+
79
+
80
+ export interface ItemSingle extends IWidgetParam<ParamConfigSingle> {
81
+ value: any;
82
+ data: SingleValue;
83
+ }
84
+
85
+ export interface ItemInterval extends IWidgetParam<ParamConfigInterval> {
86
+ value: any;
87
+ data: IntervalValue;
88
+ }
89
+
90
+ export interface ItemSysInfo extends IWidgetParam<ParamConfigSysInfo> {
91
+ data: SysInfoValue;
92
+ }
93
+
94
+ export interface ItemLiftInfo extends IWidgetParam<ParamConfigLiftInfo> {
95
+ data: LiftInfoValue;
96
+ }
97
+
98
+ export interface ItemSeries extends IWidgetParam<ParamConfigSeries> {
99
+ value: any;
100
+ data: SeriesValue;
101
+ }
102
+
103
+ export interface ItemTable extends IWidgetParam {
104
+ values: TableValues;
105
+ }
106
+
107
+ export interface ItemCustom extends IWidgetParam<ParamConfigCustom> {
108
+ value: any;
109
+ files?: any; // For Archer
110
+ }
111
+
112
+ export interface ItemParent {
113
+ [k: string]: WidgetItem | WidgetItem[] | ParamConfig;
114
+ }
115
+
116
+ export type WidgetItem = any | ItemSingle | ItemTable | ItemSeries | ItemInterval | ItemParent
117
+ | EventValues | SysInfoValue | ObjStateValues | LiftInfoValue;
118
+
119
+ export interface WidgetItems {
120
+ [k: string]: WidgetItem;
121
+ }
122
+
123
+
124
+ export enum SiteTheme {
125
+ 'dark' = 'dark',
126
+ 'light' = 'light'
127
+ }
128
+
129
+
130
+ export type IWidgetParamTable<TConfig = any> = IWidgetParam<TConfig>[][];
131
+
132
+ // структура для конфигуратора
133
+ export interface ParamConfigurator<TConfig = any> {
134
+ name: string;
135
+ title: string;
136
+ itemType: ITEM_TYPE;
137
+ paramType: PARAM_TYPE;
138
+ value?: IWidgetParam<TConfig>; // Для обычных значений
139
+ values?: IWidgetParamTable<TConfig>; // Для табличных значений
140
+ items?: ParamConfigurator[];
141
+ isArray?: boolean;
142
+ maxItems?: number;
143
+ parent: ParamConfigurator;
144
+ views?: string[]; // Варианты представлений параметра
145
+ viewConfig?: IWidgetParamConfig;
146
+ config?: ParamConfigInterval | ParamConfigSeries | ParamConfigSingle | ParamConfigEvents | ParamConfigCustom;
147
+ filter?: any;
148
+ generateConfig?: GenerateConfig;
149
+ param?: WidgetParamChildren;
150
+ }
151
+
152
+ export interface GenerateConfig extends GenerateConfigItem {
153
+ count?: number;
154
+ items?: GenerateConfigItem[];
155
+ pictureId?: boolean;
156
+
157
+ // Для таблиц
158
+ columns?: number;
159
+ rows?: number;
160
+ visibleRow?: boolean;
161
+ visibleCol?: boolean;
162
+
163
+
164
+ // Для событий
165
+ duration?: SeriesDuration;
166
+ }
167
+
168
+ export interface GenerateConfigItem {
169
+ // Для всех параметров
170
+ pageLink?: boolean;
171
+ editable?: boolean;
172
+ data?: boolean;
173
+ param?: boolean;
174
+ locked?: boolean;
175
+ isIcon?: boolean;
176
+ iconSet?: boolean;
177
+ title?: string;
178
+ view?: string; // Тип отображения
179
+ isWorkingDevice?: boolean;
180
+ state?: number;
181
+ ctrability?: boolean;
182
+ value?: any;
183
+
184
+
185
+ // Для мгновенных
186
+ borders?: boolean;
187
+
188
+ // Для кастомных
189
+ paragraphCount?: number;
190
+
191
+
192
+ // устроства
193
+ isOnline?: boolean;
194
+
195
+ // Для арчера
196
+ files?: { [k: string]: string };
197
+ archer?: any;
198
+
199
+ // для списка
200
+ selectValue?: number | string;
201
+ }
202
+
203
+ // @ts-ignore
204
+ export enum PARAM_STATE {
205
+ 'falsevalue' = -1,
206
+ 'none' = 0,
207
+ 'success' = 1,
208
+ 'warning' = 2,
209
+ 'error' = 3,
210
+ 'maintenance' = 4,
211
+
212
+ }
213
+
214
+ export const PARAM_STATE_INT = [];
215
+
216
+ PARAM_STATE_INT['-1'] = 'falsevalue';
217
+ PARAM_STATE_INT[0] = 'none';
218
+ PARAM_STATE_INT[1] = 'success';
219
+ PARAM_STATE_INT[2] = 'warning';
220
+ PARAM_STATE_INT[3] = 'error';
221
+ PARAM_STATE_INT[4] = 'maintenance';
222
+
223
+
224
+ export interface IWidgetDeviceParam {
225
+ controller?: { id: number, serialnumber: string, isOnline?: boolean };
226
+ object?: { id: number, shortname: string, fullname: string, timezone: number, latitude: number, longitude: number };
227
+ param: IWidgetDeviceParamData;
228
+ zone?: { id: number; name: string };
229
+ room?: { id: number; name: string };
230
+ unit?: { id: number; name: string };
231
+ classifier?: { id: number; name: string };
232
+ isWorking?: boolean;
233
+ state?: { id?: number, name?: string, comment?: string };
234
+ sysState?: {
235
+ comment: string;
236
+ id: number;
237
+ color: string;
238
+ name: string
239
+ };
240
+ }
241
+
242
+ export interface IWidgetDeviceParamData {
243
+ id?: number;
244
+ calc?: boolean;
245
+ name?: string;
246
+ type?: PARAM_TYPE;
247
+ value?: any;
248
+ valueDate?: string;
249
+ measure?: IWidgetDeviceParamMeasure;
250
+ ctrability?: boolean;
251
+ }
252
+
253
+ export interface IWidgetDeviceParamMeasure {
254
+ title: string;
255
+ unit: string;
256
+ id: number;
257
+ icon: IWidgetIconInfo;
258
+ }
259
+
260
+ // Структура для хранения информации о параметры для виджетов
261
+ export interface IWidgetParam<TConfig = any> {
262
+ id?: number;
263
+ device: IWidgetDeviceParam;
264
+ calc?: boolean;
265
+ widgetId: number;
266
+ refName: string;
267
+ itemType: ITEM_TYPE;
268
+ paramType?: PARAM_TYPE;
269
+ title: string;
270
+ config: TConfig;
271
+ filter?: any;
272
+ viewConfig?: IWidgetParamConfig;
273
+ icons?: {
274
+ falsevalue: string;
275
+ none: string;
276
+ success: string;
277
+ warning: string;
278
+ error: string;
279
+ };
280
+ files?: any;
281
+ custom?: any;
282
+ custom_data?: any;
283
+ borders?: Border[];
284
+ dashboardLink?: { dashname?: string, id?: number };
285
+ isEditing?: boolean; // Параметр, обозначающий, что поле редактируется
286
+ canEditable?: boolean; // Может ли параметр редактироваться
287
+ }
288
+
289
+ export type ColumnWidthType = 'auto' | 'fit-content' | 'fix';
290
+
291
+ export type ColumnSizeUnity = 'px' | '%';
292
+
293
+ export interface IRowConfig {
294
+ name: string;
295
+ }
296
+
297
+ export interface IColConfig {
298
+ name: string;
299
+ widthType?: ColumnWidthType;
300
+ size?: { value: number; unit: ColumnSizeUnity };
301
+ }
302
+
303
+ export interface IWidgetParamConfig {
304
+ formatValue?: string;
305
+ view?: string;
306
+ /**
307
+ * @deprecated Use table.rowConfig
308
+ */
309
+ rows?: number;
310
+ /**
311
+ * @deprecated Use table.rowConfig
312
+ */
313
+ cols?: number;
314
+ /**
315
+ * @deprecated Use table.rowConfig
316
+ */
317
+ rowsName?: string[]; // @deprecated
318
+ /**
319
+ * @deprecated Use table.colConfig
320
+ */
321
+ colsName?: string[]; // @deprecated
322
+ /**
323
+ * @deprecated Use table.visibleRow
324
+ */
325
+ visibleRow?: boolean; // @deprecated
326
+ /**
327
+ * @deprecated Use table.visibleCol
328
+ */
329
+ visibleCol?: boolean; // @deprecated
330
+ table?: {
331
+ rowConfig?: IRowConfig[];
332
+ colConfig?: IColConfig[];
333
+ visibleRow?: boolean;
334
+ visibleCol?: boolean;
335
+ rows?: number;
336
+ cols?: number;
337
+ };
338
+ files?: { [k: string]: any };
339
+ selectValue?: number | string;
340
+
341
+ name?: string; // Для хранение внутреннего названия
342
+ }
343
+
344
+
345
+ export enum SeriesDuration {
346
+ 'day' = 'day',
347
+ 'week' = 'week',
348
+ 'month' = 'month'
349
+ }
350
+
351
+ // Тип ленты событий
352
+ export enum LineType {
353
+ 'eventlog' = 1,
354
+ 'setvaluelog' = 2,
355
+ 'commandlog' = 3
356
+ }
357
+
358
+
359
+ export enum ChartTypes {
360
+ 'lineChart' = 'lineChart',
361
+ 'candlestickBarChart' = 'candlestickBarChart',
362
+ 'stackedAreaChart' = 'stackedAreaChart',
363
+ 'histogramChart' = 'histogramChart',
364
+ 'pieChart' = 'pieChart',
365
+ 'intervalPieChart' = 'intervalPieChart'
366
+ }
367
+
368
+ export enum ChartViews {
369
+ 'lineChart' = 'lineChart',
370
+ 'lineWeekend' = 'lineWeekend',
371
+ 'candlestickBarChart' = 'candlestickBarChart',
372
+ 'stackedAreaChart' = 'stackedAreaChart',
373
+ 'histogramChart' = 'histogramChart',
374
+ 'pieChart' = 'pieChart',
375
+ }
376
+
377
+
378
+ export const ChartViewToType = {
379
+ [ChartViews.lineChart]: ChartTypes.lineChart,
380
+ [ChartViews.candlestickBarChart]: ChartTypes.candlestickBarChart,
381
+ [ChartViews.stackedAreaChart]: ChartTypes.stackedAreaChart,
382
+ [ChartViews.histogramChart]: ChartTypes.histogramChart,
383
+ [ChartViews.lineWeekend]: ChartTypes.lineChart,
384
+ };
385
+
386
+ export const ChartTypeToView = {
387
+ [ChartTypes.lineChart]: ChartViews.lineChart,
388
+ [ChartTypes.candlestickBarChart]: ChartViews.candlestickBarChart,
389
+ [ChartTypes.stackedAreaChart]: ChartViews.stackedAreaChart,
390
+ [ChartTypes.histogramChart]: ChartViews.histogramChart,
391
+ [ChartTypes.lineChart]: ChartViews.lineWeekend,
392
+ };
393
+
394
+ export interface ParamConfigSingle {
395
+ valueType?: number;
396
+ }
397
+
398
+
399
+ export interface ParamConfigInterval {
400
+ dailyRange: string;
401
+ stateMap: boolean;
402
+ valueType: number;
403
+ duration: SeriesDuration;
404
+ count: number;
405
+ }
406
+
407
+
408
+ export interface ParamConfigSeries {
409
+ duration?: SeriesDuration; // временной интервал
410
+ count?: number; // смещение временного интервала от текущей даты в единицах <duration> (1 day, 2 week ...)
411
+ charttype?: ChartTypes;
412
+ viewtype?: ChartViews;
413
+ generator?: boolean;
414
+ }
415
+
416
+ export interface ParamConfigEvents {
417
+ lineType?: number; // События, команды, уставки
418
+ attrList?: string[]; // Список и относительное расположение выдаваемых атрибутов
419
+ titleList?: string[]; // Список и относительное расположение заголовков выдаваемых атрибутов
420
+ objectIds?: string[]; // Идентификаторы объектов
421
+ eventIds?: string[]; // Идентификаторы событий
422
+ commands?: string[]; // Идентификаторы команд
423
+
424
+ // Можно использовать либо этот параметр
425
+ size?: number; // Максимальное количество выдаваемых строк в ленте
426
+
427
+ // Либо этот
428
+ duration?: SeriesDuration; // временной интервал
429
+ }
430
+
431
+ export interface ParamConfigObjState {
432
+ rubricId: number;
433
+ }
434
+
435
+
436
+ export interface ParamConfigCustom {
437
+ value?: string;
438
+ type?: PARAM_TYPE;
439
+ }
440
+
441
+ export interface ParamConfigSysInfo {
442
+ rubricId: number;
443
+ }
444
+
445
+ export interface ParamConfigLiftInfo {
446
+ deviceClassifierId: number;
447
+ objectIds: number[];
448
+ }
449
+
450
+ export type ParamConfig =
451
+ ParamConfigInterval
452
+ | ParamConfigSeries
453
+ | ParamConfigSingle
454
+ | ParamConfigEvents
455
+ | ParamConfigCustom
456
+ | ParamConfigSysInfo
457
+ | ParamConfigLiftInfo;
458
+
459
+
460
+ /**
461
+ значение - value
462
+ карта состояний - states
463
+ карта значений - value
464
+ */
465
+ export interface SingleValue {
466
+ id?: number;
467
+ locked: boolean;
468
+ manually: boolean;
469
+ date: number;
470
+ value: any;
471
+ state: ParamState;
472
+ unit: { id: number, name: string, available: boolean, unavailabilityDate: number };
473
+ isProcessing?: boolean;
474
+ }
475
+
476
+
477
+ /**
478
+ среднее значение - value
479
+ минимальное значение - min
480
+ максимальное значение - max
481
+ карта состояний - states
482
+ среднее абсолютное значение - value
483
+ среднее относительное значение – percent
484
+ последнее абсолютное значение - value
485
+ последнее относительное значение - percent
486
+ */
487
+ export interface IntervalValue {
488
+ value: number; // числовое значение, либо 1,0
489
+ percent: number; // relative и increment
490
+ min: number; // absolute
491
+ max: number; // absolute
492
+ states: ParamStates[]; // absolute signal
493
+ state: ParamState;
494
+ beginInterval: number;
495
+ endInterval: number;
496
+ switchCount: number; // signal
497
+ valueMap: Array<{ interval: number; value: number }>;
498
+ }
499
+
500
+ export interface ControllersInfo {
501
+ total: number;
502
+ online: number;
503
+ offline: number;
504
+ }
505
+
506
+ export interface LiftsInfo {
507
+ total: number;
508
+ online: number;
509
+ offline: number;
510
+ }
511
+
512
+ export interface SysInfoValue {
513
+ date: number;
514
+ controllersInfo: ControllersInfo;
515
+ }
516
+
517
+ export interface LiftInfoValue {
518
+ date: number;
519
+ liftsInfo: LiftsInfo;
520
+ }
521
+
522
+
523
+ export type SeriesValue = Array<SeriesCandleValue | SeriesLineValue>;
524
+
525
+ // График свечек
526
+ export interface SeriesCandleValue {
527
+ close: number;
528
+ high: number;
529
+ low: number;
530
+ open: number;
531
+ timestmp: number;
532
+ }
533
+
534
+ // Все остальные графики
535
+ export interface SeriesLineValue {
536
+ value: number;
537
+ timestmp: number;
538
+ }
539
+
540
+ export type TableValues = Array<Array<ItemSingle>>;
541
+
542
+ // События
543
+
544
+ export interface CustomValue {
545
+ value: string;
546
+ }
547
+
548
+ /**
549
+ * Интерфейс для ленты событий с типом 1
550
+ */
551
+ export interface EventValue {
552
+ shortname: string;
553
+ serialnumber: string;
554
+ eventid: number;
555
+ name: string;
556
+ timestmp: number;
557
+ msg: string;
558
+ }
559
+
560
+ export interface EventValues {
561
+ data: {
562
+ rowList: Array<EventValue>;
563
+ };
564
+ config: ParamConfigEvents;
565
+ }
566
+
567
+ export interface ObjStateValuesState {
568
+ id: number;
569
+ name: string;
570
+ count: number;
571
+ }
572
+
573
+ export interface ObjStateValues {
574
+ data: {
575
+ date: number;
576
+ states: ObjStateValuesState[];
577
+ };
578
+ config: ParamConfigObjState;
579
+ }
580
+
581
+ // У корневых элементов необходимо указать item_type
582
+ export interface WidgetParam {
583
+ title: string;
584
+ item_type: ITEM_TYPE;
585
+ param_type?: PARAM_TYPE;
586
+ items?: WidgetParamsChildren | WidgetParamsChildren[] | WidgetParamChildren[];
587
+ views?: string[]; // Перечисление возможных видов параметра
588
+ available?: any[]; // Ограничение для генератора случайных чисел
589
+ custom_data?: any; // Пользовательские данные, которые пробрасываются напрямую
590
+ }
591
+
592
+ export interface WidgetParamChildren {
593
+ title?: string;
594
+ item_type?: ITEM_TYPE;
595
+ param_type?: PARAM_TYPE;
596
+ items?: WidgetParamsChildren | WidgetParamsChildren[] | WidgetParamChildren[];
597
+ views?: string[]; // Перечисление возможных видов параметра
598
+ available?: any[]; // Ограничение для генератора случайных чисел
599
+ custom_data?: any; // Пользовательские данные, которые пробрасываются напрямую
600
+ viewConfig?: IWidgetParamConfig;
601
+ max?: number;
602
+ }
603
+
604
+ export interface WidgetArrayParam {
605
+ max?: number;
606
+ item_type?: ITEM_TYPE;
607
+ param_type?: PARAM_TYPE;
608
+ }
609
+
610
+ export interface WidgetParamsChildren {
611
+ [k: string]: WidgetParamChildren;
612
+ }
613
+
614
+ export interface WidgetParams {
615
+ [k: string]: WidgetParam;
616
+ }
617
+
618
+ export interface WidgetSizePosition {
619
+ x?: number;
620
+ y?: number;
621
+ w: number;
622
+ h: number;
623
+ }
624
+
625
+ export enum WidgetCustomFieldType {
626
+ boolean,
627
+ dashboardLink,
628
+ string
629
+ }
630
+
631
+ export interface WidgetCustomField {
632
+ name: string;
633
+ type: WidgetCustomFieldType;
634
+ }
635
+
636
+ export interface WidgetSize {
637
+ sm: WidgetSizePosition;
638
+ lg: WidgetSizePosition;
639
+ slg?: WidgetSizePosition;
640
+ mobile: WidgetSizePosition;
641
+ }
642
+
643
+ export interface ParamState {
644
+ color: string;
645
+ comment: string;
646
+ idIcon: number;
647
+ }
648
+
649
+ export interface ParamStates {
650
+ interval: number;
651
+ state: {
652
+ id: number;
653
+ name: string;
654
+ color: string;
655
+ comment: string;
656
+ };
657
+ }
658
+
659
+ // В коде конфиг ввиде объекта
660
+ export interface IWidget<TDashboard = ServiceDashboardClass> {
661
+ id?: number;
662
+ widgetclass: IWidgetClass;
663
+ dashboard: TDashboard;
664
+ title: string;
665
+ conflict?: boolean;
666
+ hidden?: boolean;
667
+ config?: IWidgetConfig;
668
+ path?: string; // Путь при загрузке виджета(для дашей которые загружаются в дашах)
669
+ /**
670
+ * Format: int32
671
+ * @description Порядок размещения в рамках одного дашборда (порядок загрузки)
672
+ */
673
+ placement?: number;
674
+ /**
675
+ * Format: date-time
676
+ * @description Дата конфигурирования
677
+ */
678
+ configdate?: string;
679
+ /**
680
+ * Format: int32
681
+ * @description Координата X начального положения конкретног виджета в сетке
682
+ */
683
+ posx?: number;
684
+ /**
685
+ * Format: int32
686
+ * @description Координата Y начального положения конкретног виджета в сетке
687
+ */
688
+ posy?: number;
689
+ /** @description Признак наличия конфликта, нужна ручная настройка */
690
+ /**
691
+ * Format: int32
692
+ * @description Ширина начального положения виджета в сетке
693
+ */
694
+ width?: number;
695
+ /**
696
+ * Format: int32
697
+ * @description Высота начального положения виджета в сетке
698
+ */
699
+ height?: number;
700
+ /** @description Настройки внутреннего представления виджета в формате json (например substitution, valformat) */
701
+ /**
702
+ * Format: date-time
703
+ * @description Дата создания записи
704
+ */
705
+ createdate?: string;
706
+ /**
707
+ * Format: date-time
708
+ * @description Дата последнего изменения записи
709
+ */
710
+ lastdate?: string;
711
+ icon?: IWidgetIconInfo;
712
+ }
713
+
714
+ export interface IWidgetIconInfo {
715
+ /**
716
+ * Format: int32
717
+ * @description Идентификатор иконки
718
+ */
719
+ id?: number;
720
+ /** @description Наименование иконки */
721
+ name?: string;
722
+ iconset?: IWidgetIconSetInfo;
723
+ /** @description Путь к файлу в локальном хранилище */
724
+ filepath?: string;
725
+ }
726
+
727
+ /** @description Набор изображений */
728
+ export interface IWidgetIconSetInfo {
729
+ /**
730
+ * Format: int32
731
+ * @description Идентификатор
732
+ */
733
+ id?: number;
734
+ /** @description Наименование */
735
+ name: string;
736
+ /**
737
+ * Format: int32
738
+ * @description Тип файлов, включаемых в набор (1 - иконка, 2 - картинка, 3 - видео)
739
+ */
740
+ imagetype: number;
741
+ }
742
+
743
+ export enum DashboardType {
744
+ WEB = 'WEB',
745
+ MOBILE = 'MOBILE',
746
+ ANALYTIC = 'ANALYTIC',
747
+ }
748
+
749
+ export interface ServiceDashboardClass<TConfig = string> {
750
+ /**
751
+ * Format: int32
752
+ * @description Идентификатор
753
+ */
754
+ id?: number;
755
+ /** @description Наименование */
756
+ dashname: string;
757
+ /** @description Признак скрытого дашборда (не показывается) */
758
+ hidden?: boolean;
759
+ objrubric: Objrubric;
760
+ /** @description Конфигурация для отображения дашборда (структура - ответственность клиента) */
761
+ config?: TConfig;
762
+ /**
763
+ * @description Тип дашборда, WEB - для ЛК, MOBILE - для мобильного клиента)
764
+ * @enum {string}
765
+ */
766
+ type: DashboardType;
767
+ icon?: IWidgetIconInfo;
768
+ }
769
+
770
+ export interface Objrubric {
771
+ id?: number;
772
+ shortname?: string;
773
+ fullname?: string;
774
+ comment?: string;
775
+ objrubric?: Objrubric;
776
+ }
777
+
778
+
779
+ export interface IWidgetConfig {
780
+ widget: {
781
+ picture?: {
782
+ setId?: number;
783
+ pictureId?: number
784
+ },
785
+ floatingHeader?: boolean;
786
+ };
787
+ position?: WidgetSize;
788
+ items: { [k: string]: IWidgetParamConfig };
789
+ }
790
+
791
+ export interface IWidgetClass {
792
+ id: number;
793
+ storeId?: string; // ссылка на файл
794
+ version?: string;
795
+ name?: string;
796
+ description?: string;
797
+ web?: boolean;
798
+ analytic?: boolean;
799
+ mobile?: boolean;
800
+ }
801
+
802
+ export interface SocketEventData {
803
+ refName: string;
804
+ rowList: EventValue[];
805
+ }
806
+
807
+ export interface SocketSingleData extends SingleValue {
808
+ refName: string;
809
+ }
810
+
811
+ export interface SocketIntervalData extends IntervalValue {
812
+ refName: string;
813
+ }
814
+
815
+ export type WidgetDataList = Array<SocketSingleData | SocketIntervalData | SocketEventData>;
816
+
817
+ export interface WidgetSocketData {
818
+ dataList: WidgetDataList;
819
+ exwidget: number;
820
+ }
821
+
822
+ export enum ControllerState {
823
+ ONLINE = 'ONLINE',
824
+ OFFLINE = 'OFFLINE',
825
+ }
826
+
827
+ export interface ControllerPayload {
828
+ controllerId: number;
829
+ state: ControllerState;
830
+ }
831
+
832
+ export interface WidgetSocketDataCommand {
833
+ command: string;
834
+ widgetDataList: WidgetSocketData[];
835
+ message?: string;
836
+ error?: string;
837
+ payload?: ControllerPayload | any;
838
+ }
839
+
840
+ export interface WidgetSocketAnalyticDataCommand {
841
+ cdpData: SingleValue | null;
842
+ ccpData: SingleValue | null;
843
+ }
844
+
845
+
846
+ export interface IWidgetFile {
847
+ name: string;
848
+ id: string;
849
+ parent: string;
850
+ content: any;
851
+ url: string;
852
+ error?: Error;
853
+ }
854
+
855
+ // Обертка для среды разработки
856
+ export const Component = (opts) => {
857
+ return (component) => {
858
+ return component;
859
+ };
860
+ };
861
+
862
+ export interface ModalOptions {
863
+ header: string;
864
+ width?: string;
865
+ }
866
+
867
+ export interface CustomSelectData {
868
+ items: Array<{ value: any, title: string }>;
869
+ defaultValue?: any;
870
+ required: true;
871
+ }