@flexem/fc-gui 3.0.0-alpha.123 → 3.0.0-alpha.125

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 (85) hide show
  1. package/bundles/@flexem/fc-gui.umd.js +2860 -1471
  2. package/bundles/@flexem/fc-gui.umd.js.map +1 -1
  3. package/bundles/@flexem/fc-gui.umd.min.js +4 -4
  4. package/bundles/@flexem/fc-gui.umd.min.js.map +1 -1
  5. package/communication/variable/variable-communicator.d.ts +2 -0
  6. package/config/alarm/get-alarms-args.d.ts +4 -1
  7. package/config/alarm/get-alarms-args.js +5 -1
  8. package/config/alarm/get-alarms-args.metadata.json +1 -1
  9. package/config/history-data/get-history-data-args.d.ts +14 -3
  10. package/config/history-data/get-history-data-args.js +5 -3
  11. package/config/history-data/get-history-data-args.metadata.json +1 -1
  12. package/elements/alarm/alarm-element.d.ts +28 -3
  13. package/elements/alarm/alarm-element.js +124 -14
  14. package/elements/alarm/alarm-element.metadata.json +1 -1
  15. package/elements/base/readable-element.js +14 -5
  16. package/elements/base/state-control-element.js +2 -2
  17. package/elements/historical-curve/historical-curve.element.d.ts +24 -2
  18. package/elements/historical-curve/historical-curve.element.js +180 -34
  19. package/elements/historical-curve/historical-curve.element.metadata.json +1 -1
  20. package/elements/main-element.js +12 -8
  21. package/elements/main-element.metadata.json +1 -1
  22. package/elements/numerical-display/numerical-display-element.d.ts +9 -2
  23. package/elements/numerical-display/numerical-display-element.js +22 -2
  24. package/elements/numerical-display/numerical-display-element.metadata.json +1 -1
  25. package/elements/scroll-alarm/scroll-alarm-element.d.ts +54 -0
  26. package/elements/scroll-alarm/scroll-alarm-element.js +517 -0
  27. package/elements/scroll-alarm/scroll-alarm-element.metadata.json +1 -0
  28. package/elements/shared/graph/graph-state-element.d.ts +0 -1
  29. package/elements/shared/graph/graph-state-element.js +1 -30
  30. package/elements/shared/graph/graph-state-element.metadata.json +1 -1
  31. package/elements/shared/text/text-element.d.ts +9 -0
  32. package/elements/shared/text/text-element.js +20 -0
  33. package/elements/shared/text/text-element.metadata.json +1 -1
  34. package/elements/shared/text/text-state-element.d.ts +25 -1
  35. package/elements/shared/text/text-state-element.js +100 -2
  36. package/elements/shared/text/text-state-element.metadata.json +1 -1
  37. package/elements/static-elements/hyperlink-element.d.ts +24 -2
  38. package/elements/static-elements/hyperlink-element.js +101 -3
  39. package/elements/static-elements/hyperlink-element.metadata.json +1 -1
  40. package/elements/static-elements/text-element.d.ts +23 -2
  41. package/elements/static-elements/text-element.js +96 -3
  42. package/elements/static-elements/text-element.metadata.json +1 -1
  43. package/elements/switch-indicator-light/switch-indicator-light-element.d.ts +10 -4
  44. package/elements/switch-indicator-light/switch-indicator-light-element.js +26 -25
  45. package/elements/switch-indicator-light/switch-indicator-light-element.metadata.json +1 -1
  46. package/elements/view-operation/view-operation.element.d.ts +23 -2
  47. package/elements/view-operation/view-operation.element.js +95 -1
  48. package/elements/view-operation/view-operation.element.metadata.json +1 -1
  49. package/gui/gui-context.d.ts +11 -2
  50. package/gui/gui-view.js +20 -4
  51. package/modal/write-value/write-value-modal-args.d.ts +3 -1
  52. package/modal/write-value/write-value-modal-args.js +2 -1
  53. package/modal/write-value/write-value-modal-args.metadata.json +1 -1
  54. package/modal/write-value/write-value-modal.component.d.ts +4 -0
  55. package/modal/write-value/write-value-modal.component.js +25 -0
  56. package/modal/write-value/write-value-modal.component.metadata.json +1 -1
  57. package/model/base/font-setting-model.d.ts +6 -0
  58. package/model/base/font-setting-model.metadata.json +1 -1
  59. package/model/historical-curve/historical-curve.data-settings.d.ts +18 -1
  60. package/model/historical-curve/historical-curve.data-settings.metadata.json +1 -1
  61. package/model/scroll-alarm/scroll-alarm.model.d.ts +21 -0
  62. package/model/scroll-alarm/scroll-alarm.model.js +0 -0
  63. package/model/scroll-alarm/scroll-alarm.model.metadata.json +1 -0
  64. package/model/switch-indicator-light/switch-indicator-light.d.ts +2 -0
  65. package/model/view-operation/view-operation-element.model.d.ts +7 -1
  66. package/package.json +1 -1
  67. package/public_api.js +1 -0
  68. package/remote/communication/variable/remote-variable-communicator.d.ts +15 -0
  69. package/remote/communication/variable/remote-variable-communicator.js +76 -2
  70. package/remote/communication/variable/remote-variable-communicator.metadata.json +1 -1
  71. package/service/index.d.ts +3 -0
  72. package/service/index.js +1 -0
  73. package/service/index.metadata.json +1 -1
  74. package/service/language.service.d.ts +37 -0
  75. package/service/language.service.js +0 -0
  76. package/service/language.service.metadata.json +1 -0
  77. package/service/system-text-library.service.d.ts +76 -0
  78. package/service/system-text-library.service.js +28 -0
  79. package/service/system-text-library.service.metadata.json +1 -0
  80. package/service/text-library.service.d.ts +49 -0
  81. package/service/text-library.service.js +0 -0
  82. package/service/text-library.service.metadata.json +1 -0
  83. package/shared/gui-consts.d.ts +1 -0
  84. package/shared/gui-consts.js +2 -1
  85. package/shared/gui-consts.metadata.json +1 -1
