bruce-models 3.1.4 → 3.1.6

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 (47) hide show
  1. package/dist/bruce-models.es5.js +47 -570
  2. package/dist/bruce-models.es5.js.map +1 -1
  3. package/dist/bruce-models.umd.js +44 -557
  4. package/dist/bruce-models.umd.js.map +1 -1
  5. package/dist/lib/bruce-models.js +3 -5
  6. package/dist/lib/bruce-models.js.map +1 -1
  7. package/dist/lib/client-file/client-file.js.map +1 -1
  8. package/dist/lib/custom-form/custom-form.js.map +1 -1
  9. package/dist/lib/project/project-view-bookmark.js +0 -8
  10. package/dist/lib/project/project-view-bookmark.js.map +1 -1
  11. package/dist/lib/project/project-view-legacy-bookmark.js +12 -0
  12. package/dist/lib/project/project-view-legacy-bookmark.js.map +1 -0
  13. package/dist/lib/project/project-view-legacy-tile.js.map +1 -1
  14. package/dist/lib/project/project-view-legacy.js +12 -0
  15. package/dist/lib/project/project-view-legacy.js.map +1 -0
  16. package/dist/lib/project/project-view.js +1 -9
  17. package/dist/lib/project/project-view.js.map +1 -1
  18. package/dist/lib/user/permission.js +1 -0
  19. package/dist/lib/user/permission.js.map +1 -1
  20. package/dist/lib/util/object-utils.js +25 -6
  21. package/dist/lib/util/object-utils.js.map +1 -1
  22. package/dist/types/bruce-models.d.ts +3 -5
  23. package/dist/types/client-file/client-file.d.ts +5 -5
  24. package/dist/types/entity/entity-attachment.d.ts +1 -1
  25. package/dist/types/entity/entity-lod.d.ts +1 -1
  26. package/dist/types/entity/entity-type.d.ts +5 -5
  27. package/dist/types/entity/entity.d.ts +1 -1
  28. package/dist/types/import/imported-file.d.ts +1 -1
  29. package/dist/types/project/project-view-bookmark.d.ts +56 -113
  30. package/dist/types/project/project-view-legacy-bookmark.d.ts +62 -0
  31. package/dist/types/project/project-view-legacy.d.ts +49 -0
  32. package/dist/types/project/project-view.d.ts +30 -82
  33. package/dist/types/user/permission.d.ts +1 -0
  34. package/dist/types/util/object-utils.d.ts +2 -2
  35. package/package.json +1 -1
  36. package/dist/lib/entity/getters/batched-data-getter.js +0 -85
  37. package/dist/lib/entity/getters/batched-data-getter.js.map +0 -1
  38. package/dist/lib/entity/getters/entity-filter-getter.js +0 -321
  39. package/dist/lib/entity/getters/entity-filter-getter.js.map +0 -1
  40. package/dist/lib/entity/getters/entity-globe.js +0 -192
  41. package/dist/lib/entity/getters/entity-globe.js.map +0 -1
  42. package/dist/lib/entity/getters/view-monitor.js +0 -3
  43. package/dist/lib/entity/getters/view-monitor.js.map +0 -1
  44. package/dist/types/entity/getters/batched-data-getter.d.ts +0 -26
  45. package/dist/types/entity/getters/entity-filter-getter.d.ts +0 -61
  46. package/dist/types/entity/getters/entity-globe.d.ts +0 -21
  47. package/dist/types/entity/getters/view-monitor.d.ts +0 -13
