diff --git a/js/kiri-init.js b/js/kiri-init.js index 30a01edb..efaaedb4 100644 --- a/js/kiri-init.js +++ b/js/kiri-init.js @@ -1163,7 +1163,7 @@ var gs_kiri_init = exports; stockDepth: $('stock-width'), stockHeight: $('stock-width'), - device: UC.newGroup(LANG.dv_gr_dev, $('device')), + device: UC.newGroup(LANG.dv_gr_dev, $('device'), {group:"ddev", nocompact:true}), deviceName: UC.newInput(LANG.dv_name_s, {title:LANG.dv_name_l, size:20, text:true}), setDeviceFilament: UC.newInput(LANG.dv_fila_s, {title:LANG.dv_fila_l, convert:UC.toFloat, modes:FDM}), setDeviceNozzle: UC.newInput(LANG.dv_nozl_s, {title:LANG.dv_nozl_l, convert:UC.toFloat, modes:FDM}), @@ -1176,7 +1176,7 @@ var gs_kiri_init = exports; setDeviceOriginTop: UC.newBoolean(LANG.dv_orgt_s, onBooleanClick, {title:LANG.dv_orgt_l, modes:CAM}), setDeviceRound: UC.newBoolean(LANG.dv_bedc_s, onBooleanClick, {title:LANG.dv_bedc_l, modes:FDM}), - setDevice: UC.newGroup(LANG.dv_gr_gco, $('device')), + setDevice: UC.newGroup(LANG.dv_gr_gco, $('device'), {group:"dgco", nocompact:true}), setDeviceFan: UC.newInput(LANG.dv_fanp_s, {title:LANG.dv_fanp_l, modes:FDM, size:17, text:true}), setDeviceTrack: UC.newInput(LANG.dv_prog_s, {title:LANG.dv_prog_l, modes:FDM, size:17, text:true}), setDeviceLayer: UC.newText(LANG.dv_layr_s, {title:LANG.dv_layr_l, modes:FDM, size:14, height: 2}), @@ -1532,6 +1532,7 @@ var gs_kiri_init = exports; UI.import.setAttribute("import","1"); UI.import.onclick = function() { + UC.hidePoppers(); API.dialog.show("catalog"); }; diff --git a/js/moto-ui.js b/js/moto-ui.js index a6f33aa2..0e326004 100644 --- a/js/moto-ui.js +++ b/js/moto-ui.js @@ -19,6 +19,7 @@ var gs_moto_ui = exports; groups = {}, groupShow = {}, groupName = undefined, + hideable = {}, hasModes = [], isExpert = [], letMode = null, @@ -58,6 +59,7 @@ var gs_moto_ui = exports; setGroup: setGroup, setCompact: setCompact, setDefaults: setDefaults, + hidePoppers: hidePoppers, checkpoint, restore }; @@ -121,13 +123,17 @@ var gs_moto_ui = exports; } function addCollapsableGroup(label, div, options) { - lastRegion = (options || {}).region || lastRegion; + let opt = options || {}; + let group = opt.group || label; + lastRegion = opt.region || lastRegion; + hideable[group] = opt.nocompact === true ? false : true; let row = DOC.createElement('div'), a = DOC.createElement('a'), - dbkey = `${prefix}-show-${label}`; + dbkey = `${prefix}-show-${group}`, + popper = compact && !opt.nocompact; - if (compact) { + if (popper) { let pop = DOC.createElement('div'); pop.classList.add('popper'); if (lastRegion) pop.classList.add(lastRegion); @@ -141,24 +147,24 @@ var gs_moto_ui = exports; row.setAttribute("class", "grouphead noselect"); row.appendChild(a); a.appendChild(DOC.createTextNode(label)); - addModeControls(row, options); - groupName = label; - lastGroup = groups[label] = []; + addModeControls(row, opt); + lastGroup = groups[group] = []; lastGroup.key = dbkey; - groupShow[label] = compact ? SDB[dbkey] === 'true' : SDB[dbkey] !== 'false'; + groupName = name; + groupShow[group] = popper ? SDB[dbkey] === 'true' : SDB[dbkey] !== 'false'; row.onclick = function(ev) { if (ev.target !== a && ev.target !== row) { return; } - toggleGroup(label, dbkey); + toggleGroup(group, dbkey); }; - if (compact) { + if (popper) { row.onmouseenter = function(ev) { if (ev.target !== a && ev.target !== row) { return; } clearTimeout(exitimer); - showGroup(label); + showGroup(group); }; row.onmouseleave = function(ev) { if (ev.target !== a && ev.target !== row) { @@ -167,14 +173,20 @@ var gs_moto_ui = exports; clearTimeout(exitimer); exitimer = setTimeout(showGroup, 1000); }; - addTo._group = label; - addModeControls(addTo, options); + addTo._group = group; + addModeControls(addTo, opt); lastGroup.push(addTo); } return row; } + function hidePoppers() { + if (compact) { + showGroup(undefined); + } + } + function showGroup(groupname) { Object.keys(groups).forEach(name => { let group = groups[name]; @@ -185,12 +197,12 @@ var gs_moto_ui = exports; function toggleGroup(groupname, dbkey) { let show = SDB[dbkey] === 'false'; - groupShow[groupname] = SDB[dbkey] = show; + groupShow[groupname] = hideable[groupname] ? SDB[dbkey] = show : true; updateGroupShow(groupname); } function updateGroupShow(groupname) { - let show = groupShow[groupname]; + let show = groupShow[groupname] || !hideable[groupname]; let group = groups[groupname]; group.forEach(div => { if (show) div.setMode(letMode); @@ -509,7 +521,10 @@ var gs_moto_ui = exports; t = DOC.createTextNode(label); b.appendChild(t); - b.onclick = function() { action() }; + b.onclick = function() { + if (compact) hidePoppers(); + action(); + }; if (options && options.class) { b.classList.add(options.class);