@@ -5,6 +5,7 @@ import * as nv from 'nvd3';
5
5
  import { GetHistoryDataArgs } from '../../config';
6
6
  import { HistoricalCurveTimeRange } from '../../config/history-data/historical-curve.time-range';
7
7
  import { LOCALIZATION } from '../../localization';
8
+ import { SYSTEM_TEXT_LIBRARY_TYPES, TIME_PERIOD_KEYS } from '../../service';
8
9
  import { ConditionalDisplayElement } from '../base/conditional-display-element';
9
10
  import { HistoricalCurveElementStatus } from './historical-curve-element-status';
10
11
  import { LOGGER_SERVICE_TOKEN } from '../../logger';
@@ -12,9 +13,12 @@ import { GlobalSettings, DisplayMode } from '../../settings';
12
13
  import { CurveType } from '../../model/historical-curve/curve-type';
13
14
  import { AxisRangeType } from '../../model/historical-curve/historical-curve-axis-settings';
14
15
  export class HistoricalCurveElement extends ConditionalDisplayElement {
15
- constructor(element, injector, permissionChecker, variableCommunicator, variableStore, historyDataStore, signalRAppId) {
16
+ constructor(element, injector, permissionChecker, variableCommunicator, variableStore, historyDataStore, signalRAppId, systemTextLibraryService, languageService, guiContext) {
16
17
  super(element, permissionChecker, variableCommunicator, variableStore, signalRAppId);
17
18
  this.historyDataStore = historyDataStore;
19
+ this.systemTextLibraryService = systemTextLibraryService;
20
+ this.languageService = languageService;
21
+ this.guiContext = guiContext;
18
22
  this.displayOption = {
19
23
  dataLimit: 500,
20
24
  dataZoomHeight: 32,
@@ -56,6 +60,8 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
56
60
  }
57
61
  this.loadFirstPage();
58
62
  this.initKeyboardListener();
63
+ // 订阅语种变化事件
64
+ this.subscribeLanguageChange();
59
65
  }
60
66
  dispose() {
61
67
  clearInterval(this.refreshIntervalId);
@@ -69,6 +75,11 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
69
75
  window.removeEventListener('native.keyboardshow', this.setNeedResize);
70
76
  window.removeEventListener('native.keyboardhide', this.setNeedResize);
71
77
  }
78
+ // 取消语种变化订阅
79
+ if (this.languageChangeSubscription) {
80
+ this.languageChangeSubscription.unsubscribe();
81
+ this.languageChangeSubscription = undefined;
82
+ }
72
83
  this.logger.debug(`[GUI]Dispose Histoical Curve Refresh Interval:${d3.time.format('%x %X')(new Date())}`);
73
84
  }
74
85
  initKeyboardListener() {
@@ -78,17 +89,84 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
78
89
  window.addEventListener('native.keyboardhide', this.setNeedResize);
79
90
  }
80
91
  }
92
+ /**
93
+ * 订阅语种变化事件
94
+ */
95
+ subscribeLanguageChange() {
96
+ if (this.guiContext && this.guiContext.languageChanged$) {
97
+ this.languageChangeSubscription = this.guiContext.languageChanged$.subscribe(() => {
98
+ // 只更新时间段选择器的文案,不重新查询数据
99
+ this.updateLanguageTexts();
100
+ });
101
+ }
102
+ }
103
+ /**
104
+ * 更新语种相关的文案(时间段选择器)
105
+ */
106
+ updateLanguageTexts() {
107
+ const selectElement = this.rootElement.select('select');
108
+ if (!selectElement.empty()) {
109
+ // 重新生成时间段数据
110
+ const updatedTimePeriods = this.getValidTimePeriods();
111
+ // 更新选项文本
112
+ const options = selectElement.selectAll('option');
113
+ options.each(function (_d, i) {
114
+ if (i < updatedTimePeriods.length) {
115
+ d3.select(this).text(updatedTimePeriods[i].name);
116
+ }
117
+ });
118
+ }
119
+ }
120
+ /**
121
+ * 获取当前语种的 culture 代码
122
+ */
123
+ getCurrentCulture() {
124
+ var _a, _b, _c, _e, _f, _g;
125
+ // 获取当前语种ID
126
+ const currentLanguageId = (_c = (_b = (_a = this.guiContext) === null || _a === void 0 ? void 0 : _a.getCurrentLanguageId) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : null;
127
+ // 确定要使用的语种代码(culture)
128
+ const defaultLanguage = ((_e = this.languageService) === null || _e === void 0 ? void 0 : _e.getDefaultLanguage()) || 'zh-CN';
129
+ if (currentLanguageId === null || currentLanguageId === undefined) {
130
+ // 设备未设置当前语种,使用默认语种
131
+ return defaultLanguage;
132
+ }
133
+ else {
134
+ // 设备已设置当前语种,获取对应的语种代码
135
+ const currentLanguage = (_g = (_f = this.guiContext) === null || _f === void 0 ? void 0 : _f.getLanguageCultureById) === null || _g === void 0 ? void 0 : _g.call(_f, currentLanguageId);
136
+ if (currentLanguage) {
137
+ return currentLanguage;
138
+ }
139
+ else {
140
+ // 无法获取语种代码,使用默认语种
141
+ return defaultLanguage;
142
+ }
143
+ }
144
+ }
81
145
  getValidTimePeriods() {
82
146
  const timePeriods = new Array();
83
- timePeriods.push({ key: 6, name: this.localization.lastThirtyMinutes });
84
- timePeriods.push({ key: 1, name: this.localization.lastOneHour });
85
- timePeriods.push({ key: 7, name: this.localization.lastEightHour });
86
- timePeriods.push({ key: 2, name: this.localization.lastTwentyFourHours });
87
- timePeriods.push({ key: 3, name: this.localization.lastSevenDays });
88
- timePeriods.push({ key: 4, name: this.localization.lastThirtyDays });
89
- timePeriods.push({ key: 5, name: this.localization.lastOneYear });
147
+ timePeriods.push({ key: 6, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_THIRTY_MINUTES) });
148
+ timePeriods.push({ key: 1, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_ONE_HOUR) });
149
+ timePeriods.push({ key: 7, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_EIGHT_HOURS) });
150
+ timePeriods.push({ key: 2, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_TWENTY_FOUR_HOURS) });
151
+ timePeriods.push({ key: 3, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_SEVEN_DAYS) });
152
+ timePeriods.push({ key: 4, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_THIRTY_DAYS) });
153
+ timePeriods.push({ key: 5, name: this.getTimePeriodText(TIME_PERIOD_KEYS.LAST_ONE_YEAR) });
90
154
  return timePeriods;
