@flexem/fc-gui 3.0.0-alpha.3 → 3.0.0-alpha.32

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 (191) hide show
  1. package/CHANGELOG.md +142 -0
  2. package/bundles/@flexem/fc-gui.umd.js +2253 -1278
  3. package/bundles/@flexem/fc-gui.umd.js.map +1 -1
  4. package/bundles/@flexem/fc-gui.umd.min.js +5 -5
  5. package/bundles/@flexem/fc-gui.umd.min.js.map +1 -1
  6. package/communication/variable/variable-communicator.d.ts +2 -2
  7. package/elements/air-quality/air-quality-element.d.ts +31 -0
  8. package/elements/air-quality/air-quality-element.js +195 -0
  9. package/elements/air-quality/air-quality-element.metadata.json +1 -0
  10. package/elements/bar-graph-element.d.ts +8 -2
  11. package/elements/bar-graph-element.js +72 -6
  12. package/elements/bar-graph-element.metadata.json +1 -1
  13. package/elements/base/base-element.d.ts +2 -1
  14. package/elements/base/base-element.js +2 -1
  15. package/elements/base/base-element.metadata.json +1 -1
  16. package/elements/base/conditional-control-element.d.ts +1 -1
  17. package/elements/base/conditional-control-element.js +3 -3
  18. package/elements/base/conditional-control-element.metadata.json +1 -1
  19. package/elements/base/conditional-display-element.d.ts +1 -1
  20. package/elements/base/conditional-display-element.js +4 -4
  21. package/elements/base/conditional-display-element.metadata.json +1 -1
  22. package/elements/base/conditional-dynamic-display-element.d.ts +1 -1
  23. package/elements/base/conditional-dynamic-display-element.js +3 -3
  24. package/elements/base/conditional-dynamic-display-element.metadata.json +1 -1
  25. package/elements/base/conditional-enable-element.d.ts +1 -1
  26. package/elements/base/conditional-enable-element.js +4 -4
  27. package/elements/base/conditional-enable-element.metadata.json +1 -1
  28. package/elements/base/readable-element.d.ts +7 -2
  29. package/elements/base/readable-element.js +33 -4
  30. package/elements/base/readable-element.metadata.json +1 -1
  31. package/elements/base/state-control-element.d.ts +1 -1
  32. package/elements/base/state-control-element.js +2 -2
  33. package/elements/base/state-control-element.metadata.json +1 -1
  34. package/elements/character-display/character-display-element.d.ts +1 -1
  35. package/elements/character-display/character-display-element.js +2 -2
  36. package/elements/character-display/character-display-element.metadata.json +1 -1
  37. package/elements/datetime-display/datetime-display-element.d.ts +1 -1
  38. package/elements/datetime-display/datetime-display-element.js +2 -2
  39. package/elements/datetime-display/datetime-display-element.metadata.json +1 -1
  40. package/elements/historical-curve/historical-curve.element.d.ts +1 -1
  41. package/elements/historical-curve/historical-curve.element.js +17 -10
  42. package/elements/historical-curve/historical-curve.element.metadata.json +1 -1
  43. package/elements/main-element.d.ts +2 -1
  44. package/elements/main-element.js +44 -26
  45. package/elements/main-element.metadata.json +1 -1
  46. package/elements/meter-element.d.ts +8 -2
  47. package/elements/meter-element.js +78 -9
  48. package/elements/meter-element.metadata.json +1 -1
  49. package/elements/numerical-display/numerical-display-element.d.ts +2 -1
  50. package/elements/numerical-display/numerical-display-element.js +14 -5
  51. package/elements/numerical-display/numerical-display-element.metadata.json +1 -1
  52. package/elements/per-view-variable-communicator.d.ts +2 -2
  53. package/elements/per-view-variable-communicator.js +4 -4
  54. package/elements/pipe/pipe-element.d.ts +1 -1
  55. package/elements/pipe/pipe-element.js +2 -2
  56. package/elements/pipe/pipe-element.metadata.json +1 -1
  57. package/elements/ring-graph/ring-graph-element.d.ts +11 -2
  58. package/elements/ring-graph/ring-graph-element.js +108 -5
  59. package/elements/ring-graph/ring-graph-element.metadata.json +1 -1
  60. package/elements/shared/graph/graph-state-element.js +0 -3
  61. package/elements/shared/text/text-element.js +13 -2
  62. package/elements/shared/text/text-state-element.js +1 -1
  63. package/elements/static-elements/hyperlink-element.d.ts +1 -1
  64. package/elements/static-elements/hyperlink-element.js +2 -2
  65. package/elements/static-elements/hyperlink-element.metadata.json +1 -1
  66. package/elements/static-elements/image-element.d.ts +1 -1
  67. package/elements/static-elements/image-element.js +2 -2
  68. package/elements/static-elements/image-element.metadata.json +1 -1
  69. package/elements/static-elements/text-element.d.ts +1 -1
  70. package/elements/static-elements/text-element.js +2 -2
  71. package/elements/static-elements/text-element.metadata.json +1 -1
  72. package/elements/switch-indicator-light/bit-indicator-light-operator.d.ts +1 -1
  73. package/elements/switch-indicator-light/bit-indicator-light-operator.js +4 -4
  74. package/elements/switch-indicator-light/bit-switch-operator.d.ts +3 -1
  75. package/elements/switch-indicator-light/bit-switch-operator.js +22 -2
  76. package/elements/switch-indicator-light/bit-switch-operator.metadata.json +1 -1
  77. package/elements/switch-indicator-light/indicator-light-operator.d.ts +1 -1
  78. package/elements/switch-indicator-light/switch-indicator-light-element.d.ts +9 -1
  79. package/elements/switch-indicator-light/switch-indicator-light-element.js +97 -28
  80. package/elements/switch-indicator-light/switch-indicator-light-element.metadata.json +1 -1
  81. package/elements/switch-indicator-light/switch-operator.d.ts +1 -0
  82. package/elements/switch-indicator-light/word-indicator-light-operator.d.ts +1 -1
  83. package/elements/switch-indicator-light/word-indicator-light-operator.js +5 -5
  84. package/elements/switch-indicator-light/word-switch-operator.d.ts +3 -1
  85. package/elements/switch-indicator-light/word-switch-operator.js +9 -2
  86. package/elements/switch-indicator-light/word-switch-operator.metadata.json +1 -1
  87. package/elements/table/table-element.d.ts +1 -1
  88. package/elements/table/table-element.js +2 -2
  89. package/elements/table/table-element.metadata.json +1 -1
  90. package/elements/vector-graphics/ellipse-element.d.ts +1 -1
  91. package/elements/vector-graphics/ellipse-element.js +2 -2
  92. package/elements/vector-graphics/ellipse-element.metadata.json +1 -1
  93. package/elements/vector-graphics/poly-line-element.d.ts +1 -1
  94. package/elements/vector-graphics/poly-line-element.js +2 -2
  95. package/elements/vector-graphics/poly-line-element.metadata.json +1 -1
  96. package/elements/vector-graphics/polygon-element.d.ts +1 -1
  97. package/elements/vector-graphics/polygon-element.js +2 -2
  98. package/elements/vector-graphics/polygon-element.metadata.json +1 -1
  99. package/elements/vector-graphics/rectangle-element.d.ts +1 -1
  100. package/elements/vector-graphics/rectangle-element.js +2 -2
  101. package/elements/vector-graphics/rectangle-element.metadata.json +1 -1
  102. package/elements/vector-graphics/sector-element.d.ts +1 -1
  103. package/elements/vector-graphics/sector-element.js +2 -2
  104. package/elements/vector-graphics/sector-element.metadata.json +1 -1
  105. package/elements/vector-graphics/straight-line-element.d.ts +1 -1
  106. package/elements/vector-graphics/straight-line-element.js +2 -2
  107. package/elements/vector-graphics/straight-line-element.metadata.json +1 -1
  108. package/elements/video/video-element.d.ts +1 -1
  109. package/elements/video/video-element.js +2 -2
  110. package/elements/video/video-element.metadata.json +1 -1
  111. package/elements/view-operation/view-operation.element.d.ts +1 -1
  112. package/elements/view-operation/view-operation.element.js +2 -2
  113. package/elements/view-operation/view-operation.element.metadata.json +1 -1
  114. package/elements/weather/weater-element.d.ts +1 -1
  115. package/elements/weather/weater-element.js +2 -2
  116. package/elements/weather/weater-element.metadata.json +1 -1
  117. package/gui/gui-host.js +1 -1
  118. package/gui/gui-view.d.ts +1 -0
  119. package/gui/gui-view.js +3 -2
  120. package/gui/gui-view.metadata.json +1 -1
  121. package/localization/localization.service.d.ts +5 -0
  122. package/localization/localization.service.js +6 -1
  123. package/localization/localization.service.metadata.json +1 -1
  124. package/localization/localization.service.zh_CN.js +6 -1
  125. package/localization/localization.service.zh_CN.metadata.json +1 -1
  126. package/modal/write-value/write-value-modal-args.d.ts +3 -1
  127. package/modal/write-value/write-value-modal-args.js +3 -1
  128. package/modal/write-value/write-value-modal-args.metadata.json +1 -1
  129. package/modal/write-value/write-value-modal.component.d.ts +2 -0
  130. package/modal/write-value/write-value-modal.component.js +24 -12
  131. package/modal/write-value/write-value-modal.component.metadata.json +1 -1
  132. package/model/air-quality/air-quality-info.d.ts +23 -0
  133. package/model/air-quality/air-quality-info.js +4 -0
  134. package/model/air-quality/air-quality-info.metadata.json +1 -0
  135. package/model/air-quality/air-quality.model.d.ts +7 -0
  136. package/model/air-quality/air-quality.model.js +0 -0
  137. package/model/air-quality/air-quality.model.metadata.json +1 -0
  138. package/model/bar-graph/bar-graph.d.ts +4 -0
  139. package/model/base/readable-model.d.ts +4 -0
  140. package/model/historical-curve/historical-curve-axis-settings.d.ts +7 -0
  141. package/model/historical-curve/historical-curve-axis-settings.js +5 -0
  142. package/model/historical-curve/historical-curve-axis-settings.metadata.json +1 -1
  143. package/model/meter/meter.d.ts +4 -0
  144. package/model/numerical-display/numerical-display.d.ts +2 -0
  145. package/model/ring-graph/ring-graph.model.d.ts +8 -0
  146. package/model/shared/condition/bit-condition-item-observer.d.ts +1 -1
  147. package/model/shared/condition/bit-condition-item-observer.js +4 -4
  148. package/model/shared/condition/condition-items-result-observer.d.ts +1 -1
  149. package/model/shared/condition/condition-items-result-observer.js +22 -12
  150. package/model/shared/condition/condition-items-result-observer.metadata.json +1 -1
  151. package/model/shared/condition/convert-condition-model.d.ts +5 -0
  152. package/model/shared/condition/convert-condition-model.js +0 -0
  153. package/model/shared/condition/convert-condition-model.metadata.json +1 -0
  154. package/model/shared/condition/relation-condition-result.d.ts +2 -1
  155. package/model/shared/condition/relation-condition-result.js +2 -1
  156. package/model/shared/condition/relation-condition-result.metadata.json +1 -1
  157. package/model/shared/condition/word-condition-item-observer.d.ts +1 -1
  158. package/model/shared/condition/word-condition-item-observer.js +11 -11
  159. package/model/shared/dynamic-display/dynamic-display.d.ts +1 -1
  160. package/model/shared/dynamic-display/dynamic-display.js +4 -4
  161. package/model/shared/dynamic-display/dynamic-display.metadata.json +1 -1
  162. package/model/shared/rotation/rotation-behavior.d.ts +1 -1
  163. package/model/shared/rotation/rotation-behavior.js +2 -2
  164. package/model/shared/rotation/rotation-behavior.metadata.json +1 -1
  165. package/model/shared/rotation/rotation-observer.d.ts +2 -1
  166. package/model/shared/rotation/rotation-observer.js +3 -2
  167. package/model/shared/rotation/rotation-observer.metadata.json +1 -1
  168. package/model/shared/translation/translation-behavior.d.ts +1 -1
  169. package/model/shared/translation/translation-behavior.js +3 -3
  170. package/model/shared/translation/translation-behavior.metadata.json +1 -1
  171. package/model/shared/translation/translation-observer.d.ts +1 -1
  172. package/model/shared/translation/translation-observer.js +2 -2
  173. package/model/shared/translation/translation-observer.metadata.json +1 -1
  174. package/model/switch-indicator-light/bit-switch-operation.d.ts +2 -1
  175. package/model/switch-indicator-light/bit-switch-operation.js +1 -0
  176. package/model/switch-indicator-light/bit-switch-operation.metadata.json +1 -1
  177. package/package.json +1 -1
  178. package/remote/communication/variable/remote-variable-communicator.d.ts +3 -2
  179. package/remote/communication/variable/remote-variable-communicator.js +16 -9
  180. package/remote/communication/variable/remote-variable-communicator.metadata.json +1 -1
  181. package/remote/communication/variable/remote-variable-protocol.d.ts +2 -2
  182. package/service/weather.service.d.ts +1 -0
  183. package/shared/gui-consts.d.ts +1 -0
  184. package/shared/gui-consts.js +1 -0
  185. package/shared/gui-consts.metadata.json +1 -1
  186. package/utils/data-type/data-type.service.d.ts +4 -7
  187. package/utils/data-type/data-type.service.js +29 -17
  188. package/utils/numerical-operation.service.js +2 -2
  189. package/gui/scripts/config.js +0 -6
  190. package/gui/scripts/require.js +0 -2145
  191. package/libs/nvd3/build/nv.d3.min.js +0 -13
