checkpoint ui refactor

This commit is contained in:
Stewart Allen 2024-05-24 22:49:10 -04:00
commit ec6dc2c171
8 changed files with 82 additions and 68 deletions

View file

@ -144,8 +144,11 @@ CAM.init = function(kiri, api) {
isIndexed = undefined;
isCamMode = mode === 'CAM';
SPACE.platform.setColor(isCamMode ? 0xeeeeee : 0xcccccc);
api.uc.setClass($('right-work'), 'slim-hide', !isCamMode);
api.uc.setVisible(UI.func.animate, isCamMode);
// hide/show cam mode elements
for (let el of [...document.getElementsByClassName('mode-cam')]) {
api.uc.setClass(el, 'hide', !isCamMode);
}
if (!isCamMode) {
func.clearPops();
func.tabClear();
@ -162,7 +165,6 @@ CAM.init = function(kiri, api) {
isAnimate = false;
animFn().animate_clear(api);
func.clearPops();
api.uc.setClass($('right-work'), 'slim-hide', !isCamMode);
if (isCamMode && isPreview) {
for (let widget of API.widgets.all()) {
widget.setAxisIndex(0);
@ -460,7 +462,6 @@ CAM.init = function(kiri, api) {
oplist = oplist.filter(rec => !Array.isArray(rec));
let mark = Date.now();
let html = [];
$('ophint').style.display = oplist.length > (isIndexed ? 1 : 0) ? 'none' : '';
let bind = {};
let scale = API.view.unit_scale();
let notime = false;

View file

@ -101,11 +101,11 @@ FDM.init = function(kiri, api) {
function clearRanges() {
api.conf.get().process.ranges = [];
ui.rangeGroup.firstElementChild.innerHTML = '';
ui.fdmRanges.innerHTML = '';
}
// re-render ranges menu
function updateRanges(ranges = []) {
ui.rangeGroup.style.display = isFdmMode && ranges && ranges.length ? 'flex' : 'none';
let html = [];
let bind = [];
let now = Date.now();
@ -120,7 +120,7 @@ FDM.init = function(kiri, api) {
]);
bind.push({id, range});
}
ui.rangeGroup.firstElementChild.innerHTML = html.join('');
ui.fdmRanges.innerHTML = html.join('');
for (let rec of bind) {
$(`sel_${rec.id}`).onclick = () => {
api.show.layer(rec.range.hi, rec.range.lo);
@ -159,6 +159,10 @@ FDM.init = function(kiri, api) {
api.event.on("mode.set", mode => {
isFdmMode = mode === 'FDM';
lastMode = mode;
// hide/show fdm mode elements
for (let el of [...document.getElementsByClassName('mode-fdm')]) {
api.uc.setClass(el, 'hide', !isFdmMode);
}
updateVisiblity();
});
api.event.on("view.set", view => {
@ -180,7 +184,6 @@ FDM.init = function(kiri, api) {
}
}
}
// ui.rangeGroup.style.display = ranges && ranges.length ? 'flex' : 'none';
});
api.event.on("range.updates", updateRanges);
api.event.on("settings.load", (settings) => {
@ -191,8 +194,6 @@ FDM.init = function(kiri, api) {
});
api.event.on("settings.saved", (settings) => {
updateRanges(settings.process.ranges);
// let ranges = settings.process.ranges;
// ui.rangeGroup.style.display = isFdmMode && ranges && ranges.length ? 'flex' : 'none';
});
api.event.on("button.click", target => {
switch (target) {

View file

@ -2084,8 +2084,7 @@ gapp.register("kiri.init", [], (root, exports) => {
slaFirstOffset: uc.newInput(LANG.sa_opzo_s, {title:LANG.sa_opzo_l, convert:uc.toFloat, bound:uc.bound(0,1), modes:SLA}),
slaAntiAlias: uc.newSelect(LANG.sa_opaa_s, {title:LANG.sa_opaa_l, modes:SLA}, "antialias"),
rangeGroup: uc.newGroup("ranges", null, {modes:FDM, group:"ranges"}),
rangeList: uc.newRow([], {}),
fdmRanges: $('fdm-ranges'),
settingsSave: $('settingsSave'),
settingsName: $('settingsName'),
@ -2964,7 +2963,6 @@ gapp.register("kiri.init", [], (root, exports) => {
$('tool-rotate').onclick = event.bind("tool.show", "rotate");
$('tool-scale').onclick = event.bind("tool.show", "scale");
$('tool-mesh').onclick = event.bind("tool.show", "mesh");
$('tool-selector').onclick = event.bind("tool.show", "select");
}
// warn users they are running a beta release

View file

@ -898,8 +898,14 @@ gapp.register("kiri.main", [], (root, exports) => {
current.mode = mode;
MODE = MODES[mode];
DRIVER = kiri.driver[mode];
// update mode display
$('app-mode-name').innerHTML = mode === 'CAM' ? 'CNC' : mode;
// update mode drop-down
{
const modename = $('mode-name');
const options = modename.options;
const optlist = ["FDM","CAM","SLA","LASER"];
options.selectedIndex = optlist.indexOf(mode);
modename.onchange = (ev) => setMode(optlist[options.selectedIndex]);
}
// highlight relevant device mode button
["fdm","sla","cam","laser"].forEach(dev => {
let cl = $(`mode-${dev}`).classList;

View file

@ -566,8 +566,10 @@ function platformDeletePost() {
platformChanged();
}
// render list of current widgets
function platformChanged() {
h.bind($('ft-select'), api.widgets.all().map(w => {
h.bind($('ws-widgets'), api.widgets.all().map(w => {
console.log('widget ...',w);
let color;
return [
h.button({

View file

@ -280,12 +280,17 @@ gapp.register("kiri.ui", [], (root, exports) => {
div.appendChild(row);
if (label) {
// let l1 = DOC.createElement('hr');
// l1.classList.add('set-header-line');
// row.appendChild(l1);
link = DOC.createElement('a');
link.appendChild(DOC.createTextNode(label));
row.appendChild(link);
let line = DOC.createElement('hr');
line.classList.add('set-header-line');
row.appendChild(line);
let l2 = DOC.createElement('hr');
l2.classList.add('set-header-line');
row.appendChild(l2);
}
addModeControls(row, opt);

View file

@ -376,6 +376,9 @@ th, tr, td, label {
font-weight: bold;
}
.contents {
display: contents;
}
.hide {
display: none !important;
}
@ -536,15 +539,18 @@ th, tr, td, label {
border-left: 1px solid #ddd;
border-bottom: 1px solid #ddd;
}
#mode-info span {
#mode-info span, #mode-info select {
margin: 2px 5px 2px 0;
font-size: smaller;
padding: 2px 5px 2px 5px;
color: var(--fg-gray);
background-color: white;
border-top-left-radius: 0;
border-top-right-radius: 5px;
border-bottom-left-radius: 0;
border-bottom-right-radius: 5px;
border-top: 1px solid #ddd;
border-left: 0;
border-right: 1px solid #ddd;
border-bottom: 1px solid #ddd;
}
@ -625,16 +631,14 @@ th, tr, td, label {
left: 0;
right: 0;
bottom: 0;
/* flex-grow: true; */
pointer-events: none;
/* max-height: 99%; */
}
#mod-print button, #catalogList button, #settingsList button {
text-transform: none !important;
}
#mid-left {
#mid-left, #right-work {
max-height: 100%;
background-color: var(--work-area);
}
@ -645,6 +649,9 @@ th, tr, td, label {
#mid-left label, #mid-left svg {
pointer-events: none;
}
#right-work > div {
padding: 0 5px 0 5px;
}
.slim-hide {
width: 0;
@ -807,7 +814,7 @@ th, tr, td, label {
font-family: monospace;
padding-left: 4px;
}
#ft-mesh, #ft-select {
#ft-mesh {
min-width: 200px;
}
#mesh-info {
@ -820,13 +827,6 @@ th, tr, td, label {
right: 2px;
top: 7px;
}
#ft-select {
max-height: 300px;
overflow-y: auto;
}
#ft-select button {
text-transform: none;
}
#lay-flat.selected {
background-color: var(--main-color);
}
@ -931,7 +931,6 @@ th, tr, td, label {
display: block;
}
#camops {
background-color: var(--work-area);
display: flex;
padding: 5px 0 0 0;
}

View file

@ -116,10 +116,6 @@
<label lk="mesh">mesh</label>
<span><i class="fas fa-dice-d20"></i></span>
</div>
<div id="tool-selector">
<label lk="select">select</label>
<span><i class="fas fa-mouse-pointer"></i></span>
</div>
<hr>
<div id="view-clear">
<label lk="clear">clear</label>
@ -261,9 +257,13 @@
<div id="lt-w-disable"><i class="fas fa-times-circle"></i></div>
</div>
<!-- always up -->
<div class="chonk"></div>
<div id="mode-info" class="f-col">
<div><label>Mode</label><span id="app-mode-name"></span></div>
<div><label>Mode</label><select id="mode-name">
<option>FDM</option>
<option>CNC</option>
<option>SLA</option>
<option>Laser</option>
</select></div>
<div><label>Device</label><span id="mode-device"></span></div>
<div><label>Profile</label><span id="mode-profile"></span></div>
</div>
@ -460,39 +460,43 @@
</div>
<!-- vertical separation between workspace and right tray -->
<div class="mid-sep"></div>
<div id="right-work" class="f-col j-center slim-hide">
<div class="chonk"></div>
<div id="right-work" class="f-col j-start">
<div class="work-header"><span>workspace</span></div>
<div class="chonk"></div>
<div id="workspace-tool">
<div id="ws-widgets" class="f-col"></div>
<div class="contents mode-fdm">
<div class="chonk"></div>
<div id="fdm-ranges" class="f-col"></div>
</div>
<div class="work-header"><span>CNC</span><span>operations</span></div>
<div class="chonk"></div>
<div id="camops" class="f-col a-stretch grow">
<div id="oplist" class="f-col j-center"></div>
<div id="ophint" class="f-row">
<div class="opdiv">use + menu to add milling operations</div>
<div class="opdiv">drag to re-order</div>
<div id="workspace-tool"></div>
<div class="contents mode-cam">
<div class="chonk"></div>
<div class="work-header">
<span>CNC</span>
<span>operations</span>
</div>
<div id="op-add" class="opdiv">
<i class="fas fa-plus"></i>
<div id="op-add-pop" class="f-col">
<div id="op-add-list" class="opdiv op-grid">
<div id="cam-index" title="rotate index axis">index</div>
<div id="cam-lathe" title="lathe operation">lathe</div>
<div id="laser-on" title="turn on laser mode">laser on</div>
<div id="laser-off" title="turn off laser mode">laser off</div>
<div id="cam-flip" title="flip part and load&#13;profile for other side&#13;for double-sided work">flip</div>
<div id="cam-reg" title="drill registration holes&#13;along the X or Y axis&#13;for double-sided work">register</div>
<div title="drill any holes matching&#13;selected tool diameter">drill</div>
<div title="clear stock face&#13;or top of part&#13;when no stock">level</div>
<div title="follow selected features with&#13;a specified tool. often used&#13;for lettering and engraving">trace</div>
<div title="insert custom gcode">gcode</div>
<div title="remove an area of material&#13;inside a defined boundary&#13;sometimes called pocketing">rough</div>
<div title="clean up after roughing&#13;or perform a part cutout">outline</div>
<div title="2.5D tracing along X or Y axis&#13;used for complex part features">contour</div>
<div title="clear areas above&#13;selected surfaces">pocket</div>
<div class="chonk"></div>
<div id="camops" class="f-col a-stretch grow">
<div id="oplist" class="f-col j-center"></div>
<div id="op-add" class="opdiv">
<i class="fas fa-plus"></i>
<div id="op-add-pop" class="f-col">
<div id="op-add-list" class="opdiv op-grid">
<div id="cam-index" title="rotate index axis">index</div>
<div id="cam-lathe" title="lathe operation">lathe</div>
<div id="laser-on" title="turn on laser mode">laser on</div>
<div id="laser-off" title="turn off laser mode">laser off</div>
<div id="cam-flip" title="flip part and load&#13;profile for other side&#13;for double-sided work">flip</div>
<div id="cam-reg" title="drill registration holes&#13;along the X or Y axis&#13;for double-sided work">register</div>
<div title="drill any holes matching&#13;selected tool diameter">drill</div>
<div title="clear stock face&#13;or top of part&#13;when no stock">level</div>
<div title="follow selected features with&#13;a specified tool. often used&#13;for lettering and engraving">trace</div>
<div title="insert custom gcode">gcode</div>
<div title="remove an area of material&#13;inside a defined boundary&#13;sometimes called pocketing">rough</div>
<div title="clean up after roughing&#13;or perform a part cutout">outline</div>
<div title="2.5D tracing along X or Y axis&#13;used for complex part features">contour</div>
<div title="clear areas above&#13;selected surfaces">pocket</div>
</div>
</div>
</div>
</div>
@ -567,7 +571,6 @@
<div lkt="rotate" class="tictac" select="ft-rotate" label="ft-label"><i class="fas fa-sync-alt"></i></div>
<div lkt="scale" class="tictac" select="ft-scale" label="ft-label"><i class="fas fa-expand"></i></div>
<div lkt="mesh" class="tictac" select="ft-mesh" label="ft-label"><i class="fas fa-dice-d20"></i></div>
<div lkt="select" class="tictac" select="ft-select" label="ft-label"><i class="fas fa-mouse-pointer"></i></div>
</div>
<div id="ft-scale" class="grow grid">
<div><label class="middle">X</label><input id="lock_x" type="checkbox" checked></div>
@ -615,7 +618,6 @@
<button id="mesh-export-stl" lk="rc_xstl">export STL</button>
<button id="mesh-swap" lk="rc_swap">replace vertices</button>
</div>
<div id="ft-select" class="grow f-col"></div>
</div>
<div class="footer"></div>
</div>