91
155
  }
156
+ /**
157
+ * 获取时间段文案(从系统文本库获取多语种翻译)
158
+ */
159
+ getTimePeriodText(textKey) {
160
+ const currentCulture = this.getCurrentCulture();
161
+ const systemType = SYSTEM_TEXT_LIBRARY_TYPES.COMPONENT_BUILTIN;
162
+ if (this.systemTextLibraryService) {
163
+ const translation = this.systemTextLibraryService.getSystemTextValue(systemType, textKey, currentCulture);
164
+ if (translation) {
165
+ return translation;
166
+ }
167
+ }
168
+ return '';
169
+ }
92
170
  updateTimeRange(timePeriodType) {
93
171
  this.currentTimePeriod = +timePeriodType;
94
172
  this.updateQueryTimeRange();
@@ -127,30 +205,50 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
127
205
  if (!this.model.dataSetting) {
128
206
  return;
129
207
  }
130
- const dataItemName = this.model.dataSetting.dataName;
131
208
  const dataSourceCode = this.model.dataSetting.dataSourceCode;
132
- const channelNames = this.model.dataSetting.channels.map(c => c.name);
133
209
  this.updateElementStatus(HistoricalCurveElementStatus.Loading);
134
- const input = new GetHistoryDataArgs(dataSourceCode, dataItemName, channelNames, startTime, endTime, limit, rangeType);
135
- this.historyDataStore.getHistoryData(input).subscribe(result => {
136
- if (result.error) {
137
- this.updateElementStatus(HistoricalCurveElementStatus.LoadFailed, result.error);
210
+ // 【新格式】如果有多条目配置,使用多条目查询
211
+ if (this.model.dataSetting.dataItems && this.model.dataSetting.dataItems.length > 0) {
212
+ const historyDataItems = this.model.dataSetting.dataItems.map(item => ({
213
+ dataItemName: item.dataName,
214
+ channelNames: item.channels.map(c => c.name)
215
+ }));
216
+ // 使用第一个条目的信息作为兼容参数
217
+ const firstItem = this.model.dataSetting.dataItems[0];
218
+ const input = new GetHistoryDataArgs(dataSourceCode, firstItem.dataName, firstItem.channels.map(c => c.name), startTime, endTime, limit, rangeType, historyDataItems // 传递多条目参数
219
+ );
220
+ this.historyDataStore.getHistoryData(input).subscribe(result => {
221
+ this.handleQueryResult(result);
222
+ });
223
+ }
224
+ // 【旧格式】单条目模式
225
+ else {
226
+ const dataItemName = this.model.dataSetting.dataName;
227
+ const channelNames = this.model.dataSetting.channels.map(c => c.name);
228
+ const input = new GetHistoryDataArgs(dataSourceCode, dataItemName, channelNames, startTime, endTime, limit, rangeType);
229
+ this.historyDataStore.getHistoryData(input).subscribe(result => {
230
+ this.handleQueryResult(result);
231
+ });
232
+ }
233
+ }
234
+ handleQueryResult(result) {
235
+ if (result.error) {
236
+ this.updateElementStatus(HistoricalCurveElementStatus.LoadFailed, result.error);
237
+ }
238
+ else {
239
+ this.clearStatus();
240
+ if (result.isUnbind) {
241
+ this.updateElementStatus(HistoricalCurveElementStatus.Unbound);
138
242
  }
139
243
  else {
140
- this.clearStatus();
141
- if (result.isUnbind) {
142
- this.updateElementStatus(HistoricalCurveElementStatus.Unbound);
143
- }
144
- else {
145
- this.updateElementStatus(HistoricalCurveElementStatus.Normal);
146
- }
147
- if (result.values.length) {
148
- this.currentStartTime = moment(first(result.values).time);
149
- this.currentEndTime = moment(last(result.values).time);
150
- }
151
- this.chartElement = this.renderChart(result.values);
244
+ this.updateElementStatus(HistoricalCurveElementStatus.Normal);
152
245
  }
153
- });
246
+ if (result.values.length) {
247
+ this.currentStartTime = moment(first(result.values).time);
248
+ this.currentEndTime = moment(last(result.values).time);
249
+ }
250
+ this.chartElement = this.renderChart(result.values);
251
+ }
154
252
  }
155
253
  setupTooltipAutoHide(chart) {
156
254
  const chartContainer = this.rootElement.select('.nv-focus').node();
@@ -178,11 +276,31 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
178
276
  const chartWidth = this.model.displaySetting.size.width;
179
277
  const chartHeight = this.model.displaySetting.size.height - this.displayOption.operationAreaHeight - this.displayOption.operationAreaMarginTop;
180
278
  const data = new Array();
181
- each(this.model.dataSetting.channels, (channel, key) => {
182
- const values = new Array();
183
- each(result, v => values.push({ x: moment(v.time).local().toDate().valueOf(), y: v.values[key] }));
184
- data.push({ key: channel.name, area: channel.projectEnabled, values: values });
185
- });
279
+ // 【新格式】多条目模式:曲线名称使用"条目名-通道名"格式
280
+ if (this.model.dataSetting.dataItems && this.model.dataSetting.dataItems.length > 0) {
281
+ let channelIndex = 0;
282
+ each(this.model.dataSetting.dataItems, dataItem => {
283
+ each(dataItem.channels, channel => {
284
+ const values = new Array();
285
+ each(result, v => values.push({ x: moment(v.time).local().toDate().valueOf(), y: v.values[channelIndex] }));
286
+ // 使用"条目名-通道名"格式
287
+ const displayName = `${dataItem.dataName}-${channel.name}`;
288
+ data.push({ key: displayName, area: channel.projectEnabled, values: values });
289
+ channelIndex++;
290
+ });
291
+ });
292
+ }
293
+ // 【旧格式】单条目模式:同样使用"条目名-通道名"格式
294
+ else {
295
+ const dataItemName = this.model.dataSetting.dataName;
296
+ each(this.model.dataSetting.channels, (channel, key) => {
297
+ const values = new Array();
298
+ each(result, v => values.push({ x: moment(v.time).local().toDate().valueOf(), y: v.values[key] }));
299
+ // 使用"条目名-通道名"格式
300
+ const displayName = `${dataItemName}-${channel.name}`;
301
+ data.push({ key: displayName, area: channel.projectEnabled, values: values });
302
+ });
303
+ }
186
304
  this.data = data;
187
305
  nv.addGraph(() => {
188
306
  let chart;
@@ -203,8 +321,22 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
203
321
  .find('.nv-legend')
204
322
  .find('.nv-series');
205
323
  let hiddenCount = 0;
324
+ // 获取所有通道(支持多条目和单条目模式)
325
+ const allChannels = [];
326
+ if (this.model.dataSetting.dataItems && this.model.dataSetting.dataItems.length > 0) {
327
+ // 【新格式】多条目模式:收集所有条目的所有通道
328
+ each(this.model.dataSetting.dataItems, dataItem => {
329
+ each(dataItem.channels, channel => {
330
+ allChannels.push(channel);
331
+ });
332
+ });
333
+ }
334
+ else {
335
+ // 【旧格式】单条目模式
336
+ allChannels.push(...this.model.dataSetting.channels);
337
+ }
206
338
  for (let i = 0; i < this.data.length; i++) {
207
- const channel = this.model.dataSetting.channels[i];
339
+ const channel = allChannels[i];
208
340
  if (legendList.eq(i).children().eq(0).css('fill-opacity') === '1') {
209
341
  const pointList = this.$element
210
342
  .find('.nv-scatterWrap')
@@ -346,7 +478,21 @@ export class HistoricalCurveElement extends ConditionalDisplayElement {
346
478
  }
347
479
  chart.width(chartWidth);
348
480
  chart.height(chartHeight);
349
- chart.color(this.model.dataSetting.channels.map(c => c.connectorColor));
481
+ // 获取所有通道的颜色(支持多条目和单条目模式)
482
+ let channelColors = [];
483
+ if (this.model.dataSetting.dataItems && this.model.dataSetting.dataItems.length > 0) {
484
+ // 【新格式】多条目模式:收集所有条目的所有通道颜色
485
+ each(this.model.dataSetting.dataItems, dataItem => {
486
+ each(dataItem.channels, channel => {
487
+ channelColors.push(channel.connectorColor);
488
+ });
489
+ });
490
+ }
491
+ else {
492
+ // 【旧格式】单条目模式
493
+ channelColors = this.model.dataSetting.channels.map(c => c.connectorColor);
494
+ }
495
+ chart.color(channelColors);
350
496
  this.rootElement.append('g').datum(data).call(chart);
351
497
  this.rootElement.selectAll('.nv-noData').attr('x', chartWidth / 2).attr('y', chartHeight / 2 + this.displayOption.operationAreaHeight);
352
498
  this.resizeEventListener = nv.utils.windowResize(() => {
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"HistoricalCurveElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-display-element","name":"ConditionalDisplayElement","line":21,"character":44},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":68,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":69,"character":18},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":70,"character":27},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":71,"character":30},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":72,"character":23},{"__symbolic":"reference","module":"../../config","name":"HistoryDataStore","line":73,"character":43},{"__symbolic":"reference","name":"string"}]}],"dispose":[{"__symbolic":"method"}],"initKeyboardListener":[{"__symbolic":"method"}],"getValidTimePeriods":[{"__symbolic":"method"}],"updateTimeRange":[{"__symbolic":"method"}],"updateQueryTimeRange":[{"__symbolic":"method"}],"reRenderElement":[{"__symbolic":"method"}],"renderElement":[{"__symbolic":"method"}],"setupTooltipAutoHide":[{"__symbolic":"method"}],"renderChart":[{"__symbolic":"method"}],"initPoint":[{"__symbolic":"method"}],"getLineChart":[{"__symbolic":"method"}],"getMultiBarWithFocusChart":[{"__symbolic":"method"}],"renderCommonProperty":[{"__symbolic":"method"}],"renderOperationArea":[{"__symbolic":"method"}],"timeFormat":[{"__symbolic":"method"}],"loadFirstPage":[{"__symbolic":"method"}],"loadNextPage":[{"__symbolic":"method"}],"loadPreviousPage":[{"__symbolic":"method"}],"loadLastPage":[{"__symbolic":"method"}],"initElementStatus":[{"__symbolic":"method"}],"updateElementStatus":[{"__symbolic":"method"}],"setStatusAsUnbound":[{"__symbolic":"method"}],"setStatusAsLoading":[{"__symbolic":"method"}],"setStatusAsLoadFailed":[{"__symbolic":"method"}],"renderStatus":[{"__symbolic":"method"}],"clearStatus":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"HistoricalCurveElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/conditional-display-element","name":"ConditionalDisplayElement","line":23,"character":44},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":71,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":72,"character":18},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":73,"character":27},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":74,"character":30},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":75,"character":23},{"__symbolic":"reference","module":"../../config","name":"HistoryDataStore","line":76,"character":43},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"../../service","name":"SystemTextLibraryService","line":78,"character":52},{"__symbolic":"reference","module":"../../service","name":"LanguageService","line":79,"character":43},{"__symbolic":"reference","module":"../../gui/gui-context","name":"GuiContext","line":80,"character":38}]}],"dispose":[{"__symbolic":"method"}],"initKeyboardListener":[{"__symbolic":"method"}],"subscribeLanguageChange":[{"__symbolic":"method"}],"updateLanguageTexts":[{"__symbolic":"method"}],"getCurrentCulture":[{"__symbolic":"method"}],"getValidTimePeriods":[{"__symbolic":"method"}],"getTimePeriodText":[{"__symbolic":"method"}],"updateTimeRange":[{"__symbolic":"method"}],"updateQueryTimeRange":[{"__symbolic":"method"}],"reRenderElement":[{"__symbolic":"method"}],"renderElement":[{"__symbolic":"method"}],"handleQueryResult":[{"__symbolic":"method"}],"setupTooltipAutoHide":[{"__symbolic":"method"}],"renderChart":[{"__symbolic":"method"}],"initPoint":[{"__symbolic":"method"}],"getLineChart":[{"__symbolic":"method"}],"getMultiBarWithFocusChart":[{"__symbolic":"method"}],"renderCommonProperty":[{"__symbolic":"method"}],"renderOperationArea":[{"__symbolic":"method"}],"timeFormat":[{"__symbolic":"method"}],"loadFirstPage":[{"__symbolic":"method"}],"loadNextPage":[{"__symbolic":"method"}],"loadPreviousPage":[{"__symbolic":"method"}],"loadLastPage":[{"__symbolic":"method"}],"initElementStatus":[{"__symbolic":"method"}],"updateElementStatus":[{"__symbolic":"method"}],"setStatusAsUnbound":[{"__symbolic":"method"}],"setStatusAsLoading":[{"__symbolic":"method"}],"setStatusAsLoadFailed":[{"__symbolic":"method"}],"renderStatus":[{"__symbolic":"method"}],"clearStatus":[{"__symbolic":"method"}]}}}}]
@@ -29,6 +29,7 @@ import { VideoElement } from './video/video-element';
29
29
  import { WeatherElement } from './weather/weater-element';