@@ -10,4 +10,8 @@ export interface Meter extends ReadableModel {
10
10
  readonly radius: number;
11
11
  readonly min: number;
12
12
  readonly max: number;
13
+ readonly masterDivisionNumber: number;
14
+ readonly subDivisionNumber: number;
15
+ readonly integerDigits: number;
16
+ readonly fractionDigits: number;
13
17
  }
@@ -12,6 +12,7 @@ export interface NumericalDisplay extends ReadableModel, SecurityModel {
12
12
  readonly textAlign: string;
13
13
  readonly accessPermission: any;
14
14
  dataType: number;
15
+ fBoxDataType: number;
15
16
  readonly integerDigits: number;
16
17
  readonly fractionDigits: number;
17
18
  readonly enableNumericalOperation: boolean;
@@ -24,4 +25,5 @@ export interface NumericalDisplay extends ReadableModel, SecurityModel {
24
25
  readonly showVariableText?: boolean;
25
26
  readonly variableText?: any;
26
27
  readonly displayDataType?: DisplayDataType;
28
+ readonly enableDataParsed?: boolean;
27
29
  }
@@ -22,4 +22,12 @@ export interface RingGraphModel extends ConditionalDisplayModel {
22
22
  readonly alarmRange?: AlarmRangeModel;
23
23
  readonly showPercentage: boolean;
24
24
  readonly percentageFont?: Font;
25
+ readonly minVariable?: any;
26
+ readonly maxVariable?: any;
27
+ readonly minValueType?: any;
28
+ readonly maxValueType?: any;
29
+ readonly masterDivisionNumber: number;
30
+ readonly subDivisionNumber: number;
31
+ readonly integerDigits: number;
32
+ readonly fractionDigits: number;
25
33
  }
@@ -8,7 +8,7 @@ export declare class BitConditionItemObserver extends ConditionItemObserver {
8
8
  private currentValue;
9
9
  private binary;
10
10
  constructor(bitConditon: BitConditionModel, variableCommunicator: VariableCommunicator, variableStore: VariableStore);
11
- requestData(): void;
11
+ requestData(appId: string): void;
12
12
  private requestconditionEffectiveValue;
13
13
  getIsConditionEffective(): boolean;
14
14
  }
@@ -9,14 +9,14 @@ export class BitConditionItemObserver extends ConditionItemObserver {
9
9
  this.bitConditon = bitConditon;
10
10
  this.variableCommunicator = variableCommunicator;
11
11
  }
12
- requestData() {
12
+ requestData(appId) {
13
13
  if (!this.bitConditon) {
14
14
  throw new Error('BitConditionModel cannot be null.');
15
15
  }
16
16
  if (this.variableName) {
17
17
  this.variableCommunicator.subscribeVariableState(this.variableName).subscribe(variableValue => {
18
18
  if (variableValue.state === VariableStateEnum.Normal) {
19
- this.requestconditionEffectiveValue(this.variableCommunicator);
19
+ this.requestconditionEffectiveValue(this.variableCommunicator, appId);
20
20
  }
21
21
  else {
22
22
  this.conditionEffectiveChanged.emit(new RelationConditionResultState(new VariableState(this.variableName, variableValue.state), false));
@@ -24,8 +24,8 @@ export class BitConditionItemObserver extends ConditionItemObserver {
24
24
  });
25
25
  }
26
26
  }
27
- requestconditionEffectiveValue(variableCommunicator) {
28
- variableCommunicator.openVariable(this.variableName).subscribe(value => {
27
+ requestconditionEffectiveValue(variableCommunicator, appId = '') {
28
+ variableCommunicator.openVariable(this.variableName, appId).subscribe(value => {
29
29
  if (this.bitConditon.isBitwiseIndex) {
30
30
  const maxBitIndex = 31;
31
31
  this.binary = new Binary(value.value, maxBitIndex + 1);
@@ -11,6 +11,6 @@ export declare class ConditionItemsResultObserver implements ConditionItemsObser
11
11
  readonly conditionResultChanged: EventEmitter<ConditionControlResultValue>;
12
12
  private conditionResults;
13
13
  constructor(sourceConditionItems: ConditionItemModel[], variableCommunicator: VariableCommunicator, variableStore: VariableStore);
14
- requestData(): void;
14
+ requestData(appId: string): void;
15
15
  private emitConditionResult;
16
16
  }
@@ -1,4 +1,5 @@
1
1
  import { EventEmitter } from '@angular/core';
2
+ import { sortBy } from 'lodash';
2
3
  import { ConditionType } from './condition-type';
3
4
  import { BitConditionItemObserver } from './bit-condition-item-observer';
4
5
  import { RelationConditionResult } from './relation-condition-result';
@@ -12,7 +13,7 @@ export class ConditionItemsResultObserver {
12
13
  this.conditionResultChanged = new EventEmitter();
13
14
  this.conditionResults = new Map();
14
15
  }
15
- requestData() {
16
+ requestData(appId) {
16
17
  if (null == this.sourceConditionItems || !this.sourceConditionItems.length) {
17
18
  return;
18
19
  }
@@ -25,10 +26,10 @@ export class ConditionItemsResultObserver {
25
26
  if (this.conditionResults.has(conditionItems.indexOf(item))) {
26
27
  this.conditionResults.delete(conditionItems.indexOf(item));
27
28
  }
28
- this.conditionResults.set(conditionItems.indexOf(item), new RelationConditionResult(item.relationType, itemResult));
29
+ this.conditionResults.set(conditionItems.indexOf(item), new RelationConditionResult(conditionItems.indexOf(item), item.relationType, itemResult));
29
30
  this.emitConditionResult();
30
31
  });
31
- bitItem.requestData();
32
+ bitItem.requestData(appId);
32
33
  break;
33
34
  case ConditionType.Word:
34
35
  const wordItem = new WordConditionItemObserver(item.condition, this.variableCommunicator, this.variableStore);
@@ -36,10 +37,10 @@ export class ConditionItemsResultObserver {
36
37
  if (this.conditionResults.has(conditionItems.indexOf(item))) {
37
38
  this.conditionResults.delete(conditionItems.indexOf(item));
38
39
  }
39
- this.conditionResults.set(conditionItems.indexOf(item), new RelationConditionResult(item.relationType, itemResult));
40
+ this.conditionResults.set(conditionItems.indexOf(item), new RelationConditionResult(conditionItems.indexOf(item), item.relationType, itemResult));
40
41
  this.emitConditionResult();
41
42
  });
42
- wordItem.requestData();
43
+ wordItem.requestData(appId);
43
44
  break;
44
45
  default:
45
46
  throw new Error(`Unknown ConditionType :${item.conditionType}`);
@@ -49,23 +50,32 @@ export class ConditionItemsResultObserver {
49
50
  emitConditionResult() {
50
51
  let isControl = true;
51
52
  const elementStates = [];
53
+ const formatConditionResults = [];
52
54
  this.conditionResults.forEach(t => {
55
+ formatConditionResults.push({
56
+ key: t.key,
57
+ result: t
58
+ });
53
59
  // eslint-disable-next-line eqeqeq
54
60
  if (t.relationType == RelationType.None) {
55
61
  isControl = t.result.value;
56
62
  elementStates.push(t.result.state);
57
63
  }
58
64
  });
59
- this.conditionResults.forEach(item => {
65
+ const formatResults = sortBy(formatConditionResults, data => {
66
+ return data.key;
67
+ });
68
+ formatResults.forEach(item => {
69
+ const relationCondition = item.result;
60
70
  // eslint-disable-next-line eqeqeq
61
- if (item.relationType == RelationType.Or) {
62
- isControl = isControl || item.result.value;
63
- elementStates.push(item.result.state);
71
+ if (relationCondition.relationType == RelationType.Or) {
72
+ isControl = isControl || relationCondition.result.value;
73
+ elementStates.push(relationCondition.result.state);
64
74
  // eslint-disable-next-line eqeqeq
65
75
  }
66
- else if (item.relationType == RelationType.And) {
67
- isControl = isControl && item.result.value;
68
- elementStates.push(item.result.state);
76
+ else if (relationCondition.relationType == RelationType.And) {
77
+ isControl = isControl && relationCondition.result.value;
78
+ elementStates.push(relationCondition.result.state);
69
79
  }
70
80
  });
71
81
  const conditionControlResult = {
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"ConditionItemsResultObserver":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","module":"./condition-item-model","name":"ConditionItemModel","line":19,"character":55}]},{"__symbolic":"reference","module":"../../../communication","name":"VariableCommunicator","line":20,"character":47},{"__symbolic":"reference","module":"../../../config","name":"VariableStore","line":21,"character":40}]}],"requestData":[{"__symbolic":"method"}],"emitConditionResult":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"ConditionItemsResultObserver":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","module":"./condition-item-model","name":"ConditionItemModel","line":20,"character":55}]},{"__symbolic":"reference","module":"../../../communication","name":"VariableCommunicator","line":21,"character":47},{"__symbolic":"reference","module":"../../../config","name":"VariableStore","line":22,"character":40}]}],"requestData":[{"__symbolic":"method"}],"emitConditionResult":[{"__symbolic":"method"}]}}}}]
@@ -0,0 +1,5 @@
1
+ import { RelationConditionResult } from './relation-condition-result';
2
+ export interface ConvertConditionModel {
3
+ readonly key: number;
4
+ readonly result: RelationConditionResult;
5
+ }
@@ -0,0 +1 @@
1
+ [{"__symbolic":"module","version":4,"metadata":{"ConvertConditionModel":{"__symbolic":"interface"}}}]
@@ -1,7 +1,8 @@
1
1
  import { RelationType } from './relation-type';
2
2
  import { RelationConditionResultState } from './relation-condition-result-state';
3
3
  export declare class RelationConditionResult {
4
+ readonly key: number;
4
5
  readonly relationType: RelationType;
5
6
  readonly result: RelationConditionResultState;
6
- constructor(relationType: RelationType, result: RelationConditionResultState);
7
+ constructor(key: number, relationType: RelationType, result: RelationConditionResultState);
7
8
  }
@@ -1,5 +1,6 @@
1
1
  export class RelationConditionResult {
2
- constructor(relationType, result) {
2
+ constructor(key, relationType, result) {
3
+ this.key = key;
3
4
  this.relationType = relationType;
4
5
  this.result = result;
5
6
  }
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"RelationConditionResult":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./relation-type","name":"RelationType","line":4,"character":46},{"__symbolic":"reference","module":"./relation-condition-result-state","name":"RelationConditionResultState","line":4,"character":84}]}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"RelationConditionResult":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","module":"./relation-type","name":"RelationType","line":4,"character":75},{"__symbolic":"reference","module":"./relation-condition-result-state","name":"RelationConditionResultState","line":4,"character":113}]}]}}}}]
@@ -12,7 +12,7 @@ export declare class WordConditionItemObserver extends ConditionItemObserver {
12
12
  get baseVariable(): string;
13
13
  get realtionVariable(): string;
14
14
  constructor(wordCondition: WordConditionModel, variableCommunicator: VariableCommunicator, variableStore: VariableStore);
15
- requestData(): void;
15
+ requestData(appId: string): void;
16
16
  private requestconditionEffectiveValue;
17
17
  private requestconditionEffectiveBaseValue;
18
18
  private requestconditionEffectiveRealtionValue;
@@ -28,7 +28,7 @@ export class WordConditionItemObserver extends ConditionItemObserver {
28
28
  const variable = new VariableDefinition(variableValue.variableName, variableValue.variableGroupName, variableValue.dataSourceCode, variableValue.variableVersion);
29
29
  return VariableUtil.getConvertedVariableName(this.variableStore, variable);
30
30
  }
31
- requestData() {
31
+ requestData(appId) {
32
32
  if (!this.wordCondition) {
33
33
  throw new Error('WordConditionModel cannot be null.');
34
34
  }
@@ -43,7 +43,7 @@ export class WordConditionItemObserver extends ConditionItemObserver {
43
43
  if (this.variableName) {
44
44
  this.variableCommunicator.subscribeVariableState(this.variableName).subscribe(variableValue => {
45
45
  if (variableValue.state === VariableStateEnum.Normal) {
46
- this.requestconditionEffectiveBaseValue(this.variableCommunicator);
46
+ this.requestconditionEffectiveBaseValue(this.variableCommunicator, appId);
47
47
  }
48
48
  else {
49
49
  this.conditionEffectiveChanged.emit(new RelationConditionResultState(new VariableState(this.variableName, variableValue.state), false));
@@ -63,7 +63,7 @@ export class WordConditionItemObserver extends ConditionItemObserver {
63
63
  if (this.variableName) {
64
64
  this.variableCommunicator.subscribeVariableState(this.variableName).subscribe(variableState => {
65
65
  if (variableState.state === VariableStateEnum.Normal) {
66
- this.requestconditionEffectiveRealtionValue(this.variableCommunicator);
66
+ this.requestconditionEffectiveRealtionValue(this.variableCommunicator, appId);
67
67
  }
68
68
  else {
69
69
  this.conditionEffectiveChanged.emit(new RelationConditionResultState(new VariableState(this.variableName, variableState.state), false));
@@ -71,14 +71,14 @@ export class WordConditionItemObserver extends ConditionItemObserver {
71
71
  });
72
72
  }
73
73
  else {
74
- this.requestconditionEffectiveRealtionValue(this.variableCommunicator);
74
+ this.requestconditionEffectiveRealtionValue(this.variableCommunicator, appId);
75
75
  }
76
76
  }
77
77
  }
78
78
  if (this.variableName) {
79
79
  this.variableCommunicator.subscribeVariableState(this.variableName).subscribe(variableValue => {
80
80
  if (variableValue.state === VariableStateEnum.Normal) {
81
- this.requestconditionEffectiveValue(this.variableCommunicator);
81
+ this.requestconditionEffectiveValue(this.variableCommunicator, appId);
82
82
  }
83
83
  else {
84
84
  this.conditionEffectiveChanged.emit(new RelationConditionResultState(new VariableState(this.variableName, variableValue.state), false));
@@ -86,22 +86,22 @@ export class WordConditionItemObserver extends ConditionItemObserver {
86
86
  });
87
87
  }
88
88
  }
89
- requestconditionEffectiveValue(variableCommunicator) {
90
- variableCommunicator.openVariable(this.variableName).subscribe(variableValue => {
89
+ requestconditionEffectiveValue(variableCommunicator, appId = '') {
90
+ variableCommunicator.openVariable(this.variableName, appId).subscribe(variableValue => {
91
91
  this.currentValue = variableValue;
92
92
  this.isConditionEffective = this.getIsConditionEffective();
93
93
  this.conditionEffectiveChanged.emit(new RelationConditionResultState(new VariableState(this.variableName, variableValue.state), this.isConditionEffective));
94
94
  });
95
95
  }
96
- requestconditionEffectiveBaseValue(variableCommunicator) {
97
- variableCommunicator.openVariable(this.baseVariable).subscribe(variableValue => {
96
+ requestconditionEffectiveBaseValue(variableCommunicator, appId = '') {
97
+ variableCommunicator.openVariable(this.baseVariable, appId).subscribe(variableValue => {
98
98
  this.baseVariableValue = variableValue;
99
99
  this.isConditionEffective = this.getIsConditionEffective();
100
100
  this.conditionEffectiveChanged.emit(new RelationConditionResultState(new VariableState(this.variableName, variableValue.state), this.isConditionEffective));
101
101
  });
102
102
  }
103
- requestconditionEffectiveRealtionValue(variableCommunicator) {
104
- variableCommunicator.openVariable(this.realtionVariable).subscribe(variableValue => {
103
+ requestconditionEffectiveRealtionValue(variableCommunicator, appId = '') {
104
+ variableCommunicator.openVariable(this.realtionVariable, appId).subscribe(variableValue => {
105
105
  this.realtionVariableValue = variableValue;
106
106
  this.isConditionEffective = this.getIsConditionEffective();
107
107
  this.conditionEffectiveChanged.emit(new RelationConditionResultState(new VariableState(this.variableName, variableValue.state), this.isConditionEffective));
@@ -7,5 +7,5 @@ import { Point } from '../point.model';
7
7
  import { VariableStore } from '../../../config';
8
8
  export declare class DynamicDisplay implements DynamicDisplayBehaviorModel {
9
9
  readonly doBehavior: EventEmitter<DynamicDisplayResultModel>;
10
- constructor(dynamicDisplay: DynamicDisplayModel, variableCommunicator: VariableCommunicator, variableStore: VariableStore, location: Point);
10
+ constructor(dynamicDisplay: DynamicDisplayModel, variableCommunicator: VariableCommunicator, variableStore: VariableStore, location: Point, signalRAppId: string);
11
11
  }
@@ -5,11 +5,11 @@ import { TranslationBehavior } from '../translation/translation-behavior';
5
5
  import { DynamicDisplayResultModel } from './dynamic-display-result-model';
6
6
  import { DynamicBehaviorType } from './dynamic-behavior-type';
7
7
  export class DynamicDisplay {
8
- constructor(dynamicDisplay, variableCommunicator, variableStore, location) {
8
+ constructor(dynamicDisplay, variableCommunicator, variableStore, location, signalRAppId) {
9
9
  this.doBehavior = new EventEmitter();
10
10
  if (dynamicDisplay.isHorizontalTranslation && dynamicDisplay.horizontalTranslation != null) {
11
11
  // tslint:disable-next-line:max-line-length
12
- const horizontalBehavior = new TranslationBehavior(dynamicDisplay.horizontalTranslation, variableCommunicator, variableStore, TranslationDirectionType.Horizontal, location);
12
+ const horizontalBehavior = new TranslationBehavior(dynamicDisplay.horizontalTranslation, variableCommunicator, variableStore, TranslationDirectionType.Horizontal, location, signalRAppId);
13
13
  horizontalBehavior.doTranslation.subscribe(tanslation => {
14
14
  // tslint:disable-next-line:max-line-length
15
15
  const dynamicDisplayResult = new DynamicDisplayResultModel(tanslation, undefined, DynamicBehaviorType.HorizontalTranslation);
@@ -18,14 +18,14 @@ export class DynamicDisplay {
18
18
  }
19
19
  if (dynamicDisplay.isVerticalTranslation && dynamicDisplay.verticalTranslation != null) {
20
20
  // tslint:disable-next-line:max-line-length
21
- const verticalBehavior = new TranslationBehavior(dynamicDisplay.verticalTranslation, variableCommunicator, variableStore, TranslationDirectionType.Vertical, location);
21
+ const verticalBehavior = new TranslationBehavior(dynamicDisplay.verticalTranslation, variableCommunicator, variableStore, TranslationDirectionType.Vertical, location, signalRAppId);
22
22
  verticalBehavior.doTranslation.subscribe(tanslation => {
23
23
  const dynamicDisplayResult = new DynamicDisplayResultModel(tanslation, undefined, DynamicBehaviorType.VerticalTranslation);
24
24
  this.doBehavior.emit(dynamicDisplayResult);
25
25
  });
26
26
  }
27
27
  if (dynamicDisplay.isRotation && dynamicDisplay.rotation != null) {
28
- const rotationBehavior = new RotationBehavior(dynamicDisplay.rotation, variableCommunicator, variableStore);
28
+ const rotationBehavior = new RotationBehavior(dynamicDisplay.rotation, variableCommunicator, variableStore, signalRAppId);
29
29
  rotationBehavior.doRotation.subscribe(angel => {
30
30
  const dynamicDisplayResult = new DynamicDisplayResultModel(undefined, angel, DynamicBehaviorType.Rotation);
31
31
  this.doBehavior.emit(dynamicDisplayResult);
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"DynamicDisplay":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./dynamic-display-model","name":"DynamicDisplayModel","line":18,"character":32},{"__symbolic":"reference","module":"../../../communication","name":"VariableCommunicator","line":18,"character":75},{"__symbolic":"reference","module":"../../../config","name":"VariableStore","line":18,"character":112},{"__symbolic":"reference","module":"../point.model","name":"Point","line":18,"character":137}]}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"DynamicDisplay":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./dynamic-display-model","name":"DynamicDisplayModel","line":18,"character":32},{"__symbolic":"reference","module":"../../../communication","name":"VariableCommunicator","line":18,"character":75},{"__symbolic":"reference","module":"../../../config","name":"VariableStore","line":18,"character":112},{"__symbolic":"reference","module":"../point.model","name":"Point","line":19,"character":18},{"__symbolic":"reference","name":"string"}]}]}}}}]
@@ -5,5 +5,5 @@ import { RotationModel } from './rotation-model';
5
5
  import { VariableStore } from '../../../config';
6
6
  export declare class RotationBehavior implements RotationBehaviorModel {
7
7
  readonly doRotation: EventEmitter<number>;
8
- constructor(rotationModel: RotationModel, variableCommunicator: VariableCommunicator, variableStore: VariableStore);
8
+ constructor(rotationModel: RotationModel, variableCommunicator: VariableCommunicator, variableStore: VariableStore, signalRAppId: string);
9
9
  }
@@ -2,9 +2,9 @@ import { EventEmitter } from '@angular/core';
2
2
  import { RotationDirectionType } from './rotation-direction-type';
3
3
  import { RotationObserver } from './rotation-observer';
4
4
  export class RotationBehavior {
5
- constructor(rotationModel, variableCommunicator, variableStore) {
5
+ constructor(rotationModel, variableCommunicator, variableStore, signalRAppId) {
6
6
  this.doRotation = new EventEmitter();
7
- const rotationObserver = new RotationObserver(rotationModel, variableCommunicator, variableStore);
7
+ const rotationObserver = new RotationObserver(rotationModel, variableCommunicator, variableStore, signalRAppId);
8
8
  rotationObserver.rotationValueChanged.subscribe(rotationValue => {
9
9
  if (+rotationModel.rotationDirection === RotationDirectionType.ClockWise) {
10
10
  let newRotation;
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"RotationBehavior":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./rotation-model","name":"RotationModel","line":13,"character":31},{"__symbolic":"reference","module":"../../../communication","name":"VariableCommunicator","line":13,"character":68},{"__symbolic":"reference","module":"../../../config","name":"VariableStore","line":13,"character":105}]}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"RotationBehavior":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./rotation-model","name":"RotationModel","line":13,"character":31},{"__symbolic":"reference","module":"../../../communication","name":"VariableCommunicator","line":13,"character":68},{"__symbolic":"reference","module":"../../../config","name":"VariableStore","line":13,"character":105},{"__symbolic":"reference","name":"string"}]}]}}}}]
@@ -4,7 +4,8 @@ import { VariableCommunicator } from '../../../communication';
4
4
  import { EventEmitter } from '@angular/core';
5
5
  import { VariableStore } from '../../../config';
6
6
  export declare class RotationObserver implements RotationObserverModel {
7
+ private readonly signalRAppId;
7
8
  readonly rotationValueChanged: EventEmitter<number>;
8
9
  private currentValue;
9
- constructor(rotationModel: RotationModel, variableCommunicator: VariableCommunicator, variableStore: VariableStore);
10
+ constructor(rotationModel: RotationModel, variableCommunicator: VariableCommunicator, variableStore: VariableStore, signalRAppId: string);
10
11
  }
@@ -3,7 +3,8 @@ import { EventEmitter } from '@angular/core';
3
3
  import { VariableUtil } from '../../../utils/variable-util';
4
4
  import { VariableDefinition } from '../../../communication/variable/variable-definition';
5
5
  export class RotationObserver {
6
- constructor(rotationModel, variableCommunicator, variableStore) {
6
+ constructor(rotationModel, variableCommunicator, variableStore, signalRAppId) {
7
+ this.signalRAppId = signalRAppId;
7
8
  this.rotationValueChanged = new EventEmitter();
8
9
  if (!rotationModel.variableName) {
9
10
  return;
@@ -15,7 +16,7 @@ export class RotationObserver {
15
16
  }
16
17
  variableCommunicator.subscribeVariableState(variableName).subscribe(variableValue => {
17
18
  if (variableValue.state === VariableStateEnum.Normal) {
18
- variableCommunicator.openVariable(variableName).subscribe(value => {
19
+ variableCommunicator.openVariable(variableName, this.signalRAppId).subscribe(value => {
19
20
  if (value.state === VariableStateEnum.DataNormal) {
20
21
  this.currentValue = value;
21
22
  this.rotationValueChanged.emit(this.currentValue.value);
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"RotationObserver":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./rotation-model","name":"RotationModel","line":14,"character":31},{"__symbolic":"reference","module":"../../../communication","name":"VariableCommunicator","line":14,"character":68},{"__symbolic":"reference","module":"../../../config","name":"VariableStore","line":14,"character":105}]}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"RotationObserver":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./rotation-model","name":"RotationModel","line":14,"character":31},{"__symbolic":"reference","module":"../../../communication","name":"VariableCommunicator","line":14,"character":68},{"__symbolic":"reference","module":"../../../config","name":"VariableStore","line":14,"character":105},{"__symbolic":"reference","name":"string"}]}]}}}}]
@@ -7,6 +7,6 @@ import { Point } from '../point.model';
7
7
  import { VariableStore } from '../../../config';
8
8
  export declare class TranslationBehavior implements TranslationBehaviorModel {
9
9
  readonly doTranslation: EventEmitter<number>;
10
- constructor(translationModel: TranslationModel, variableCommunicator: VariableCommunicator, variableStore: VariableStore, translationDirection: TranslationDirectionType, location: Point);
10
+ constructor(translationModel: TranslationModel, variableCommunicator: VariableCommunicator, variableStore: VariableStore, translationDirection: TranslationDirectionType, location: Point, signalRAppId: string);
11
11
  private getTranslationValue;
12
12
  }
@@ -2,17 +2,17 @@ import { EventEmitter } from '@angular/core';
2
2
  import { TranslationObserver } from './translation-observer';
3
3
  import { TranslationDirectionType } from './translation-direction-type';
4
4
  export class TranslationBehavior {
5
- constructor(translationModel, variableCommunicator, variableStore, translationDirection, location) {
5
+ constructor(translationModel, variableCommunicator, variableStore, translationDirection, location, signalRAppId) {
6
6
  this.doTranslation = new EventEmitter();
7
7
  if (translationDirection === TranslationDirectionType.Horizontal) {
8
- const horizontalTranslation = new TranslationObserver(translationModel, variableCommunicator, variableStore);
8
+ const horizontalTranslation = new TranslationObserver(translationModel, variableCommunicator, variableStore, signalRAppId);
9
9
  horizontalTranslation.translationValueChanged.subscribe(inputValue => {
10
10
  const currentLocation = this.getTranslationValue(translationModel, (+inputValue), location.x);
11
11
  this.doTranslation.emit(currentLocation);
12
12
  });
13
13
  }
14
14
  if (translationDirection === TranslationDirectionType.Vertical) {
15
- const verticalTranslation = new TranslationObserver(translationModel, variableCommunicator, variableStore);
15
+ const verticalTranslation = new TranslationObserver(translationModel, variableCommunicator, variableStore, signalRAppId);
16
16
  verticalTranslation.translationValueChanged.subscribe(inputValue => {
17
17
  const currentLocation = this.getTranslationValue(translationModel, (+inputValue), location.y);
18
18
  this.doTranslation.emit(currentLocation);
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"TranslationBehavior":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./translation-model","name":"TranslationModel","line":13,"character":34},{"__symbolic":"reference","module":"../../../communication","name":"VariableCommunicator","line":14,"character":30},{"__symbolic":"reference","module":"../../../config","name":"VariableStore","line":15,"character":23},{"__symbolic":"reference","module":"./translation-direction-type","name":"TranslationDirectionType","line":16,"character":30},{"__symbolic":"reference","module":"../point.model","name":"Point","line":17,"character":18}]}],"getTranslationValue":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"TranslationBehavior":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./translation-model","name":"TranslationModel","line":13,"character":34},{"__symbolic":"reference","module":"../../../communication","name":"VariableCommunicator","line":14,"character":30},{"__symbolic":"reference","module":"../../../config","name":"VariableStore","line":15,"character":23},{"__symbolic":"reference","module":"./translation-direction-type","name":"TranslationDirectionType","line":16,"character":30},{"__symbolic":"reference","module":"../point.model","name":"Point","line":17,"character":18},{"__symbolic":"reference","name":"string"}]}],"getTranslationValue":[{"__symbolic":"method"}]}}}}]
@@ -6,5 +6,5 @@ import { VariableStore } from '../../../config';
6
6
  export declare class TranslationObserver implements TranslationObserverModel {
7
7
  readonly translationValueChanged: EventEmitter<number>;
8
8
  private currentValue;
9
- constructor(model: TranslationModel, variableCommunicator: VariableCommunicator, variableStore: VariableStore);
9
+ constructor(model: TranslationModel, variableCommunicator: VariableCommunicator, variableStore: VariableStore, signalRAppId: string);
10
10
  }
@@ -3,7 +3,7 @@ import { VariableStateEnum } from '../../../communication';
3
3
  import { VariableUtil } from '../../../utils/variable-util';
4
4
  import { VariableDefinition } from '../../../communication/variable/variable-definition';
5
5
  export class TranslationObserver {
6
- constructor(model, variableCommunicator, variableStore) {
6
+ constructor(model, variableCommunicator, variableStore, signalRAppId) {
7
7
  this.translationValueChanged = new EventEmitter();
8
8
  if (!model.variableName) {
9
9
  return;
@@ -15,7 +15,7 @@ export class TranslationObserver {
15
15
  }
16
16
  variableCommunicator.subscribeVariableState(variableName).subscribe(variableValue => {
17
17
  if (variableValue.state === VariableStateEnum.Normal) {
18
- variableCommunicator.openVariable(variableName).subscribe(value => {
18
+ variableCommunicator.openVariable(variableName, signalRAppId).subscribe(value => {
19
19
  if (value.state === VariableStateEnum.DataNormal) {
20
20
  this.currentValue = value;
21
21
  this.translationValueChanged.emit(this.currentValue.value);
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"TranslationObserver":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./translation-model","name":"TranslationModel","line":15,"character":23},{"__symbolic":"reference","module":"../../../communication","name":"VariableCommunicator","line":15,"character":63},{"__symbolic":"reference","module":"../../../config","name":"VariableStore","line":15,"character":100}]}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"TranslationObserver":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./translation-model","name":"TranslationModel","line":15,"character":23},{"__symbolic":"reference","module":"../../../communication","name":"VariableCommunicator","line":15,"character":63},{"__symbolic":"reference","module":"../../../config","name":"VariableStore","line":15,"character":100},{"__symbolic":"reference","name":"string"}]}]}}}}]
@@ -1,5 +1,6 @@
1
1
  export declare enum BitSwitchOperation {
2
2
  On = 0,
3
3
  Off = 1,
4
- Inverse = 2
4
+ Inverse = 2,
5
+ Restoration = 3
5
6
  }
@@ -3,4 +3,5 @@ export var BitSwitchOperation;
3
3
  BitSwitchOperation[BitSwitchOperation["On"] = 0] = "On";
4
4
  BitSwitchOperation[BitSwitchOperation["Off"] = 1] = "Off";
5
5
  BitSwitchOperation[BitSwitchOperation["Inverse"] = 2] = "Inverse";
6
+ BitSwitchOperation[BitSwitchOperation["Restoration"] = 3] = "Restoration";
6
7
  })(BitSwitchOperation || (BitSwitchOperation = {}));
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"BitSwitchOperation":{"On":0,"Off":1,"Inverse":2}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"BitSwitchOperation":{"On":0,"Off":1,"Inverse":2,"Restoration":3}}}]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "main": "bundles/fc-gui.umd.js",
3
- "version": "3.0.0-alpha.3",
3
+ "version": "3.0.0-alpha.32",
4
4
  "module": "public_api.js",
5
5
  "typings": "public_api.d.ts",
6
6
  "license": "UNLICENSED",
@@ -6,6 +6,7 @@ export declare class RemoteVariableCommunicator implements VariableCommunicator
6
6
  private readonly remoteVariableProtocol;
7
7
  private readonly logger;
8
8
  private observers;
9
+ private appIdVariablesMap;
9
10
  private connectedSubscription;
10
11
  private variableValuesChangedSubscription;
11
12
  private variablesToBeOpened;
@@ -21,8 +22,8 @@ export declare class RemoteVariableCommunicator implements VariableCommunicator
21
22
  private doVariableStatesChanged;
22
23
  subscribeVariableStates(variableNames: string[]): Observable<VariableState[]>;
23
24
  subscribeVariableState(variableName: string): Observable<VariableState>;
24
- openVariables(variableNames: string[]): Observable<VariableValue[]>;
25
- openVariable(variableName: string): Observable<VariableValue>;
25
+ openVariables(variableNames: string[], appId?: string): Observable<VariableValue[]>;
26
+ openVariable(variableName: string, appId?: string): Observable<VariableValue>;
26
27
  write(variableName: string, value: any): Observable<VariableValue>;
27
28
  writeWordByBit(variableName: string, index: number, value: number): Observable<VariableValue>;
28
29
  dispose(): void;
@@ -7,6 +7,7 @@ export class RemoteVariableCommunicator {
7
7
  this.remoteVariableProtocol = remoteVariableProtocol;
8
8
  this.logger = logger;
9
9
  this.observers = new Map();
10
+ this.appIdVariablesMap = new Map();
10
11
  this.variableStateObservers = new Map();
11
12
  this.variableStateCache = new Map();
12
13
  this.variableValueCache = new StringifyingMap(k => JSON.stringify(k));
@@ -16,11 +17,9 @@ export class RemoteVariableCommunicator {
16
17
  variableNamesToStart.push(variableName);
17
18
  });
18
19
  this.remoteVariableProtocol.subscribeVariableStates(variableNamesToStart);
19
- const variablesToStart = [];
20
- this.observers.forEach((__, variableName) => {
21
- variablesToStart.push(variableName);
20
+ this.appIdVariablesMap.forEach((variableNames, appId) => {
21
+ this.remoteVariableProtocol.tryOpenVariables(variableNames, appId);
22
22
  });
23
- this.remoteVariableProtocol.tryOpenVariables(variablesToStart);
24
23
  });
25
24
  this.doVariableStatesChanged();
26
25
  this.doVariableValuesChanged();
@@ -116,7 +115,7 @@ export class RemoteVariableCommunicator {
116
115
  subscribeVariableState(variableName) {
117
116
  return this.subscribeVariableStates([variableName]).pipe(map(values => values[0]));
118
117
  }
119
- openVariables(variableNames) {
118
+ openVariables(variableNames, appId = '') {
120
119
  return new Observable(observer => {
121
120
  let variablesToStart = [];
122
121
  each(variableNames, variableName => {
@@ -131,6 +130,14 @@ export class RemoteVariableCommunicator {
131
130
  }
132
131
  }
133
132
  this.observers.get(variableName).push(observer);
133
+ if (!this.appIdVariablesMap.get(appId)) {
134
+ this.appIdVariablesMap.set(appId, []);
135
+ }
136
+ else {
137
+ if (this.appIdVariablesMap.get(appId).indexOf(variableName) === -1) {
138
+ this.appIdVariablesMap.get(appId).push(variableName);
139
+ }
140
+ }
134
141
  }
135
142
  });
136
143
  variablesToStart = uniq(variablesToStart);
@@ -138,7 +145,7 @@ export class RemoteVariableCommunicator {
138
145
  if (!this.variablesToBeOpened) {
139
146
  this.variablesToBeOpened = [];
140
147
  setTimeout(() => {
141
- this.remoteVariableProtocol.tryOpenVariables(this.variablesToBeOpened);
148
+ this.remoteVariableProtocol.tryOpenVariables(this.variablesToBeOpened, appId);
142
149
  delete this.variablesToBeOpened;
143
150
  });
144
151
  }
@@ -162,7 +169,7 @@ export class RemoteVariableCommunicator {
162
169
  if (!this.variablesToBeClosed) {
163
170
  this.variablesToBeClosed = [];
164
171
  setTimeout(() => {
165
- this.remoteVariableProtocol.tryStopVariables(this.variablesToBeClosed);
172
+ this.remoteVariableProtocol.tryStopVariables(this.variablesToBeClosed, appId);
166
173
  delete this.variablesToBeClosed;
167
174
  });
168
175
  }
@@ -170,11 +177,11 @@ export class RemoteVariableCommunicator {
170
177
  };
171
178
  });
172
179
  }
173
- openVariable(variableName) {
180
+ openVariable(variableName, appId = '') {
174
181
  if (!variableName) {
175
182
  return;
176
183
  }
177
- return this.openVariables([variableName]).pipe(map(values => values[0]));
184
+ return this.openVariables([variableName], appId).pipe(map(values => values[0]));
178
185
  }
179
186
  write(variableName, value) {
180
187
  if (!variableName) {