bruce-cesium 2.9.8 → 3.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.
Files changed (47) hide show
  1. package/dist/bruce-cesium.es5.js +785 -178
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +786 -181
  4. package/dist/bruce-cesium.umd.js.map +1 -1
  5. package/dist/lib/bruce-cesium.js +1 -1
  6. package/dist/lib/rendering/getters/batched-data-getter.js +92 -0
  7. package/dist/lib/rendering/getters/batched-data-getter.js.map +1 -0
  8. package/dist/lib/rendering/getters/entity-filter-getter.js +394 -0
  9. package/dist/lib/rendering/getters/entity-filter-getter.js.map +1 -0
  10. package/dist/lib/rendering/getters/entity-globe.js +195 -0
  11. package/dist/lib/rendering/getters/entity-globe.js.map +1 -0
  12. package/dist/lib/rendering/menu-item-creator.js.map +1 -1
  13. package/dist/lib/rendering/menu-item-manager.js +1 -1
  14. package/dist/lib/rendering/menu-item-manager.js.map +1 -1
  15. package/dist/lib/rendering/render-managers/common/entity-label.js.map +1 -1
  16. package/dist/lib/rendering/render-managers/common/shared-getters.js +2 -2
  17. package/dist/lib/rendering/render-managers/common/shared-getters.js.map +1 -1
  18. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +2 -1
  19. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -1
  20. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +2 -1
  21. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -1
  22. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
  23. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +2 -1
  24. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -1
  25. package/dist/lib/rendering/tile-render-engine.js.map +1 -1
  26. package/dist/lib/rendering/view-render-engine.js.map +1 -1
  27. package/dist/lib/utils/view-utils.js.map +1 -1
  28. package/dist/lib/viewer/cesium-view-monitor.js +177 -174
  29. package/dist/lib/viewer/cesium-view-monitor.js.map +1 -1
  30. package/dist/lib/widgets/widget-bookmarks.js.map +1 -1
  31. package/dist/lib/widgets/widget-info-view.js.map +1 -1
  32. package/dist/types/bruce-cesium.d.ts +1 -1
  33. package/dist/types/rendering/getters/batched-data-getter.d.ts +26 -0
  34. package/dist/types/rendering/getters/entity-filter-getter.d.ts +58 -0
  35. package/dist/types/rendering/getters/entity-globe.d.ts +20 -0
  36. package/dist/types/rendering/menu-item-creator.d.ts +2 -2
  37. package/dist/types/rendering/menu-item-manager.d.ts +1 -1
  38. package/dist/types/rendering/render-managers/common/shared-getters.d.ts +3 -4
  39. package/dist/types/rendering/render-managers/entities/entities-ids-render-manager.d.ts +1 -1
  40. package/dist/types/rendering/render-managers/entities/entities-loaded-render-manager.d.ts +1 -1
  41. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +1 -1
  42. package/dist/types/rendering/render-managers/entities/entity-render-manager.d.ts +1 -1
  43. package/dist/types/rendering/render-managers/tilesets/tileset-osm-render-manager.d.ts +1 -1
  44. package/dist/types/rendering/view-render-engine.d.ts +2 -2
  45. package/dist/types/utils/view-utils.d.ts +2 -2
  46. package/dist/types/viewer/cesium-view-monitor.d.ts +32 -26
  47. package/package.json +2 -2
@@ -46,5 +46,5 @@ __exportStar(require("./utils/measure-utils"), exports);
46
46
  __exportStar(require("./utils/entity-utils"), exports);
47
47
  __exportStar(require("./widgets/common/draw-3d-polygon"), exports);
48
48
  __exportStar(require("./widgets/common/draw-3d-polyline"), exports);