30
30
  import { AirQualityElement } from './air-quality/air-quality-element';
31
31
  import { AlarmElement } from './alarm/alarm-element';
32
+ import { ScrollAlarmElement } from './scroll-alarm/scroll-alarm-element';
32
33
  export class MainElement {
33
34
  constructor(injector, bsModalService, context, variableCommunicator, popupViewService, signalRAppId) {
34
35
  this.injector = injector;
@@ -60,7 +61,7 @@ export class MainElement {
60
61
  const category = $(element).data('model').category;
61
62
  switch (category) {
62
63
  case GuiConsts.components.numericalDisplayKey:
63
- const numericalDisplayElement = new NumericalDisplayElement(element, this.injector, this.bsModalService, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.graphStore, this.context.operationRecordService, this.context.releasedVariableService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId);
64
+ const numericalDisplayElement = new NumericalDisplayElement(element, this.injector, this.bsModalService, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.graphStore, this.context.operationRecordService, this.context.releasedVariableService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId, this.context);
64
65
  this.elements.push(numericalDisplayElement);
65
66
  break;
66
67
  case GuiConsts.components.imageKey:
@@ -73,23 +74,23 @@ export class MainElement {
73
74
  this.elements.push(new PipeElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
74
75
  break;
75
76
  case GuiConsts.components.switchIndicatorLightKey:
76
- this.elements.push(new SwitchIndicatorLightElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
77
+ this.elements.push(new SwitchIndicatorLightElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId, this.context.textLibraryService, this.context.languageService, this.context));
77
78
  break;
78
79
  case GuiConsts.components.barGraphKey:
79
80
  this.elements.push(new BarGraphElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
80
81
  break;
81
82
  case GuiConsts.components.toggleViewKey:
82
83
  case GuiConsts.components.viewOperationElement:
83
- this.elements.push(new ViewOperationElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.injector.get(LOCALIZATION), this.popupViewService, guiOptions.hostContainerId, guiOptions.el, this.signalRAppId));
84
+ this.elements.push(new ViewOperationElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.injector.get(LOCALIZATION), this.popupViewService, guiOptions.hostContainerId, guiOptions.el, this.signalRAppId, this.context.textLibraryService, this.context.languageService, this.context));
84
85
  break;
85
86
  case GuiConsts.components.characterKey:
86
87
  this.elements.push(new CharacterDisplayElement(element, this.injector, this.bsModalService, this.variableCommunicator, this.context.configStore.graphStore, this.context.permissionChecker, this.context.operationRecordService, this.context.securityChecker, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
87
88
  break;
88
89
  case GuiConsts.components.textKey:
89
- this.elements.push(new TextElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
90
+ this.elements.push(new TextElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId, this.context.textLibraryService, this.context.languageService, this.context));
90
91
  break;
91
92
  case GuiConsts.components.hyperlinkKey:
92
- this.elements.push(new HyperlinkElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
93
+ this.elements.push(new HyperlinkElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId, this.context.textLibraryService, this.context.languageService, this.context));
93
94
  break;
94
95
  case GuiConsts.components.straightLineKey:
95
96
  this.elements.push(new StraightLineElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.signalRAppId));
@@ -110,7 +111,7 @@ export class MainElement {
110
111
  this.elements.push(new DatetimeDisplayElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.graphStore, this.signalRAppId));
111
112
  break;
112
113
  case GuiConsts.components.historicalCurveKey:
113
- this.elements.push(new HistoricalCurveElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.historyDataStore, this.signalRAppId));
114
+ this.elements.push(new HistoricalCurveElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.historyDataStore, this.signalRAppId, this.context.systemTextLibraryService, this.context.languageService, this.context));
114
115
  break;
115
116
  case GuiConsts.components.ringGraphKey:
116
117
  this.elements.push(new RingGraphElement(element, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.injector.get(LOCALIZATION), this.signalRAppId));
@@ -131,7 +132,10 @@ export class MainElement {
131
132
  this.elements.push(new AirQualityElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.weatherService, this.signalRAppId));
132
133
  break;
133
134
  case GuiConsts.components.alarmKey:
134
- this.elements.push(new AlarmElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.alarmsStore, this.signalRAppId));
135
+ this.elements.push(new AlarmElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.alarmsStore, this.signalRAppId, this.context.systemTextLibraryService, this.context.languageService, this.context));
136
+ break;
137
+ case GuiConsts.components.scrollAlarmKey:
138
+ this.elements.push(new ScrollAlarmElement(element, this.injector, this.context.permissionChecker, this.variableCommunicator, this.context.configStore.variableStore, this.context.configStore.alarmsStore, this.signalRAppId));
135
139
  break;
136
140
  }
137
141
  });
