123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- import { Check, defaultValue, defined } from "@cesium/engine";
- /**
- * A static class with helper functions used by CesiumInspector, Cesium3DTilesInspector, and VoxelInspector
- * @private
- */
- const InspectorShared = {};
- /**
- * Creates a checkbox component
- * @param {string} labelText The text to display in the checkbox label
- * @param {string} checkedBinding The name of the variable used for checked binding
- * @param {string} [enableBinding] The name of the variable used for enable binding
- * @return {Element}
- */
- InspectorShared.createCheckbox = function (
- labelText,
- checkedBinding,
- enableBinding
- ) {
- //>>includeStart('debug', pragmas.debug);
- Check.typeOf.string("labelText", labelText);
- Check.typeOf.string("checkedBinding", checkedBinding);
- //>>includeEnd('debug');
- const checkboxContainer = document.createElement("div");
- const checkboxLabel = document.createElement("label");
- const checkboxInput = document.createElement("input");
- checkboxInput.type = "checkbox";
- let binding = `checked: ${checkedBinding}`;
- if (defined(enableBinding)) {
- binding += `, enable: ${enableBinding}`;
- }
- checkboxInput.setAttribute("data-bind", binding);
- checkboxLabel.appendChild(checkboxInput);
- checkboxLabel.appendChild(document.createTextNode(labelText));
- checkboxContainer.appendChild(checkboxLabel);
- return checkboxContainer;
- };
- /**
- * Creates a section element
- * @param {Element} panel The parent element
- * @param {string} headerText The text to display at the top of the section
- * @param {string} sectionVisibleBinding The name of the variable used for visible binding
- * @param {string} toggleSectionVisibilityBinding The name of the function used to toggle visibility
- * @return {Element}
- */
- InspectorShared.createSection = function (
- panel,
- headerText,
- sectionVisibleBinding,
- toggleSectionVisibilityBinding
- ) {
- //>>includeStart('debug', pragmas.debug);
- Check.defined("panel", panel);
- Check.typeOf.string("headerText", headerText);
- Check.typeOf.string("sectionVisibleBinding", sectionVisibleBinding);
- Check.typeOf.string(
- "toggleSectionVisibilityBinding",
- toggleSectionVisibilityBinding
- );
- //>>includeEnd('debug');
- const section = document.createElement("div");
- section.className = "cesium-cesiumInspector-section";
- section.setAttribute(
- "data-bind",
- `css: { "cesium-cesiumInspector-section-collapsed": !${sectionVisibleBinding} }`
- );
- panel.appendChild(section);
- const sectionHeader = document.createElement("h3");
- sectionHeader.className = "cesium-cesiumInspector-sectionHeader";
- sectionHeader.appendChild(document.createTextNode(headerText));
- sectionHeader.setAttribute(
- "data-bind",
- `click: ${toggleSectionVisibilityBinding}`
- );
- section.appendChild(sectionHeader);
- const sectionContent = document.createElement("div");
- sectionContent.className = "cesium-cesiumInspector-sectionContent";
- section.appendChild(sectionContent);
- return sectionContent;
- };
- /**
- * Creates a range input
- * @param {string} rangeText The text to display
- * @param {string} sliderValueBinding The name of the variable used for slider value binding
- * @param {number} min The minimum value
- * @param {number} max The maximum value
- * @param {number} [step] The step size. Defaults to "any".
- * @param {string} [inputValueBinding] The name of the variable used for input value binding
- * @return {Element}
- */
- InspectorShared.createRangeInput = function (
- rangeText,
- sliderValueBinding,
- min,
- max,
- step,
- inputValueBinding
- ) {
- //>>includeStart('debug', pragmas.debug);
- Check.typeOf.string("rangeText", rangeText);
- Check.typeOf.string("sliderValueBinding", sliderValueBinding);
- Check.typeOf.number("min", min);
- Check.typeOf.number("max", max);
- //>>includeEnd('debug');
- inputValueBinding = defaultValue(inputValueBinding, sliderValueBinding);
- const input = document.createElement("input");
- input.setAttribute("data-bind", `value: ${inputValueBinding}`);
- input.type = "number";
- const slider = document.createElement("input");
- slider.type = "range";
- slider.min = min;
- slider.max = max;
- slider.step = defaultValue(step, "any");
- slider.setAttribute(
- "data-bind",
- `valueUpdate: "input", value: ${sliderValueBinding}`
- );
- const wrapper = document.createElement("div");
- wrapper.appendChild(slider);
- const container = document.createElement("div");
- container.className = "cesium-cesiumInspector-slider";
- container.appendChild(document.createTextNode(rangeText));
- container.appendChild(input);
- container.appendChild(wrapper);
- return container;
- };
- /**
- * Creates a button component
- * @param {string} buttonText The button text
- * @param {string} clickedBinding The name of the variable used for clicked binding
- * @param {string} [activeBinding] The name of the variable used for active binding
- * @return {Element}
- */
- InspectorShared.createButton = function (
- buttonText,
- clickedBinding,
- activeBinding
- ) {
- //>>includeStart('debug', pragmas.debug);
- Check.typeOf.string("buttonText", buttonText);
- Check.typeOf.string("clickedBinding", clickedBinding);
- //>>includeEnd('debug');
- const button = document.createElement("button");
- button.type = "button";
- button.textContent = buttonText;
- button.className = "cesium-cesiumInspector-pickButton";
- let binding = `click: ${clickedBinding}`;
- if (defined(activeBinding)) {
- binding += `, css: {"cesium-cesiumInspector-pickButtonHighlight" : ${activeBinding}}`;
- }
- button.setAttribute("data-bind", binding);
- return button;
- };
- export default InspectorShared;
|