@@ -1,321 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.EntityFilterGetter = void 0;
13
- const api_1 = require("../../api/api");
14
- const bruce_event_1 = require("../../common/bruce-event");
15
- const entity_1 = require("../entity");
16
- const entity_globe_1 = require("./entity-globe");
17
- const MAX_AREA_IN_DEGREES = 90;
18
- const MAX_RETRY_ATTEMPTS = 1;
19
- const RETRY_DELAY_INCREMENT = 500;
20
- const REQUEST_PAGE_DELAY = 50;
21
- class regMenuItemGetter {
22
- constructor(tagIds, minHeight, maxHeight) {
23
- this.TagIds = tagIds;
24
- this.MinHeight = minHeight;
25
- this.MaxHeight = maxHeight;
26
- }
27
- }
28
- function delay(milliseconds) {
29
- return __awaiter(this, void 0, void 0, function* () {
30
- return new Promise((res) => {
31
- setTimeout(() => {
32
- res();
33
- }, milliseconds);
34
- });
35
- });
36
- }
37
- /**
38
- * This is a batched entity getter.
39
- * It will scan for entity records in a view-area and emit them in batches.
40
- * It will restart scanning if the camera moves.
41
- */
42
- var EntityFilterGetter;
43
- (function (EntityFilterGetter) {
44
- let EStatus;
45
- (function (EStatus) {
46
- EStatus["Scanning"] = "SCANNING";
47
- EStatus["Loading"] = "LOADING";
48
- })(EStatus = EntityFilterGetter.EStatus || (EntityFilterGetter.EStatus = {}));
49
- class Getter {
50
- get OnUpdate() {
51
- if (!this.onUpdate) {
52
- this.onUpdate = new bruce_event_1.BruceEvent();
53
- }
54
- return this.onUpdate;
55
- }
56
- get OnStateUpdate() {
57
- if (!this.onStateUpdate) {
58
- this.onStateUpdate = new bruce_event_1.BruceEvent();
59
- }
60
- return this.onStateUpdate;
61
- }
62
- get OnScanUpdate() {
63
- if (!this.onScanUpdate) {
64
- this.onScanUpdate = new bruce_event_1.BruceEvent();
65
- }
66
- return this.onScanUpdate;
67
- }
68
- constructor(api, viewPort, typeId, batchSize, attrFilter, viaCdn) {
69
- this.onUpdate = null;
70
- this.LastStateUpdates = {};
71
- this.onStateUpdate = null;
72
- this.onScanUpdate = null;
73
- this.viewPortChangeRemoval = null;
74
- this.cells = null;
75
- this.registeredItems = {};
76
- this.getterLoopId = 0;
77
- this.tagIds = null;
78
- this.minHeight = 0;
79
- this.maxHeight = 100000;
80
- this.viewRect = null;
81
- this.viewCenter = null;
82
- this.api = api;
83
- this.typeId = typeId;
84
- this.viaCdn = Boolean(viaCdn);
85
- this.batchSize = isNaN(batchSize) ? 300 : batchSize;
86
- this.viewPort = viewPort;
87
- this.attrFilter = attrFilter;
88
- this.updateBounds();
89
- }
90
- /**
91
- * Returns id that represents the combined menu item parameters.
92
- * If integrity changes while a request is running, the request will not emit a response.
93
- * @returns
94
- */
95
- getIntegrityId() {
96
- return this.tagIds == null ? "" : this.tagIds.join();
97
- }
98
- viewAreaSub() {
99
- this.viewAreaDispose();
100
- this.viewPortChangeRemoval = this.viewPort.Updated().Subscribe(() => {
101
- this.updateBounds();
102
- this.startGetterLoop();
103
- });
104
- }
105
- viewAreaDispose() {
106
- var _a;
107
- (_a = this.viewPortChangeRemoval) === null || _a === void 0 ? void 0 : _a.call(this);
108
- }
109
- GetMenuItems() {
110
- return Object.keys(this.registeredItems);
111
- }
112
- IncludeMenuItem(menuItemId, layerIds, minHeight, maxHeight) {
113
- this.registeredItems[menuItemId] = new regMenuItemGetter(layerIds, minHeight, maxHeight);
114
- this.updateState();
115
- }
116
- ExcludeMenuItem(menuItemId) {
117
- this.registeredItems[menuItemId] = null;
118
- delete this.registeredItems[menuItemId];
119
- this.updateState();
120
- }
121
- updateBounds() {
122
- const viewRect = this.viewPort.GetBounds();
123
- const poi = this.viewPort.GetTarget();
124
- if (viewRect && poi) {
125
- if (Math.abs(viewRect.west - viewRect.east) > MAX_AREA_IN_DEGREES) {
126
- return;
127
- }
128
- if (Math.abs(viewRect.south - viewRect.north) > MAX_AREA_IN_DEGREES) {
129
- return;
130
- }
131
- this.viewRect = viewRect;
132
- this.viewCenter = poi;
133
- }
134
- }
135
- updateState() {
136
- const tagIds = [];
137
- const menuItemIds = this.GetMenuItems();
138
- let minHeight = null;
139
- let maxHeight = null;
140
- for (let i = 0; i < menuItemIds.length; i++) {
141
- const menuItem = this.registeredItems[menuItemIds[i]];
142
- if (menuItem) {
143
- if (maxHeight == null || maxHeight < menuItem.MaxHeight) {
144
- maxHeight = menuItem.MaxHeight;
145
- }
146
- if (minHeight == null || minHeight > menuItem.MinHeight) {
147
- minHeight = menuItem.MinHeight;
148
- }
149
- const itemLayerIds = menuItem.TagIds;
150
- if (itemLayerIds) {
151
- for (let j = 0; j < itemLayerIds.length; j++) {
152
- const itemLayerId = itemLayerIds[j];
153
- if (!tagIds.includes(itemLayerId)) {
154
- tagIds.push(itemLayerId);
155
- }
156
- }
157
- }
158
- }
159
- }
160
- if (menuItemIds.length > 0) {
161
- // Reset cells so none are marked as fetched.
162
- this.cells = new entity_globe_1.EntityGlobe.Grid();
163
- this.tagIds = tagIds;
164
- this.minHeight = minHeight;
165
- this.maxHeight = maxHeight;
166
- this.updateBounds();
167
- this.startGetterLoop();
168
- this.viewAreaSub();
169
- }
170
- else {
171
- this.getterLoopId += 1;
172
- this.viewAreaDispose();
173
- }
174
- }
175
- postStatus(status) {
176
- var _a;
177
- this.LastStateUpdates[status.msg] = status;
178
- (_a = this.onStateUpdate) === null || _a === void 0 ? void 0 : _a.Trigger(status);
179
- }
180
- startGetterLoop() {
181
- // Increase id so that existing loops stop.
182
- this.getterLoopId += 1;
183
- const loopId = this.getterLoopId;
184
- const loopIntegrity = this.getIntegrityId();
185
- new Promise(() => __awaiter(this, void 0, void 0, function* () {
186
- var _a, _b, _c, _d, _e, _f, _g, _h;
187
- // Minor delay to stop 50 menu items enabling doing their first request all together.
188
- // This gives it time to recognize only 1 request is needed.
189
- // Would be better to not use this delay but we're on a clock.
190
- yield delay(100);
191
- const MIN_HEIGHT = this.minHeight;
192
- const MAX_HEIGHT = this.maxHeight;
193
- const PAGE_SIZE = this.batchSize;
194
- let retryAttempts = MAX_RETRY_ATTEMPTS;
195
- let retryDelay = 0;
196
- let prevFirstId = "";
197
- let prevLastId = "";
198
- let prevTicks = 0;
199
- while ((!this.viewCenter || !this.viewRect) && this.getterLoopId == loopId) {
200
- yield delay(RETRY_DELAY_INCREMENT);
201
- }
202
- if (this.getterLoopId != loopId) {
203
- return;
204
- }
205
- const alt = this.viewRect.alt;
206
- if (alt > MAX_HEIGHT || (alt < MIN_HEIGHT && MIN_HEIGHT > 0)) {
207
- return;
208
- }
209
- const cells = this.cells.GetCellsForView(this.viewCenter, this.viewRect);
210
- (_a = this.onScanUpdate) === null || _a === void 0 ? void 0 : _a.Trigger(cells);
211
- let curCellIndex = cells.length > 0 ? 0 : null;
212
- let postedScanning = false;
213
- let postedLoading = false;
214
- let total = 0;
215
- while (retryAttempts > 0 && curCellIndex != null) {
216
- if (retryDelay > 0) {
217
- yield delay(retryDelay);
218
- }
219
- if (this.getterLoopId != loopId) {
220
- break;
221
- }
222
- if (!postedScanning) {
223
- this.postStatus({ msg: EStatus.Scanning, revoking: false });
224
- postedScanning = true;
225
- }
226
- const curCell = cells[curCellIndex];
227
- if (curCell.IsFetched()) {
228
- curCell.Fetching = false;
229
- curCellIndex += 1;
230
- if (cells[curCellIndex]) {
231
- cells[curCellIndex].Fetching = true;
232
- }
233
- else {
234
- curCellIndex = null;
235
- }
236
- (_b = this.onScanUpdate) === null || _b === void 0 ? void 0 : _b.Trigger(cells);
237
- continue;
238
- }
239
- try {
240
- let { entities } = yield entity_1.Entity.GetList({
241
- api: this.api,
242
- filter: {
243
- pageSize: PAGE_SIZE,
244
- pageIndex: curCell.FetchPageIndex,
245
- entityTypeId: this.typeId,
246
- layerIds: this.tagIds,
247
- // Any tag specified will be allowed.
248
- layerIdsOperator: "in",
249
- bounds: curCell.GetBounds(),
250
- sortOrder: api_1.Api.ESortOrder.Asc,
251
- entityTypeConditions: this.attrFilter
252
- },
253
- viaCdn: this.viaCdn,
254
- req: {
255
- noCache: true
256
- }
257
- });
258
- const integrity = this.getIntegrityId();
259
- if (loopIntegrity == integrity && entities) {
260
- (_c = this.onUpdate) === null || _c === void 0 ? void 0 : _c.Trigger(entities);
261
- }
262
- if (this.getterLoopId != loopId) {
263
- break;
264
- }
265
- if (entities.length) {
266
- total += entities.length;
267
- }
268
- if (!postedLoading) {
269
- this.postStatus({ msg: EStatus.Loading, revoking: false });
270
- postedLoading = true;
271
- }
272
- // Only mark as fetched when ALL pages are done.
273
- // Known issue where external sources may return less than page size.
274
- // Right now we're making it as fetched as we're siding with the majority use-case.
275
- if (entities.length <= 0 || entities.length < PAGE_SIZE) {
276
- curCell.Fetched = true;
277
- curCell.Fetching = false;
278
- (_d = this.onScanUpdate) === null || _d === void 0 ? void 0 : _d.Trigger(cells);
279
- continue;
280
- }
281
- // Checking to make sure it's not just the same batch over and over again.
282
- if (entities.length > 0) {
283
- const first = (_f = (_e = entities[0]) === null || _e === void 0 ? void 0 : _e.Bruce) === null || _f === void 0 ? void 0 : _f.ID;
284
- const last = (_h = (_g = entities[entities.length - 1]) === null || _g === void 0 ? void 0 : _g.Bruce) === null || _h === void 0 ? void 0 : _h.ID;
285
- if (prevFirstId == first && prevLastId == last) {
286
- prevTicks += 1;
287
- if (prevTicks > 3) {
288
- break;
289
- }
290
- }
291
- else {
292
- prevFirstId = first;
293
- prevLastId = last;
294
- prevTicks = 0;
295
- }
296
- }
297
- curCell.FetchPageIndex++;
298
- // Request passed so let's assume it was server hiccup and refresh counts.
299
- retryAttempts = MAX_RETRY_ATTEMPTS;
300
- retryDelay = 0;
301
- }
302
- catch (e) {
303
- console.error(e);
304
- // Request failed so let's add a delay and try again soon.
305
- retryDelay += RETRY_DELAY_INCREMENT;
306
- retryAttempts -= 1;
307
- }
308
- yield delay(REQUEST_PAGE_DELAY);
309
- }
310
- if (postedLoading) {
311
- this.postStatus({ msg: EStatus.Loading, revoking: true });
312
- }
313
- if (postedScanning) {
314
- this.postStatus({ msg: EStatus.Scanning, revoking: true });
315
- }
316
- }));
317
- }
318
- }
319
- EntityFilterGetter.Getter = Getter;
320
- })(EntityFilterGetter = exports.EntityFilterGetter || (exports.EntityFilterGetter = {}));
321
- //# sourceMappingURL=entity-filter-getter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entity-filter-getter.js","sourceRoot":"","sources":["../../../../src/entity/getters/entity-filter-getter.ts"],"names":[],"mappings":"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"}
@@ -1,192 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EntityGlobe = void 0;
4
- /**
5
- * This is a helper for making entity requests based on a grid area.
6
- * It will return grid cells based on given view-area then will remember when stuff-
7
- * was fully-fetched for those cells to avoid making duplicate requests.
8
- */
9
- var EntityGlobe;
10
- (function (EntityGlobe) {
11
- class Cell {
12
- constructor() {
13
- this.Fetched = false;
14
- this.IsFetched = null;
15
- this.FetchPageIndex = 0;
16
- this.Boundaries = null;
17
- this.Fetching = false;
18
- }
19
- GetBounds() {
20
- // Entity data works in -180 to 180 range.
21
- function prepareRangeForBounds(range) {
22
- if (range > 180) {
23
- return range - 360;
24
- }
25
- return range;
26
- }
27
- // Add minor decimal as API crashes when giving it whole numbers.
28
- const maxLon = prepareRangeForBounds(this.Boundaries.maxLongitude) + 0.00001;
29
- const minLon = prepareRangeForBounds(this.Boundaries.minLongitude) - 0.00001;
30
- const maxLat = prepareRangeForBounds(this.Boundaries.maxLatitude) + 0.00001;
31
- const minLat = prepareRangeForBounds(this.Boundaries.minLatitude) - 0.00001;
32
- return {
33
- east: maxLon,
34
- north: maxLat,
35
- south: minLat,
36
- west: minLon
37
- };
38
- }
39
- }
40
- EntityGlobe.Cell = Cell;
41
- class Grid {
42
- constructor() {
43
- this.cells = {};
44
- }
45
- GetCellsForView(cameraPos, viewRect) {
46
- const cells = [];
47
- const minLat = viewRect.south;
48
- const minLon = viewRect.west;
49
- const maxLat = viewRect.north;
50
- const maxLon = viewRect.east;
51
- const MAX_CELLS = 150;
52
- const cellDegreeSize = getCellSizeFromHeight(viewRect.alt);
53
- let curMinLon = floorValueToCellSize(cellDegreeSize, minLon);
54
- let curMinLat = floorValueToCellSize(cellDegreeSize, minLat);
55
- // For larger views we add additional padding because our view-area culling is too strong.
56
- if (cellDegreeSize >= 2) {
57
- curMinLon -= cellDegreeSize;
58
- curMinLat -= cellDegreeSize;
59
- }
60
- let centerX = cameraPos === null || cameraPos === void 0 ? void 0 : cameraPos.longitude;
61
- let centerY = cameraPos === null || cameraPos === void 0 ? void 0 : cameraPos.latitude;
62
- if (isNaN(centerX) || isNaN(centerY)) {
63
- centerX = (minLon + maxLon) / 2;
64
- centerY = (minLat + maxLat) / 2;
65
- }
66
- let width = Math.ceil((maxLon - curMinLon) / cellDegreeSize);
67
- let height = Math.ceil((maxLat - curMinLat) / cellDegreeSize);
68
- // For larger views we add additional padding because our view-area culling is too strong.
69
- if (cellDegreeSize >= 2) {
70
- width += 1;
71
- height += 1;
72
- }
73
- const cellDistances = [];
74
- for (let x = 0; x < width; x++) {
75
- for (let y = 0; y < height; y++) {
76
- const lon = x * cellDegreeSize + curMinLon;
77
- const lat = y * cellDegreeSize + curMinLat;
78
- const cellCenterX = lon + cellDegreeSize / 2;
79
- const cellCenterY = lat + cellDegreeSize / 2;
80
- const dist = Math.sqrt(Math.pow(cellCenterX - centerX, 2) + Math.pow(cellCenterY - centerY, 2));
81
- cellDistances.push({ x, y, dist });
82
- }
83
- }
84
- cellDistances.sort((a, b) => a.dist - b.dist);
85
- for (const { x, y } of cellDistances) {
86
- const lon = x * cellDegreeSize + curMinLon;
87
- const lat = y * cellDegreeSize + curMinLat;
88
- const [id, cell] = getOrCreateCell(this.cells, cellDegreeSize, lon, lon + cellDegreeSize, lat, lat + cellDegreeSize);
89
- cells.push(cell);
90
- if (cells.length >= MAX_CELLS) {
91
- break;
92
- }
93
- }
94
- return cells;
95
- }
96
- }
97
- EntityGlobe.Grid = Grid;
98
- })(EntityGlobe = exports.EntityGlobe || (exports.EntityGlobe = {}));
99
- function intersects(l, r) {
100
- const { west: w, south: s, north: n, east: e } = l;
101
- const { west: wr, south: sr, north: nr, east: er } = r;
102
- return !(e <= wr || w >= er || n <= sr || s >= nr);
103
- }
104
- function contains(l, r) {
105
- const { west: w, south: s, north: n, east: e } = l;
106
- const { west: wr, south: sr, north: nr, east: er } = r;
107
- return !(er < e || wr > w || nr > n || sr < s);
108
- }
109
- function crop(rect, by) {
110
- let { west: w, south: s, north: n, east: e } = rect;
111
- const { west: wc, south: sc, north: nc, east: ec } = by;
112
- w = Math.max(w, ec);
113
- e = Math.min(e, wc);
114
- s = Math.max(s, nc);
115
- n = Math.min(n, sc);
116
- return { west: w, south: s, north: n, east: e };
117
- }
118
- function intersection(l, r) {
119
- const { west: w, south: s, north: n, east: e } = l;
120
- const { west: wr, south: sr, north: nr, east: er } = r;
121
- const x = Math.min(e, er) - Math.max(w, wr);
122
- const y = Math.min(n, nr) - Math.max(s, sr);
123
- return (x > 0 && y > 0) ? x * y : 0;
124
- }
125
- function area(rect) {
126
- let { west: w, south: s, north: n, east: e } = rect;
127
- return Math.abs((e - w) * (n - s));
128
- }
129
- function floorValueToCellSize(size, value) {
130
- return Math.floor(value / size) * size;
131
- }
132
- function getCellSizeFromHeight(height) {
133
- if (height < 1000) {
134
- return 0.01;
135
- }
136
- if (height < 5000) {
137
- return 0.025;
138
- }
139
- else if (height < 10000) {
140
- return 0.05;
141
- }
142
- else if (height < 30000) {
143
- return 0.1;
144
- }
145
- else if (height < 70000) {
146
- return 0.2;
147
- }
148
- else if (height < 100000) {
149
- return 0.3;
150
- }
151
- else if (height < 150000) {
152
- return 0.4;
153
- }
154
- else if (height < 200000) {
155
- return 0.5;
156
- }
157
- else if (height < 300000) {
158
- return 0.6;
159
- }
160
- else if (height < 500000) {
161
- return 1;
162
- }
163
- else if (height < 1000000) {
164
- return 1.3;
165
- }
166
- else if (height < 1200000) {
167
- return 1.8;
168
- }
169
- return 4;
170
- }
171
- function isCellFetched(cell) {
172
- if (cell.Fetched) {
173
- return true;
174
- }
175
- return false;
176
- }
177
- function getOrCreateCell(cells, cellSize, lon, maxLon, lat, maxLat) {
178
- const id = cellSize + "_" + lon + "_" + maxLon + "_" + lat + "_" + maxLat;
179
- let cell = cells[id];
180
- if (!cell) {
181
- cell = cells[id] = new EntityGlobe.Cell();
182
- cell.Boundaries = {
183
- minLatitude: lat,
184
- maxLatitude: maxLat,
185
- minLongitude: lon,
186
- maxLongitude: maxLon
187
- };
188
- cell.IsFetched = () => isCellFetched(cell);
189
- }
190
- return [id, cell];
191
- }
192
- //# sourceMappingURL=entity-globe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entity-globe.js","sourceRoot":"","sources":["../../../../src/entity/getters/entity-globe.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=view-monitor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"view-monitor.js","sourceRoot":"","sources":["../../../../src/entity/getters/view-monitor.ts"],"names":[],"mappings":""}
@@ -1,26 +0,0 @@
1
- import { BruceEvent } from "../../common/bruce-event";
2
- import { ViewMonitor } from "./view-monitor";
3
- /**
4
- * This is a batched "arbitrary data" getter.
5
- * You feed it an array of data, then it will emit that data in batches when the view changes.
6
- */
7
- export declare namespace BatchedDataGetter {
8
- class Getter<T> {
9
- private viewPort;
10
- private viewPortRemoval;
11
- private batchSize;
12
- private viewRect;
13
- private viewCenter;
14
- private getterInterval;
15
- private data;
16
- private onUpdate;
17
- get OnUpdate(): BruceEvent<T[]>;
18
- constructor(data: T[], viewPort: ViewMonitor.IMonitor, batchSize: number);
19
- Start(): void;
20
- Dispose(): void;
21
- private updateViewport;
22
- private updateBounds;
23
- private startGetterLoop;
24
- private processBatch;
25
- }
26
- }
@@ -1,61 +0,0 @@
1
- import { BruceApi } from "../../api/bruce-api";
2
- import { BruceEvent } from "../../common/bruce-event";
3
- import { IDictionary } from "../../common/dictionary";
4
- import { Entity } from "../entity";
5
- import { EntityGlobe } from "./entity-globe";
6
- import { ViewMonitor } from "./view-monitor";
7
- /**
8
- * This is a batched entity getter.
9
- * It will scan for entity records in a view-area and emit them in batches.
10
- * It will restart scanning if the camera moves.
11
- */
12
- export declare namespace EntityFilterGetter {
13
- enum EStatus {
14
- Scanning = "SCANNING",
15
- Loading = "LOADING"
16
- }
17
- interface IStatusUpdate {
18
- msg: EStatus;
19
- revoking: boolean;
20
- }
21
- class Getter {
22
- private onUpdate;
23
- get OnUpdate(): BruceEvent<Entity.IEntity[]>;
24
- LastStateUpdates: IDictionary<IStatusUpdate>;
25
- private onStateUpdate;
26
- get OnStateUpdate(): BruceEvent<IStatusUpdate>;
27
- private onScanUpdate;
28
- get OnScanUpdate(): BruceEvent<EntityGlobe.Cell[]>;
29
- private api;
30
- private viewPort;
31
- private viewPortChangeRemoval;
32
- private cells;
33
- private registeredItems;
34
- private getterLoopId;
35
- private viaCdn;
36
- private typeId;
37
- private batchSize;
38
- private tagIds;
39
- private minHeight;
40
- private maxHeight;
41
- private attrFilter;
42
- private viewRect;
43
- private viewCenter;
44
- constructor(api: BruceApi.Api, viewPort: ViewMonitor.IMonitor, typeId: string, batchSize?: number, attrFilter?: IDictionary<any>, viaCdn?: boolean);
45
- /**
46
- * Returns id that represents the combined menu item parameters.
47
- * If integrity changes while a request is running, the request will not emit a response.
48
- * @returns
49
- */
50
- private getIntegrityId;
51
- private viewAreaSub;
52
- private viewAreaDispose;
53
- GetMenuItems(): string[];
54
- IncludeMenuItem(menuItemId: string, layerIds: number[], minHeight: number, maxHeight: number): void;
55
- ExcludeMenuItem(menuItemId: string): void;
56
- private updateBounds;
57
- private updateState;
58
- private postStatus;
59
- private startGetterLoop;
60
- }
61
- }
@@ -1,21 +0,0 @@
1
- import { Bounds } from "../../common/bounds";
2
- import { Carto } from "../../common/carto";
3
- /**
4
- * This is a helper for making entity requests based on a grid area.
5
- * It will return grid cells based on given view-area then will remember when stuff-
6
- * was fully-fetched for those cells to avoid making duplicate requests.
7
- */
8
- export declare namespace EntityGlobe {
9
- class Cell {
10
- Fetched: boolean;
11
- IsFetched: () => boolean;
12
- FetchPageIndex: number;
13
- Boundaries: Bounds.IBounds;
14
- Fetching: boolean;
15
- GetBounds(): Bounds.IReqBounds;
16
- }
17
- class Grid {
18
- private cells;
19
- GetCellsForView(cameraPos: Carto.ICarto, viewRect: Bounds.IReqBounds): Cell[];
20
- }
21
- }