@@ -298,7 +302,7 @@ export class MainElement {
298
302
  each(this.elements, e => {
299
303
  if (e instanceof HistoricalCurveElement || e instanceof VideoElement
300
304
  || e instanceof WeatherElement || e instanceof NumericalDisplayElement || e instanceof TextElement
301
- || e instanceof AirQualityElement || e instanceof SwitchIndicatorLightElement) {
305
+ || e instanceof AirQualityElement || e instanceof ScrollAlarmElement) {
302
306
  e.dispose();
303
307
  }
304
308
  });
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"MainElement":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":55,"character":43},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":56,"character":41},{"__symbolic":"reference","module":"../gui/gui-context","name":"GuiContext","line":57,"character":34},{"__symbolic":"reference","module":"../communication","name":"VariableCommunicator","line":58,"character":47},{"__symbolic":"reference","module":"../view/popup-view.service","name":"PopupViewService","line":59,"character":43},null]}],"load":[{"__symbolic":"method"}],"uniformStretch":[{"__symbolic":"method"}],"changeVideoStyle":[{"__symbolic":"method"}],"horizontalStretch":[{"__symbolic":"method"}],"initElementState":[{"__symbolic":"method"}],"getVariableNames":[{"__symbolic":"method"}],"reportVariableStates":[{"__symbolic":"method"}],"getVirtualDeviceIdFromRect":[{"__symbolic":"method"}],"reportVariableValues":[{"__symbolic":"method"}],"dispose":[{"__symbolic":"method"}],"checkIsLoaded":[{"__symbolic":"method"}],"initBackground":[{"__symbolic":"method"}],"getImageEl":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"MainElement":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":56,"character":43},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":57,"character":41},{"__symbolic":"reference","module":"../gui/gui-context","name":"GuiContext","line":58,"character":34},{"__symbolic":"reference","module":"../communication","name":"VariableCommunicator","line":59,"character":47},{"__symbolic":"reference","module":"../view/popup-view.service","name":"PopupViewService","line":60,"character":43},null]}],"load":[{"__symbolic":"method"}],"uniformStretch":[{"__symbolic":"method"}],"changeVideoStyle":[{"__symbolic":"method"}],"horizontalStretch":[{"__symbolic":"method"}],"initElementState":[{"__symbolic":"method"}],"getVariableNames":[{"__symbolic":"method"}],"reportVariableStates":[{"__symbolic":"method"}],"getVirtualDeviceIdFromRect":[{"__symbolic":"method"}],"reportVariableValues":[{"__symbolic":"method"}],"dispose":[{"__symbolic":"method"}],"checkIsLoaded":[{"__symbolic":"method"}],"initBackground":[{"__symbolic":"method"}],"getImageEl":[{"__symbolic":"method"}]}}}}]
@@ -4,15 +4,17 @@ import { GraphStore, VariableStore } from '../../config';
4
4
  import { Localization } from '../../localization';