49
- exports.VERSION = "2.9.8";
49
+ exports.VERSION = "3.0.0";
50
50
  //# sourceMappingURL=bruce-cesium.js.map
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BatchedDataGetter = void 0;
4
+ var bruce_models_1 = require("bruce-models");
5
+ var MAX_AREA_IN_DEGREES = 90;
6
+ var GETTER_DELAY = 50;
7
+ /**
8
+ * This is a batched "arbitrary data" getter.
9
+ * You feed it an array of data, then it will emit that data in batches when the view changes.
10
+ */
11
+ var BatchedDataGetter;
12
+ (function (BatchedDataGetter) {
13
+ var Getter = /** @class */ (function () {
14
+ function Getter(data, viewPort, batchSize) {
15
+ this.viewPortRemoval = null;
16
+ this.viewRect = null;
17
+ this.viewCenter = null;
18
+ this.onUpdate = null;
19
+ this.data = data;
20
+ this.viewPort = viewPort;
21
+ this.batchSize = batchSize;
22
+ }
23
+ Object.defineProperty(Getter.prototype, "OnUpdate", {
24
+ get: function () {
25
+ if (!this.onUpdate) {
26
+ this.onUpdate = new bruce_models_1.BruceEvent();
27
+ }
28
+ return this.onUpdate;
29
+ },
30
+ enumerable: false,
31
+ configurable: true
32
+ });
33
+ Getter.prototype.Start = function () {
34
+ var _this = this;
35
+ this.viewPortRemoval = this.viewPort.Updated().Subscribe(function () {
36
+ _this.updateViewport();
37
+ });
38
+ this.updateViewport();
39
+ };
40
+ Getter.prototype.Dispose = function () {
41
+ var _a;
42
+ (_a = this.viewPortRemoval) === null || _a === void 0 ? void 0 : _a.call(this);
43
+ };
44
+ Getter.prototype.updateViewport = function () {
45
+ this.updateBounds();
46
+ this.startGetterLoop();
47
+ };
48
+ Getter.prototype.updateBounds = function () {
49
+ var viewRect = this.viewPort.GetBounds();
50
+ var poi = this.viewPort.GetTarget();
51
+ if (viewRect && poi) {
52
+ if (Math.abs(viewRect.west - viewRect.east) > MAX_AREA_IN_DEGREES) {
53
+ return;
54
+ }
55
+ if (Math.abs(viewRect.south - viewRect.north) > MAX_AREA_IN_DEGREES) {
56
+ return;
57
+ }
58
+ this.viewRect = viewRect;
59
+ this.viewCenter = poi;
60
+ }
61
+ };
62
+ Getter.prototype.startGetterLoop = function () {
63
+ var _this = this;
64
+ clearInterval(this.getterInterval);
65
+ if (!this.viewRect || !this.viewCenter) {
66
+ return;
67
+ }
68
+ var index = 0;
69
+ var onTick = function () {
70
+ _this.processBatch(_this.data.slice(index, index + _this.batchSize));
71
+ index += _this.batchSize;
72
+ return index >= _this.data.length;
73
+ };
74
+ if (!onTick()) {
75
+ this.getterInterval = setInterval(function () {
76
+ if (onTick()) {
77
+ clearInterval(_this.getterInterval);
78
+ }
79
+ }, GETTER_DELAY);
80
+ }
81
+ };
82
+ Getter.prototype.processBatch = function (batch) {
83
+ var _a;
84
+ if (batch.length > 0) {
85
+ (_a = this.onUpdate) === null || _a === void 0 ? void 0 : _a.Trigger(batch);
86
+ }
87
+ };
88
+ return Getter;
89
+ }());
90
+ BatchedDataGetter.Getter = Getter;
91
+ })(BatchedDataGetter = exports.BatchedDataGetter || (exports.BatchedDataGetter = {}));
92
+ //# sourceMappingURL=batched-data-getter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batched-data-getter.js","sourceRoot":"","sources":["../../../../src/rendering/getters/batched-data-getter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,394 @@
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
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.EntityFilterGetter = void 0;
40
+ var bruce_models_1 = require("bruce-models");
41
+ var entity_globe_1 = require("./entity-globe");
42
+ var MAX_AREA_IN_DEGREES = 90;
43
+ var MAX_RETRY_ATTEMPTS = 1;
44
+ var RETRY_DELAY_INCREMENT = 500;
45
+ var REQUEST_PAGE_DELAY = 50;
46
+ var regMenuItemGetter = /** @class */ (function () {
47
+ function regMenuItemGetter(tagIds, minHeight, maxHeight) {
48
+ this.TagIds = tagIds;
49
+ this.MinHeight = minHeight;
50
+ this.MaxHeight = maxHeight;
51
+ }
52
+ return regMenuItemGetter;
53
+ }());
54
+ function delay(milliseconds) {
55
+ return __awaiter(this, void 0, void 0, function () {
56
+ return __generator(this, function (_a) {
57
+ return [2 /*return*/, new Promise(function (res) {
58
+ setTimeout(function () {
59
+ res();
60
+ }, milliseconds);
61
+ })];
62
+ });
63
+ });
64
+ }
65
+ /**
66
+ * This is a batched entity getter.
67
+ * It will scan for entity records in a view-area and emit them in batches.
68
+ * It will restart scanning if the camera moves.
69
+ */
70
+ var EntityFilterGetter;
71
+ (function (EntityFilterGetter) {
72
+ var EStatus;
73
+ (function (EStatus) {
74
+ EStatus["Scanning"] = "SCANNING";
75
+ EStatus["Loading"] = "LOADING";
76
+ })(EStatus = EntityFilterGetter.EStatus || (EntityFilterGetter.EStatus = {}));
77
+ var Getter = /** @class */ (function () {
78
+ function Getter(api, viewPort, typeId, batchSize, attrFilter, viaCdn) {
79
+ this.onUpdate = null;
80
+ this.LastStateUpdates = {};
81
+ this.onStateUpdate = null;
82
+ this.onScanUpdate = null;
83
+ this.viewPortChangeRemoval = null;
84
+ this.cells = null;
85
+ this.registeredItems = {};
86
+ this.getterLoopId = 0;
87
+ this.tagIds = null;
88
+ this.minHeight = 0;
89
+ this.maxHeight = 100000;
90
+ this.viewRect = null;
91
+ this.viewCenter = null;
92
+ this.api = api;
93
+ this.typeId = typeId;
94
+ this.viaCdn = Boolean(viaCdn);
95
+ this.batchSize = isNaN(batchSize) ? 300 : batchSize;
96
+ this.viewPort = viewPort;
97
+ this.attrFilter = attrFilter;
98
+ this.updateBounds();
99
+ }
100
+ Object.defineProperty(Getter.prototype, "OnUpdate", {
101
+ get: function () {
102
+ if (!this.onUpdate) {
103
+ this.onUpdate = new bruce_models_1.BruceEvent();
104
+ }
105
+ return this.onUpdate;
106
+ },
107
+ enumerable: false,
108
+ configurable: true
109
+ });
110
+ Object.defineProperty(Getter.prototype, "OnStateUpdate", {
111
+ get: function () {
112
+ if (!this.onStateUpdate) {
113
+ this.onStateUpdate = new bruce_models_1.BruceEvent();
114
+ }
115
+ return this.onStateUpdate;
116
+ },
117
+ enumerable: false,
118
+ configurable: true
119
+ });
120
+ Object.defineProperty(Getter.prototype, "OnScanUpdate", {
121
+ get: function () {
122
+ if (!this.onScanUpdate) {
123
+ this.onScanUpdate = new bruce_models_1.BruceEvent();
124
+ }
125
+ return this.onScanUpdate;
126
+ },
127
+ enumerable: false,
128
+ configurable: true
129
+ });
130
+ /**
131
+ * Returns id that represents the combined menu item parameters.
132
+ * If integrity changes while a request is running, the request will not emit a response.
133
+ * @returns
134
+ */
135
+ Getter.prototype.getIntegrityId = function () {
136
+ return this.tagIds == null ? "" : this.tagIds.join();
137
+ };
138
+ Getter.prototype.viewAreaSub = function () {
139
+ var _this = this;
140
+ this.viewAreaDispose();
141
+ this.viewPortChangeRemoval = this.viewPort.Updated().Subscribe(function () {
142
+ _this.updateBounds();
143
+ _this.startGetterLoop();
144
+ });
145
+ };
146
+ Getter.prototype.viewAreaDispose = function () {
147
+ var _a;
148
+ (_a = this.viewPortChangeRemoval) === null || _a === void 0 ? void 0 : _a.call(this);
149
+ };
150
+ Getter.prototype.GetMenuItems = function () {
151
+ return Object.keys(this.registeredItems);
152
+ };
153
+ Getter.prototype.IncludeMenuItem = function (menuItemId, layerIds, minHeight, maxHeight) {
154
+ this.registeredItems[menuItemId] = new regMenuItemGetter(layerIds, minHeight, maxHeight);
155
+ this.updateState();
156
+ };
157
+ Getter.prototype.ExcludeMenuItem = function (menuItemId) {
158
+ this.registeredItems[menuItemId] = null;
159
+ delete this.registeredItems[menuItemId];
160
+ this.updateState();
161
+ };
162
+ Getter.prototype.updateBounds = function () {
163
+ var viewRect = this.viewPort.GetBounds();
164
+ var poi = this.viewPort.GetTarget();
165
+ if (viewRect && poi) {
166
+ if (Math.abs(viewRect.west - viewRect.east) > MAX_AREA_IN_DEGREES) {
167
+ return;
168
+ }
169
+ if (Math.abs(viewRect.south - viewRect.north) > MAX_AREA_IN_DEGREES) {
170
+ return;
171
+ }
172
+ this.viewRect = viewRect;
173
+ this.viewCenter = poi;
174
+ }
175
+ };
176
+ Getter.prototype.updateState = function () {
177
+ var tagIds = [];
178
+ var menuItemIds = this.GetMenuItems();
179
+ var minHeight = null;
180
+ var maxHeight = null;
181
+ for (var i = 0; i < menuItemIds.length; i++) {
182
+ var menuItem = this.registeredItems[menuItemIds[i]];
183
+ if (menuItem) {
184
+ if (maxHeight == null || maxHeight < menuItem.MaxHeight) {
185
+ maxHeight = menuItem.MaxHeight;
186
+ }
187
+ if (minHeight == null || minHeight > menuItem.MinHeight) {
188
+ minHeight = menuItem.MinHeight;
189
+ }
190
+ var itemLayerIds = menuItem.TagIds;
191
+ if (itemLayerIds) {
192
+ for (var j = 0; j < itemLayerIds.length; j++) {
193
+ var itemLayerId = itemLayerIds[j];
194
+ if (!tagIds.includes(itemLayerId)) {
195
+ tagIds.push(itemLayerId);
196
+ }
197
+ }
198
+ }
199
+ }
200
+ }
201
+ if (menuItemIds.length > 0) {
202
+ // Reset cells so none are marked as fetched.
203
+ this.cells = new entity_globe_1.EntityGlobe.Grid();
204
+ this.tagIds = tagIds;
205
+ this.minHeight = minHeight;
206
+ this.maxHeight = maxHeight;
207
+ this.updateBounds();
208
+ this.startGetterLoop();
209
+ this.viewAreaSub();
210
+ }
211
+ else {
212
+ this.getterLoopId += 1;
213
+ this.viewAreaDispose();
214
+ }
215
+ };
216
+ Getter.prototype.postStatus = function (status) {
217
+ var _a;
218
+ this.LastStateUpdates[status.msg] = status;
219
+ (_a = this.onStateUpdate) === null || _a === void 0 ? void 0 : _a.Trigger(status);
220
+ };
221
+ Getter.prototype.startGetterLoop = function () {
222
+ var _this = this;
223
+ // Increase id so that existing loops stop.
224
+ this.getterLoopId += 1;
225
+ var loopId = this.getterLoopId;
226
+ var loopIntegrity = this.getIntegrityId();
227
+ new Promise(function () { return __awaiter(_this, void 0, void 0, function () {
228
+ var MIN_HEIGHT, MAX_HEIGHT, PAGE_SIZE, retryAttempts, retryDelay, prevFirstId, prevLastId, prevTicks, alt, cells, curCellIndex, postedScanning, postedLoading, total, curCell, entities, integrity, first, last, e_1;
229
+ var _a, _b, _c, _d, _e, _f, _g, _h;
230
+ return __generator(this, function (_j) {
231
+ switch (_j.label) {
232
+ case 0:
233
+ // Minor delay to stop 50 menu items enabling doing their first request all together.
234
+ // This gives it time to recognize only 1 request is needed.
235
+ // Would be better to not use this delay but we're on a clock.
236
+ return [4 /*yield*/, delay(100)];
237
+ case 1:
238
+ // Minor delay to stop 50 menu items enabling doing their first request all together.
239
+ // This gives it time to recognize only 1 request is needed.
240
+ // Would be better to not use this delay but we're on a clock.
241
+ _j.sent();
242
+ MIN_HEIGHT = this.minHeight;
243
+ MAX_HEIGHT = this.maxHeight;
244
+ PAGE_SIZE = this.batchSize;
245
+ retryAttempts = MAX_RETRY_ATTEMPTS;
246
+ retryDelay = 0;
247
+ prevFirstId = "";
248
+ prevLastId = "";
249
+ prevTicks = 0;
250
+ _j.label = 2;
251
+ case 2:
252
+ if (!((!this.viewCenter || !this.viewRect) && this.getterLoopId == loopId)) return [3 /*break*/, 4];
253
+ return [4 /*yield*/, delay(RETRY_DELAY_INCREMENT)];
254
+ case 3:
255
+ _j.sent();
256
+ return [3 /*break*/, 2];
257
+ case 4:
258
+ if (this.getterLoopId != loopId) {
259
+ return [2 /*return*/];
260
+ }
261
+ alt = this.viewRect.alt;
262
+ if (alt > MAX_HEIGHT || (alt < MIN_HEIGHT && MIN_HEIGHT > 0)) {
263
+ return [2 /*return*/];
264
+ }
265
+ cells = this.cells.GetCellsForView(this.viewCenter, this.viewRect);
266
+ (_a = this.onScanUpdate) === null || _a === void 0 ? void 0 : _a.Trigger(cells);
267
+ curCellIndex = cells.length > 0 ? 0 : null;
268
+ postedScanning = false;
269
+ postedLoading = false;
270
+ total = 0;
271
+ _j.label = 5;
272
+ case 5:
273
+ if (!(retryAttempts > 0 && curCellIndex != null)) return [3 /*break*/, 13];
274
+ if (!(retryDelay > 0)) return [3 /*break*/, 7];
275
+ return [4 /*yield*/, delay(retryDelay)];
276
+ case 6:
277
+ _j.sent();
278
+ _j.label = 7;
279
+ case 7:
280
+ if (this.getterLoopId != loopId) {
281
+ return [3 /*break*/, 13];
282
+ }
283
+ if (!postedScanning) {
284
+ this.postStatus({ msg: EStatus.Scanning, revoking: false });
285
+ postedScanning = true;
286
+ }
287
+ curCell = cells[curCellIndex];
288
+ if (curCell.IsFetched()) {
289
+ curCell.Fetching = false;
290
+ curCellIndex += 1;
291
+ if (cells[curCellIndex]) {
292
+ cells[curCellIndex].Fetching = true;
293
+ }
294
+ else {
295
+ curCellIndex = null;
296
+ }
297
+ (_b = this.onScanUpdate) === null || _b === void 0 ? void 0 : _b.Trigger(cells);
298
+ return [3 /*break*/, 5];
299
+ }
300
+ _j.label = 8;
301
+ case 8:
302
+ _j.trys.push([8, 10, , 11]);
303
+ return [4 /*yield*/, bruce_models_1.Entity.GetList({
304
+ api: this.api,
305
+ filter: {
306
+ pageSize: PAGE_SIZE,
307
+ pageIndex: curCell.FetchPageIndex,
308
+ entityTypeId: this.typeId,
309
+ layerIds: this.tagIds,
310
+ // Any tag specified will be allowed.
311
+ layerIdsOperator: "in",
312
+ bounds: curCell.GetBounds(),
313
+ sortOrder: bruce_models_1.Api.ESortOrder.Asc,
314
+ entityTypeConditions: this.attrFilter
315
+ },
316
+ viaCdn: this.viaCdn,
317
+ req: {
318
+ noCache: true
319
+ }
320
+ })];
321
+ case 9:
322
+ entities = (_j.sent()).entities;
323
+ integrity = this.getIntegrityId();
324
+ if (loopIntegrity == integrity && entities) {
325
+ (_c = this.onUpdate) === null || _c === void 0 ? void 0 : _c.Trigger(entities);
326
+ }
327
+ if (this.getterLoopId != loopId) {
328
+ return [3 /*break*/, 13];
329
+ }
330
+ if (entities.length) {
331
+ total += entities.length;
332
+ }
333
+ if (!postedLoading) {
334
+ this.postStatus({ msg: EStatus.Loading, revoking: false });
335
+ postedLoading = true;
336
+ }
337
+ // Only mark as fetched when ALL pages are done.
338
+ // Known issue where external sources may return less than page size.
339
+ // Right now we're making it as fetched as we're siding with the majority use-case.
340
+ if (entities.length <= 0 || entities.length < PAGE_SIZE) {
341
+ curCell.Fetched = true;
342
+ curCell.Fetching = false;
343
+ (_d = this.onScanUpdate) === null || _d === void 0 ? void 0 : _d.Trigger(cells);
344
+ return [3 /*break*/, 5];
345
+ }
346
+ // Checking to make sure it's not just the same batch over and over again.
347
+ if (entities.length > 0) {
348
+ first = (_f = (_e = entities[0]) === null || _e === void 0 ? void 0 : _e.Bruce) === null || _f === void 0 ? void 0 : _f.ID;
349
+ last = (_h = (_g = entities[entities.length - 1]) === null || _g === void 0 ? void 0 : _g.Bruce) === null || _h === void 0 ? void 0 : _h.ID;
350
+ if (prevFirstId == first && prevLastId == last) {
351
+ prevTicks += 1;
352
+ if (prevTicks > 3) {
353
+ return [3 /*break*/, 13];
354
+ }
355
+ }
356
+ else {
357
+ prevFirstId = first;
358
+ prevLastId = last;
359
+ prevTicks = 0;
360
+ }
361
+ }
362
+ curCell.FetchPageIndex++;
363
+ // Request passed so let's assume it was server hiccup and refresh counts.
364
+ retryAttempts = MAX_RETRY_ATTEMPTS;
365
+ retryDelay = 0;
366
+ return [3 /*break*/, 11];
367
+ case 10:
368
+ e_1 = _j.sent();
369
+ console.error(e_1);
370
+ // Request failed so let's add a delay and try again soon.
371
+ retryDelay += RETRY_DELAY_INCREMENT;
372
+ retryAttempts -= 1;
373
+ return [3 /*break*/, 11];
374
+ case 11: return [4 /*yield*/, delay(REQUEST_PAGE_DELAY)];
375
+ case 12:
376
+ _j.sent();
377
+ return [3 /*break*/, 5];
378
+ case 13:
379
+ if (postedLoading) {
380
+ this.postStatus({ msg: EStatus.Loading, revoking: true });
381
+ }
382
+ if (postedScanning) {
383
+ this.postStatus({ msg: EStatus.Scanning, revoking: true });
384
+ }
385
+ return [2 /*return*/];
386
+ }
387
+ });
388
+ }); });
389
+ };
390
+ return Getter;
391
+ }());
392
+ EntityFilterGetter.Getter = Getter;
393
+ })(EntityFilterGetter = exports.EntityFilterGetter || (exports.EntityFilterGetter = {}));
394
+ //# sourceMappingURL=entity-filter-getter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-filter-getter.js","sourceRoot":"","sources":["../../../../src/rendering/getters/entity-filter-getter.ts"],"names":[],"mappings":"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"}