You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
336 lines
9.2 KiB
JavaScript
336 lines
9.2 KiB
JavaScript
import { globalKeyDownManager } from "./keydown_manager.js";
|
|
import { logger } from "./log.js";
|
|
|
|
class ConfigUi {
|
|
clickableItems = {
|
|
"#cfg-increase-size": (event) => {
|
|
this.editor.data.scale_point_size(1.2);
|
|
this.editor.render();
|
|
this.editor.boxEditorManager.render();
|
|
return false;
|
|
},
|
|
|
|
"#cfg-decrease-size": (event) => {
|
|
this.editor.data.scale_point_size(0.8);
|
|
this.editor.render();
|
|
this.editor.boxEditorManager.render();
|
|
return false;
|
|
},
|
|
|
|
"#cfg-increase-brightness": (event) => {
|
|
this.editor.data.scale_point_brightness(1.2);
|
|
this.editor.render();
|
|
this.editor.boxEditorManager.render();
|
|
return false;
|
|
},
|
|
|
|
"#cfg-decrease-brightness": (event) => {
|
|
this.editor.data.scale_point_brightness(0.8);
|
|
this.editor.render();
|
|
this.editor.boxEditorManager.render();
|
|
return false;
|
|
},
|
|
|
|
"#cfg-take-screenshot": (event) => {
|
|
this.editor.downloadWebglScreenShot();
|
|
return true;
|
|
},
|
|
|
|
"#cfg-show-log": (event) => {
|
|
logger.show();
|
|
return true;
|
|
},
|
|
|
|
"#cfg-start-calib": (event) => {
|
|
this.editor.calib.start_calibration();
|
|
return true;
|
|
},
|
|
|
|
"#cfg-show-calib": (event) => {
|
|
this.editor.calib.save_calibration();
|
|
return true;
|
|
},
|
|
|
|
// "#cfg-reset-calib":(event)=>{
|
|
// this.editor.calib.reset_calibration();
|
|
// return true;
|
|
// }
|
|
|
|
"#cfg-crop-scene": (event) => {
|
|
this.editor.cropScene.show();
|
|
|
|
return true;
|
|
},
|
|
};
|
|
|
|
changeableItems = {
|
|
"#cfg-theme-select": (event) => {
|
|
let theme = event.currentTarget.value;
|
|
|
|
//let scheme = document.documentElement.className;
|
|
|
|
document.documentElement.className = "theme-" + theme;
|
|
|
|
pointsGlobalConfig.setItem("theme", theme);
|
|
|
|
this.editor.viewManager.setColorScheme();
|
|
this.editor.render();
|
|
this.editor.boxEditorManager.render();
|
|
|
|
return false;
|
|
},
|
|
|
|
"#cfg-hide-box-checkbox": (event) => {
|
|
let checked = event.currentTarget.checked;
|
|
|
|
//let scheme = document.documentElement.className;
|
|
|
|
if (checked) this.editor.data.set_box_opacity(0);
|
|
else this.editor.data.set_box_opacity(1);
|
|
|
|
this.editor.render();
|
|
this.editor.boxEditorManager.render();
|
|
|
|
return false;
|
|
},
|
|
|
|
"#cfg-hide-id-checkbox": (event) => {
|
|
let checked = event.currentTarget.checked;
|
|
this.editor.floatLabelManager.show_id(!checked);
|
|
return false;
|
|
},
|
|
|
|
"#cfg-hide-category-checkbox": (event) => {
|
|
let checked = event.currentTarget.checked;
|
|
this.editor.floatLabelManager.show_category(!checked);
|
|
return false;
|
|
},
|
|
|
|
"#cfg-hide-circle-ruler-checkbox": (event) => {
|
|
let checked = event.currentTarget.checked;
|
|
this.editor.showRangeCircle(!checked);
|
|
return false;
|
|
},
|
|
|
|
"#cfg-auto-rotate-xy-checkbox": (event) => {
|
|
let checked = event.currentTarget.checked;
|
|
pointsGlobalConfig.setItem("enableAutoRotateXY", checked);
|
|
return false;
|
|
},
|
|
|
|
"#cfg-auto-update-interpolated-boxes-checkbox": (event) => {
|
|
let checked = event.currentTarget.checked;
|
|
pointsGlobalConfig.setItem("autoUpdateInterpolatedBoxes", checked);
|
|
return false;
|
|
},
|
|
|
|
"#cfg-color-points-select": (event) => {
|
|
let value = event.currentTarget.value;
|
|
pointsGlobalConfig.setItem("color_points", value);
|
|
|
|
this.editor.data.worldList.forEach((w) => {
|
|
w.lidar.color_points();
|
|
w.lidar.update_points_color();
|
|
});
|
|
this.editor.render();
|
|
return false;
|
|
},
|
|
|
|
"#cfg-color-object-scheme": (event) => {
|
|
let value = event.currentTarget.value;
|
|
this.editor.data.set_obj_color_scheme(value);
|
|
this.editor.render();
|
|
this.editor.imageContextManager.render_2d_image();
|
|
|
|
this.editor.floatLabelManager.set_color_scheme(value);
|
|
this.editor.render2dLabels(this.editor.data.world);
|
|
this.editor.boxEditorManager.render();
|
|
|
|
return false;
|
|
},
|
|
|
|
"#cfg-batch-mode-inst-number": (event) => {
|
|
let batchSize = parseInt(event.currentTarget.value);
|
|
|
|
pointsGlobalConfig.setItem("batchModeInstNumber", batchSize);
|
|
|
|
this.editor.boxEditorManager.setBatchSize(batchSize);
|
|
return false;
|
|
},
|
|
|
|
"#cfg-coordinate-system-select": (event) => {
|
|
let coord = event.currentTarget.value;
|
|
pointsGlobalConfig.setItem("coordinateSystem", coord);
|
|
|
|
this.editor.data.worldList.forEach((w) => {
|
|
w.calcTransformMatrix();
|
|
});
|
|
this.editor.render();
|
|
},
|
|
|
|
"#cfg-data-aux-lidar-checkbox": (event) => {
|
|
let checked = event.currentTarget.checked;
|
|
|
|
pointsGlobalConfig.setItem("enableAuxLidar", checked);
|
|
return false;
|
|
},
|
|
|
|
"#cfg-data-radar-checkbox": (event) => {
|
|
let checked = event.currentTarget.checked;
|
|
|
|
pointsGlobalConfig.setItem("enableRadar", checked);
|
|
return false;
|
|
},
|
|
|
|
"#cfg-data-filter-points-checkbox": (event) => {
|
|
let checked = event.currentTarget.checked;
|
|
|
|
pointsGlobalConfig.setItem("enableFilterPoints", checked);
|
|
return false;
|
|
},
|
|
|
|
"#cfg-data-filter-points-z": (event) => {
|
|
let z = event.currentTarget.value;
|
|
|
|
pointsGlobalConfig.setItem("filterPointsZ", z);
|
|
return false;
|
|
},
|
|
|
|
"#cfg-data-preload-checkbox": (event) => {
|
|
let checked = event.currentTarget.checked;
|
|
pointsGlobalConfig.setItem("enablePreload", checked);
|
|
return false;
|
|
},
|
|
};
|
|
|
|
ignoreItems = [
|
|
"#cfg-point-size",
|
|
"#cfg-point-brightness",
|
|
"#cfg-theme",
|
|
"#cfg-color-object",
|
|
"#cfg-menu-batch-mode-inst-number",
|
|
"#cfg-hide-box",
|
|
"#cfg-calib-camera-LiDAR",
|
|
"#cfg-experimental",
|
|
"#cfg-data",
|
|
];
|
|
|
|
subMenus = ["#cfg-experimental", "#cfg-data"];
|
|
|
|
constructor(button, wrapper, editor) {
|
|
this.button = button;
|
|
this.wrapper = wrapper;
|
|
this.editor = editor;
|
|
this.editorCfg = editor.editorCfg;
|
|
this.dataCfg = editor.data.cfg;
|
|
this.menu = this.wrapper.querySelector("#config-menu");
|
|
|
|
this.wrapper.onclick = () => {
|
|
this.hide();
|
|
};
|
|
|
|
this.button.onclick = (event) => {
|
|
this.show(event.currentTarget);
|
|
};
|
|
|
|
for (let item in this.clickableItems) {
|
|
this.menu.querySelector(item).onclick = (event) => {
|
|
let ret = this.clickableItems[item](event);
|
|
if (ret) {
|
|
this.hide();
|
|
}
|
|
|
|
event.stopPropagation();
|
|
};
|
|
}
|
|
|
|
for (let item in this.changeableItems) {
|
|
this.menu.querySelector(item).onchange = (event) => {
|
|
let ret = this.changeableItems[item](event);
|
|
if (ret) {
|
|
this.hide();
|
|
}
|
|
|
|
event.stopPropagation();
|
|
};
|
|
}
|
|
|
|
this.ignoreItems.forEach((item) => {
|
|
this.menu.querySelector(item).onclick = (event) => {
|
|
{
|
|
event.stopPropagation();
|
|
}
|
|
};
|
|
});
|
|
|
|
this.subMenus.forEach((item) => {
|
|
this.menu.querySelector(item).onmouseenter = function (event) {
|
|
if (this.timerId) {
|
|
clearTimeout(this.timerId);
|
|
this.timerId = null;
|
|
}
|
|
|
|
event.currentTarget.querySelector(item + "-submenu").style.display =
|
|
"inherit";
|
|
};
|
|
|
|
this.menu.querySelector(item).onmouseleave = function (event) {
|
|
let ui = event.currentTarget.querySelector(item + "-submenu");
|
|
this.timerId = setTimeout(() => {
|
|
ui.style.display = "none";
|
|
this.timerId = null;
|
|
}, 200);
|
|
};
|
|
});
|
|
|
|
this.menu.onclick = (event) => {
|
|
event.stopPropagation();
|
|
};
|
|
|
|
// init ui
|
|
this.menu.querySelector("#cfg-theme-select").value =
|
|
pointsGlobalConfig.theme;
|
|
this.menu.querySelector("#cfg-data-aux-lidar-checkbox").checked =
|
|
pointsGlobalConfig.enableAuxLidar;
|
|
this.menu.querySelector("#cfg-data-radar-checkbox").checked =
|
|
pointsGlobalConfig.enableRadar;
|
|
this.menu.querySelector("#cfg-color-points-select").value =
|
|
pointsGlobalConfig.color_points;
|
|
this.menu.querySelector("#cfg-coordinate-system-select").value =
|
|
pointsGlobalConfig.coordinateSystem;
|
|
this.menu.querySelector("#cfg-batch-mode-inst-number").value =
|
|
pointsGlobalConfig.batchModeInstNumber;
|
|
this.menu.querySelector("#cfg-data-filter-points-checkbox").checked =
|
|
pointsGlobalConfig.enableFilterPoints;
|
|
this.menu.querySelector("#cfg-data-filter-points-z").value =
|
|
pointsGlobalConfig.filterPointsZ;
|
|
this.menu.querySelector("#cfg-hide-id-checkbox").value =
|
|
pointsGlobalConfig.hideId;
|
|
this.menu.querySelector("#cfg-hide-category-checkbox").value =
|
|
pointsGlobalConfig.hideCategory;
|
|
this.menu.querySelector("#cfg-data-preload-checkbox").checked =
|
|
pointsGlobalConfig.enablePreload;
|
|
this.menu.querySelector("#cfg-auto-rotate-xy-checkbox").checked =
|
|
pointsGlobalConfig.enableAutoRotateXY;
|
|
this.menu.querySelector(
|
|
"#cfg-auto-update-interpolated-boxes-checkbox"
|
|
).checked = pointsGlobalConfig.autoUpdateInterpolatedBoxes;
|
|
}
|
|
|
|
show(target) {
|
|
this.wrapper.style.display = "inherit";
|
|
|
|
this.menu.style.right = "0px";
|
|
this.menu.style.top = target.offsetHeight + "px";
|
|
|
|
globalKeyDownManager.register((event) => false, "config");
|
|
}
|
|
|
|
hide() {
|
|
globalKeyDownManager.deregister("config");
|
|
this.wrapper.style.display = "none";
|
|
}
|
|
}
|
|
|
|
export { ConfigUi };
|