5
5
  import { NumericalDisplay } from '../../model';
6
6
  import { PermissionChecker, OperationRecordService, ReleasedVariableService } from '../../service';
7
- import { VariableCommunicator } from '../../communication';
7
+ import { VariableCommunicator, VariableValue } from '../../communication';
8
8
  import { ReadableElement } from '../base/readable-element';
9
9
  import { SecurityChecker } from '../../security';
10
+ import { GuiContext } from '../../gui/gui-context';
10
11
  export declare class NumericalDisplayElement extends ReadableElement {
11
12
  private readonly modalService;
12
13
  private readonly graphStore;
13
14
  private readonly operationRecordService;
14
15
  private readonly releasedVariableService;
15
16
  private readonly securityChecker;
17
+ private readonly guiContext?;
16
18
  private readonly dataTypeService;
17
19
  private readonly fractionDigitService;
18
20
  private readonly accessPermissionService;
@@ -28,8 +30,13 @@ export declare class NumericalDisplayElement extends ReadableElement {
28
30
  private numericalOperation;
29
31
  private restorationTimer;
30
32
  get writeVariableName(): string;
31
- constructor(element: HTMLElement, injector: Injector, modalService: BsModalService, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, graphStore: GraphStore, operationRecordService: OperationRecordService, releasedVariableService: ReleasedVariableService, securityChecker: SecurityChecker, variableStore: VariableStore, localization: Localization, signalRAppId: string);
33
+ constructor(element: HTMLElement, injector: Injector, modalService: BsModalService, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, graphStore: GraphStore, operationRecordService: OperationRecordService, releasedVariableService: ReleasedVariableService, securityChecker: SecurityChecker, variableStore: VariableStore, localization: Localization, signalRAppId: string, guiContext?: GuiContext);
32
34
  dispose(): void;
35
+ /**
36
+ * 重写父类方法,处理"当前语种ID"系统变量
37
+ * 当值为null时,显示默认语种ID
38
+ */
39
+ reportValueChanged(value: VariableValue): void;
33
40
  initElement(): any;
34
41
  private checkElementPassword;
35
42
  private initVariableText;
@@ -18,13 +18,14 @@ var variableRwTypeEnum;
18
18
  variableRwTypeEnum[variableRwTypeEnum["readWiter"] = 6] = "readWiter";
19
19
  })(variableRwTypeEnum || (variableRwTypeEnum = {}));
