irie 0.0.59__py3-none-any.whl → 0.0.60__py3-none-any.whl
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.
Potentially problematic release.
This version of irie might be problematic. Click here for more details.
- irie/apps/evaluation/models.py +7 -0
- irie/apps/events/views_events.py +2 -2
- irie/apps/inventory/models.py +1 -1
- irie/apps/inventory/views.py +7 -1
- irie/apps/prediction/forms/csi_upload.py +68 -0
- irie/apps/prediction/runners/__init__.py +6 -4
- irie/apps/prediction/runners/opensees/__init__.py +49 -14
- irie/apps/prediction/urls.py +6 -4
- irie/apps/prediction/views.py +248 -17
- irie/apps/static/assets/css/brace.css +1 -1
- irie/apps/static/assets/css/brace.css.map +1 -1
- irie/apps/static/assets/css/brace.min.css +1 -1
- irie/apps/static/assets/js/brace.js +101 -42
- irie/apps/templates/includes/footer.html +1 -1
- irie/apps/templates/inventory/asset-event-summary.html +7 -0
- irie/apps/templates/inventory/asset-on-map.html +22 -22
- irie/apps/templates/inventory/asset-on-map.js +115 -113
- irie/apps/templates/inventory/create-datum.html +27 -27
- irie/apps/templates/layouts/base.html +3 -3
- irie/apps/templates/prediction/create-model.html +32 -29
- irie/apps/templates/prediction/upload/confirm.html +93 -0
- irie/apps/templates/prediction/upload/step.html +119 -0
- irie/apps/templates/prediction/veux/navigator.html +54 -38
- irie/apps/templates/prediction/veux/navigator.js +222 -154
- irie/apps/templates/prediction/xara-profile.html +7 -3
- irie/core/settings.py +1 -0
- {irie-0.0.59.dist-info → irie-0.0.60.dist-info}/METADATA +7 -6
- {irie-0.0.59.dist-info → irie-0.0.60.dist-info}/RECORD +32 -29
- /irie/apps/prediction/{forms.py → forms/__init__.py} +0 -0
- {irie-0.0.59.dist-info → irie-0.0.60.dist-info}/WHEEL +0 -0
- {irie-0.0.59.dist-info → irie-0.0.60.dist-info}/entry_points.txt +0 -0
- {irie-0.0.59.dist-info → irie-0.0.60.dist-info}/top_level.txt +0 -0
|
@@ -545,27 +545,27 @@ function debounce(func, wait, immediate) {
|
|
|
545
545
|
};
|
|
546
546
|
};
|
|
547
547
|
|
|
548
|
-
// initialization of Toasts
|
|
549
|
-
document.addEventListener("DOMContentLoaded", function() {
|
|
550
|
-
|
|
548
|
+
// // initialization of Toasts
|
|
549
|
+
// document.addEventListener("DOMContentLoaded", function() {
|
|
550
|
+
// var toastElList = [].slice.call(document.querySelectorAll(".toast"));
|
|
551
551
|
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
552
|
+
// var toastList = toastElList.map(function(toastEl) {
|
|
553
|
+
// return new bootstrap.Toast(toastEl);
|
|
554
|
+
// });
|
|
555
555
|
|
|
556
|
-
|
|
556
|
+
// var toastButtonList = [].slice.call(document.querySelectorAll(".toast-btn"));
|
|
557
557
|
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
558
|
+
// toastButtonList.map(function(toastButtonEl) {
|
|
559
|
+
// toastButtonEl.addEventListener("click", function() {
|
|
560
|
+
// var toastToTrigger = document.getElementById(toastButtonEl.dataset.target);
|
|
561
561
|
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
});
|
|
562
|
+
// if (toastToTrigger) {
|
|
563
|
+
// var toast = bootstrap.Toast.getInstance(toastToTrigger);
|
|
564
|
+
// toast.show();
|
|
565
|
+
// }
|
|
566
|
+
// });
|
|
567
|
+
// });
|
|
568
|
+
// });
|
|
569
569
|
|
|
570
570
|
// Tabs navigation
|
|
571
571
|
|
|
@@ -582,7 +582,7 @@ function initNavs() {
|
|
|
582
582
|
moving_div.appendChild(tab);
|
|
583
583
|
item.appendChild(moving_div);
|
|
584
584
|
|
|
585
|
-
var list_length = item.getElementsByTagName("li").length;
|
|
585
|
+
// var list_length = item.getElementsByTagName("li").length;
|
|
586
586
|
|
|
587
587
|
moving_div.style.padding = '0px';
|
|
588
588
|
moving_div.style.width = item.querySelector('li:nth-child(1)').offsetWidth + 'px';
|
|
@@ -767,6 +767,62 @@ window.onload = function() {
|
|
|
767
767
|
}
|
|
768
768
|
};
|
|
769
769
|
|
|
770
|
+
|
|
771
|
+
class IrieMainNav {
|
|
772
|
+
#iconNavbarSidenav;
|
|
773
|
+
#iconSidenav;
|
|
774
|
+
#sidenav;
|
|
775
|
+
#body;
|
|
776
|
+
#className = 'g-sidenav-pinned';
|
|
777
|
+
|
|
778
|
+
constructor() {
|
|
779
|
+
this.#iconNavbarSidenav = document.getElementById('iconNavbarSidenav');
|
|
780
|
+
this.#iconSidenav = document.getElementById('iconSidenav');
|
|
781
|
+
this.#sidenav = document.getElementById('sidenav-main');
|
|
782
|
+
this.#body = document.getElementsByTagName('body')[0];
|
|
783
|
+
|
|
784
|
+
if (this.#iconNavbarSidenav) {
|
|
785
|
+
this.#iconNavbarSidenav.addEventListener("click", () => this.toggleSidenav());
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
if (this.#iconSidenav) {
|
|
789
|
+
this.#iconSidenav.addEventListener("click", () => this.toggleSidenav());
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
toggleSidenav() {
|
|
794
|
+
if (this.#body.classList.contains(this.#className)) {
|
|
795
|
+
this.#body.classList.remove(this.#className);
|
|
796
|
+
setTimeout(() => {
|
|
797
|
+
this.#sidenav.classList.remove('bg-white');
|
|
798
|
+
}, 100);
|
|
799
|
+
this.#sidenav.classList.remove('bg-transparent');
|
|
800
|
+
} else {
|
|
801
|
+
this.#body.classList.add(this.#className);
|
|
802
|
+
this.#sidenav.classList.add('bg-white');
|
|
803
|
+
this.#sidenav.classList.remove('bg-transparent');
|
|
804
|
+
// this.#iconSidenav.classList.remove('d-none');
|
|
805
|
+
// this.navbarMinimize();
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
navbarMinimize() {
|
|
810
|
+
const el = this.#iconNavbarSidenav;
|
|
811
|
+
let sidenavShow = document.getElementsByClassName('g-sidenav-show')[0];
|
|
812
|
+
|
|
813
|
+
if (!el.getAttribute("checked")) {
|
|
814
|
+
sidenavShow.classList.remove('g-sidenav-pinned');
|
|
815
|
+
sidenavShow.classList.add('g-sidenav-hidden');
|
|
816
|
+
el.setAttribute("checked", "true");
|
|
817
|
+
} else {
|
|
818
|
+
sidenavShow.classList.remove('g-sidenav-hidden');
|
|
819
|
+
sidenavShow.classList.add('g-sidenav-pinned');
|
|
820
|
+
el.removeAttribute("checked");
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
|
|
770
826
|
// Toggle Sidenav
|
|
771
827
|
const iconNavbarSidenav = document.getElementById('iconNavbarSidenav');
|
|
772
828
|
const iconSidenav = document.getElementById('iconSidenav');
|
|
@@ -774,29 +830,30 @@ const sidenav = document.getElementById('sidenav-main');
|
|
|
774
830
|
let body = document.getElementsByTagName('body')[0];
|
|
775
831
|
let className = 'g-sidenav-pinned';
|
|
776
832
|
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
}
|
|
833
|
+
const irieMainNav = new IrieMainNav();
|
|
834
|
+
// if (iconNavbarSidenav) {
|
|
835
|
+
// iconNavbarSidenav.addEventListener("click", toggleSidenav);
|
|
836
|
+
// }
|
|
837
|
+
|
|
838
|
+
// if (iconSidenav) {
|
|
839
|
+
// iconSidenav.addEventListener("click", toggleSidenav);
|
|
840
|
+
// }
|
|
841
|
+
|
|
842
|
+
// function toggleSidenav() {
|
|
843
|
+
// if (body.classList.contains(className)) {
|
|
844
|
+
// body.classList.remove(className);
|
|
845
|
+
// setTimeout(function() {
|
|
846
|
+
// sidenav.classList.remove('bg-white');
|
|
847
|
+
// }, 100);
|
|
848
|
+
// sidenav.classList.remove('bg-transparent');
|
|
849
|
+
|
|
850
|
+
// } else {
|
|
851
|
+
// body.classList.add(className);
|
|
852
|
+
// sidenav.classList.add('bg-white');
|
|
853
|
+
// sidenav.classList.remove('bg-transparent');
|
|
854
|
+
// iconSidenav.classList.remove('d-none');
|
|
855
|
+
// }
|
|
856
|
+
// }
|
|
800
857
|
|
|
801
858
|
// Resize navbar color depends on configurator active type of sidenav
|
|
802
859
|
|
|
@@ -811,6 +868,7 @@ if (sidenav) {
|
|
|
811
868
|
sidenav.classList.remove('bg-white');
|
|
812
869
|
} else {
|
|
813
870
|
sidenav.classList.add('bg-white');
|
|
871
|
+
sidenav.classList.remove('bg-transparent');
|
|
814
872
|
}
|
|
815
873
|
} else {
|
|
816
874
|
sidenav.classList.add('bg-white');
|
|
@@ -821,7 +879,7 @@ if (sidenav) {
|
|
|
821
879
|
|
|
822
880
|
// Deactivate sidenav type buttons on resize and small screens
|
|
823
881
|
window.addEventListener("resize", sidenavTypeOnResize);
|
|
824
|
-
window.addEventListener("load",
|
|
882
|
+
window.addEventListener("load", sidenavTypeOnResize);
|
|
825
883
|
|
|
826
884
|
function sidenavTypeOnResize() {
|
|
827
885
|
let elements = document.querySelectorAll('[onclick="sidebarType(this)"]');
|
|
@@ -833,6 +891,7 @@ function sidenavTypeOnResize() {
|
|
|
833
891
|
elements.forEach(function(el) {
|
|
834
892
|
el.classList.remove('disabled');
|
|
835
893
|
});
|
|
894
|
+
// irieMainNav.navbarMinimize();
|
|
836
895
|
}
|
|
837
896
|
}
|
|
838
897
|
|
|
@@ -44,6 +44,13 @@
|
|
|
44
44
|
class="btn btn-sm btn-outline-primary d-inline-flex align-items-center">
|
|
45
45
|
Asset Profile
|
|
46
46
|
</a>
|
|
47
|
+
<form method="POST" action="#">
|
|
48
|
+
{% csrf_token %}
|
|
49
|
+
<button type="submit" class="btn btn-sm btn-outline-primary d-inline-flex align-items-center">
|
|
50
|
+
<svg class="icon icon-xxs" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
|
|
51
|
+
Evaluate
|
|
52
|
+
</button>
|
|
53
|
+
</form>
|
|
47
54
|
</div>
|
|
48
55
|
</div>
|
|
49
56
|
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
4
|
+
<title>Asset Map</title>
|
|
5
|
+
<meta property="og:description" content="Use a custom style layer with babylon.js to add a 3D model to the map." />
|
|
6
|
+
<meta charset='utf-8'>
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
<link rel='stylesheet' href='https://unpkg.com/maplibre-gl@5.2.0/dist/maplibre-gl.css' />
|
|
9
|
+
<script src='https://unpkg.com/maplibre-gl@5.2.0/dist/maplibre-gl.js'></script>
|
|
10
|
+
<style>
|
|
11
|
+
body { margin: 0; padding: 0; }
|
|
12
|
+
html, body, #map { height: 100%; margin: 0}
|
|
13
|
+
</style>
|
|
14
|
+
{% if viewer == "three" %}
|
|
15
|
+
<script type="importmap">
|
|
16
|
+
{
|
|
17
|
+
"imports": {
|
|
18
|
+
"three": "https://cdn.jsdelivr.net/npm/three@0.169.0/build/three.module.js",
|
|
19
|
+
"three/addons/": "https://cdn.jsdelivr.net/npm/three@0.169.0/examples/jsm/"
|
|
21
20
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
}
|
|
22
|
+
</script>
|
|
23
|
+
{% else %}
|
|
24
|
+
<script src="https://unpkg.com/babylonjs@5.42.2/babylon.js"></script>
|
|
25
|
+
<script src="https://unpkg.com/babylonjs-loaders@5.42.2/babylonjs.loaders.min.js"></script>
|
|
26
|
+
{% endif %}
|
|
27
27
|
</head>
|
|
28
28
|
<body>
|
|
29
29
|
<div id="map" data-location="{{ location }}"
|
|
@@ -16,7 +16,7 @@ function createAssetLayerThreeJS(options) {
|
|
|
16
16
|
const modelTransform = {
|
|
17
17
|
translateX: modelCoord.x,
|
|
18
18
|
translateY: modelCoord.y, //-25*modelScale,
|
|
19
|
-
translateZ: modelCoord.z+100*modelScale, // 35
|
|
19
|
+
translateZ: modelCoord.z+35*modelScale, // 100*modelScale, // 35
|
|
20
20
|
rotateX: modelRotate[0],
|
|
21
21
|
rotateY: modelRotate[1],
|
|
22
22
|
rotateZ: modelRotate[2],
|
|
@@ -267,122 +267,124 @@ function calculateDistanceMercatorToMeters(from, to) {
|
|
|
267
267
|
return {dEastMeter, dNorthMeter};
|
|
268
268
|
}
|
|
269
269
|
|
|
270
|
-
|
|
271
|
-
const
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
const
|
|
282
|
-
const
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
// Make interaction the same as THREE OrbitControls
|
|
296
|
-
map.dragPan.disable();
|
|
297
|
-
map.dragRotate.enable({ pitchWithRotate: true });
|
|
298
|
-
map.scrollZoom.enable({ around: 'pointer' });
|
|
299
|
-
map.dragPan.enable({
|
|
300
|
-
deceleration: 2000, // px/s²
|
|
301
|
-
linearity: 0.3, // lower = snappier stop
|
|
302
|
-
maxSpeed: 2000
|
|
303
|
-
});
|
|
304
|
-
map.scrollZoom.setWheelZoomRate(1/600); // slower mouse‐wheel zoom
|
|
305
|
-
map.keyboard.enable(); // arrow keys to pan/zoom
|
|
306
|
-
map.touchZoomRotate.enable(); // two-finger pinch & rotate
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
//
|
|
310
|
-
// Add Buildings
|
|
311
|
-
//
|
|
270
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
271
|
+
const div = document.querySelector('#map');
|
|
272
|
+
const modelOrigin = JSON.parse(div.dataset.location); // [-124.1014, 40.50303];
|
|
273
|
+
var modelSource = undefined;
|
|
274
|
+
if (div.dataset.renderSource)
|
|
275
|
+
modelSource = div.dataset.renderSource;
|
|
276
|
+
else
|
|
277
|
+
modelSource = div.dataset.renderInline;
|
|
278
|
+
|
|
279
|
+
const unitToMeter = 1/3.2808;
|
|
280
|
+
|
|
281
|
+
const MAPTILER_KEY = 'get_your_own_OpIi9ZULNHzrESv6T2vL';
|
|
282
|
+
const mapid = 'winter'; // 'dataviz'; // 'basic-v2'; // 'aquarelle';
|
|
283
|
+
const map = (window.map = new maplibregl.Map({
|
|
284
|
+
container: 'map',
|
|
285
|
+
style: `https://api.maptiler.com/maps/${mapid}/style.json?key=${MAPTILER_KEY}`,
|
|
286
|
+
zoom: 18,
|
|
287
|
+
center: modelOrigin,
|
|
288
|
+
zoom: 18,
|
|
289
|
+
maxZoom: 30,
|
|
290
|
+
maxPitch: 85,
|
|
291
|
+
pitch: 77,
|
|
292
|
+
// create the gl context with MSAA antialiasing, so custom layers are antialiased
|
|
293
|
+
canvasContextAttributes: {antialias: true}
|
|
294
|
+
}));
|
|
312
295
|
|
|
313
|
-
//
|
|
314
|
-
|
|
315
|
-
map.
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
296
|
+
// Make interaction the same as THREE OrbitControls
|
|
297
|
+
map.dragPan.disable();
|
|
298
|
+
map.dragRotate.enable({ pitchWithRotate: true });
|
|
299
|
+
map.scrollZoom.enable({ around: 'pointer' });
|
|
300
|
+
map.dragPan.enable({
|
|
301
|
+
deceleration: 2000, // px/s²
|
|
302
|
+
linearity: 0.3, // lower = snappier stop
|
|
303
|
+
maxSpeed: 2000
|
|
304
|
+
});
|
|
305
|
+
map.scrollZoom.setWheelZoomRate(1/600); // slower mouse‐wheel zoom
|
|
306
|
+
map.keyboard.enable(); // arrow keys to pan/zoom
|
|
307
|
+
map.touchZoomRotate.enable(); // two-finger pinch & rotate
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
//
|
|
311
|
+
// Add Buildings
|
|
312
|
+
//
|
|
313
|
+
|
|
314
|
+
// The 'building' layer in the streets vector source contains building-height
|
|
315
|
+
// data from OpenStreetMap.
|
|
316
|
+
map.on('load', () => {
|
|
317
|
+
// Insert the layer beneath any symbol layer.
|
|
318
|
+
const layers = map.getStyle().layers;
|
|
319
|
+
|
|
320
|
+
let labelLayerId;
|
|
321
|
+
for (let i = 0; i < layers.length; i++) {
|
|
322
|
+
if (layers[i].type === 'symbol' && layers[i].layout['text-field']) {
|
|
323
|
+
labelLayerId = layers[i].id;
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
324
326
|
}
|
|
325
|
-
}
|
|
326
327
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
328
|
+
map.addSource('openmaptiles', {
|
|
329
|
+
url: `https://api.maptiler.com/tiles/v3/tiles.json?key=${MAPTILER_KEY}`,
|
|
330
|
+
type: 'vector',
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
map.addLayer(
|
|
334
|
+
{
|
|
335
|
+
'id': '3d-buildings',
|
|
336
|
+
'source': 'openmaptiles',
|
|
337
|
+
'source-layer': 'building',
|
|
338
|
+
'type': 'fill-extrusion',
|
|
339
|
+
'minzoom': 15,
|
|
340
|
+
'filter': ['!=', ['get', 'hide_3d'], true],
|
|
341
|
+
'paint': {
|
|
342
|
+
'fill-extrusion-color': [
|
|
343
|
+
'interpolate',
|
|
344
|
+
['linear'],
|
|
345
|
+
['get', 'render_height'], 0, 'lightgray', 200, 'royalblue', 400, 'lightblue'
|
|
346
|
+
],
|
|
347
|
+
'fill-extrusion-height': [
|
|
348
|
+
'interpolate',
|
|
349
|
+
['linear'],
|
|
350
|
+
['zoom'],
|
|
351
|
+
15,
|
|
352
|
+
0,
|
|
353
|
+
16,
|
|
354
|
+
['get', 'render_height']
|
|
355
|
+
],
|
|
356
|
+
'fill-extrusion-base': ['case',
|
|
357
|
+
['>=', ['get', 'zoom'], 16],
|
|
358
|
+
['get', 'render_min_height'], 0
|
|
359
|
+
]
|
|
360
|
+
}
|
|
361
|
+
},
|
|
362
|
+
labelLayerId
|
|
363
|
+
);
|
|
330
364
|
});
|
|
331
365
|
|
|
332
|
-
map.addLayer(
|
|
333
|
-
{
|
|
334
|
-
'id': '3d-buildings',
|
|
335
|
-
'source': 'openmaptiles',
|
|
336
|
-
'source-layer': 'building',
|
|
337
|
-
'type': 'fill-extrusion',
|
|
338
|
-
'minzoom': 15,
|
|
339
|
-
'filter': ['!=', ['get', 'hide_3d'], true],
|
|
340
|
-
'paint': {
|
|
341
|
-
'fill-extrusion-color': [
|
|
342
|
-
'interpolate',
|
|
343
|
-
['linear'],
|
|
344
|
-
['get', 'render_height'], 0, 'lightgray', 200, 'royalblue', 400, 'lightblue'
|
|
345
|
-
],
|
|
346
|
-
'fill-extrusion-height': [
|
|
347
|
-
'interpolate',
|
|
348
|
-
['linear'],
|
|
349
|
-
['zoom'],
|
|
350
|
-
15,
|
|
351
|
-
0,
|
|
352
|
-
16,
|
|
353
|
-
['get', 'render_height']
|
|
354
|
-
],
|
|
355
|
-
'fill-extrusion-base': ['case',
|
|
356
|
-
['>=', ['get', 'zoom'], 16],
|
|
357
|
-
['get', 'render_min_height'], 0
|
|
358
|
-
]
|
|
359
|
-
}
|
|
360
|
-
},
|
|
361
|
-
labelLayerId
|
|
362
|
-
);
|
|
363
|
-
});
|
|
364
366
|
|
|
365
|
-
|
|
366
|
-
//
|
|
367
|
-
//
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
//
|
|
373
|
-
//
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
{
|
|
378
|
-
|
|
379
|
-
{
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
})
|
|
367
|
+
//
|
|
368
|
+
// Add Asset
|
|
369
|
+
//
|
|
370
|
+
const worldAltitude = 0;
|
|
371
|
+
// +x east, +y up, +z north
|
|
372
|
+
const modelRotate = [Math.PI / 2, 0, 0];
|
|
373
|
+
// Maplibre.js default coordinate system (no rotations)
|
|
374
|
+
// +x east, -y north, +z up
|
|
375
|
+
// const modelRotate = [0, 0, 0];
|
|
376
|
+
|
|
377
|
+
map.on('style.load', () => {
|
|
378
|
+
{% if viewer == "three" %}
|
|
379
|
+
map.addLayer(createAssetLayerThreeJS({
|
|
380
|
+
{% else %}
|
|
381
|
+
map.addLayer(createAssetLayerBabylon({
|
|
382
|
+
{% endif %}
|
|
383
|
+
map,
|
|
384
|
+
modelSource,
|
|
385
|
+
modelOrigin,
|
|
386
|
+
modelRotate,
|
|
387
|
+
unitToMeter
|
|
388
|
+
}));
|
|
389
|
+
});
|
|
388
390
|
});
|
|
@@ -11,33 +11,33 @@
|
|
|
11
11
|
</fieldset>
|
|
12
12
|
|
|
13
13
|
<fieldset>
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
14
|
+
<legend>New Datum</legend>
|
|
15
|
+
<div id="formset-container" class="container">
|
|
16
|
+
<div class="row">
|
|
17
|
+
<div class="col-md-12 d-flex align-items-center mb-3">
|
|
18
|
+
<div class="input-group">
|
|
19
|
+
<span class="input-group-text col-md-5 text-gray">Angle x</span>
|
|
20
|
+
<input id="input-datum-angle-x"
|
|
21
|
+
type="number"
|
|
22
|
+
step="any"
|
|
23
|
+
name="angle x"
|
|
24
|
+
value="{{ form.dx.value|default_if_none:'' }}"
|
|
25
|
+
class="form-control col-md-8 text-gray" required></input>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="input-group">
|
|
28
|
+
<span class="input-group-text col-md-5 text-gray">Angle y</span>
|
|
29
|
+
<input id="input-datum-angle-y"
|
|
30
|
+
type="number"
|
|
31
|
+
step="any"
|
|
32
|
+
name="angle y"
|
|
33
|
+
value="{{ form.dy.value|default_if_none:'' }}"
|
|
34
|
+
class="form-control col-md-8 text-gray" required></input>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
<button class="remove-form btn btn-danger btn-sm ml-2">Remove</button>
|
|
39
|
+
</div>
|
|
40
|
+
<button id="add-datum" class="btn btn-sm button btn-outline-primary mb-3">Add Datum</button>
|
|
41
41
|
</fieldset>
|
|
42
42
|
<button type="button" id="plot-btn" class="btn btn-info btn-sm mb-3">Plot</button>
|
|
43
43
|
<button type="submit" class="btn btn-sm button btn-success mb-3">Save</button>
|
|
@@ -42,13 +42,13 @@
|
|
|
42
42
|
|
|
43
43
|
<link type="text/css" href="{{ ASSETS_ROOT }}/vendor/sweetalert2/dist/sweetalert2.min.css" rel="stylesheet">
|
|
44
44
|
<link type="text/css" href="{{ ASSETS_ROOT }}/vendor/notyf/notyf.min.css" rel="stylesheet">
|
|
45
|
-
|
|
46
|
-
<link type="text/css" href="{{ ASSETS_ROOT }}/css/brace.css" media="screen" rel="stylesheet">
|
|
45
|
+
<link type="text/css" href="{{ ASSETS_ROOT }}/css/brace.min.css" media="screen" rel="stylesheet">
|
|
46
|
+
<!-- <link type="text/css" href="{{ ASSETS_ROOT }}/css/brace.css" media="screen" rel="stylesheet"> -->
|
|
47
47
|
|
|
48
48
|
{% block stylesheets %}{% endblock stylesheets %}
|
|
49
49
|
</head>
|
|
50
50
|
|
|
51
|
-
<body class="g-sidenav-show">
|
|
51
|
+
<body class="g-sidenav-show g-sidenav-pinned">
|
|
52
52
|
|
|
53
53
|
{% include 'includes/sidebar.html' %}
|
|
54
54
|
|