@itwin/presentation-frontend 4.0.0-dev.21 → 4.0.0-dev.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/presentation-frontend/ConnectivityInformationProvider.d.ts +29 -29
- package/lib/cjs/presentation-frontend/ConnectivityInformationProvider.js +47 -47
- package/lib/cjs/presentation-frontend/ConnectivityInformationProvider.js.map +1 -1
- package/lib/cjs/presentation-frontend/Diagnostics.d.ts +14 -14
- package/lib/cjs/presentation-frontend/Diagnostics.js +61 -61
- package/lib/cjs/presentation-frontend/Diagnostics.js.map +1 -1
- package/lib/cjs/presentation-frontend/FrontendLoggerCategory.d.ts +12 -12
- package/lib/cjs/presentation-frontend/FrontendLoggerCategory.js +20 -20
- package/lib/cjs/presentation-frontend/FrontendLoggerCategory.js.map +1 -1
- package/lib/cjs/presentation-frontend/IpcRequestsHandler.d.ts +10 -10
- package/lib/cjs/presentation-frontend/IpcRequestsHandler.js +41 -41
- package/lib/cjs/presentation-frontend/IpcRequestsHandler.js.map +1 -1
- package/lib/cjs/presentation-frontend/LocalizationHelper.d.ts +10 -10
- package/lib/cjs/presentation-frontend/LocalizationHelper.js +31 -31
- package/lib/cjs/presentation-frontend/LocalizationHelper.js.map +1 -1
- package/lib/cjs/presentation-frontend/Presentation.d.ts +73 -73
- package/lib/cjs/presentation-frontend/Presentation.js +160 -160
- package/lib/cjs/presentation-frontend/Presentation.js.map +1 -1
- package/lib/cjs/presentation-frontend/PresentationManager.d.ts +186 -186
- package/lib/cjs/presentation-frontend/PresentationManager.js +436 -436
- package/lib/cjs/presentation-frontend/PresentationManager.js.map +1 -1
- package/lib/cjs/presentation-frontend/RulesetManager.d.ts +63 -63
- package/lib/cjs/presentation-frontend/RulesetManager.js +85 -85
- package/lib/cjs/presentation-frontend/RulesetManager.js.map +1 -1
- package/lib/cjs/presentation-frontend/RulesetVariablesManager.d.ts +143 -143
- package/lib/cjs/presentation-frontend/RulesetVariablesManager.js +195 -195
- package/lib/cjs/presentation-frontend/RulesetVariablesManager.js.map +1 -1
- package/lib/cjs/presentation-frontend/StateTracker.d.ts +38 -38
- package/lib/cjs/presentation-frontend/StateTracker.js +129 -129
- package/lib/cjs/presentation-frontend/StateTracker.js.map +1 -1
- package/lib/cjs/presentation-frontend/favorite-properties/FavoritePropertiesManager.d.ts +132 -132
- package/lib/cjs/presentation-frontend/favorite-properties/FavoritePropertiesManager.js +525 -525
- package/lib/cjs/presentation-frontend/favorite-properties/FavoritePropertiesManager.js.map +1 -1
- package/lib/cjs/presentation-frontend/favorite-properties/FavoritePropertiesStorage.d.ts +111 -111
- package/lib/cjs/presentation-frontend/favorite-properties/FavoritePropertiesStorage.js +293 -293
- package/lib/cjs/presentation-frontend/favorite-properties/FavoritePropertiesStorage.js.map +1 -1
- package/lib/cjs/presentation-frontend/selection/HiliteRules.json +172 -172
- package/lib/cjs/presentation-frontend/selection/HiliteSetProvider.d.ts +52 -52
- package/lib/cjs/presentation-frontend/selection/HiliteSetProvider.js +97 -97
- package/lib/cjs/presentation-frontend/selection/HiliteSetProvider.js.map +1 -1
- package/lib/cjs/presentation-frontend/selection/ISelectionProvider.d.ts +19 -19
- package/lib/cjs/presentation-frontend/selection/ISelectionProvider.js +9 -9
- package/lib/cjs/presentation-frontend/selection/ISelectionProvider.js.map +1 -1
- package/lib/cjs/presentation-frontend/selection/SelectionChangeEvent.d.ts +52 -52
- package/lib/cjs/presentation-frontend/selection/SelectionChangeEvent.js +33 -33
- package/lib/cjs/presentation-frontend/selection/SelectionChangeEvent.js.map +1 -1
- package/lib/cjs/presentation-frontend/selection/SelectionHandler.d.ts +103 -103
- package/lib/cjs/presentation-frontend/selection/SelectionHandler.js +108 -108
- package/lib/cjs/presentation-frontend/selection/SelectionHandler.js.map +1 -1
- package/lib/cjs/presentation-frontend/selection/SelectionHelper.d.ts +17 -17
- package/lib/cjs/presentation-frontend/selection/SelectionHelper.js +40 -40
- package/lib/cjs/presentation-frontend/selection/SelectionHelper.js.map +1 -1
- package/lib/cjs/presentation-frontend/selection/SelectionManager.d.ts +139 -139
- package/lib/cjs/presentation-frontend/selection/SelectionManager.js +414 -414
- package/lib/cjs/presentation-frontend/selection/SelectionManager.js.map +1 -1
- package/lib/cjs/presentation-frontend/selection/SelectionScopesManager.d.ts +59 -59
- package/lib/cjs/presentation-frontend/selection/SelectionScopesManager.js +91 -91
- package/lib/cjs/presentation-frontend/selection/SelectionScopesManager.js.map +1 -1
- package/lib/cjs/presentation-frontend.d.ts +34 -34
- package/lib/cjs/presentation-frontend.js +50 -50
- package/lib/cjs/presentation-frontend.js.map +1 -1
- package/lib/esm/presentation-frontend/ConnectivityInformationProvider.d.ts +29 -29
- package/lib/esm/presentation-frontend/ConnectivityInformationProvider.js +43 -43
- package/lib/esm/presentation-frontend/ConnectivityInformationProvider.js.map +1 -1
- package/lib/esm/presentation-frontend/Diagnostics.d.ts +14 -14
- package/lib/esm/presentation-frontend/Diagnostics.js +56 -56
- package/lib/esm/presentation-frontend/Diagnostics.js.map +1 -1
- package/lib/esm/presentation-frontend/FrontendLoggerCategory.d.ts +12 -12
- package/lib/esm/presentation-frontend/FrontendLoggerCategory.js +17 -17
- package/lib/esm/presentation-frontend/FrontendLoggerCategory.js.map +1 -1
- package/lib/esm/presentation-frontend/IpcRequestsHandler.d.ts +10 -10
- package/lib/esm/presentation-frontend/IpcRequestsHandler.js +37 -37
- package/lib/esm/presentation-frontend/IpcRequestsHandler.js.map +1 -1
- package/lib/esm/presentation-frontend/LocalizationHelper.d.ts +10 -10
- package/lib/esm/presentation-frontend/LocalizationHelper.js +27 -27
- package/lib/esm/presentation-frontend/LocalizationHelper.js.map +1 -1
- package/lib/esm/presentation-frontend/Presentation.d.ts +73 -73
- package/lib/esm/presentation-frontend/Presentation.js +156 -156
- package/lib/esm/presentation-frontend/Presentation.js.map +1 -1
- package/lib/esm/presentation-frontend/PresentationManager.d.ts +186 -186
- package/lib/esm/presentation-frontend/PresentationManager.js +431 -431
- package/lib/esm/presentation-frontend/PresentationManager.js.map +1 -1
- package/lib/esm/presentation-frontend/RulesetManager.d.ts +63 -63
- package/lib/esm/presentation-frontend/RulesetManager.js +81 -81
- package/lib/esm/presentation-frontend/RulesetManager.js.map +1 -1
- package/lib/esm/presentation-frontend/RulesetVariablesManager.d.ts +143 -143
- package/lib/esm/presentation-frontend/RulesetVariablesManager.js +191 -191
- package/lib/esm/presentation-frontend/RulesetVariablesManager.js.map +1 -1
- package/lib/esm/presentation-frontend/StateTracker.d.ts +38 -38
- package/lib/esm/presentation-frontend/StateTracker.js +125 -125
- package/lib/esm/presentation-frontend/StateTracker.js.map +1 -1
- package/lib/esm/presentation-frontend/favorite-properties/FavoritePropertiesManager.d.ts +132 -132
- package/lib/esm/presentation-frontend/favorite-properties/FavoritePropertiesManager.js +519 -519
- package/lib/esm/presentation-frontend/favorite-properties/FavoritePropertiesManager.js.map +1 -1
- package/lib/esm/presentation-frontend/favorite-properties/FavoritePropertiesStorage.d.ts +111 -111
- package/lib/esm/presentation-frontend/favorite-properties/FavoritePropertiesStorage.js +285 -285
- package/lib/esm/presentation-frontend/favorite-properties/FavoritePropertiesStorage.js.map +1 -1
- package/lib/esm/presentation-frontend/selection/HiliteRules.json +172 -172
- package/lib/esm/presentation-frontend/selection/HiliteSetProvider.d.ts +52 -52
- package/lib/esm/presentation-frontend/selection/HiliteSetProvider.js +93 -93
- package/lib/esm/presentation-frontend/selection/HiliteSetProvider.js.map +1 -1
- package/lib/esm/presentation-frontend/selection/ISelectionProvider.d.ts +19 -19
- package/lib/esm/presentation-frontend/selection/ISelectionProvider.js +8 -8
- package/lib/esm/presentation-frontend/selection/ISelectionProvider.js.map +1 -1
- package/lib/esm/presentation-frontend/selection/SelectionChangeEvent.d.ts +52 -52
- package/lib/esm/presentation-frontend/selection/SelectionChangeEvent.js +29 -29
- package/lib/esm/presentation-frontend/selection/SelectionChangeEvent.js.map +1 -1
- package/lib/esm/presentation-frontend/selection/SelectionHandler.d.ts +103 -103
- package/lib/esm/presentation-frontend/selection/SelectionHandler.js +104 -104
- package/lib/esm/presentation-frontend/selection/SelectionHandler.js.map +1 -1
- package/lib/esm/presentation-frontend/selection/SelectionHelper.d.ts +17 -17
- package/lib/esm/presentation-frontend/selection/SelectionHelper.js +36 -36
- package/lib/esm/presentation-frontend/selection/SelectionHelper.js.map +1 -1
- package/lib/esm/presentation-frontend/selection/SelectionManager.d.ts +139 -139
- package/lib/esm/presentation-frontend/selection/SelectionManager.js +409 -409
- package/lib/esm/presentation-frontend/selection/SelectionManager.js.map +1 -1
- package/lib/esm/presentation-frontend/selection/SelectionScopesManager.d.ts +59 -59
- package/lib/esm/presentation-frontend/selection/SelectionScopesManager.js +85 -85
- package/lib/esm/presentation-frontend/selection/SelectionScopesManager.js.map +1 -1
- package/lib/esm/presentation-frontend.d.ts +34 -34
- package/lib/esm/presentation-frontend.js +38 -38
- package/lib/esm/presentation-frontend.js.map +1 -1
- package/package.json +14 -14
|
@@ -1,192 +1,192 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
/** @packageDocumentation
|
|
6
|
-
* @module Core
|
|
7
|
-
*/
|
|
8
|
-
import { assert, BeEvent, Id64, OrderedId64Iterable } from "@itwin/core-bentley";
|
|
9
|
-
import { VariableValueTypes } from "@itwin/presentation-common";
|
|
10
|
-
/** @internal */
|
|
11
|
-
export class RulesetVariablesManagerImpl {
|
|
12
|
-
constructor(rulesetId, ipcHandler) {
|
|
13
|
-
this._clientValues = new Map();
|
|
14
|
-
this.onVariableChanged = new BeEvent();
|
|
15
|
-
this._rulesetId = rulesetId;
|
|
16
|
-
this._ipcHandler = ipcHandler;
|
|
17
|
-
}
|
|
18
|
-
getAllVariables() {
|
|
19
|
-
const variables = [];
|
|
20
|
-
for (const entry of this._clientValues)
|
|
21
|
-
variables.push(entry[1]);
|
|
22
|
-
return variables;
|
|
23
|
-
}
|
|
24
|
-
changeValueType(variable, toType) {
|
|
25
|
-
switch (toType) {
|
|
26
|
-
case VariableValueTypes.Bool:
|
|
27
|
-
switch (variable.type) {
|
|
28
|
-
case VariableValueTypes.Int: return (0 !== variable.value);
|
|
29
|
-
case VariableValueTypes.Id64: return Id64.isValidId64(variable.value);
|
|
30
|
-
default: return undefined;
|
|
31
|
-
}
|
|
32
|
-
case VariableValueTypes.Int:
|
|
33
|
-
switch (variable.type) {
|
|
34
|
-
case VariableValueTypes.Bool: return variable.value ? 1 : 0;
|
|
35
|
-
case VariableValueTypes.Id64: return Id64.getUpperUint32(variable.value);
|
|
36
|
-
default: return undefined;
|
|
37
|
-
}
|
|
38
|
-
case VariableValueTypes.IntArray:
|
|
39
|
-
switch (variable.type) {
|
|
40
|
-
case VariableValueTypes.Id64Array: return variable.value.map((id) => Id64.getUpperUint32(id));
|
|
41
|
-
default: return undefined;
|
|
42
|
-
}
|
|
43
|
-
case VariableValueTypes.Id64:
|
|
44
|
-
switch (variable.type) {
|
|
45
|
-
case VariableValueTypes.Bool: return Id64.fromLocalAndBriefcaseIds(variable.value ? 1 : 0, 0);
|
|
46
|
-
case VariableValueTypes.Int: return Id64.fromLocalAndBriefcaseIds(variable.value, 0);
|
|
47
|
-
default: return undefined;
|
|
48
|
-
}
|
|
49
|
-
case VariableValueTypes.Id64Array:
|
|
50
|
-
switch (variable.type) {
|
|
51
|
-
case VariableValueTypes.IntArray: return variable.value.map((int) => Id64.fromLocalAndBriefcaseIds(int, 0));
|
|
52
|
-
default: return undefined;
|
|
53
|
-
}
|
|
54
|
-
case VariableValueTypes.String:
|
|
55
|
-
switch (variable.type) {
|
|
56
|
-
case VariableValueTypes.IntArray:
|
|
57
|
-
case VariableValueTypes.Id64Array:
|
|
58
|
-
return undefined;
|
|
59
|
-
default: variable.value.toString();
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return undefined;
|
|
63
|
-
}
|
|
64
|
-
async getValue(id, type) {
|
|
65
|
-
const variable = this._clientValues.get(id);
|
|
66
|
-
if (!variable)
|
|
67
|
-
return undefined;
|
|
68
|
-
if (variable.type !== type)
|
|
69
|
-
return this.changeValueType(variable, type);
|
|
70
|
-
return variable.value;
|
|
71
|
-
}
|
|
72
|
-
async setValue(variable) {
|
|
73
|
-
const oldVariable = this._clientValues.get(variable.id);
|
|
74
|
-
if (oldVariable && variablesEqual(oldVariable, variable))
|
|
75
|
-
return;
|
|
76
|
-
this._clientValues.set(variable.id, variable);
|
|
77
|
-
if (this._ipcHandler) {
|
|
78
|
-
await this._ipcHandler.setRulesetVariable({ rulesetId: this._rulesetId, variable });
|
|
79
|
-
}
|
|
80
|
-
this.onVariableChanged.raiseEvent(variable.id, oldVariable === null || oldVariable === void 0 ? void 0 : oldVariable.value, variable.value);
|
|
81
|
-
}
|
|
82
|
-
async unset(variableId) {
|
|
83
|
-
const variable = this._clientValues.get(variableId);
|
|
84
|
-
if (variable === undefined)
|
|
85
|
-
return;
|
|
86
|
-
this._clientValues.delete(variable.id);
|
|
87
|
-
if (this._ipcHandler) {
|
|
88
|
-
await this._ipcHandler.unsetRulesetVariable({ rulesetId: this._rulesetId, variableId });
|
|
89
|
-
}
|
|
90
|
-
this.onVariableChanged.raiseEvent(variable.id, variable.value, undefined);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Retrieves `string` variable value.
|
|
94
|
-
* Returns empty string if variable does not exist or does not convert to string.
|
|
95
|
-
*/
|
|
96
|
-
async getString(variableId) {
|
|
97
|
-
return await this.getValue(variableId, VariableValueTypes.String) || "";
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Sets `string` variable value
|
|
101
|
-
*/
|
|
102
|
-
async setString(variableId, value) {
|
|
103
|
-
await this.setValue({ id: variableId, type: VariableValueTypes.String, value });
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Retrieves `boolean` variable value.
|
|
107
|
-
* Returns `false` if variable does not exist or does not convert to boolean.
|
|
108
|
-
*/
|
|
109
|
-
async getBool(variableId) {
|
|
110
|
-
return await this.getValue(variableId, VariableValueTypes.Bool) || false;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Sets `boolean` variable value
|
|
114
|
-
*/
|
|
115
|
-
async setBool(variableId, value) {
|
|
116
|
-
await this.setValue({ id: variableId, type: VariableValueTypes.Bool, value });
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Retrieves `number` variable value.
|
|
120
|
-
* Returns `0` if variable does not exist or does not convert to integer.
|
|
121
|
-
*/
|
|
122
|
-
async getInt(variableId) {
|
|
123
|
-
return await this.getValue(variableId, VariableValueTypes.Int) || 0;
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Sets `number` variable value
|
|
127
|
-
*/
|
|
128
|
-
async setInt(variableId, value) {
|
|
129
|
-
await this.setValue({ id: variableId, type: VariableValueTypes.Int, value });
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Retrieves `number[]` variable value.
|
|
133
|
-
* Returns empty array if variable does not exist or does not convert to integer array.
|
|
134
|
-
*/
|
|
135
|
-
async getInts(variableId) {
|
|
136
|
-
return await this.getValue(variableId, VariableValueTypes.IntArray) || [];
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Sets `number[]` variable value
|
|
140
|
-
*/
|
|
141
|
-
async setInts(variableId, value) {
|
|
142
|
-
await this.setValue({ id: variableId, type: VariableValueTypes.IntArray, value: [...value] });
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Retrieves `Id64String` variable value.
|
|
146
|
-
* Returns invalid Id64String if variable does not exist or does not convert to Id64String.
|
|
147
|
-
*/
|
|
148
|
-
async getId64(variableId) {
|
|
149
|
-
return await this.getValue(variableId, VariableValueTypes.Id64) || Id64.invalid;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Sets `Id64String` variable value
|
|
153
|
-
*/
|
|
154
|
-
async setId64(variableId, value) {
|
|
155
|
-
await this.setValue({ id: variableId, type: VariableValueTypes.Id64, value });
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Retrieves `Id64String[]` variable value.
|
|
159
|
-
* Returns empty array if variable does not exist or does not convert to Id64String array.
|
|
160
|
-
*/
|
|
161
|
-
async getId64s(variableId) {
|
|
162
|
-
return await this.getValue(variableId, VariableValueTypes.Id64Array) || [];
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Sets `Id64String[]` variable value
|
|
166
|
-
*/
|
|
167
|
-
async setId64s(variableId, value) {
|
|
168
|
-
await this.setValue({ id: variableId, type: VariableValueTypes.Id64Array, value: [...OrderedId64Iterable.sortArray(value)] });
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
function variablesEqual(lhs, rhs) {
|
|
172
|
-
if (lhs.type !== rhs.type)
|
|
173
|
-
return false;
|
|
174
|
-
switch (lhs.type) {
|
|
175
|
-
case VariableValueTypes.IntArray:
|
|
176
|
-
case VariableValueTypes.Id64Array:
|
|
177
|
-
assert(rhs.type === lhs.type);
|
|
178
|
-
return arraysEqual(lhs.value, rhs.value);
|
|
179
|
-
default:
|
|
180
|
-
return lhs.value === rhs.value;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
function arraysEqual(lhs, rhs) {
|
|
184
|
-
if (lhs.length !== rhs.length)
|
|
185
|
-
return false;
|
|
186
|
-
for (let i = 0; i < lhs.length; ++i) {
|
|
187
|
-
if (lhs[i] !== rhs[i])
|
|
188
|
-
return false;
|
|
189
|
-
}
|
|
190
|
-
return true;
|
|
191
|
-
}
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module Core
|
|
7
|
+
*/
|
|
8
|
+
import { assert, BeEvent, Id64, OrderedId64Iterable } from "@itwin/core-bentley";
|
|
9
|
+
import { VariableValueTypes } from "@itwin/presentation-common";
|
|
10
|
+
/** @internal */
|
|
11
|
+
export class RulesetVariablesManagerImpl {
|
|
12
|
+
constructor(rulesetId, ipcHandler) {
|
|
13
|
+
this._clientValues = new Map();
|
|
14
|
+
this.onVariableChanged = new BeEvent();
|
|
15
|
+
this._rulesetId = rulesetId;
|
|
16
|
+
this._ipcHandler = ipcHandler;
|
|
17
|
+
}
|
|
18
|
+
getAllVariables() {
|
|
19
|
+
const variables = [];
|
|
20
|
+
for (const entry of this._clientValues)
|
|
21
|
+
variables.push(entry[1]);
|
|
22
|
+
return variables;
|
|
23
|
+
}
|
|
24
|
+
changeValueType(variable, toType) {
|
|
25
|
+
switch (toType) {
|
|
26
|
+
case VariableValueTypes.Bool:
|
|
27
|
+
switch (variable.type) {
|
|
28
|
+
case VariableValueTypes.Int: return (0 !== variable.value);
|
|
29
|
+
case VariableValueTypes.Id64: return Id64.isValidId64(variable.value);
|
|
30
|
+
default: return undefined;
|
|
31
|
+
}
|
|
32
|
+
case VariableValueTypes.Int:
|
|
33
|
+
switch (variable.type) {
|
|
34
|
+
case VariableValueTypes.Bool: return variable.value ? 1 : 0;
|
|
35
|
+
case VariableValueTypes.Id64: return Id64.getUpperUint32(variable.value);
|
|
36
|
+
default: return undefined;
|
|
37
|
+
}
|
|
38
|
+
case VariableValueTypes.IntArray:
|
|
39
|
+
switch (variable.type) {
|
|
40
|
+
case VariableValueTypes.Id64Array: return variable.value.map((id) => Id64.getUpperUint32(id));
|
|
41
|
+
default: return undefined;
|
|
42
|
+
}
|
|
43
|
+
case VariableValueTypes.Id64:
|
|
44
|
+
switch (variable.type) {
|
|
45
|
+
case VariableValueTypes.Bool: return Id64.fromLocalAndBriefcaseIds(variable.value ? 1 : 0, 0);
|
|
46
|
+
case VariableValueTypes.Int: return Id64.fromLocalAndBriefcaseIds(variable.value, 0);
|
|
47
|
+
default: return undefined;
|
|
48
|
+
}
|
|
49
|
+
case VariableValueTypes.Id64Array:
|
|
50
|
+
switch (variable.type) {
|
|
51
|
+
case VariableValueTypes.IntArray: return variable.value.map((int) => Id64.fromLocalAndBriefcaseIds(int, 0));
|
|
52
|
+
default: return undefined;
|
|
53
|
+
}
|
|
54
|
+
case VariableValueTypes.String:
|
|
55
|
+
switch (variable.type) {
|
|
56
|
+
case VariableValueTypes.IntArray:
|
|
57
|
+
case VariableValueTypes.Id64Array:
|
|
58
|
+
return undefined;
|
|
59
|
+
default: variable.value.toString();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
async getValue(id, type) {
|
|
65
|
+
const variable = this._clientValues.get(id);
|
|
66
|
+
if (!variable)
|
|
67
|
+
return undefined;
|
|
68
|
+
if (variable.type !== type)
|
|
69
|
+
return this.changeValueType(variable, type);
|
|
70
|
+
return variable.value;
|
|
71
|
+
}
|
|
72
|
+
async setValue(variable) {
|
|
73
|
+
const oldVariable = this._clientValues.get(variable.id);
|
|
74
|
+
if (oldVariable && variablesEqual(oldVariable, variable))
|
|
75
|
+
return;
|
|
76
|
+
this._clientValues.set(variable.id, variable);
|
|
77
|
+
if (this._ipcHandler) {
|
|
78
|
+
await this._ipcHandler.setRulesetVariable({ rulesetId: this._rulesetId, variable });
|
|
79
|
+
}
|
|
80
|
+
this.onVariableChanged.raiseEvent(variable.id, oldVariable === null || oldVariable === void 0 ? void 0 : oldVariable.value, variable.value);
|
|
81
|
+
}
|
|
82
|
+
async unset(variableId) {
|
|
83
|
+
const variable = this._clientValues.get(variableId);
|
|
84
|
+
if (variable === undefined)
|
|
85
|
+
return;
|
|
86
|
+
this._clientValues.delete(variable.id);
|
|
87
|
+
if (this._ipcHandler) {
|
|
88
|
+
await this._ipcHandler.unsetRulesetVariable({ rulesetId: this._rulesetId, variableId });
|
|
89
|
+
}
|
|
90
|
+
this.onVariableChanged.raiseEvent(variable.id, variable.value, undefined);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Retrieves `string` variable value.
|
|
94
|
+
* Returns empty string if variable does not exist or does not convert to string.
|
|
95
|
+
*/
|
|
96
|
+
async getString(variableId) {
|
|
97
|
+
return await this.getValue(variableId, VariableValueTypes.String) || "";
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Sets `string` variable value
|
|
101
|
+
*/
|
|
102
|
+
async setString(variableId, value) {
|
|
103
|
+
await this.setValue({ id: variableId, type: VariableValueTypes.String, value });
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Retrieves `boolean` variable value.
|
|
107
|
+
* Returns `false` if variable does not exist or does not convert to boolean.
|
|
108
|
+
*/
|
|
109
|
+
async getBool(variableId) {
|
|
110
|
+
return await this.getValue(variableId, VariableValueTypes.Bool) || false;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Sets `boolean` variable value
|
|
114
|
+
*/
|
|
115
|
+
async setBool(variableId, value) {
|
|
116
|
+
await this.setValue({ id: variableId, type: VariableValueTypes.Bool, value });
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Retrieves `number` variable value.
|
|
120
|
+
* Returns `0` if variable does not exist or does not convert to integer.
|
|
121
|
+
*/
|
|
122
|
+
async getInt(variableId) {
|
|
123
|
+
return await this.getValue(variableId, VariableValueTypes.Int) || 0;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Sets `number` variable value
|
|
127
|
+
*/
|
|
128
|
+
async setInt(variableId, value) {
|
|
129
|
+
await this.setValue({ id: variableId, type: VariableValueTypes.Int, value });
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Retrieves `number[]` variable value.
|
|
133
|
+
* Returns empty array if variable does not exist or does not convert to integer array.
|
|
134
|
+
*/
|
|
135
|
+
async getInts(variableId) {
|
|
136
|
+
return await this.getValue(variableId, VariableValueTypes.IntArray) || [];
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Sets `number[]` variable value
|
|
140
|
+
*/
|
|
141
|
+
async setInts(variableId, value) {
|
|
142
|
+
await this.setValue({ id: variableId, type: VariableValueTypes.IntArray, value: [...value] });
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Retrieves `Id64String` variable value.
|
|
146
|
+
* Returns invalid Id64String if variable does not exist or does not convert to Id64String.
|
|
147
|
+
*/
|
|
148
|
+
async getId64(variableId) {
|
|
149
|
+
return await this.getValue(variableId, VariableValueTypes.Id64) || Id64.invalid;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Sets `Id64String` variable value
|
|
153
|
+
*/
|
|
154
|
+
async setId64(variableId, value) {
|
|
155
|
+
await this.setValue({ id: variableId, type: VariableValueTypes.Id64, value });
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Retrieves `Id64String[]` variable value.
|
|
159
|
+
* Returns empty array if variable does not exist or does not convert to Id64String array.
|
|
160
|
+
*/
|
|
161
|
+
async getId64s(variableId) {
|
|
162
|
+
return await this.getValue(variableId, VariableValueTypes.Id64Array) || [];
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Sets `Id64String[]` variable value
|
|
166
|
+
*/
|
|
167
|
+
async setId64s(variableId, value) {
|
|
168
|
+
await this.setValue({ id: variableId, type: VariableValueTypes.Id64Array, value: [...OrderedId64Iterable.sortArray(value)] });
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function variablesEqual(lhs, rhs) {
|
|
172
|
+
if (lhs.type !== rhs.type)
|
|
173
|
+
return false;
|
|
174
|
+
switch (lhs.type) {
|
|
175
|
+
case VariableValueTypes.IntArray:
|
|
176
|
+
case VariableValueTypes.Id64Array:
|
|
177
|
+
assert(rhs.type === lhs.type);
|
|
178
|
+
return arraysEqual(lhs.value, rhs.value);
|
|
179
|
+
default:
|
|
180
|
+
return lhs.value === rhs.value;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function arraysEqual(lhs, rhs) {
|
|
184
|
+
if (lhs.length !== rhs.length)
|
|
185
|
+
return false;
|
|
186
|
+
for (let i = 0; i < lhs.length; ++i) {
|
|
187
|
+
if (lhs[i] !== rhs[i])
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
192
|
//# sourceMappingURL=RulesetVariablesManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RulesetVariablesManager.js","sourceRoot":"","sources":["../../../src/presentation-frontend/RulesetVariablesManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Core\r\n */\r\n\r\nimport { assert, BeEvent, Id64, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\r\nimport { RulesetVariable, VariableValue, VariableValueTypes } from \"@itwin/presentation-common\";\r\nimport { IpcRequestsHandler } from \"./IpcRequestsHandler\";\r\n\r\n/**\r\n * Presentation ruleset variables' registry.\r\n * @public\r\n */\r\nexport interface RulesetVariablesManager {\r\n\r\n /**\r\n * An event that is raised when variable changes.\r\n */\r\n onVariableChanged: BeEvent<(variableId: string, prevValue: VariableValue | undefined, currValue: VariableValue | undefined) => void>;\r\n\r\n /**\r\n * Retrieves `string` variable value.\r\n * Returns empty string if variable does not exist or does not convert to string.\r\n */\r\n getString(variableId: string): Promise<string>;\r\n /**\r\n * Sets `string` variable value\r\n */\r\n setString(variableId: string, value: string): Promise<void>;\r\n\r\n /**\r\n * Retrieves `boolean` variable value.\r\n * Returns `false` if variable does not exist or does not convert to boolean.\r\n */\r\n getBool(variableId: string): Promise<boolean>;\r\n /**\r\n * Sets `boolean` variable value\r\n */\r\n setBool(variableId: string, value: boolean): Promise<void>;\r\n\r\n /**\r\n * Retrieves `number` variable value.\r\n * Returns `0` if variable does not exist or does not convert to integer.\r\n */\r\n getInt(variableId: string): Promise<number>;\r\n /**\r\n * Sets `number` variable value\r\n */\r\n setInt(variableId: string, value: number): Promise<void>;\r\n\r\n /**\r\n * Retrieves `number[]` variable value.\r\n * Returns empty array if variable does not exist or does not convert to integer array.\r\n */\r\n getInts(variableId: string): Promise<number[]>;\r\n /**\r\n * Sets `number[]` variable value\r\n */\r\n setInts(variableId: string, value: number[]): Promise<void>;\r\n\r\n /**\r\n * Retrieves `Id64String` variable value.\r\n * Returns invalid Id64String if variable does not exist or does not convert to Id64String.\r\n */\r\n getId64(variableId: string): Promise<Id64String>;\r\n /**\r\n * Sets `Id64String` variable value\r\n */\r\n setId64(variableId: string, value: Id64String): Promise<void>;\r\n\r\n /**\r\n * Retrieves `Id64String[]` variable value.\r\n * Returns empty array if variable does not exist or does not convert to Id64String array.\r\n */\r\n getId64s(variableId: string): Promise<Id64String[]>;\r\n /**\r\n * Sets `Id64String[]` variable value\r\n */\r\n setId64s(variableId: string, value: Id64String[]): Promise<void>;\r\n\r\n /** Unsets variable with given id. */\r\n unset(variableId: string): Promise<void>;\r\n\r\n /** Retrieves all variables.\r\n * @internal\r\n */\r\n getAllVariables(): RulesetVariable[];\r\n}\r\n\r\n/** @internal */\r\nexport class RulesetVariablesManagerImpl implements RulesetVariablesManager {\r\n\r\n private _clientValues = new Map<string, RulesetVariable>();\r\n private _rulesetId: string;\r\n private _ipcHandler?: IpcRequestsHandler;\r\n public onVariableChanged = new BeEvent<(variableId: string, prevValue: VariableValue | undefined, currValue: VariableValue | undefined) => void>();\r\n\r\n public constructor(rulesetId: string, ipcHandler?: IpcRequestsHandler) {\r\n this._rulesetId = rulesetId;\r\n this._ipcHandler = ipcHandler;\r\n }\r\n\r\n public getAllVariables(): RulesetVariable[] {\r\n const variables: RulesetVariable[] = [];\r\n for (const entry of this._clientValues)\r\n variables.push(entry[1]);\r\n return variables;\r\n }\r\n\r\n private changeValueType(variable: RulesetVariable, toType: VariableValueTypes): VariableValue | undefined {\r\n switch (toType) {\r\n case VariableValueTypes.Bool:\r\n switch (variable.type) {\r\n case VariableValueTypes.Int: return (0 !== variable.value);\r\n case VariableValueTypes.Id64: return Id64.isValidId64(variable.value);\r\n default: return undefined;\r\n }\r\n case VariableValueTypes.Int:\r\n switch (variable.type) {\r\n case VariableValueTypes.Bool: return variable.value ? 1 : 0;\r\n case VariableValueTypes.Id64: return Id64.getUpperUint32(variable.value);\r\n default: return undefined;\r\n }\r\n case VariableValueTypes.IntArray:\r\n switch (variable.type) {\r\n case VariableValueTypes.Id64Array: return variable.value.map((id) => Id64.getUpperUint32(id));\r\n default: return undefined;\r\n }\r\n case VariableValueTypes.Id64:\r\n switch (variable.type) {\r\n case VariableValueTypes.Bool: return Id64.fromLocalAndBriefcaseIds(variable.value ? 1 : 0, 0);\r\n case VariableValueTypes.Int: return Id64.fromLocalAndBriefcaseIds(variable.value, 0);\r\n default: return undefined;\r\n }\r\n case VariableValueTypes.Id64Array:\r\n switch (variable.type) {\r\n case VariableValueTypes.IntArray: return variable.value.map((int) => Id64.fromLocalAndBriefcaseIds(int, 0));\r\n default: return undefined;\r\n }\r\n case VariableValueTypes.String:\r\n switch (variable.type) {\r\n case VariableValueTypes.IntArray:\r\n case VariableValueTypes.Id64Array:\r\n return undefined;\r\n default: variable.value.toString();\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n private async getValue(id: string, type: VariableValueTypes): Promise<VariableValue | undefined> {\r\n const variable = this._clientValues.get(id);\r\n if (!variable)\r\n return undefined;\r\n if (variable.type !== type)\r\n return this.changeValueType(variable, type);\r\n return variable.value;\r\n }\r\n\r\n private async setValue(variable: RulesetVariable): Promise<void> {\r\n const oldVariable = this._clientValues.get(variable.id);\r\n if (oldVariable && variablesEqual(oldVariable, variable))\r\n return;\r\n\r\n this._clientValues.set(variable.id, variable);\r\n if (this._ipcHandler) {\r\n await this._ipcHandler.setRulesetVariable({ rulesetId: this._rulesetId, variable });\r\n }\r\n\r\n this.onVariableChanged.raiseEvent(variable.id, oldVariable?.value, variable.value);\r\n }\r\n\r\n public async unset(variableId: string): Promise<void> {\r\n const variable = this._clientValues.get(variableId);\r\n if (variable === undefined)\r\n return;\r\n\r\n this._clientValues.delete(variable.id);\r\n if (this._ipcHandler) {\r\n await this._ipcHandler.unsetRulesetVariable({ rulesetId: this._rulesetId, variableId });\r\n }\r\n this.onVariableChanged.raiseEvent(variable.id, variable.value, undefined);\r\n }\r\n\r\n /**\r\n * Retrieves `string` variable value.\r\n * Returns empty string if variable does not exist or does not convert to string.\r\n */\r\n public async getString(variableId: string): Promise<string> {\r\n return (await this.getValue(variableId, VariableValueTypes.String) as string) || \"\";\r\n }\r\n\r\n /**\r\n * Sets `string` variable value\r\n */\r\n public async setString(variableId: string, value: string): Promise<void> {\r\n await this.setValue({ id: variableId, type: VariableValueTypes.String, value });\r\n }\r\n\r\n /**\r\n * Retrieves `boolean` variable value.\r\n * Returns `false` if variable does not exist or does not convert to boolean.\r\n */\r\n public async getBool(variableId: string): Promise<boolean> {\r\n return (await this.getValue(variableId, VariableValueTypes.Bool) as boolean) || false;\r\n }\r\n\r\n /**\r\n * Sets `boolean` variable value\r\n */\r\n public async setBool(variableId: string, value: boolean): Promise<void> {\r\n await this.setValue({ id: variableId, type: VariableValueTypes.Bool, value });\r\n }\r\n\r\n /**\r\n * Retrieves `number` variable value.\r\n * Returns `0` if variable does not exist or does not convert to integer.\r\n */\r\n public async getInt(variableId: string): Promise<number> {\r\n return (await this.getValue(variableId, VariableValueTypes.Int) as number) || 0;\r\n }\r\n\r\n /**\r\n * Sets `number` variable value\r\n */\r\n public async setInt(variableId: string, value: number): Promise<void> {\r\n await this.setValue({ id: variableId, type: VariableValueTypes.Int, value });\r\n }\r\n\r\n /**\r\n * Retrieves `number[]` variable value.\r\n * Returns empty array if variable does not exist or does not convert to integer array.\r\n */\r\n public async getInts(variableId: string): Promise<number[]> {\r\n return (await this.getValue(variableId, VariableValueTypes.IntArray) as number[]) || [];\r\n }\r\n\r\n /**\r\n * Sets `number[]` variable value\r\n */\r\n public async setInts(variableId: string, value: number[]): Promise<void> {\r\n await this.setValue({ id: variableId, type: VariableValueTypes.IntArray, value: [...value] });\r\n }\r\n\r\n /**\r\n * Retrieves `Id64String` variable value.\r\n * Returns invalid Id64String if variable does not exist or does not convert to Id64String.\r\n */\r\n public async getId64(variableId: string): Promise<Id64String> {\r\n return (await this.getValue(variableId, VariableValueTypes.Id64) as Id64String) || Id64.invalid;\r\n }\r\n\r\n /**\r\n * Sets `Id64String` variable value\r\n */\r\n public async setId64(variableId: string, value: Id64String): Promise<void> {\r\n await this.setValue({ id: variableId, type: VariableValueTypes.Id64, value });\r\n }\r\n\r\n /**\r\n * Retrieves `Id64String[]` variable value.\r\n * Returns empty array if variable does not exist or does not convert to Id64String array.\r\n */\r\n public async getId64s(variableId: string): Promise<Id64String[]> {\r\n return (await this.getValue(variableId, VariableValueTypes.Id64Array) as Id64String[]) || [];\r\n }\r\n\r\n /**\r\n * Sets `Id64String[]` variable value\r\n */\r\n public async setId64s(variableId: string, value: Id64String[]): Promise<void> {\r\n await this.setValue({ id: variableId, type: VariableValueTypes.Id64Array, value: [...OrderedId64Iterable.sortArray(value)] });\r\n }\r\n}\r\n\r\nfunction variablesEqual(lhs: RulesetVariable, rhs: RulesetVariable) {\r\n if (lhs.type !== rhs.type)\r\n return false;\r\n\r\n switch (lhs.type) {\r\n case VariableValueTypes.IntArray:\r\n case VariableValueTypes.Id64Array:\r\n assert(rhs.type === lhs.type);\r\n return arraysEqual(lhs.value, rhs.value);\r\n\r\n default:\r\n return lhs.value === rhs.value;\r\n }\r\n}\r\n\r\nfunction arraysEqual(lhs: any[], rhs: any[]) {\r\n if (lhs.length !== rhs.length)\r\n return false;\r\n\r\n for (let i = 0; i < lhs.length; ++i) {\r\n if (lhs[i] !== rhs[i])\r\n return false;\r\n }\r\n return true;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"RulesetVariablesManager.js","sourceRoot":"","sources":["../../../src/presentation-frontend/RulesetVariablesManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Core\n */\n\nimport { assert, BeEvent, Id64, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\nimport { RulesetVariable, VariableValue, VariableValueTypes } from \"@itwin/presentation-common\";\nimport { IpcRequestsHandler } from \"./IpcRequestsHandler\";\n\n/**\n * Presentation ruleset variables' registry.\n * @public\n */\nexport interface RulesetVariablesManager {\n\n /**\n * An event that is raised when variable changes.\n */\n onVariableChanged: BeEvent<(variableId: string, prevValue: VariableValue | undefined, currValue: VariableValue | undefined) => void>;\n\n /**\n * Retrieves `string` variable value.\n * Returns empty string if variable does not exist or does not convert to string.\n */\n getString(variableId: string): Promise<string>;\n /**\n * Sets `string` variable value\n */\n setString(variableId: string, value: string): Promise<void>;\n\n /**\n * Retrieves `boolean` variable value.\n * Returns `false` if variable does not exist or does not convert to boolean.\n */\n getBool(variableId: string): Promise<boolean>;\n /**\n * Sets `boolean` variable value\n */\n setBool(variableId: string, value: boolean): Promise<void>;\n\n /**\n * Retrieves `number` variable value.\n * Returns `0` if variable does not exist or does not convert to integer.\n */\n getInt(variableId: string): Promise<number>;\n /**\n * Sets `number` variable value\n */\n setInt(variableId: string, value: number): Promise<void>;\n\n /**\n * Retrieves `number[]` variable value.\n * Returns empty array if variable does not exist or does not convert to integer array.\n */\n getInts(variableId: string): Promise<number[]>;\n /**\n * Sets `number[]` variable value\n */\n setInts(variableId: string, value: number[]): Promise<void>;\n\n /**\n * Retrieves `Id64String` variable value.\n * Returns invalid Id64String if variable does not exist or does not convert to Id64String.\n */\n getId64(variableId: string): Promise<Id64String>;\n /**\n * Sets `Id64String` variable value\n */\n setId64(variableId: string, value: Id64String): Promise<void>;\n\n /**\n * Retrieves `Id64String[]` variable value.\n * Returns empty array if variable does not exist or does not convert to Id64String array.\n */\n getId64s(variableId: string): Promise<Id64String[]>;\n /**\n * Sets `Id64String[]` variable value\n */\n setId64s(variableId: string, value: Id64String[]): Promise<void>;\n\n /** Unsets variable with given id. */\n unset(variableId: string): Promise<void>;\n\n /** Retrieves all variables.\n * @internal\n */\n getAllVariables(): RulesetVariable[];\n}\n\n/** @internal */\nexport class RulesetVariablesManagerImpl implements RulesetVariablesManager {\n\n private _clientValues = new Map<string, RulesetVariable>();\n private _rulesetId: string;\n private _ipcHandler?: IpcRequestsHandler;\n public onVariableChanged = new BeEvent<(variableId: string, prevValue: VariableValue | undefined, currValue: VariableValue | undefined) => void>();\n\n public constructor(rulesetId: string, ipcHandler?: IpcRequestsHandler) {\n this._rulesetId = rulesetId;\n this._ipcHandler = ipcHandler;\n }\n\n public getAllVariables(): RulesetVariable[] {\n const variables: RulesetVariable[] = [];\n for (const entry of this._clientValues)\n variables.push(entry[1]);\n return variables;\n }\n\n private changeValueType(variable: RulesetVariable, toType: VariableValueTypes): VariableValue | undefined {\n switch (toType) {\n case VariableValueTypes.Bool:\n switch (variable.type) {\n case VariableValueTypes.Int: return (0 !== variable.value);\n case VariableValueTypes.Id64: return Id64.isValidId64(variable.value);\n default: return undefined;\n }\n case VariableValueTypes.Int:\n switch (variable.type) {\n case VariableValueTypes.Bool: return variable.value ? 1 : 0;\n case VariableValueTypes.Id64: return Id64.getUpperUint32(variable.value);\n default: return undefined;\n }\n case VariableValueTypes.IntArray:\n switch (variable.type) {\n case VariableValueTypes.Id64Array: return variable.value.map((id) => Id64.getUpperUint32(id));\n default: return undefined;\n }\n case VariableValueTypes.Id64:\n switch (variable.type) {\n case VariableValueTypes.Bool: return Id64.fromLocalAndBriefcaseIds(variable.value ? 1 : 0, 0);\n case VariableValueTypes.Int: return Id64.fromLocalAndBriefcaseIds(variable.value, 0);\n default: return undefined;\n }\n case VariableValueTypes.Id64Array:\n switch (variable.type) {\n case VariableValueTypes.IntArray: return variable.value.map((int) => Id64.fromLocalAndBriefcaseIds(int, 0));\n default: return undefined;\n }\n case VariableValueTypes.String:\n switch (variable.type) {\n case VariableValueTypes.IntArray:\n case VariableValueTypes.Id64Array:\n return undefined;\n default: variable.value.toString();\n }\n }\n return undefined;\n }\n\n private async getValue(id: string, type: VariableValueTypes): Promise<VariableValue | undefined> {\n const variable = this._clientValues.get(id);\n if (!variable)\n return undefined;\n if (variable.type !== type)\n return this.changeValueType(variable, type);\n return variable.value;\n }\n\n private async setValue(variable: RulesetVariable): Promise<void> {\n const oldVariable = this._clientValues.get(variable.id);\n if (oldVariable && variablesEqual(oldVariable, variable))\n return;\n\n this._clientValues.set(variable.id, variable);\n if (this._ipcHandler) {\n await this._ipcHandler.setRulesetVariable({ rulesetId: this._rulesetId, variable });\n }\n\n this.onVariableChanged.raiseEvent(variable.id, oldVariable?.value, variable.value);\n }\n\n public async unset(variableId: string): Promise<void> {\n const variable = this._clientValues.get(variableId);\n if (variable === undefined)\n return;\n\n this._clientValues.delete(variable.id);\n if (this._ipcHandler) {\n await this._ipcHandler.unsetRulesetVariable({ rulesetId: this._rulesetId, variableId });\n }\n this.onVariableChanged.raiseEvent(variable.id, variable.value, undefined);\n }\n\n /**\n * Retrieves `string` variable value.\n * Returns empty string if variable does not exist or does not convert to string.\n */\n public async getString(variableId: string): Promise<string> {\n return (await this.getValue(variableId, VariableValueTypes.String) as string) || \"\";\n }\n\n /**\n * Sets `string` variable value\n */\n public async setString(variableId: string, value: string): Promise<void> {\n await this.setValue({ id: variableId, type: VariableValueTypes.String, value });\n }\n\n /**\n * Retrieves `boolean` variable value.\n * Returns `false` if variable does not exist or does not convert to boolean.\n */\n public async getBool(variableId: string): Promise<boolean> {\n return (await this.getValue(variableId, VariableValueTypes.Bool) as boolean) || false;\n }\n\n /**\n * Sets `boolean` variable value\n */\n public async setBool(variableId: string, value: boolean): Promise<void> {\n await this.setValue({ id: variableId, type: VariableValueTypes.Bool, value });\n }\n\n /**\n * Retrieves `number` variable value.\n * Returns `0` if variable does not exist or does not convert to integer.\n */\n public async getInt(variableId: string): Promise<number> {\n return (await this.getValue(variableId, VariableValueTypes.Int) as number) || 0;\n }\n\n /**\n * Sets `number` variable value\n */\n public async setInt(variableId: string, value: number): Promise<void> {\n await this.setValue({ id: variableId, type: VariableValueTypes.Int, value });\n }\n\n /**\n * Retrieves `number[]` variable value.\n * Returns empty array if variable does not exist or does not convert to integer array.\n */\n public async getInts(variableId: string): Promise<number[]> {\n return (await this.getValue(variableId, VariableValueTypes.IntArray) as number[]) || [];\n }\n\n /**\n * Sets `number[]` variable value\n */\n public async setInts(variableId: string, value: number[]): Promise<void> {\n await this.setValue({ id: variableId, type: VariableValueTypes.IntArray, value: [...value] });\n }\n\n /**\n * Retrieves `Id64String` variable value.\n * Returns invalid Id64String if variable does not exist or does not convert to Id64String.\n */\n public async getId64(variableId: string): Promise<Id64String> {\n return (await this.getValue(variableId, VariableValueTypes.Id64) as Id64String) || Id64.invalid;\n }\n\n /**\n * Sets `Id64String` variable value\n */\n public async setId64(variableId: string, value: Id64String): Promise<void> {\n await this.setValue({ id: variableId, type: VariableValueTypes.Id64, value });\n }\n\n /**\n * Retrieves `Id64String[]` variable value.\n * Returns empty array if variable does not exist or does not convert to Id64String array.\n */\n public async getId64s(variableId: string): Promise<Id64String[]> {\n return (await this.getValue(variableId, VariableValueTypes.Id64Array) as Id64String[]) || [];\n }\n\n /**\n * Sets `Id64String[]` variable value\n */\n public async setId64s(variableId: string, value: Id64String[]): Promise<void> {\n await this.setValue({ id: variableId, type: VariableValueTypes.Id64Array, value: [...OrderedId64Iterable.sortArray(value)] });\n }\n}\n\nfunction variablesEqual(lhs: RulesetVariable, rhs: RulesetVariable) {\n if (lhs.type !== rhs.type)\n return false;\n\n switch (lhs.type) {\n case VariableValueTypes.IntArray:\n case VariableValueTypes.Id64Array:\n assert(rhs.type === lhs.type);\n return arraysEqual(lhs.value, rhs.value);\n\n default:\n return lhs.value === rhs.value;\n }\n}\n\nfunction arraysEqual(lhs: any[], rhs: any[]) {\n if (lhs.length !== rhs.length)\n return false;\n\n for (let i = 0; i < lhs.length; ++i) {\n if (lhs[i] !== rhs[i])\n return false;\n }\n return true;\n}\n"]}
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
/** @packageDocumentation
|
|
2
|
-
* @module Core
|
|
3
|
-
*/
|
|
4
|
-
import { IModelConnection } from "@itwin/core-frontend";
|
|
5
|
-
import { NodeKey } from "@itwin/presentation-common";
|
|
6
|
-
import { IpcRequestsHandler } from "./IpcRequestsHandler";
|
|
7
|
-
/**
|
|
8
|
-
* Data structure that describes information used by [[StateTracker]] to identify node.
|
|
9
|
-
* @internal
|
|
10
|
-
*/
|
|
11
|
-
export interface NodeIdentifier {
|
|
12
|
-
id: string;
|
|
13
|
-
key: NodeKey;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* @internal
|
|
17
|
-
*/
|
|
18
|
-
export interface NodeState {
|
|
19
|
-
isExpanded?: boolean;
|
|
20
|
-
instanceFilter?: string;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* The tracker stores up-to-date UI state of the hierarchies on the frontend and reports
|
|
24
|
-
* just the state changes to the backend as soon as component sends in a new hierarchy state.
|
|
25
|
-
*
|
|
26
|
-
* @internal
|
|
27
|
-
*/
|
|
28
|
-
export declare class StateTracker {
|
|
29
|
-
private _hierarchyStates;
|
|
30
|
-
private _ipcRequestsHandler;
|
|
31
|
-
constructor(ipcRequestsHandler: IpcRequestsHandler);
|
|
32
|
-
private updateHierarchyStateIfNeeded;
|
|
33
|
-
onHierarchyClosed(imodel: IModelConnection, rulesetId: string, sourceId: string): Promise<void>;
|
|
34
|
-
onHierarchyStateChanged(imodel: IModelConnection, rulesetId: string, sourceId: string, newHierarchyState: Array<{
|
|
35
|
-
node: NodeIdentifier | undefined;
|
|
36
|
-
state: NodeState;
|
|
37
|
-
}>): Promise<void>;
|
|
38
|
-
}
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module Core
|
|
3
|
+
*/
|
|
4
|
+
import { IModelConnection } from "@itwin/core-frontend";
|
|
5
|
+
import { NodeKey } from "@itwin/presentation-common";
|
|
6
|
+
import { IpcRequestsHandler } from "./IpcRequestsHandler";
|
|
7
|
+
/**
|
|
8
|
+
* Data structure that describes information used by [[StateTracker]] to identify node.
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export interface NodeIdentifier {
|
|
12
|
+
id: string;
|
|
13
|
+
key: NodeKey;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export interface NodeState {
|
|
19
|
+
isExpanded?: boolean;
|
|
20
|
+
instanceFilter?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The tracker stores up-to-date UI state of the hierarchies on the frontend and reports
|
|
24
|
+
* just the state changes to the backend as soon as component sends in a new hierarchy state.
|
|
25
|
+
*
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export declare class StateTracker {
|
|
29
|
+
private _hierarchyStates;
|
|
30
|
+
private _ipcRequestsHandler;
|
|
31
|
+
constructor(ipcRequestsHandler: IpcRequestsHandler);
|
|
32
|
+
private updateHierarchyStateIfNeeded;
|
|
33
|
+
onHierarchyClosed(imodel: IModelConnection, rulesetId: string, sourceId: string): Promise<void>;
|
|
34
|
+
onHierarchyStateChanged(imodel: IModelConnection, rulesetId: string, sourceId: string, newHierarchyState: Array<{
|
|
35
|
+
node: NodeIdentifier | undefined;
|
|
36
|
+
state: NodeState;
|
|
37
|
+
}>): Promise<void>;
|
|
38
|
+
}
|
|
39
39
|
//# sourceMappingURL=StateTracker.d.ts.map
|