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.
347 lines
11 KiB
JavaScript
347 lines
11 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} |