Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | 4x 4x 3x 2x 2x 2x 2x 2x 2x 2x 2x 1x | import { Check, defined } from "@cesium/engine";
import knockout from "../ThirdParty/knockout.js";
import I3SBuildingSceneLayerExplorerViewModel from "./I3SBuildingSceneLayerExplorerViewModel.js";
/**
* I3S Building Scene Layer widget
*
* @alias I3SBuildingSceneLayerExplorer
* @constructor
*
* @param {string} containerId The DOM element ID that will contain the widget.
* @param {I3SDataProvider} i3sProvider I3S Data provider instance.
*
* @demo {@link https://sandcastle.cesium.com/index.html?src=I3S%20Building%20Scene%20Layer.html|I3S Building Scene Layer}
*/
function I3SBuildingSceneLayerExplorer(containerId, i3sProvider) {
const container = document.getElementById(containerId);
//>>includeStart('debug', pragmas.debug);
Check.defined("container", container);
Check.defined("i3sProvider", i3sProvider);
//>>includeEnd('debug');
const htmlWrapper = document.createElement("div");
htmlWrapper.classList.add("cesium-viewer-i3s-explorer");
htmlWrapper.innerHTML = `
<h3>Building explorer</h3>
<select
data-bind="options: topLayers, optionsText: 'name', optionsAfterRender: setOptionDisable, value: currentLayer"
></select>
<div id="bsl-wrapper">
<h3>Select Level</h3>
<select data-bind="options: levels, value: currentLevel"></select>
<h3>Disciplines & Categories</h3>
<ul class="layersList" data-bind="foreach: sublayers">
<ul class="layersList" data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })">
<li>
<div class="li-wrapper">
<span
class="expandItem"
data-bind="click: $root.expandClickHandler"
>+</span
>
<input
type="checkbox"
data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}"
/>
<label data-bind="attr: { for: name}">
<span data-bind="text: name"></span>
</label>
</div>
<ul class="nested" data-bind="attr: { id: name + '-expander'}">
<li data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })">
<div class="li-wrapper">
<input
type="checkbox"
data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}"
/>
<label data-bind="attr: { for: name}">
<span data-bind="text: name"></span>
</label>
</div>
</li>
</ul>
</li>
</ul>
</ul>
</div>`;
container.appendChild(htmlWrapper);
const viewModel = new I3SBuildingSceneLayerExplorerViewModel(i3sProvider);
knockout.track(viewModel);
knockout.applyBindings(viewModel, container);
if (defined(viewModel.defaultLayer)) {
// Select a model by default
viewModel.currentLayer = viewModel.defaultLayer;
}
}
export default I3SBuildingSceneLayerExplorer;
|