bruce-cesium 2.2.6 → 2.2.7
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-cesium.es5.js +3289 -107
- package/dist/bruce-cesium.es5.js.map +1 -1
- package/dist/bruce-cesium.umd.js +3288 -104
- package/dist/bruce-cesium.umd.js.map +1 -1
- package/dist/lib/bruce-cesium.js +3 -1
- package/dist/lib/bruce-cesium.js.map +1 -1
- package/dist/lib/rendering/view-render-engine.js +24 -16
- package/dist/lib/rendering/view-render-engine.js.map +1 -1
- package/dist/lib/rendering/visuals-register.js +5 -0
- package/dist/lib/rendering/visuals-register.js.map +1 -1
- package/dist/lib/utils/drawing-utils.js +86 -0
- package/dist/lib/utils/drawing-utils.js.map +1 -1
- package/dist/lib/utils/view-utils.js +37 -0
- package/dist/lib/utils/view-utils.js.map +1 -1
- package/dist/lib/viewer/viewer-utils.js +71 -1
- package/dist/lib/viewer/viewer-utils.js.map +1 -1
- package/dist/lib/widgets/common/draw-3d-polygon.js +466 -0
- package/dist/lib/widgets/common/draw-3d-polygon.js.map +1 -0
- package/dist/lib/widgets/common/draw-3d-polyline.js +405 -0
- package/dist/lib/widgets/common/draw-3d-polyline.js.map +1 -0
- package/dist/lib/widgets/common/measure-creator.js +418 -0
- package/dist/lib/widgets/common/measure-creator.js.map +1 -0
- package/dist/lib/widgets/widget-bookmarks.js +346 -0
- package/dist/lib/widgets/widget-bookmarks.js.map +1 -0
- package/dist/lib/widgets/widget-branding.js +176 -0
- package/dist/lib/widgets/widget-branding.js.map +1 -0
- package/dist/lib/widgets/widget-cursorbar.js +291 -0
- package/dist/lib/widgets/widget-cursorbar.js.map +1 -0
- package/dist/lib/widgets/widget-info-view.js +476 -0
- package/dist/lib/widgets/widget-info-view.js.map +1 -0
- package/dist/lib/widgets/widget-nav-compass.js +250 -0
- package/dist/lib/widgets/widget-nav-compass.js.map +1 -0
- package/dist/lib/widgets/widget-searchbar.js +409 -0
- package/dist/lib/widgets/widget-searchbar.js.map +1 -0
- package/dist/lib/widgets/widget.js +50 -0
- package/dist/lib/widgets/widget.js.map +1 -0
- package/dist/types/bruce-cesium.d.ts +3 -1
- package/dist/types/rendering/visuals-register.d.ts +2 -1
- package/dist/types/utils/drawing-utils.d.ts +13 -0
- package/dist/types/utils/view-utils.d.ts +7 -0
- package/dist/types/viewer/viewer-utils.d.ts +21 -0
- package/dist/types/widgets/common/draw-3d-polygon.d.ts +62 -0
- package/dist/types/widgets/common/draw-3d-polyline.d.ts +47 -0
- package/dist/types/widgets/common/measure-creator.d.ts +60 -0
- package/dist/types/widgets/widget-bookmarks.d.ts +39 -0
- package/dist/types/widgets/widget-branding.d.ts +14 -0
- package/dist/types/widgets/widget-cursorbar.d.ts +27 -0
- package/dist/types/widgets/widget-info-view.d.ts +21 -0
- package/dist/types/widgets/widget-nav-compass.d.ts +27 -0
- package/dist/types/widgets/widget-searchbar.d.ts +17 -0
- package/dist/types/widgets/widget.d.ts +26 -0
- package/package.json +2 -2
|
@@ -0,0 +1,476 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
18
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
19
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
20
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
21
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
22
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
23
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
27
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
28
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
29
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
30
|
+
function step(op) {
|
|
31
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
32
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
33
|
+
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;
|
|
34
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
35
|
+
switch (op[0]) {
|
|
36
|
+
case 0: case 1: t = op; break;
|
|
37
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
38
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
39
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
40
|
+
default:
|
|
41
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
42
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
43
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
44
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
45
|
+
if (t[2]) _.ops.pop();
|
|
46
|
+
_.trys.pop(); continue;
|
|
47
|
+
}
|
|
48
|
+
op = body.call(thisArg, _);
|
|
49
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
50
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
exports.WidgetInfoView = void 0;
|
|
55
|
+
var bruce_models_1 = require("bruce-models");
|
|
56
|
+
var widget_1 = require("./widget");
|
|
57
|
+
var entity_utils_1 = require("src/utils/entity-utils");
|
|
58
|
+
var Cesium = require("cesium");
|
|
59
|
+
var drawing_utils_1 = require("src/utils/drawing-utils");
|
|
60
|
+
var EMode;
|
|
61
|
+
(function (EMode) {
|
|
62
|
+
EMode["ShowImportant"] = "IMP";
|
|
63
|
+
EMode["ShowAll"] = "ALL";
|
|
64
|
+
EMode["ShowAvailable"] = "AV";
|
|
65
|
+
EMode["ShowImportantAndAvailable"] = "IMP_AV";
|
|
66
|
+
})(EMode || (EMode = {}));
|
|
67
|
+
var OPEN_STORAGE_KEY = "EntityViewSummary_open_";
|
|
68
|
+
var EXCLUDED_PROPERTIES = ["Bruce", "geometry", "position", "boundaries"];
|
|
69
|
+
function isAttributeImportant(mode, entity, path, field) {
|
|
70
|
+
if (path.length && EXCLUDED_PROPERTIES.includes(path[0])) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
if (mode === EMode.ShowAvailable || mode === EMode.ShowImportantAndAvailable) {
|
|
74
|
+
var value = bruce_models_1.Entity.GetValue({
|
|
75
|
+
entity: entity,
|
|
76
|
+
path: path
|
|
77
|
+
});
|
|
78
|
+
var hasValue = value || value == 0;
|
|
79
|
+
if (mode === EMode.ShowAvailable) {
|
|
80
|
+
return hasValue;
|
|
81
|
+
}
|
|
82
|
+
if (!hasValue) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (field.IsImportant || mode === EMode.ShowAll) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
if (field.Type === bruce_models_1.EntityAttribute.EType.Structure) {
|
|
90
|
+
return field.Structure.some(function (field) { return isAttributeImportant(mode, entity, path, field); });
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
function digAttributes(mode, entity, structure, path) {
|
|
95
|
+
var attributes = [];
|
|
96
|
+
for (var i = 0; i < structure.length; i++) {
|
|
97
|
+
var field = structure[i];
|
|
98
|
+
var fieldPath = [].concat(path);
|
|
99
|
+
fieldPath.push(field.Key);
|
|
100
|
+
if (!isAttributeImportant(mode, entity, fieldPath, field)) {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (field.Type === bruce_models_1.EntityAttribute.EType.Structure) {
|
|
104
|
+
var dug = digAttributes(mode, entity, field.Structure, fieldPath);
|
|
105
|
+
attributes = attributes.concat(dug);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
attributes.push(fieldPath);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return attributes;
|
|
112
|
+
}
|
|
113
|
+
function gatherAttributes(mode, entity, type) {
|
|
114
|
+
var _a, _b;
|
|
115
|
+
var schema = (_b = (_a = type.DataSchema) === null || _a === void 0 ? void 0 : _a.Structure) !== null && _b !== void 0 ? _b : [];
|
|
116
|
+
schema = [].concat(schema);
|
|
117
|
+
Object.keys(entity).forEach(function (key) {
|
|
118
|
+
if (!schema.find(function (field) { return (field === null || field === void 0 ? void 0 : field.Key) == key; })) {
|
|
119
|
+
schema.push({
|
|
120
|
+
Key: key,
|
|
121
|
+
Name: key,
|
|
122
|
+
Type: bruce_models_1.EntityAttribute.EType.String,
|
|
123
|
+
IsImportant: false,
|
|
124
|
+
IsIndexed: false,
|
|
125
|
+
Structure: []
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
return digAttributes(mode, entity, schema, []);
|
|
130
|
+
}
|
|
131
|
+
function digTypeItem(path, structure) {
|
|
132
|
+
var key = path[0];
|
|
133
|
+
var field = structure.find(function (field) { return field.Key === key; });
|
|
134
|
+
if (!field) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
if (path.length === 1) {
|
|
138
|
+
return field;
|
|
139
|
+
}
|
|
140
|
+
if (field.Type === bruce_models_1.EntityAttribute.EType.Structure) {
|
|
141
|
+
return digTypeItem(path.slice(1), field.Structure);
|
|
142
|
+
}
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
function groupAttributes(paths, attributes) {
|
|
146
|
+
var groups = [];
|
|
147
|
+
var _loop_1 = function (i) {
|
|
148
|
+
var path = paths[i];
|
|
149
|
+
var groupPath = path.slice(0, path.length - 1);
|
|
150
|
+
var groupAttr = digTypeItem(groupPath, attributes);
|
|
151
|
+
if (!groupAttr) {
|
|
152
|
+
groupAttr = {
|
|
153
|
+
Key: "ROOT"
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
var group = groups.find(function (group) { return group.group.Key === groupAttr.Key; });
|
|
157
|
+
if (group) {
|
|
158
|
+
group.attributes.push(path);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
var isOpen = localStorage.getItem(OPEN_STORAGE_KEY + groupAttr.Key);
|
|
162
|
+
if (isOpen == null) {
|
|
163
|
+
var DEFAULT_CLOSED = [
|
|
164
|
+
"Bruce",
|
|
165
|
+
"location",
|
|
166
|
+
"boundaries",
|
|
167
|
+
"transform"
|
|
168
|
+
];
|
|
169
|
+
isOpen = path.length ? DEFAULT_CLOSED.includes(path[0]) ? "false" : "true" : "true";
|
|
170
|
+
}
|
|
171
|
+
groups.push({
|
|
172
|
+
group: groupAttr,
|
|
173
|
+
attributes: [path],
|
|
174
|
+
open: isOpen != "false"
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
for (var i = 0; i < paths.length; i++) {
|
|
179
|
+
_loop_1(i);
|
|
180
|
+
}
|
|
181
|
+
return groups;
|
|
182
|
+
}
|
|
183
|
+
var WidgetInfoView = /** @class */ (function (_super) {
|
|
184
|
+
__extends(WidgetInfoView, _super);
|
|
185
|
+
function WidgetInfoView(params) {
|
|
186
|
+
var _this = _super.call(this, params) || this;
|
|
187
|
+
_this.STYLESHEET_ID = "nextspace-info-view-stylesheet";
|
|
188
|
+
_this._generateStyles();
|
|
189
|
+
_this._generateElement();
|
|
190
|
+
_this._updateRemoval = _this._manager.VisualsRegister.OnUpdate.Subscribe(function (data) {
|
|
191
|
+
if (data.type == "UPDATE" || data.type == "DESELECT_ALL") {
|
|
192
|
+
_this._updateInfoView();
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
return _this;
|
|
196
|
+
}
|
|
197
|
+
WidgetInfoView.prototype.Dispose = function () {
|
|
198
|
+
_super.prototype.Dispose.call(this);
|
|
199
|
+
this._updateRemoval();
|
|
200
|
+
};
|
|
201
|
+
WidgetInfoView.prototype._generateStyles = function () {
|
|
202
|
+
if (document.getElementById(this.STYLESHEET_ID)) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
var style = document.createElement("style");
|
|
206
|
+
style.id = this.STYLESHEET_ID;
|
|
207
|
+
style.innerHTML = "\n .NextspaceInfoView {\n width: 430px;\n right: 10px;\n top: 66px;\n height: max-content;\n max-height: calc(100% - 320px);\n min-height: 50px;\n align-items: center;\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n background: rgba(33,39,42,.8);\n border-radius: 9px;\n box-shadow: 0 0 1px rgba(18,22,25,.36),0 18px 36px -4px rgba(18,22,25,.36);\n display: flex;\n flex-direction: column;\n flex-shrink: 1;\n opacity: 0;\n position: absolute;\n z-index: 1;\n transition: opacity .3s ease,-webkit-transform .1s;\n transition: opacity .3s ease,transform .1s;\n transition: opacity .3s ease,transform .1s,-webkit-transform .1s;\n font-family: Arial;\n }\n\n .NextspaceInfoView * {\n box-sizing: border-box;\n }\n\n .NextspaceInfoViewTopLeftButtons {\n left: 12px;\n top: 5px;\n align-items: center;\n display: flex;\n position: absolute;\n z-index: 1;\n }\n\n .NextspaceInfoViewTopRightButtons {\n right: 12px;\n top: 5px;\n align-items: center;\n display: flex;\n position: absolute;\n z-index: 1;\n }\n\n .NextspaceInfoViewIconButton {\n align-items: center;\n display: flex;\n flex-grow: 0;\n flex-shrink: 0;\n height: 30px;\n justify-content: center;\n margin-right: 8px;\n min-height: 0;\n min-width: 0;\n position: relative;\n width: 30px;\n font-size: 1.5rem;\n padding: 8px;\n border-radius: 50%;\n overflow: visible;\n color: rgba(0, 0, 0, 0.54);\n transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n appearance: none;\n text-decoration: none;\n text-align: center;\n background-color: transparent;\n outline: 0px;\n border: 0px none;\n margin: 0px;\n margin-right: 0px;\n cursor: pointer;\n user-select: none;\n -moz-box-pack: center;\n -moz-box-align: center;\n }\n\n .NextspaceInfoViewIconButton:hover {\n opacity: .9;\n transition: opacity .3s ease;\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n .NextspaceInfoViewIconButton svg {\n max-height: 24px;\n max-width: 24px;\n flex-shrink: 0;\n }\n\n .NextspaceInfoViewContent {\n align-items: flex-start;\n color: #fff;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n flex-shrink: 1;\n margin-top: 12px;\n overflow: auto;\n padding: 25px;\n width: 100%;\n }\n\n .NextspaceInfoViewScrollBox {\n flex-grow: 1;\n flex-shrink: 1;\n overflow-y: auto;\n width: 100%;\n }\n\n .NextspaceInfoViewName {\n font-family: Arial;\n font-style: normal;\n font-weight: 400;\n text-align: center;\n width: 100%;\n color: #40c4ff;\n font-size: 13px;\n letter-spacing: .01em;\n line-height: 16px;\n margin-bottom: 5px;\n }\n\n .NextspaceInfoViewType {\n font-family: Arial;\n font-style: normal;\n font-weight: 400;\n text-align: center;\n width: 100%;\n color: #c1c7cd;\n font-size: 10px;\n letter-spacing: .05em;\n line-height: 10px;\n margin-bottom: 12px;\n -webkit-user-select: none;\n user-select: none;\n }\n\n .NextspaceInfoViewTitle {\n color: #f2f4f8;\n font-family: Arial;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: 20px;\n margin-right: auto;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n user-select: none;\n margin-top: 20px;\n margin-bottom: 10px;\n }\n\n .NextspaceInfoViewSummary {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n flex-shrink: 1;\n }\n\n .NextspaceAttributesGroup {\n display: flex;\n flex-direction: column;\n }\n\n .NextspaceAttributesGroup[is-opened=\"false\"] .NextspaceAttribute {\n display: none;\n }\n\n .NextspaceAttributesGroupToggle {\n align-items: center;\n background-color: #343a3f;\n border: 1px solid #343a3f;\n border-radius: 5px;\n cursor: pointer;\n display: flex;\n height: 35px;\n margin-bottom: 3px;\n overflow: hidden;\n padding-left: 12px;\n text-overflow: ellipsis;\n white-space: nowrap;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n user-select: none;\n font-size: 12px;\n }\n\n .NextspaceAttributesGroupToggleIcon {\n align-items: center;\n display: flex;\n height: 20px;\n justify-content: center;\n margin-left: auto;\n margin-right: 8px;\n width: 20px;\n cursor: pointer;\n white-space: nowrap;\n }\n\n .NextspaceAttributesGroup[is-opened=\"false\"] .NextspaceAttributesGroupToggleIconOpened {\n display: none;\n }\n\n .NextspaceAttributesGroup[is-opened=\"true\"] .NextspaceAttributesGroupToggleIconOpened {\n display: block;\n }\n\n .NextspaceAttributesGroup[is-opened=\"false\"] .NextspaceAttributesGroupToggleIconClosed {\n display: block;\n }\n\n .NextspaceAttributesGroup[is-opened=\"true\"] .NextspaceAttributesGroupToggleIconClosed {\n display: none;\n }\n\n .NextspaceAttribute {\n align-items: center;\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n }\n\n .NextspaceAttributeInput {\n align-items: center;\n background-color: #121619;\n border: 1px solid #434343;\n border-radius: 5px;\n display: flex;\n height: 35px;\n margin-bottom: 3px;\n width: 100%;\n }\n\n .NextspaceAttributeInputLabel {\n border-right: 1px solid #434343;\n flex-grow: .8;\n flex-shrink: 1;\n margin-right: 8px;\n overflow: hidden;\n padding-left: 8px;\n text-overflow: ellipsis;\n white-space: nowrap;\n width: 90px;\n font-size: 12px;\n }\n\n .NextspaceAttributeInputValue {\n background-color: transparent;\n border: 1px solid transparent;\n color: #fff;\n flex-grow: 1;\n flex-shrink: 1;\n height: 100%;\n padding-left: 2px;\n text-align: left;\n width: 120px;\n cursor: default;\n opacity: .6;\n outline: none;\n padding: .5rem .75rem;\n border-radius: .375rem;\n font-size: 12px;\n }\n\n .NextspaceDefaultImageContainer {\n align-items: center;\n border-radius: 5px;\n display: flex;\n flex-direction: column;\n flex-grow: 0;\n flex-shrink: 1;\n height: 170px;\n overflow: hidden;\n position: relative;\n width: 100%;\n background-color: rgba(33, 39, 42, 0.8);\n margin-bottom: 20px;\n }\n\n .NextspaceDefaultImage {\n background-position: 50%;\n background-repeat: no-repeat;\n background-size: cover;\n height: 100%;\n width: 100%;\n user-select: none;\n }\n ";
|
|
208
|
+
document.head.appendChild(style);
|
|
209
|
+
};
|
|
210
|
+
WidgetInfoView.prototype._generateElement = function () {
|
|
211
|
+
var _this = this;
|
|
212
|
+
var element = document.createElement("div");
|
|
213
|
+
element.className = "NextspaceInfoView";
|
|
214
|
+
element.style.display = "none";
|
|
215
|
+
var topLeftButtons = document.createElement("div");
|
|
216
|
+
topLeftButtons.className = "NextspaceInfoViewTopLeftButtons";
|
|
217
|
+
topLeftButtons.innerHTML = "\n <button title=\"Fly to entity\" class=\"NextspaceInfoViewIconButton\">\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M20.5926 2.12617L2.49072 12.5694C1.78383 12.9756 1.87366 13.9597 2.57664 14.2566L6.72815 15.9984L17.9486 6.10975C18.1634 5.91838 18.468 6.21129 18.2844 6.4339L8.87616 17.8964V21.0403C8.87616 21.962 9.98921 22.3252 10.536 21.6574L13.016 18.6385L17.8822 20.6771C18.4367 20.9115 19.0694 20.5639 19.171 19.9663L21.9829 3.09473C22.1157 2.30583 21.2682 1.73563 20.5926 2.12617Z\" fill=\"white\"></path></svg>\n </button>\n ";
|
|
218
|
+
element.appendChild(topLeftButtons);
|
|
219
|
+
var topRightButtons = document.createElement("div");
|
|
220
|
+
topRightButtons.className = "NextspaceInfoViewTopRightButtons";
|
|
221
|
+
topRightButtons.innerHTML = "\n <button title=\"Close\" class=\"NextspaceInfoViewIconButton\">\n <svg class=\"\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M18.3002 5.70973C17.9102 5.31973 17.2802 5.31973 16.8902 5.70973L12.0002 10.5897L7.11022 5.69973C6.72022 5.30973 6.09021 5.30973 5.70021 5.69973C5.31021 6.08973 5.31021 6.71973 5.70021 7.10973L10.5902 11.9997L5.70021 16.8897C5.31021 17.2797 5.31021 17.9097 5.70021 18.2997C6.09021 18.6897 6.72022 18.6897 7.11022 18.2997L12.0002 13.4097L16.8902 18.2997C17.2802 18.6897 17.9102 18.6897 18.3002 18.2997C18.6902 17.9097 18.6902 17.2797 18.3002 16.8897L13.4102 11.9997L18.3002 7.10973C18.6802 6.72973 18.6802 6.08973 18.3002 5.70973Z\" fill=\"white\"></path></svg>\n </button>\n ";
|
|
222
|
+
element.appendChild(topRightButtons);
|
|
223
|
+
var flyToButt = topLeftButtons.querySelector("button");
|
|
224
|
+
flyToButt.addEventListener("click", function () {
|
|
225
|
+
_this._clickFlyTo();
|
|
226
|
+
});
|
|
227
|
+
this._flyTo = flyToButt;
|
|
228
|
+
var closeButt = topRightButtons.querySelector("button");
|
|
229
|
+
closeButt.addEventListener("click", function () {
|
|
230
|
+
_this._manager.VisualsRegister.ClearSelected();
|
|
231
|
+
});
|
|
232
|
+
var content = document.createElement("div");
|
|
233
|
+
content.className = "NextspaceInfoViewContent";
|
|
234
|
+
element.appendChild(content);
|
|
235
|
+
var scrollBox = document.createElement("div");
|
|
236
|
+
scrollBox.className = "NextspaceInfoViewScrollBox";
|
|
237
|
+
content.appendChild(scrollBox);
|
|
238
|
+
var name = document.createElement("div");
|
|
239
|
+
name.className = "NextspaceInfoViewName";
|
|
240
|
+
scrollBox.appendChild(name);
|
|
241
|
+
this._name = name;
|
|
242
|
+
var type = document.createElement("div");
|
|
243
|
+
type.className = "NextspaceInfoViewType";
|
|
244
|
+
scrollBox.appendChild(type);
|
|
245
|
+
this._type = type;
|
|
246
|
+
var imageContainer = document.createElement("div");
|
|
247
|
+
imageContainer.className = "NextspaceDefaultImageContainer";
|
|
248
|
+
var image = document.createElement("div");
|
|
249
|
+
image.classList.add("NextspaceDefaultImage");
|
|
250
|
+
imageContainer.appendChild(image);
|
|
251
|
+
scrollBox.appendChild(imageContainer);
|
|
252
|
+
this._imageContainer = imageContainer;
|
|
253
|
+
this._image = image;
|
|
254
|
+
var title = document.createElement("div");
|
|
255
|
+
title.className = "NextspaceInfoViewTitle";
|
|
256
|
+
title.innerText = "Details";
|
|
257
|
+
scrollBox.appendChild(title);
|
|
258
|
+
this._title = title;
|
|
259
|
+
var summary = document.createElement("div");
|
|
260
|
+
summary.className = "NextspaceInfoViewSummary";
|
|
261
|
+
scrollBox.appendChild(summary);
|
|
262
|
+
this._summary = summary;
|
|
263
|
+
this.Container.appendChild(element);
|
|
264
|
+
this._element = element;
|
|
265
|
+
this._updateInfoView();
|
|
266
|
+
};
|
|
267
|
+
WidgetInfoView.prototype._clickFlyTo = function () {
|
|
268
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
269
|
+
var entityId, pos3d;
|
|
270
|
+
return __generator(this, function (_a) {
|
|
271
|
+
switch (_a.label) {
|
|
272
|
+
case 0:
|
|
273
|
+
entityId = this._lastSelectedId;
|
|
274
|
+
if (!entityId) {
|
|
275
|
+
return [2 /*return*/];
|
|
276
|
+
}
|
|
277
|
+
return [4 /*yield*/, entity_utils_1.EntityUtils.GetPosAsync({
|
|
278
|
+
api: this._apiGetters.GetBruceApi(),
|
|
279
|
+
entityId: entityId,
|
|
280
|
+
viewer: this._viewer,
|
|
281
|
+
returnHeightRef: Cesium.HeightReference.NONE,
|
|
282
|
+
recordHeightRef: Cesium.HeightReference.NONE,
|
|
283
|
+
visualRegister: this._manager.VisualsRegister
|
|
284
|
+
})];
|
|
285
|
+
case 1:
|
|
286
|
+
pos3d = _a.sent();
|
|
287
|
+
if (!(pos3d === null || pos3d === void 0 ? void 0 : pos3d.x)) return [3 /*break*/, 3];
|
|
288
|
+
return [4 /*yield*/, drawing_utils_1.DrawingUtils.RaisePos3d(this._viewer, pos3d, 15)];
|
|
289
|
+
case 2:
|
|
290
|
+
pos3d = _a.sent();
|
|
291
|
+
this._viewer.camera.flyTo({
|
|
292
|
+
destination: pos3d,
|
|
293
|
+
duration: 1,
|
|
294
|
+
orientation: {
|
|
295
|
+
heading: 0,
|
|
296
|
+
pitch: -Cesium.Math.PI_OVER_TWO,
|
|
297
|
+
roll: 0
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
return [3 /*break*/, 4];
|
|
301
|
+
case 3:
|
|
302
|
+
alert("Could not get position of entity.");
|
|
303
|
+
_a.label = 4;
|
|
304
|
+
case 4: return [2 /*return*/];
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
};
|
|
309
|
+
WidgetInfoView.prototype._updateInfoView = function () {
|
|
310
|
+
var _a, _b, _c;
|
|
311
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
312
|
+
var selectedIds, firstId, api, entity, entityType, name_1, data, items, images, defaultImage, url, attributes, groups, _i, groups_1, group, e_1;
|
|
313
|
+
return __generator(this, function (_d) {
|
|
314
|
+
switch (_d.label) {
|
|
315
|
+
case 0:
|
|
316
|
+
selectedIds = this._manager.VisualsRegister.GetSelected();
|
|
317
|
+
if (selectedIds.length <= 0) {
|
|
318
|
+
this._element.style.display = "none";
|
|
319
|
+
this._element.style.opacity = "0";
|
|
320
|
+
return [2 /*return*/];
|
|
321
|
+
}
|
|
322
|
+
this._element.style.display = "flex";
|
|
323
|
+
this._element.style.opacity = "1";
|
|
324
|
+
firstId = selectedIds[0];
|
|
325
|
+
if (this._lastSelectedId == firstId) {
|
|
326
|
+
return [2 /*return*/];
|
|
327
|
+
}
|
|
328
|
+
this._lastSelectedId = firstId;
|
|
329
|
+
_d.label = 1;
|
|
330
|
+
case 1:
|
|
331
|
+
_d.trys.push([1, 5, , 6]);
|
|
332
|
+
this._title.style.display = "none";
|
|
333
|
+
this._flyTo.style.display = "none";
|
|
334
|
+
this._name.innerText = "Loading...";
|
|
335
|
+
this._type.innerText = "";
|
|
336
|
+
this._summary.innerHTML = "";
|
|
337
|
+
this._imageContainer.style.display = "none";
|
|
338
|
+
api = this._apiGetters.GetBruceApi();
|
|
339
|
+
return [4 /*yield*/, bruce_models_1.Entity.Get({
|
|
340
|
+
entityId: firstId,
|
|
341
|
+
api: api
|
|
342
|
+
})];
|
|
343
|
+
case 2:
|
|
344
|
+
entity = (_d.sent()).entity;
|
|
345
|
+
if (!entity) {
|
|
346
|
+
throw (new Error("Could not get entity."));
|
|
347
|
+
}
|
|
348
|
+
return [4 /*yield*/, bruce_models_1.EntityType.Get({
|
|
349
|
+
entityTypeId: (_a = entity.Bruce) === null || _a === void 0 ? void 0 : _a["EntityType.ID"],
|
|
350
|
+
api: api
|
|
351
|
+
})];
|
|
352
|
+
case 3:
|
|
353
|
+
entityType = (_d.sent()).entityType;
|
|
354
|
+
name_1 = bruce_models_1.Entity.CalculateName({
|
|
355
|
+
entity: entity,
|
|
356
|
+
type: entityType,
|
|
357
|
+
defaultToId: false
|
|
358
|
+
});
|
|
359
|
+
if (!name_1) {
|
|
360
|
+
name_1 = "Unnamed entity";
|
|
361
|
+
}
|
|
362
|
+
this._title.style.display = "block";
|
|
363
|
+
this._flyTo.style.display = "flex";
|
|
364
|
+
this._name.innerText = name_1;
|
|
365
|
+
this._type.innerText = (entityType === null || entityType === void 0 ? void 0 : entityType.Name) ? entityType.Name : "Unknown type";
|
|
366
|
+
return [4 /*yield*/, bruce_models_1.EntityAttachment.GetListByEntityId({
|
|
367
|
+
entityId: firstId,
|
|
368
|
+
api: api
|
|
369
|
+
})];
|
|
370
|
+
case 4:
|
|
371
|
+
data = _d.sent();
|
|
372
|
+
items = data.attachments;
|
|
373
|
+
images = [].concat(items).sort(function (a, b) { return b.DisplayOrder - a.DisplayOrder; }).filter(function (x) { return x["EntityAttachmentType.ID"] == bruce_models_1.EntityAttachmentType.EType.Photo; }).reverse();
|
|
374
|
+
defaultImage = images.length ? images[0] : null;
|
|
375
|
+
if (defaultImage) {
|
|
376
|
+
this._imageContainer.style.display = "flex";
|
|
377
|
+
url = bruce_models_1.ClientFile.GetUrl({
|
|
378
|
+
fileId: defaultImage["ClientFile.ID"],
|
|
379
|
+
api: api
|
|
380
|
+
});
|
|
381
|
+
this._image.style.backgroundImage = "url(".concat(url, ")");
|
|
382
|
+
}
|
|
383
|
+
attributes = gatherAttributes(EMode.ShowAll, entity, entityType);
|
|
384
|
+
groups = groupAttributes(attributes, (_c = (_b = entityType.DataSchema) === null || _b === void 0 ? void 0 : _b.Structure) !== null && _c !== void 0 ? _c : []);
|
|
385
|
+
for (_i = 0, groups_1 = groups; _i < groups_1.length; _i++) {
|
|
386
|
+
group = groups_1[_i];
|
|
387
|
+
this._generateAttrGroup(entityType, entity, group);
|
|
388
|
+
}
|
|
389
|
+
return [3 /*break*/, 6];
|
|
390
|
+
case 5:
|
|
391
|
+
e_1 = _d.sent();
|
|
392
|
+
console.error(e_1);
|
|
393
|
+
this._name.innerText = "";
|
|
394
|
+
this._summary.innerHTML = "<p>Could not read entity information</p>";
|
|
395
|
+
return [3 /*break*/, 6];
|
|
396
|
+
case 6: return [2 /*return*/];
|
|
397
|
+
}
|
|
398
|
+
});
|
|
399
|
+
});
|
|
400
|
+
};
|
|
401
|
+
WidgetInfoView.prototype._generateAttrGroup = function (type, entity, group) {
|
|
402
|
+
var groupDiv = document.createElement("div");
|
|
403
|
+
groupDiv.className = "NextspaceAttributesGroup";
|
|
404
|
+
groupDiv.setAttribute("is-opened", group.open ? "true" : "false");
|
|
405
|
+
if (group.group.Key != "ROOT") {
|
|
406
|
+
var toggle = document.createElement("div");
|
|
407
|
+
toggle.className = "NextspaceAttributesGroupToggle";
|
|
408
|
+
toggle.innerHTML = "\n ".concat(group.group.Key, "\n <div class=\"NextspaceAttributesGroupToggleIcon\">\n <svg class=\"NextspaceAttributesGroupToggleIconOpened\" width=\"16\" height=\"9\" viewBox=\"0 0 16 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15 1L8 8L1 1\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>\n <svg class=\"NextspaceAttributesGroupToggleIconClosed\" width=\"10\" height=\"17\" viewBox=\"0 0 10 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.5 15.5L1.5 8.5L8.5 1.5\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>\n </div>\n ");
|
|
409
|
+
toggle.addEventListener("click", function () {
|
|
410
|
+
var isOpened = groupDiv.getAttribute("is-opened") == "true";
|
|
411
|
+
groupDiv.setAttribute("is-opened", isOpened ? "false" : "true");
|
|
412
|
+
localStorage.setItem("".concat(OPEN_STORAGE_KEY).concat(group.group.Key), isOpened ? "false" : "true");
|
|
413
|
+
});
|
|
414
|
+
groupDiv.appendChild(toggle);
|
|
415
|
+
}
|
|
416
|
+
for (var _i = 0, _a = group.attributes; _i < _a.length; _i++) {
|
|
417
|
+
var attr = _a[_i];
|
|
418
|
+
var attrDiv = this._generateAttr(groupDiv, type, entity, attr);
|
|
419
|
+
if (group.group.Key != "ROOT") {
|
|
420
|
+
attrDiv.style.marginLeft = "12px";
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
this._summary.appendChild(groupDiv);
|
|
424
|
+
};
|
|
425
|
+
WidgetInfoView.prototype._generateAttr = function (container, type, entity, path) {
|
|
426
|
+
var _a, _b, _c;
|
|
427
|
+
var attrDiv = document.createElement("div");
|
|
428
|
+
attrDiv.className = "NextspaceAttribute";
|
|
429
|
+
var typeItem = digTypeItem(path, (_b = (_a = type.DataSchema) === null || _a === void 0 ? void 0 : _a.Structure) !== null && _b !== void 0 ? _b : []);
|
|
430
|
+
var attrType = (_c = typeItem === null || typeItem === void 0 ? void 0 : typeItem.Type) !== null && _c !== void 0 ? _c : bruce_models_1.EntityAttribute.EType.String;
|
|
431
|
+
var input = document.createElement("div");
|
|
432
|
+
input.className = "NextspaceAttributeInput";
|
|
433
|
+
attrDiv.appendChild(input);
|
|
434
|
+
var attrName = document.createElement("div");
|
|
435
|
+
attrName.className = "NextspaceAttributeInputLabel";
|
|
436
|
+
attrName.innerText = typeItem ? typeItem.Name ? typeItem.Name : typeItem.Key : path[path.length - 1];
|
|
437
|
+
input.appendChild(attrName);
|
|
438
|
+
var value = bruce_models_1.Entity.GetValue({
|
|
439
|
+
entity: entity,
|
|
440
|
+
path: path
|
|
441
|
+
});
|
|
442
|
+
var valueStr = "";
|
|
443
|
+
if (attrType == bruce_models_1.EntityAttribute.EType.Boolean) {
|
|
444
|
+
valueStr = value ? "Yes" : "No";
|
|
445
|
+
}
|
|
446
|
+
else if (attrType == bruce_models_1.EntityAttribute.EType.Integer || attrType == bruce_models_1.EntityAttribute.EType.Double) {
|
|
447
|
+
valueStr = +value;
|
|
448
|
+
if (isNaN(valueStr)) {
|
|
449
|
+
valueStr = 0;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
else if (attrType == bruce_models_1.EntityAttribute.EType.Structure) {
|
|
453
|
+
valueStr = "<Multiple values>";
|
|
454
|
+
}
|
|
455
|
+
else if (attrType == bruce_models_1.EntityAttribute.EType.Geometry) {
|
|
456
|
+
valueStr = "<Multiple values>";
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
if (value && typeof value == "object") {
|
|
460
|
+
valueStr = "<Multiple values>";
|
|
461
|
+
}
|
|
462
|
+
else {
|
|
463
|
+
valueStr = value ? String(value) : "<No value>";
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
var attrValue = document.createElement("input");
|
|
467
|
+
attrValue.className = "NextspaceAttributeInputValue";
|
|
468
|
+
attrValue.value = String(valueStr);
|
|
469
|
+
input.appendChild(attrValue);
|
|
470
|
+
container.appendChild(attrDiv);
|
|
471
|
+
return attrDiv;
|
|
472
|
+
};
|
|
473
|
+
return WidgetInfoView;
|
|
474
|
+
}(widget_1.Widget.AWidget));
|
|
475
|
+
exports.WidgetInfoView = WidgetInfoView;
|
|
476
|
+
//# sourceMappingURL=widget-info-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget-info-view.js","sourceRoot":"","sources":["../../../src/widgets/widget-info-view.ts"],"names":[],"mappings":"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"}
|