bruce-cesium 5.5.2 → 5.5.4
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 +344 -5
- package/dist/bruce-cesium.es5.js.map +1 -1
- package/dist/bruce-cesium.umd.js +343 -4
- package/dist/bruce-cesium.umd.js.map +1 -1
- package/dist/lib/bruce-cesium.js +1 -1
- package/dist/lib/rendering/render-managers/common/entity-label.js +6 -2
- package/dist/lib/rendering/render-managers/common/entity-label.js.map +1 -1
- package/dist/lib/rendering/tile-render-engine.js +21 -1
- package/dist/lib/rendering/tile-render-engine.js.map +1 -1
- package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-user.js +304 -0
- package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-user.js.map +1 -0
- package/dist/lib/widgets/widget-left-panel.js +18 -0
- package/dist/lib/widgets/widget-left-panel.js.map +1 -1
- package/dist/types/bruce-cesium.d.ts +1 -1
- package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab-user.d.ts +24 -0
- package/package.json +2 -2
package/dist/bruce-cesium.umd.js
CHANGED
|
@@ -9713,7 +9713,9 @@
|
|
|
9713
9713
|
lineEle.style.display = "none";
|
|
9714
9714
|
return;
|
|
9715
9715
|
}
|
|
9716
|
-
const
|
|
9716
|
+
const CESIUM = Cesium;
|
|
9717
|
+
const _3dTo2D = Cesium.SceneTransforms.hasOwnProperty("wgs84ToWindowCoordinates") ? CESIUM.SceneTransforms.wgs84ToWindowCoordinates : CESIUM.SceneTransforms.worldToWindowCoordinates;
|
|
9718
|
+
const lineStartPos2d = _3dTo2D(this.viewer.scene, this._pos3d);
|
|
9717
9719
|
// Invalid point.
|
|
9718
9720
|
if (isNaN(lineStartPos2d === null || lineStartPos2d === void 0 ? void 0 : lineStartPos2d.x)) {
|
|
9719
9721
|
ele.style.transform = "";
|
|
@@ -9767,7 +9769,9 @@
|
|
|
9767
9769
|
}
|
|
9768
9770
|
lineEndPoint.height += addHeight;
|
|
9769
9771
|
lineEndPos3d = Cesium.Cartographic.toCartesian(lineEndPoint);
|
|
9770
|
-
|
|
9772
|
+
const CESIUM = Cesium;
|
|
9773
|
+
const _3dTo2D = Cesium.SceneTransforms.hasOwnProperty("wgs84ToWindowCoordinates") ? CESIUM.SceneTransforms.wgs84ToWindowCoordinates : CESIUM.SceneTransforms.worldToWindowCoordinates;
|
|
9774
|
+
let lineEndPos2d = _3dTo2D(this.viewer.scene, lineEndPos3d);
|
|
9771
9775
|
// Invalid point.
|
|
9772
9776
|
if (isNaN(lineEndPos2d === null || lineEndPos2d === void 0 ? void 0 : lineEndPos2d.x)) {
|
|
9773
9777
|
ele.style.transform = "";
|
|
@@ -24021,8 +24025,28 @@
|
|
|
24021
24025
|
}
|
|
24022
24026
|
else if (tileset.type === BModels.Tileset.EType.ExternalTerrain) {
|
|
24023
24027
|
const settings = tileset.settings;
|
|
24024
|
-
url = settings.url;
|
|
24025
24028
|
vertexes = settings.requestVertexNormals == null ? true : settings.requestVertexNormals;
|
|
24029
|
+
if (!settings.terrainType || settings.terrainType === "Default") {
|
|
24030
|
+
url = settings.url;
|
|
24031
|
+
}
|
|
24032
|
+
else if (settings.terrainType == "CesiumIon") {
|
|
24033
|
+
const ionId = settings.externalId;
|
|
24034
|
+
const key = settings.key ? settings.key : await findKey(params.apiGetter, params.apiGetter.accountId, BModels.ProgramKey.EProgramId.CesiumIon);
|
|
24035
|
+
const resource = Cesium.IonResource.fromAssetId(Number(ionId), {
|
|
24036
|
+
accessToken: key
|
|
24037
|
+
});
|
|
24038
|
+
if (Cesium.CesiumTerrainProvider.hasOwnProperty("fromUrl")) {
|
|
24039
|
+
provider = await CESIUM.CesiumTerrainProvider.fromUrl(resource, {
|
|
24040
|
+
requestVertexNormals: vertexes
|
|
24041
|
+
});
|
|
24042
|
+
}
|
|
24043
|
+
else {
|
|
24044
|
+
provider = new CESIUM.CesiumTerrainProvider({
|
|
24045
|
+
url: resource,
|
|
24046
|
+
requestVertexNormals: vertexes
|
|
24047
|
+
});
|
|
24048
|
+
}
|
|
24049
|
+
}
|
|
24026
24050
|
}
|
|
24027
24051
|
else {
|
|
24028
24052
|
console.error("Invalid tileset type.", tileset);
|
|
@@ -25369,6 +25393,304 @@
|
|
|
25369
25393
|
ViewRenderEngine.FlyTo = FlyTo;
|
|
25370
25394
|
})(exports.ViewRenderEngine || (exports.ViewRenderEngine = {}));
|
|
25371
25395
|
|
|
25396
|
+
class WidgetLeftPanelTabUser extends exports.WidgetLeftPanelTab.ATab {
|
|
25397
|
+
constructor(params) {
|
|
25398
|
+
super(params);
|
|
25399
|
+
this.STYLESHEET_ID = "nextspace-left-panel-tab-user-stylesheet";
|
|
25400
|
+
this.loadedSessionId = null;
|
|
25401
|
+
this.user = null;
|
|
25402
|
+
this.loaded = false;
|
|
25403
|
+
this.loggingOut = false;
|
|
25404
|
+
this.loggingIn = false;
|
|
25405
|
+
this.inputUsername = null;
|
|
25406
|
+
this.inputPassword = null;
|
|
25407
|
+
this._generateStyles();
|
|
25408
|
+
this._generateElement();
|
|
25409
|
+
// In case another widget messed with the panel width.
|
|
25410
|
+
// Probably should just add a SetWidth method to avoid having plugins mess with the container CSS.
|
|
25411
|
+
if (this.Container) {
|
|
25412
|
+
this.Container.style.width = "300px";
|
|
25413
|
+
}
|
|
25414
|
+
this.loadUser();
|
|
25415
|
+
this.paramsChangeRemoval = BModels.ENVIRONMENT.OnParamsChange.Subscribe(() => {
|
|
25416
|
+
this.loadUser();
|
|
25417
|
+
});
|
|
25418
|
+
}
|
|
25419
|
+
async loadUser() {
|
|
25420
|
+
if (this.loadedSessionId === BModels.ENVIRONMENT.PARAMS.sessionId) {
|
|
25421
|
+
return;
|
|
25422
|
+
}
|
|
25423
|
+
let loadingSessionId = BModels.ENVIRONMENT.PARAMS.sessionId;
|
|
25424
|
+
try {
|
|
25425
|
+
this.user = null;
|
|
25426
|
+
if (BModels.ENVIRONMENT.PARAMS.sessionId && BModels.ENVIRONMENT.PARAMS.sessionId !== "anonymous") {
|
|
25427
|
+
const { session } = await BModels.Session.Get({
|
|
25428
|
+
accountId: BModels.ENVIRONMENT.PARAMS.accountId,
|
|
25429
|
+
sessionId: loadingSessionId
|
|
25430
|
+
});
|
|
25431
|
+
if (loadingSessionId !== BModels.ENVIRONMENT.PARAMS.sessionId) {
|
|
25432
|
+
return;
|
|
25433
|
+
}
|
|
25434
|
+
this.user = session === null || session === void 0 ? void 0 : session.User;
|
|
25435
|
+
}
|
|
25436
|
+
}
|
|
25437
|
+
catch (e) {
|
|
25438
|
+
console.error(e);
|
|
25439
|
+
}
|
|
25440
|
+
finally {
|
|
25441
|
+
if (loadingSessionId === BModels.ENVIRONMENT.PARAMS.sessionId) {
|
|
25442
|
+
this.loaded = true;
|
|
25443
|
+
this._generateElement();
|
|
25444
|
+
}
|
|
25445
|
+
}
|
|
25446
|
+
}
|
|
25447
|
+
/**
|
|
25448
|
+
* Returns if the user can logout.
|
|
25449
|
+
* If the session is part of URL, we don't want to show the logout button.
|
|
25450
|
+
* @returns {boolean}
|
|
25451
|
+
*/
|
|
25452
|
+
canLogout() {
|
|
25453
|
+
if (!this.user || this.user.ID === "anonymous") {
|
|
25454
|
+
return false;
|
|
25455
|
+
}
|
|
25456
|
+
const url = new URL(window.location.href);
|
|
25457
|
+
let sessionId = url.searchParams.get("sessionId");
|
|
25458
|
+
if (!sessionId) {
|
|
25459
|
+
sessionId = url.searchParams.get("ssid");
|
|
25460
|
+
}
|
|
25461
|
+
if (sessionId) {
|
|
25462
|
+
return false;
|
|
25463
|
+
}
|
|
25464
|
+
return true;
|
|
25465
|
+
}
|
|
25466
|
+
async logout() {
|
|
25467
|
+
if (this.loggingOut) {
|
|
25468
|
+
return;
|
|
25469
|
+
}
|
|
25470
|
+
else if (!this.canLogout()) {
|
|
25471
|
+
return;
|
|
25472
|
+
}
|
|
25473
|
+
try {
|
|
25474
|
+
await BModels.Session.Logout({});
|
|
25475
|
+
BModels.ENVIRONMENT.SetPageLoadSessionId(null);
|
|
25476
|
+
}
|
|
25477
|
+
catch (e) {
|
|
25478
|
+
console.error(e);
|
|
25479
|
+
}
|
|
25480
|
+
window.location.reload();
|
|
25481
|
+
}
|
|
25482
|
+
Dispose() {
|
|
25483
|
+
super.Dispose();
|
|
25484
|
+
if (this.paramsChangeRemoval) {
|
|
25485
|
+
this.paramsChangeRemoval();
|
|
25486
|
+
this.paramsChangeRemoval = null;
|
|
25487
|
+
}
|
|
25488
|
+
}
|
|
25489
|
+
_generateStyles() {
|
|
25490
|
+
if (document.getElementById(this.STYLESHEET_ID)) {
|
|
25491
|
+
return;
|
|
25492
|
+
}
|
|
25493
|
+
const style = document.createElement("style");
|
|
25494
|
+
style.id = this.STYLESHEET_ID;
|
|
25495
|
+
style.innerHTML = `
|
|
25496
|
+
.NextspaceLeftPanelTabUser * {
|
|
25497
|
+
box-sizing: border-box;
|
|
25498
|
+
font-family: Arial;
|
|
25499
|
+
font-size: 13px;
|
|
25500
|
+
}
|
|
25501
|
+
|
|
25502
|
+
.NextspaceLeftPanelTabUser {
|
|
25503
|
+
display: flex;
|
|
25504
|
+
flex-direction: column;
|
|
25505
|
+
flex-grow: 1;
|
|
25506
|
+
flex-shrink: 1;
|
|
25507
|
+
overflow: hidden;
|
|
25508
|
+
width: 100%;
|
|
25509
|
+
box-sizing: border-box;
|
|
25510
|
+
}
|
|
25511
|
+
|
|
25512
|
+
.NextspaceLeftPanelTabUser >.NextspaceLeftPanelTabUserTitleBar {
|
|
25513
|
+
align-items: center;
|
|
25514
|
+
color: #fff;
|
|
25515
|
+
display: flex;
|
|
25516
|
+
font-size: 17px;
|
|
25517
|
+
font-style: normal;
|
|
25518
|
+
font-weight: 500;
|
|
25519
|
+
justify-content: center;
|
|
25520
|
+
letter-spacing: -.005em;
|
|
25521
|
+
line-height: 20px;
|
|
25522
|
+
margin-bottom: 15px;
|
|
25523
|
+
font-family: Arial;
|
|
25524
|
+
}
|
|
25525
|
+
|
|
25526
|
+
.NextspaceLeftPanelTabUser >.NextspaceLeftPanelTabUserTitleBreaker {
|
|
25527
|
+
background-color: #000;
|
|
25528
|
+
flex-shrink: 0;
|
|
25529
|
+
height: 2px;
|
|
25530
|
+
margin-bottom: 15px;
|
|
25531
|
+
}
|
|
25532
|
+
|
|
25533
|
+
.NextspaceLeftPanelTabUser >.NextspaceLeftPanelTabUserInputRow {
|
|
25534
|
+
display: flex;
|
|
25535
|
+
flex-direction: row;
|
|
25536
|
+
align-items: center;
|
|
25537
|
+
margin-bottom: 8px;
|
|
25538
|
+
width: 100%;
|
|
25539
|
+
}
|
|
25540
|
+
|
|
25541
|
+
.NextspaceLeftPanelTabUser >.NextspaceLeftPanelTabUserInputRow >label {
|
|
25542
|
+
width: 90px;
|
|
25543
|
+
flex-shrink: 0;
|
|
25544
|
+
margin-right: 8px;
|
|
25545
|
+
color: white;
|
|
25546
|
+
}
|
|
25547
|
+
|
|
25548
|
+
.NextspaceLeftPanelTabUser >.NextspaceLeftPanelTabUserInputRow >input {
|
|
25549
|
+
flex-grow: 1;
|
|
25550
|
+
max-width: 220px;
|
|
25551
|
+
|
|
25552
|
+
background-color: #121619;
|
|
25553
|
+
border: 1px solid #ffffff36;
|
|
25554
|
+
color: #fff;
|
|
25555
|
+
flex-grow: 1;
|
|
25556
|
+
flex-shrink: 1;
|
|
25557
|
+
height: 30px;
|
|
25558
|
+
text-align: left;
|
|
25559
|
+
border-radius: .375rem;
|
|
25560
|
+
outline: none;
|
|
25561
|
+
padding: .5rem .75rem;
|
|
25562
|
+
box-sizing: border-box;
|
|
25563
|
+
width: 10px;
|
|
25564
|
+
}
|
|
25565
|
+
|
|
25566
|
+
.NextspaceLeftPanelTabUser button {
|
|
25567
|
+
cursor: pointer;
|
|
25568
|
+
border-radius: .375rem;
|
|
25569
|
+
padding: 4px 9px;
|
|
25570
|
+
transition: opacity 0.3s ease;
|
|
25571
|
+
width: 100px;
|
|
25572
|
+
width: min-content;
|
|
25573
|
+
height: min-content;
|
|
25574
|
+
white-space: nowrap;
|
|
25575
|
+
border: 1px solid grey;
|
|
25576
|
+
color: black;
|
|
25577
|
+
background-color: white;
|
|
25578
|
+
display: flex;
|
|
25579
|
+
align-items: center;
|
|
25580
|
+
justify-content: center;
|
|
25581
|
+
position: relative;
|
|
25582
|
+
background-color: #0072c3;
|
|
25583
|
+
border: 1px solid #0072c3;
|
|
25584
|
+
color: white;
|
|
25585
|
+
|
|
25586
|
+
margin-left: auto;
|
|
25587
|
+
}
|
|
25588
|
+
`;
|
|
25589
|
+
document.head.appendChild(style);
|
|
25590
|
+
}
|
|
25591
|
+
_generateElement() {
|
|
25592
|
+
var _a, _b;
|
|
25593
|
+
if ((_a = this._element) === null || _a === void 0 ? void 0 : _a.parentElement) {
|
|
25594
|
+
this._element.parentElement.removeChild(this._element);
|
|
25595
|
+
}
|
|
25596
|
+
this._element = null;
|
|
25597
|
+
const element = document.createElement("div");
|
|
25598
|
+
element.className = "NextspaceLeftPanelTabUser";
|
|
25599
|
+
const title = document.createElement("div");
|
|
25600
|
+
title.className = "NextspaceLeftPanelTabUserTitleBar";
|
|
25601
|
+
title.textContent = this.loaded ? (this.user ? ((_b = this.user.FullName) !== null && _b !== void 0 ? _b : "#" + this.user.ID) : "Guest") : "Loading..";
|
|
25602
|
+
element.appendChild(title);
|
|
25603
|
+
const breaker = document.createElement("div");
|
|
25604
|
+
breaker.className = "NextspaceLeftPanelTabUserTitleBreaker";
|
|
25605
|
+
element.appendChild(breaker);
|
|
25606
|
+
if (!this.user || this.user.ID === "anonymous") {
|
|
25607
|
+
{
|
|
25608
|
+
const inputRow = document.createElement("div");
|
|
25609
|
+
inputRow.className = "NextspaceLeftPanelTabUserInputRow";
|
|
25610
|
+
const label = document.createElement("label");
|
|
25611
|
+
label.textContent = "Username";
|
|
25612
|
+
inputRow.appendChild(label);
|
|
25613
|
+
const input = document.createElement("input");
|
|
25614
|
+
input.type = "text";
|
|
25615
|
+
input.placeholder = "...";
|
|
25616
|
+
this.inputUsername = input;
|
|
25617
|
+
inputRow.appendChild(this.inputUsername);
|
|
25618
|
+
element.appendChild(inputRow);
|
|
25619
|
+
}
|
|
25620
|
+
{
|
|
25621
|
+
const inputRow = document.createElement("div");
|
|
25622
|
+
inputRow.className = "NextspaceLeftPanelTabUserInputRow";
|
|
25623
|
+
const label = document.createElement("label");
|
|
25624
|
+
label.textContent = "Password";
|
|
25625
|
+
inputRow.appendChild(label);
|
|
25626
|
+
const input = document.createElement("input");
|
|
25627
|
+
input.type = "password";
|
|
25628
|
+
input.placeholder = "...";
|
|
25629
|
+
this.inputPassword = input;
|
|
25630
|
+
inputRow.appendChild(this.inputPassword);
|
|
25631
|
+
element.appendChild(inputRow);
|
|
25632
|
+
}
|
|
25633
|
+
{
|
|
25634
|
+
const button = document.createElement("button");
|
|
25635
|
+
button.textContent = "Login";
|
|
25636
|
+
button.onclick = async () => {
|
|
25637
|
+
var _a, _b, _c, _d, _e, _f;
|
|
25638
|
+
if (this.loggingIn) {
|
|
25639
|
+
return;
|
|
25640
|
+
}
|
|
25641
|
+
button.style.opacity = "0.7";
|
|
25642
|
+
this.loggingIn = true;
|
|
25643
|
+
try {
|
|
25644
|
+
const { session } = await BModels.Session.Login({
|
|
25645
|
+
accountId: BModels.ENVIRONMENT.PARAMS.accountId,
|
|
25646
|
+
username: (_b = (_a = this.inputUsername) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : "",
|
|
25647
|
+
password: (_d = (_c = this.inputPassword) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : ""
|
|
25648
|
+
});
|
|
25649
|
+
BModels.ENVIRONMENT.SetPageLoadSessionId((_e = session === null || session === void 0 ? void 0 : session.ID) !== null && _e !== void 0 ? _e : null);
|
|
25650
|
+
BModels.ENVIRONMENT.Reset({
|
|
25651
|
+
accountId: BModels.ENVIRONMENT.PARAMS.accountId,
|
|
25652
|
+
sessionId: (_f = (session === null || session === void 0 ? void 0 : session.ID)) !== null && _f !== void 0 ? _f : null,
|
|
25653
|
+
});
|
|
25654
|
+
window.location.reload();
|
|
25655
|
+
}
|
|
25656
|
+
catch (e) {
|
|
25657
|
+
console.error(e);
|
|
25658
|
+
}
|
|
25659
|
+
finally {
|
|
25660
|
+
this.loggingIn = false;
|
|
25661
|
+
button.style.opacity = "1";
|
|
25662
|
+
}
|
|
25663
|
+
};
|
|
25664
|
+
element.appendChild(button);
|
|
25665
|
+
}
|
|
25666
|
+
}
|
|
25667
|
+
else {
|
|
25668
|
+
if (this.canLogout()) {
|
|
25669
|
+
const button = document.createElement("button");
|
|
25670
|
+
button.textContent = "Logout";
|
|
25671
|
+
button.onclick = async () => {
|
|
25672
|
+
if (this.loggingOut) {
|
|
25673
|
+
return;
|
|
25674
|
+
}
|
|
25675
|
+
button.style.opacity = "0.7";
|
|
25676
|
+
try {
|
|
25677
|
+
this.logout();
|
|
25678
|
+
}
|
|
25679
|
+
catch (e) {
|
|
25680
|
+
console.error(e);
|
|
25681
|
+
}
|
|
25682
|
+
finally {
|
|
25683
|
+
button.style.opacity = "1";
|
|
25684
|
+
}
|
|
25685
|
+
};
|
|
25686
|
+
element.appendChild(button);
|
|
25687
|
+
}
|
|
25688
|
+
}
|
|
25689
|
+
this.Container.appendChild(element);
|
|
25690
|
+
this._element = element;
|
|
25691
|
+
}
|
|
25692
|
+
}
|
|
25693
|
+
|
|
25372
25694
|
const VIEWER_LEFT_PANEL_WIDGET_KEY = "_viewerLeftPanelWidget";
|
|
25373
25695
|
const VIEWER_LEFT_PANEL_CSS_VAR_LEFT = "--nextspace-left-panel-width";
|
|
25374
25696
|
class WidgetLeftPanel extends exports.Widget.AWidget {
|
|
@@ -25737,6 +26059,7 @@
|
|
|
25737
26059
|
</svg>
|
|
25738
26060
|
`;
|
|
25739
26061
|
buttonBookmarksIcon.innerHTML = LOGGED_OUT_ICON;
|
|
26062
|
+
buttonBookmarksIcon.style.cursor = "pointer";
|
|
25740
26063
|
tabButton.appendChild(buttonBookmarksIcon);
|
|
25741
26064
|
this._element.appendChild(tabButton);
|
|
25742
26065
|
function getInitials(name) {
|
|
@@ -25794,6 +26117,16 @@
|
|
|
25794
26117
|
buttonBookmarksIcon.innerHTML = LOGGED_OUT_ICON;
|
|
25795
26118
|
}
|
|
25796
26119
|
}
|
|
26120
|
+
buttonBookmarksIcon.onclick = () => {
|
|
26121
|
+
if (this._enabledPanelTab === "user") {
|
|
26122
|
+
this._enabledPanelTab = "";
|
|
26123
|
+
}
|
|
26124
|
+
else {
|
|
26125
|
+
this._enabledPanelTab = "user";
|
|
26126
|
+
}
|
|
26127
|
+
this._updatePanelContent();
|
|
26128
|
+
this._updatePanelStyles();
|
|
26129
|
+
};
|
|
25797
26130
|
if (this.envSubRemoval) {
|
|
25798
26131
|
this.envSubRemoval();
|
|
25799
26132
|
this.envSubRemoval = null;
|
|
@@ -25843,6 +26176,12 @@
|
|
|
25843
26176
|
container: container
|
|
25844
26177
|
});
|
|
25845
26178
|
break;
|
|
26179
|
+
case "user":
|
|
26180
|
+
tabContent = new WidgetLeftPanelTabUser({
|
|
26181
|
+
widget: this,
|
|
26182
|
+
container: container
|
|
26183
|
+
});
|
|
26184
|
+
break;
|
|
25846
26185
|
default:
|
|
25847
26186
|
if (this.customTabs.has(this._enabledPanelTab) === false) {
|
|
25848
26187
|
console.error(`Tab ${this._enabledPanelTab} not found.`);
|
|
@@ -30782,7 +31121,7 @@
|
|
|
30782
31121
|
}
|
|
30783
31122
|
}
|
|
30784
31123
|
|
|
30785
|
-
const VERSION = "5.5.
|
|
31124
|
+
const VERSION = "5.5.4";
|
|
30786
31125
|
|
|
30787
31126
|
exports.VERSION = VERSION;
|
|
30788
31127
|
exports.isHistoricMetadataChanged = isHistoricMetadataChanged;
|