bruce-models 1.9.8 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bruce-models.es5.js +317 -74
- package/dist/bruce-models.es5.js.map +1 -1
- package/dist/bruce-models.umd.js +317 -74
- package/dist/bruce-models.umd.js.map +1 -1
- package/dist/lib/account/account-settings.js +2 -2
- package/dist/lib/account/account.js +201 -185
- package/dist/lib/account/account.js.map +1 -1
- package/dist/lib/ann-document/ann-document.js +94 -86
- package/dist/lib/ann-document/ann-document.js.map +1 -1
- package/dist/lib/api/abstract-api.js +260 -246
- package/dist/lib/api/abstract-api.js.map +1 -1
- package/dist/lib/api/api-getters.js +134 -134
- package/dist/lib/api/api.js +93 -93
- package/dist/lib/api/bruce-api.js +216 -216
- package/dist/lib/api/cam-api.js +85 -82
- package/dist/lib/api/cam-api.js.map +1 -1
- package/dist/lib/api/global-api.js +81 -81
- package/dist/lib/api/idm-api.js +85 -82
- package/dist/lib/api/idm-api.js.map +1 -1
- package/dist/lib/bruce-models.js +86 -86
- package/dist/lib/calculator/calculator.js +341 -341
- package/dist/lib/client-file/client-file.js +249 -245
- package/dist/lib/client-file/client-file.js.map +1 -1
- package/dist/lib/common/bounds.js +61 -61
- package/dist/lib/common/bruce-event.js +46 -46
- package/dist/lib/common/bruce-variable.js +60 -60
- package/dist/lib/common/cache.js +165 -165
- package/dist/lib/common/camera.js +11 -11
- package/dist/lib/common/cartes.js +123 -123
- package/dist/lib/common/carto.js +60 -60
- package/dist/lib/common/color.js +86 -86
- package/dist/lib/common/delay-queue.js +56 -56
- package/dist/lib/common/dictionary.js +2 -2
- package/dist/lib/common/geometry.js +120 -120
- package/dist/lib/common/transform.js +2 -2
- package/dist/lib/common/utc.js +39 -39
- package/dist/lib/custom-form/custom-form-content.js +26 -26
- package/dist/lib/custom-form/custom-form.js +114 -106
- package/dist/lib/custom-form/custom-form.js.map +1 -1
- package/dist/lib/data-lab/data-lab.js +49 -49
- package/dist/lib/entity/entity-attachment-type.js +87 -83
- package/dist/lib/entity/entity-attachment-type.js.map +1 -1
- package/dist/lib/entity/entity-attachment.js +126 -122
- package/dist/lib/entity/entity-attachment.js.map +1 -1
- package/dist/lib/entity/entity-attribute.js +29 -29
- package/dist/lib/entity/entity-comment.js +86 -82
- package/dist/lib/entity/entity-comment.js.map +1 -1
- package/dist/lib/entity/entity-coords.js +153 -149
- package/dist/lib/entity/entity-coords.js.map +1 -1
- package/dist/lib/entity/entity-link.js +86 -82
- package/dist/lib/entity/entity-link.js.map +1 -1
- package/dist/lib/entity/entity-lod-category.js +108 -100
- package/dist/lib/entity/entity-lod-category.js.map +1 -1
- package/dist/lib/entity/entity-lod.js +197 -185
- package/dist/lib/entity/entity-lod.js.map +1 -1
- package/dist/lib/entity/entity-relation-type.js +117 -109
- package/dist/lib/entity/entity-relation-type.js.map +1 -1
- package/dist/lib/entity/entity-relation.js +140 -132
- package/dist/lib/entity/entity-relation.js.map +1 -1
- package/dist/lib/entity/entity-source.js +136 -136
- package/dist/lib/entity/entity-tag.js +157 -149
- package/dist/lib/entity/entity-tag.js.map +1 -1
- package/dist/lib/entity/entity-type-visual-settings.js +13 -13
- package/dist/lib/entity/entity-type.js +121 -113
- package/dist/lib/entity/entity-type.js.map +1 -1
- package/dist/lib/entity/entity.js +331 -319
- package/dist/lib/entity/entity.js.map +1 -1
- package/dist/lib/entity/getters/batched-data-getter.js +84 -84
- package/dist/lib/entity/getters/entity-filter-getter.js +306 -303
- package/dist/lib/entity/getters/entity-filter-getter.js.map +1 -1
- package/dist/lib/entity/getters/entity-globe.js +211 -211
- package/dist/lib/entity/getters/view-monitor.js +2 -2
- package/dist/lib/import/import-cad.js +53 -53
- package/dist/lib/import/import-csv.js +23 -23
- package/dist/lib/import/import-json.js +23 -23
- package/dist/lib/import/import-kml.js +23 -23
- package/dist/lib/import/imported-file.js +99 -91
- package/dist/lib/import/imported-file.js.map +1 -1
- package/dist/lib/internal/uploader.js +76 -76
- package/dist/lib/markup/markup.js +185 -185
- package/dist/lib/plugin/plugin.js +91 -83
- package/dist/lib/plugin/plugin.js.map +1 -1
- package/dist/lib/program-key/program-key.js +119 -111
- package/dist/lib/program-key/program-key.js.map +1 -1
- package/dist/lib/project/menu-item.js +121 -121
- package/dist/lib/project/project-view-bookmark.js +159 -147
- package/dist/lib/project/project-view-bookmark.js.map +1 -1
- package/dist/lib/project/project-view-legacy-tile.js +77 -77
- package/dist/lib/project/project-view-tile.js +125 -125
- package/dist/lib/project/project-view.js +141 -133
- package/dist/lib/project/project-view.js.map +1 -1
- package/dist/lib/project/zoom-control.js +17 -17
- package/dist/lib/server/message-broker.js +142 -142
- package/dist/lib/server/pending-action.js +71 -71
- package/dist/lib/server/task.js +63 -63
- package/dist/lib/style/style.js +125 -117
- package/dist/lib/style/style.js.map +1 -1
- package/dist/lib/tileset/tileset.js +431 -415
- package/dist/lib/tileset/tileset.js.map +1 -1
- package/dist/lib/user/permission.js +20 -20
- package/dist/lib/user/session.js +141 -137
- package/dist/lib/user/session.js.map +1 -1
- package/dist/lib/user/user-group.js +94 -94
- package/dist/lib/user/user.js +474 -446
- package/dist/lib/user/user.js.map +1 -1
- package/dist/lib/util/encrypt-utils.js +19 -19
- package/dist/lib/util/math-utils.js +40 -40
- package/dist/lib/util/object-utils.js +17 -17
- package/dist/lib/util/path-utils.js +61 -61
- package/dist/lib/util/url-utils.js +94 -94
- package/dist/types/api/abstract-api.d.ts +6 -0
- package/package.json +3 -2
|
@@ -1,342 +1,342 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Calculator = void 0;
|
|
4
|
-
const color_1 = require("../common/color");
|
|
5
|
-
const entity_1 = require("../entity/entity");
|
|
6
|
-
const bruce_variable_1 = require("../common/bruce-variable");
|
|
7
|
-
const path_utils_1 = require("../util/path-utils");
|
|
8
|
-
/**
|
|
9
|
-
* Example: ${Test.Test1}
|
|
10
|
-
* Needs to become ["Test", "Test1"].
|
|
11
|
-
* We need to cull this in admin-ui.
|
|
12
|
-
* @param path
|
|
13
|
-
* @returns Possible paths this legacy one could mean.
|
|
14
|
-
*/
|
|
15
|
-
function parseLegacyPath(path) {
|
|
16
|
-
if (!path) {
|
|
17
|
-
return [];
|
|
18
|
-
}
|
|
19
|
-
const paths = [];
|
|
20
|
-
if (path.startsWith("${") && path.endsWith("}")) {
|
|
21
|
-
path = path.replace("${", "");
|
|
22
|
-
path = path.replace("}", "");
|
|
23
|
-
}
|
|
24
|
-
// Split by dots.
|
|
25
|
-
paths.push(path_utils_1.PathUtils.ParseLegacy(path));
|
|
26
|
-
// Take string as is.
|
|
27
|
-
paths.push([path]);
|
|
28
|
-
// Split by backslashes.
|
|
29
|
-
paths.push(path_utils_1.PathUtils.Parse(path));
|
|
30
|
-
return paths;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Utility for calculating values from Bruce fields.
|
|
34
|
-
* These fields are typically found in entity styles.
|
|
35
|
-
*/
|
|
36
|
-
var Calculator;
|
|
37
|
-
(function (Calculator) {
|
|
38
|
-
let EValueType;
|
|
39
|
-
(function (EValueType) {
|
|
40
|
-
EValueType[EValueType["Color"] = 0] = "Color";
|
|
41
|
-
EValueType[EValueType["Input"] = 1] = "Input";
|
|
42
|
-
EValueType[EValueType["Gradient"] = 2] = "Gradient";
|
|
43
|
-
EValueType[EValueType["Mapping"] = 3] = "Mapping";
|
|
44
|
-
EValueType[EValueType["TagColor"] = 4] = "TagColor";
|
|
45
|
-
EValueType[EValueType["RandomColor"] = 5] = "RandomColor";
|
|
46
|
-
})(EValueType = Calculator.EValueType || (Calculator.EValueType = {}));
|
|
47
|
-
/**
|
|
48
|
-
* Calculates the value of arbitrary field options.
|
|
49
|
-
* The context calling this should validate results and parse stuff if needed.
|
|
50
|
-
* @deprecated use specific calls: eg GetColor or GetNumber.
|
|
51
|
-
* @param fields
|
|
52
|
-
* @param entity
|
|
53
|
-
* @param tags
|
|
54
|
-
* @returns
|
|
55
|
-
*/
|
|
56
|
-
function GetValue(fields, entity, tags) {
|
|
57
|
-
if (!tags) {
|
|
58
|
-
tags = [];
|
|
59
|
-
}
|
|
60
|
-
if (!entity) {
|
|
61
|
-
entity = {};
|
|
62
|
-
}
|
|
63
|
-
for (let i = 0; i < fields.length; i++) {
|
|
64
|
-
const field = fields[i];
|
|
65
|
-
let value;
|
|
66
|
-
switch (field.type) {
|
|
67
|
-
case EValueType.Color:
|
|
68
|
-
value = field.value;
|
|
69
|
-
if (value) {
|
|
70
|
-
value = color_1.Color.ColorFromStr(value);
|
|
71
|
-
}
|
|
72
|
-
break;
|
|
73
|
-
case EValueType.Gradient:
|
|
74
|
-
value = GetGradientValue(field.value, entity);
|
|
75
|
-
break;
|
|
76
|
-
case EValueType.Input:
|
|
77
|
-
value = GetInputValue(field.value, entity);
|
|
78
|
-
break;
|
|
79
|
-
case EValueType.Mapping:
|
|
80
|
-
value = GetMappingValue(field.value, entity);
|
|
81
|
-
break;
|
|
82
|
-
case EValueType.RandomColor:
|
|
83
|
-
value = color_1.Color.RandomColor();
|
|
84
|
-
break;
|
|
85
|
-
case EValueType.TagColor:
|
|
86
|
-
for (let i = 0; i < tags.length; i++) {
|
|
87
|
-
const tag = tags[i];
|
|
88
|
-
if (tag.Color) {
|
|
89
|
-
value = color_1.Color.ColorFromStr(tag.Color);
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
if (value || value == 0) {
|
|
96
|
-
return value;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return null;
|
|
100
|
-
}
|
|
101
|
-
Calculator.GetValue = GetValue;
|
|
102
|
-
/**
|
|
103
|
-
* Calculates the value of arbitrary field options with assumption that desired result is a color.
|
|
104
|
-
* Will return null if a color is not found.
|
|
105
|
-
* @param fields
|
|
106
|
-
* @param entity
|
|
107
|
-
* @param tags
|
|
108
|
-
*/
|
|
109
|
-
function GetColor(fields, entity, tags) {
|
|
110
|
-
if (!tags) {
|
|
111
|
-
tags = [];
|
|
112
|
-
}
|
|
113
|
-
if (!entity) {
|
|
114
|
-
entity = {};
|
|
115
|
-
}
|
|
116
|
-
for (let i = 0; i < fields.length; i++) {
|
|
117
|
-
const field = fields[i];
|
|
118
|
-
let value;
|
|
119
|
-
switch (field.type) {
|
|
120
|
-
case EValueType.Color:
|
|
121
|
-
value = field.value;
|
|
122
|
-
break;
|
|
123
|
-
case EValueType.Gradient:
|
|
124
|
-
value = GetGradientValue(field.value, entity);
|
|
125
|
-
break;
|
|
126
|
-
case EValueType.Input:
|
|
127
|
-
value = GetInputValue(field.value, entity);
|
|
128
|
-
break;
|
|
129
|
-
case EValueType.Mapping:
|
|
130
|
-
value = GetMappingValue(field.value, entity);
|
|
131
|
-
break;
|
|
132
|
-
case EValueType.RandomColor:
|
|
133
|
-
value = color_1.Color.RandomColor();
|
|
134
|
-
break;
|
|
135
|
-
case EValueType.TagColor:
|
|
136
|
-
for (let i = 0; i < tags.length; i++) {
|
|
137
|
-
const tag = tags[i];
|
|
138
|
-
if (tag.Color) {
|
|
139
|
-
value = color_1.Color.ColorFromStr(tag.Color);
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
break;
|
|
144
|
-
}
|
|
145
|
-
if (typeof value === "string") {
|
|
146
|
-
value = color_1.Color.ColorFromStr(value);
|
|
147
|
-
}
|
|
148
|
-
if (value && typeof value === "object" && (value.red || value.red == 0)) {
|
|
149
|
-
return value;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
return null;
|
|
153
|
-
}
|
|
154
|
-
Calculator.GetColor = GetColor;
|
|
155
|
-
function GetNumber(fields, entity, tags) {
|
|
156
|
-
if (!tags) {
|
|
157
|
-
tags = [];
|
|
158
|
-
}
|
|
159
|
-
if (!entity) {
|
|
160
|
-
entity = {};
|
|
161
|
-
}
|
|
162
|
-
for (let i = 0; i < fields.length; i++) {
|
|
163
|
-
const field = fields[i];
|
|
164
|
-
let value;
|
|
165
|
-
switch (field.type) {
|
|
166
|
-
case EValueType.Gradient:
|
|
167
|
-
value = GetGradientValue(field.value, entity);
|
|
168
|
-
break;
|
|
169
|
-
case EValueType.Color:
|
|
170
|
-
case EValueType.Input:
|
|
171
|
-
value = GetInputValue(field.value, entity);
|
|
172
|
-
break;
|
|
173
|
-
case EValueType.Mapping:
|
|
174
|
-
value = GetMappingValue(field.value, entity);
|
|
175
|
-
break;
|
|
176
|
-
}
|
|
177
|
-
if (value != "" && value != null && value != undefined) {
|
|
178
|
-
value = Number(value);
|
|
179
|
-
}
|
|
180
|
-
if (value || value == 0) {
|
|
181
|
-
return value;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
return null;
|
|
185
|
-
}
|
|
186
|
-
Calculator.GetNumber = GetNumber;
|
|
187
|
-
function GetString(fields, entity, tags) {
|
|
188
|
-
if (!tags) {
|
|
189
|
-
tags = [];
|
|
190
|
-
}
|
|
191
|
-
if (!entity) {
|
|
192
|
-
entity = {};
|
|
193
|
-
}
|
|
194
|
-
for (let i = 0; i < fields.length; i++) {
|
|
195
|
-
const field = fields[i];
|
|
196
|
-
let value;
|
|
197
|
-
switch (field.type) {
|
|
198
|
-
case EValueType.Gradient:
|
|
199
|
-
value = String(GetGradientValue(field.value, entity));
|
|
200
|
-
break;
|
|
201
|
-
case EValueType.Color:
|
|
202
|
-
case EValueType.Input:
|
|
203
|
-
value = String(GetInputValue(field.value, entity));
|
|
204
|
-
break;
|
|
205
|
-
case EValueType.Mapping:
|
|
206
|
-
value = String(GetMappingValue(field.value, entity));
|
|
207
|
-
break;
|
|
208
|
-
case EValueType.RandomColor:
|
|
209
|
-
var color = color_1.Color.RandomColor();
|
|
210
|
-
value = `rgba(${color.red},${color.green},${color.blue},${color.alpha})`;
|
|
211
|
-
break;
|
|
212
|
-
case EValueType.TagColor:
|
|
213
|
-
for (let i = 0; i < tags.length; i++) {
|
|
214
|
-
const tag = tags[i];
|
|
215
|
-
if (tag.Color) {
|
|
216
|
-
value = tag.Color;
|
|
217
|
-
break;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
break;
|
|
221
|
-
}
|
|
222
|
-
if (value) {
|
|
223
|
-
return value;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
return null;
|
|
227
|
-
}
|
|
228
|
-
Calculator.GetString = GetString;
|
|
229
|
-
function GetMappingValue(value, entity) {
|
|
230
|
-
const attrPaths = parseLegacyPath(value.field);
|
|
231
|
-
for (let i = 0; i < attrPaths.length; i++) {
|
|
232
|
-
const attrPath = attrPaths[i];
|
|
233
|
-
let eValue = entity_1.Entity.GetValue({
|
|
234
|
-
entity: entity,
|
|
235
|
-
path: attrPath
|
|
236
|
-
});
|
|
237
|
-
const isValueNum = !isNaN(+eValue);
|
|
238
|
-
for (let i = 0; i < value.values.length; i++) {
|
|
239
|
-
const option = value.values[i];
|
|
240
|
-
const mapValue = option.fieldValue;
|
|
241
|
-
const isMapValueNum = !isNaN(+mapValue);
|
|
242
|
-
if (isValueNum && isMapValueNum) {
|
|
243
|
-
if (+mapValue == +eValue) {
|
|
244
|
-
return option.appliedValue;
|
|
245
|
-
}
|
|
246
|
-
const mapSplit = mapValue.split("-");
|
|
247
|
-
if (mapSplit.length == 2) {
|
|
248
|
-
const min = mapSplit[0];
|
|
249
|
-
const max = mapSplit[1];
|
|
250
|
-
if (min != "") {
|
|
251
|
-
if (+eValue < +min) {
|
|
252
|
-
continue;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
if (max != "") {
|
|
256
|
-
if (+eValue > +max) {
|
|
257
|
-
continue;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
if (min == "" && max == "") {
|
|
261
|
-
continue;
|
|
262
|
-
}
|
|
263
|
-
return option.appliedValue;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
else {
|
|
267
|
-
if (mapValue == eValue) {
|
|
268
|
-
return option.appliedValue;
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
return null;
|
|
274
|
-
}
|
|
275
|
-
Calculator.GetMappingValue = GetMappingValue;
|
|
276
|
-
function GetGradientValue(value, entity) {
|
|
277
|
-
const attrPaths = parseLegacyPath(value.field);
|
|
278
|
-
for (let i = 0; i < attrPaths.length; i++) {
|
|
279
|
-
const attrPath = attrPaths[i];
|
|
280
|
-
let eValue = entity_1.Entity.GetValue({
|
|
281
|
-
entity: entity,
|
|
282
|
-
path: attrPath
|
|
283
|
-
});
|
|
284
|
-
eValue = Math.min(Math.max(eValue, value.min), value.max);
|
|
285
|
-
if (eValue < value.points[0].position) {
|
|
286
|
-
return color_1.Color.ColorFromStr(value.points[0].color);
|
|
287
|
-
}
|
|
288
|
-
for (let i = 0; i < value.points.length - 1; i++) {
|
|
289
|
-
const pointA = value.points[i];
|
|
290
|
-
const pointB = value.points[i + 1];
|
|
291
|
-
if (eValue >= pointA.position && eValue <= pointB.position) {
|
|
292
|
-
if (pointA.position == pointB.position) {
|
|
293
|
-
return color_1.Color.ColorFromStr(pointA.color);
|
|
294
|
-
}
|
|
295
|
-
const distance = (eValue - pointA.position) / (pointB.position - pointA.position);
|
|
296
|
-
const colorA = color_1.Color.ColorFromStr(pointA.color);
|
|
297
|
-
const colorB = color_1.Color.ColorFromStr(pointB.color);
|
|
298
|
-
return {
|
|
299
|
-
red: colorA.red + (colorB.red - colorA.red) * distance,
|
|
300
|
-
green: colorA.green + (colorB.green - colorA.green) * distance,
|
|
301
|
-
blue: colorA.blue + (colorB.blue - colorA.blue) * distance,
|
|
302
|
-
alpha: colorA.alpha + (colorB.alpha - colorA.alpha) * distance
|
|
303
|
-
};
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
return color_1.Color.ColorFromStr(value.points[value.points.length - 1].color);
|
|
308
|
-
}
|
|
309
|
-
Calculator.GetGradientValue = GetGradientValue;
|
|
310
|
-
function GetInputValue(value, entity) {
|
|
311
|
-
if (typeof value == "string") {
|
|
312
|
-
try {
|
|
313
|
-
value = bruce_variable_1.BruceVariable.SwapValues({
|
|
314
|
-
str: value,
|
|
315
|
-
entity: entity
|
|
316
|
-
});
|
|
317
|
-
// Check if it includes a math operation.
|
|
318
|
-
const MATH_REGEX = /(\d+\.?\d*|\.\d+)([+\-*/])(\d+\.?\d*|\.\d+)/;
|
|
319
|
-
if (MATH_REGEX.test(value)) {
|
|
320
|
-
// https://rollupjs.org/guide/en/#avoiding-eval
|
|
321
|
-
// This stops eval warning.
|
|
322
|
-
const eval2 = eval;
|
|
323
|
-
return eval2(value);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
catch (exception) {
|
|
327
|
-
const e = exception;
|
|
328
|
-
let suppress = false;
|
|
329
|
-
if (e && typeof e == "object") {
|
|
330
|
-
const msg = e.message;
|
|
331
|
-
suppress = !!msg && (msg.includes("Unexpected end") || msg.includes("got end of script"));
|
|
332
|
-
}
|
|
333
|
-
if (!suppress) {
|
|
334
|
-
console.error(e);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
return value;
|
|
339
|
-
}
|
|
340
|
-
Calculator.GetInputValue = GetInputValue;
|
|
341
|
-
})(Calculator = exports.Calculator || (exports.Calculator = {}));
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Calculator = void 0;
|
|
4
|
+
const color_1 = require("../common/color");
|
|
5
|
+
const entity_1 = require("../entity/entity");
|
|
6
|
+
const bruce_variable_1 = require("../common/bruce-variable");
|
|
7
|
+
const path_utils_1 = require("../util/path-utils");
|
|
8
|
+
/**
|
|
9
|
+
* Example: ${Test.Test1}
|
|
10
|
+
* Needs to become ["Test", "Test1"].
|
|
11
|
+
* We need to cull this in admin-ui.
|
|
12
|
+
* @param path
|
|
13
|
+
* @returns Possible paths this legacy one could mean.
|
|
14
|
+
*/
|
|
15
|
+
function parseLegacyPath(path) {
|
|
16
|
+
if (!path) {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
const paths = [];
|
|
20
|
+
if (path.startsWith("${") && path.endsWith("}")) {
|
|
21
|
+
path = path.replace("${", "");
|
|
22
|
+
path = path.replace("}", "");
|
|
23
|
+
}
|
|
24
|
+
// Split by dots.
|
|
25
|
+
paths.push(path_utils_1.PathUtils.ParseLegacy(path));
|
|
26
|
+
// Take string as is.
|
|
27
|
+
paths.push([path]);
|
|
28
|
+
// Split by backslashes.
|
|
29
|
+
paths.push(path_utils_1.PathUtils.Parse(path));
|
|
30
|
+
return paths;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Utility for calculating values from Bruce fields.
|
|
34
|
+
* These fields are typically found in entity styles.
|
|
35
|
+
*/
|
|
36
|
+
var Calculator;
|
|
37
|
+
(function (Calculator) {
|
|
38
|
+
let EValueType;
|
|
39
|
+
(function (EValueType) {
|
|
40
|
+
EValueType[EValueType["Color"] = 0] = "Color";
|
|
41
|
+
EValueType[EValueType["Input"] = 1] = "Input";
|
|
42
|
+
EValueType[EValueType["Gradient"] = 2] = "Gradient";
|
|
43
|
+
EValueType[EValueType["Mapping"] = 3] = "Mapping";
|
|
44
|
+
EValueType[EValueType["TagColor"] = 4] = "TagColor";
|
|
45
|
+
EValueType[EValueType["RandomColor"] = 5] = "RandomColor";
|
|
46
|
+
})(EValueType = Calculator.EValueType || (Calculator.EValueType = {}));
|
|
47
|
+
/**
|
|
48
|
+
* Calculates the value of arbitrary field options.
|
|
49
|
+
* The context calling this should validate results and parse stuff if needed.
|
|
50
|
+
* @deprecated use specific calls: eg GetColor or GetNumber.
|
|
51
|
+
* @param fields
|
|
52
|
+
* @param entity
|
|
53
|
+
* @param tags
|
|
54
|
+
* @returns
|
|
55
|
+
*/
|
|
56
|
+
function GetValue(fields, entity, tags) {
|
|
57
|
+
if (!tags) {
|
|
58
|
+
tags = [];
|
|
59
|
+
}
|
|
60
|
+
if (!entity) {
|
|
61
|
+
entity = {};
|
|
62
|
+
}
|
|
63
|
+
for (let i = 0; i < fields.length; i++) {
|
|
64
|
+
const field = fields[i];
|
|
65
|
+
let value;
|
|
66
|
+
switch (field.type) {
|
|
67
|
+
case EValueType.Color:
|
|
68
|
+
value = field.value;
|
|
69
|
+
if (value) {
|
|
70
|
+
value = color_1.Color.ColorFromStr(value);
|
|
71
|
+
}
|
|
72
|
+
break;
|
|
73
|
+
case EValueType.Gradient:
|
|
74
|
+
value = GetGradientValue(field.value, entity);
|
|
75
|
+
break;
|
|
76
|
+
case EValueType.Input:
|
|
77
|
+
value = GetInputValue(field.value, entity);
|
|
78
|
+
break;
|
|
79
|
+
case EValueType.Mapping:
|
|
80
|
+
value = GetMappingValue(field.value, entity);
|
|
81
|
+
break;
|
|
82
|
+
case EValueType.RandomColor:
|
|
83
|
+
value = color_1.Color.RandomColor();
|
|
84
|
+
break;
|
|
85
|
+
case EValueType.TagColor:
|
|
86
|
+
for (let i = 0; i < tags.length; i++) {
|
|
87
|
+
const tag = tags[i];
|
|
88
|
+
if (tag.Color) {
|
|
89
|
+
value = color_1.Color.ColorFromStr(tag.Color);
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
if (value || value == 0) {
|
|
96
|
+
return value;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
Calculator.GetValue = GetValue;
|
|
102
|
+
/**
|
|
103
|
+
* Calculates the value of arbitrary field options with assumption that desired result is a color.
|
|
104
|
+
* Will return null if a color is not found.
|
|
105
|
+
* @param fields
|
|
106
|
+
* @param entity
|
|
107
|
+
* @param tags
|
|
108
|
+
*/
|
|
109
|
+
function GetColor(fields, entity, tags) {
|
|
110
|
+
if (!tags) {
|
|
111
|
+
tags = [];
|
|
112
|
+
}
|
|
113
|
+
if (!entity) {
|
|
114
|
+
entity = {};
|
|
115
|
+
}
|
|
116
|
+
for (let i = 0; i < fields.length; i++) {
|
|
117
|
+
const field = fields[i];
|
|
118
|
+
let value;
|
|
119
|
+
switch (field.type) {
|
|
120
|
+
case EValueType.Color:
|
|
121
|
+
value = field.value;
|
|
122
|
+
break;
|
|
123
|
+
case EValueType.Gradient:
|
|
124
|
+
value = GetGradientValue(field.value, entity);
|
|
125
|
+
break;
|
|
126
|
+
case EValueType.Input:
|
|
127
|
+
value = GetInputValue(field.value, entity);
|
|
128
|
+
break;
|
|
129
|
+
case EValueType.Mapping:
|
|
130
|
+
value = GetMappingValue(field.value, entity);
|
|
131
|
+
break;
|
|
132
|
+
case EValueType.RandomColor:
|
|
133
|
+
value = color_1.Color.RandomColor();
|
|
134
|
+
break;
|
|
135
|
+
case EValueType.TagColor:
|
|
136
|
+
for (let i = 0; i < tags.length; i++) {
|
|
137
|
+
const tag = tags[i];
|
|
138
|
+
if (tag.Color) {
|
|
139
|
+
value = color_1.Color.ColorFromStr(tag.Color);
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
if (typeof value === "string") {
|
|
146
|
+
value = color_1.Color.ColorFromStr(value);
|
|
147
|
+
}
|
|
148
|
+
if (value && typeof value === "object" && (value.red || value.red == 0)) {
|
|
149
|
+
return value;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
Calculator.GetColor = GetColor;
|
|
155
|
+
function GetNumber(fields, entity, tags) {
|
|
156
|
+
if (!tags) {
|
|
157
|
+
tags = [];
|
|
158
|
+
}
|
|
159
|
+
if (!entity) {
|
|
160
|
+
entity = {};
|
|
161
|
+
}
|
|
162
|
+
for (let i = 0; i < fields.length; i++) {
|
|
163
|
+
const field = fields[i];
|
|
164
|
+
let value;
|
|
165
|
+
switch (field.type) {
|
|
166
|
+
case EValueType.Gradient:
|
|
167
|
+
value = GetGradientValue(field.value, entity);
|
|
168
|
+
break;
|
|
169
|
+
case EValueType.Color:
|
|
170
|
+
case EValueType.Input:
|
|
171
|
+
value = GetInputValue(field.value, entity);
|
|
172
|
+
break;
|
|
173
|
+
case EValueType.Mapping:
|
|
174
|
+
value = GetMappingValue(field.value, entity);
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
if (value != "" && value != null && value != undefined) {
|
|
178
|
+
value = Number(value);
|
|
179
|
+
}
|
|
180
|
+
if (value || value == 0) {
|
|
181
|
+
return value;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
Calculator.GetNumber = GetNumber;
|
|
187
|
+
function GetString(fields, entity, tags) {
|
|
188
|
+
if (!tags) {
|
|
189
|
+
tags = [];
|
|
190
|
+
}
|
|
191
|
+
if (!entity) {
|
|
192
|
+
entity = {};
|
|
193
|
+
}
|
|
194
|
+
for (let i = 0; i < fields.length; i++) {
|
|
195
|
+
const field = fields[i];
|
|
196
|
+
let value;
|
|
197
|
+
switch (field.type) {
|
|
198
|
+
case EValueType.Gradient:
|
|
199
|
+
value = String(GetGradientValue(field.value, entity));
|
|
200
|
+
break;
|
|
201
|
+
case EValueType.Color:
|
|
202
|
+
case EValueType.Input:
|
|
203
|
+
value = String(GetInputValue(field.value, entity));
|
|
204
|
+
break;
|
|
205
|
+
case EValueType.Mapping:
|
|
206
|
+
value = String(GetMappingValue(field.value, entity));
|
|
207
|
+
break;
|
|
208
|
+
case EValueType.RandomColor:
|
|
209
|
+
var color = color_1.Color.RandomColor();
|
|
210
|
+
value = `rgba(${color.red},${color.green},${color.blue},${color.alpha})`;
|
|
211
|
+
break;
|
|
212
|
+
case EValueType.TagColor:
|
|
213
|
+
for (let i = 0; i < tags.length; i++) {
|
|
214
|
+
const tag = tags[i];
|
|
215
|
+
if (tag.Color) {
|
|
216
|
+
value = tag.Color;
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
if (value) {
|
|
223
|
+
return value;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
Calculator.GetString = GetString;
|
|
229
|
+
function GetMappingValue(value, entity) {
|
|
230
|
+
const attrPaths = parseLegacyPath(value.field);
|
|
231
|
+
for (let i = 0; i < attrPaths.length; i++) {
|
|
232
|
+
const attrPath = attrPaths[i];
|
|
233
|
+
let eValue = entity_1.Entity.GetValue({
|
|
234
|
+
entity: entity,
|
|
235
|
+
path: attrPath
|
|
236
|
+
});
|
|
237
|
+
const isValueNum = !isNaN(+eValue);
|
|
238
|
+
for (let i = 0; i < value.values.length; i++) {
|
|
239
|
+
const option = value.values[i];
|
|
240
|
+
const mapValue = option.fieldValue;
|
|
241
|
+
const isMapValueNum = !isNaN(+mapValue);
|
|
242
|
+
if (isValueNum && isMapValueNum) {
|
|
243
|
+
if (+mapValue == +eValue) {
|
|
244
|
+
return option.appliedValue;
|
|
245
|
+
}
|
|
246
|
+
const mapSplit = mapValue.split("-");
|
|
247
|
+
if (mapSplit.length == 2) {
|
|
248
|
+
const min = mapSplit[0];
|
|
249
|
+
const max = mapSplit[1];
|
|
250
|
+
if (min != "") {
|
|
251
|
+
if (+eValue < +min) {
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
if (max != "") {
|
|
256
|
+
if (+eValue > +max) {
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
if (min == "" && max == "") {
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
return option.appliedValue;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
if (mapValue == eValue) {
|
|
268
|
+
return option.appliedValue;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
Calculator.GetMappingValue = GetMappingValue;
|
|
276
|
+
function GetGradientValue(value, entity) {
|
|
277
|
+
const attrPaths = parseLegacyPath(value.field);
|
|
278
|
+
for (let i = 0; i < attrPaths.length; i++) {
|
|
279
|
+
const attrPath = attrPaths[i];
|
|
280
|
+
let eValue = entity_1.Entity.GetValue({
|
|
281
|
+
entity: entity,
|
|
282
|
+
path: attrPath
|
|
283
|
+
});
|
|
284
|
+
eValue = Math.min(Math.max(eValue, value.min), value.max);
|
|
285
|
+
if (eValue < value.points[0].position) {
|
|
286
|
+
return color_1.Color.ColorFromStr(value.points[0].color);
|
|
287
|
+
}
|
|
288
|
+
for (let i = 0; i < value.points.length - 1; i++) {
|
|
289
|
+
const pointA = value.points[i];
|
|
290
|
+
const pointB = value.points[i + 1];
|
|
291
|
+
if (eValue >= pointA.position && eValue <= pointB.position) {
|
|
292
|
+
if (pointA.position == pointB.position) {
|
|
293
|
+
return color_1.Color.ColorFromStr(pointA.color);
|
|
294
|
+
}
|
|
295
|
+
const distance = (eValue - pointA.position) / (pointB.position - pointA.position);
|
|
296
|
+
const colorA = color_1.Color.ColorFromStr(pointA.color);
|
|
297
|
+
const colorB = color_1.Color.ColorFromStr(pointB.color);
|
|
298
|
+
return {
|
|
299
|
+
red: colorA.red + (colorB.red - colorA.red) * distance,
|
|
300
|
+
green: colorA.green + (colorB.green - colorA.green) * distance,
|
|
301
|
+
blue: colorA.blue + (colorB.blue - colorA.blue) * distance,
|
|
302
|
+
alpha: colorA.alpha + (colorB.alpha - colorA.alpha) * distance
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return color_1.Color.ColorFromStr(value.points[value.points.length - 1].color);
|
|
308
|
+
}
|
|
309
|
+
Calculator.GetGradientValue = GetGradientValue;
|
|
310
|
+
function GetInputValue(value, entity) {
|
|
311
|
+
if (typeof value == "string") {
|
|
312
|
+
try {
|
|
313
|
+
value = bruce_variable_1.BruceVariable.SwapValues({
|
|
314
|
+
str: value,
|
|
315
|
+
entity: entity
|
|
316
|
+
});
|
|
317
|
+
// Check if it includes a math operation.
|
|
318
|
+
const MATH_REGEX = /(\d+\.?\d*|\.\d+)([+\-*/])(\d+\.?\d*|\.\d+)/;
|
|
319
|
+
if (MATH_REGEX.test(value)) {
|
|
320
|
+
// https://rollupjs.org/guide/en/#avoiding-eval
|
|
321
|
+
// This stops eval warning.
|
|
322
|
+
const eval2 = eval;
|
|
323
|
+
return eval2(value);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
catch (exception) {
|
|
327
|
+
const e = exception;
|
|
328
|
+
let suppress = false;
|
|
329
|
+
if (e && typeof e == "object") {
|
|
330
|
+
const msg = e.message;
|
|
331
|
+
suppress = !!msg && (msg.includes("Unexpected end") || msg.includes("got end of script"));
|
|
332
|
+
}
|
|
333
|
+
if (!suppress) {
|
|
334
|
+
console.error(e);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
return value;
|
|
339
|
+
}
|
|
340
|
+
Calculator.GetInputValue = GetInputValue;
|
|
341
|
+
})(Calculator = exports.Calculator || (exports.Calculator = {}));
|
|
342
342
|
//# sourceMappingURL=calculator.js.map
|