20
20
  export class NumericalDisplayElement extends ReadableElement {
21
- constructor(element, injector, modalService, permissionChecker, variableCommunicator, graphStore, operationRecordService, releasedVariableService, securityChecker, variableStore, localization, signalRAppId) {
21
+ constructor(element, injector, modalService, permissionChecker, variableCommunicator, graphStore, operationRecordService, releasedVariableService, securityChecker, variableStore, localization, signalRAppId, guiContext) {
22
22
  super(element, permissionChecker, variableCommunicator, variableStore, localization, signalRAppId);
23
23
  this.modalService = modalService;
24
24
  this.graphStore = graphStore;
25
25
  this.operationRecordService = operationRecordService;
26
26
  this.releasedVariableService = releasedVariableService;
27
27
  this.securityChecker = securityChecker;
28
+ this.guiContext = guiContext;
28
29
  this.displayText = '';
29
30
  this.enableDataParsed = false;
30
31
  this.logger = injector.get(LOGGER_SERVICE_TOKEN);
@@ -57,6 +58,25 @@ export class NumericalDisplayElement extends ReadableElement {
57
58
  this.$element.remove();
58
59
  }
59
60
  }
61
+ /**
62
+ * 重写父类方法,处理"当前语种ID"系统变量
63
+ * 当值为null时,显示默认语种ID
64
+ */
65
+ reportValueChanged(value) {
66
+ var _a, _b, _c;
67
+ // 处理系统变量"当前语种ID"
68
+ if (value.variableName === '当前语种ID') {
69
+ let displayValue = value.value;
70
+ // 如果值为null,使用默认语种ID
71
+ if (displayValue === null || displayValue === undefined) {
72
+ displayValue = (_c = (_b = (_a = this.guiContext) === null || _a === void 0 ? void 0 : _a.getDefaultLanguageId) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : 0;
73
+ }
74
+ this.updateVariableValue(displayValue);
75
+ return;
76
+ }
77
+ // 其他变量调用父类方法
78
+ super.reportValueChanged(value);
79
+ }
60
80
  initElement() {
61
81
  const { rootElement } = this;
62
82
  rootElement.selectAll('*').remove();
@@ -180,7 +200,7 @@ export class NumericalDisplayElement extends ReadableElement {
180
200
  if (null == this.writeVariableName) {
181
201
  return;
182
202
  }
183
- const args = new WriteValueModalArgs(this.writeVariableName, this.model.dataType, this.model.fBoxDataType, this.model.integerDigits, this.model.fractionDigits, this.numericalOperationService.getNumericalOperations(this.model), this.model.version, this.enableDataParsed, this.releasedVariableService);
203
+ const args = new WriteValueModalArgs(this.writeVariableName, this.model.dataType, this.model.fBoxDataType, this.model.integerDigits, this.model.fractionDigits, this.numericalOperationService.getNumericalOperations(this.model), this.model.version, this.enableDataParsed, this.releasedVariableService, this.guiContext);
184
204
  this.writeValueMmodalRef = this.modalService.show(WriteValueModalComponent, {
185
205
  initialState: { args: args }, backdrop: 'static', class: 'gui-modal-dialog-position', animated: false
186
206
  });
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"NumericalDisplayElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/readable-element","name":"ReadableElement","line":28,"character":45},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":50,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":51,"character":18},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":52,"character":39},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":53,"character":27},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":54,"character":30},{"__symbolic":"reference","module":"../../config","name":"GraphStore","line":55,"character":37},{"__symbolic":"reference","module":"../../service","name":"OperationRecordService","line":56,"character":49},{"__symbolic":"reference","module":"../../service","name":"ReleasedVariableService","line":57,"character":50},{"__symbolic":"reference","module":"../../security","name":"SecurityChecker","line":58,"character":42},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":59,"character":23},{"__symbolic":"reference","module":"../../localization","name":"Localization","line":60,"character":22},{"__symbolic":"reference","name":"string"}]}],"dispose":[{"__symbolic":"method"}],"initElement":[{"__symbolic":"method"}],"checkElementPassword":[{"__symbolic":"method"}],"initVariableText":[{"__symbolic":"method"}],"initGraphAndText":[{"__symbolic":"method"}],"doWriteValue":[{"__symbolic":"method"}],"recordOperation":[{"__symbolic":"method"}],"changeStates":[{"__symbolic":"method"}],"updateVariableValue":[{"__symbolic":"method"}],"updateDisplayText":[{"__symbolic":"method"}],"rebuildTextElement":[{"__symbolic":"method"}],"formatNumericalDisplayText":[{"__symbolic":"method"}],"formatFloatDisplayText":[{"__symbolic":"method"}],"isNumeric":[{"__symbolic":"method"}],"formatDisplayTextUnit":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"NumericalDisplayElement":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../base/readable-element","name":"ReadableElement","line":29,"character":45},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":51,"character":25,"context":{"typeName":"HTMLElement"}},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":52,"character":18},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":53,"character":39},{"__symbolic":"reference","module":"../../service","name":"PermissionChecker","line":54,"character":27},{"__symbolic":"reference","module":"../../communication","name":"VariableCommunicator","line":55,"character":30},{"__symbolic":"reference","module":"../../config","name":"GraphStore","line":56,"character":37},{"__symbolic":"reference","module":"../../service","name":"OperationRecordService","line":57,"character":49},{"__symbolic":"reference","module":"../../service","name":"ReleasedVariableService","line":58,"character":50},{"__symbolic":"reference","module":"../../security","name":"SecurityChecker","line":59,"character":42},{"__symbolic":"reference","module":"../../config","name":"VariableStore","line":60,"character":23},{"__symbolic":"reference","module":"../../localization","name":"Localization","line":61,"character":22},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"../../gui/gui-context","name":"GuiContext","line":63,"character":38}]}],"dispose":[{"__symbolic":"method"}],"reportValueChanged":[{"__symbolic":"method"}],"initElement":[{"__symbolic":"method"}],"checkElementPassword":[{"__symbolic":"method"}],"initVariableText":[{"__symbolic":"method"}],"initGraphAndText":[{"__symbolic":"method"}],"doWriteValue":[{"__symbolic":"method"}],"recordOperation":[{"__symbolic":"method"}],"changeStates":[{"__symbolic":"method"}],"updateVariableValue":[{"__symbolic":"method"}],"updateDisplayText":[{"__symbolic":"method"}],"rebuildTextElement":[{"__symbolic":"method"}],"formatNumericalDisplayText":[{"__symbolic":"method"}],"formatFloatDisplayText":[{"__symbolic":"method"}],"isNumeric":[{"__symbolic":"method"}],"formatDisplayTextUnit":[{"__symbolic":"method"}]}}}}]
@@ -0,0 +1,54 @@
1
+ import { Injector } from '@angular/core';
2
+ import { PermissionChecker } from '../../service';
3
+ import { VariableCommunicator } from '../../communication';
4
+ import { ConditionalDynamicDisplayElement } from '../base/conditional-dynamic-display-element';
5
+ import { ScrollAlarmModel } from '../../model/scroll-alarm/scroll-alarm.model';
6
+ import { AlarmsStore, VariableStore } from '../../config';
7
+ export declare class ScrollAlarmElement extends ConditionalDynamicDisplayElement {
8
+ private readonly alarmsStore;
9
+ readonly model: ScrollAlarmModel;
10
+ private readonly logger;
11
+ readonly variableCommunicator: VariableCommunicator;
12
+ private elementStatus;
13
+ private element;
14
+ private scrollIntervalId;
15
+ private alarmNames;
16
+ private startTime;
17
+ private endTime;
18
+ private getAlarmDataId;
19
+ private alarmRefreshThrottleId;
20
+ private isWaitingForAlarmRefresh;
21
+ private isScrolling;
22
+ private isDisposed;
23
+ private isRefreshingCurrentPage;
24
+ private currentPage;
25
+ private maxResultCount;
26
+ private displayedItems;
27
+ private pageWidths;
28
+ private totalWidth;
29
+ private container;
30
+ private allAlarmsContainer;
31
+ private currentLeft;
32
+ private autoCycle;
33
+ private hasMoreData;
34
+ private isLoadingNextPage;
35
+ private headerFont;
36
+ private fontString;
37
+ private hasTriedFirstPage;
38
+ constructor(element: HTMLElement, injector: Injector, permissionChecker: PermissionChecker, variableCommunicator: VariableCommunicator, variableStore: VariableStore, alarmsStore: AlarmsStore, signalRAppId: string);
39
+ dispose(): void;
40
+ private getAlarmData;
41
+ private initDisplayContainer;
42
+ private renderNewPage;
43
+ private removeOldestPage;
44
+ private scrollContent;
45
+ private initScrolling;
46
+ private pauseScroll;
47
+ private resumeScroll;
48
+ private resetToFirstPage;
49
+ private updateQueryTimeRange;
50
+ private setStatusAsNormal;
51
+ private setStatusAsLoading;
52
+ private renderStatus;
53
+ private clearStatus;
54
+ }