From 5a65ffaba205154e7c38d161c54101772be0964c Mon Sep 17 00:00:00 2001 From: David Carley Date: Tue, 23 Aug 2022 07:20:45 +0000 Subject: [PATCH] Rebuilt the "Move to [XY|Z] zero?" dialogs in Svelte. --- src/js/control-view.js | 15 --------- src/pug/templates/control-view.pug | 30 ++--------------- .../src/dialogs/DialogHost.svelte | 18 +++++++++- .../src/dialogs/MoveToZeroDialog.svelte | 33 +++++++++++++++++++ .../src/dialogs/ProbeDialog.svelte | 2 +- .../src/lib/RegisterControllerMethods.ts | 33 ++++++++++++++++--- 6 files changed, 82 insertions(+), 49 deletions(-) create mode 100644 src/svelte-components/src/dialogs/MoveToZeroDialog.svelte diff --git a/src/js/control-view.js b/src/js/control-view.js index 47bf907..3eb27ba 100644 --- a/src/js/control-view.js +++ b/src/js/control-view.js @@ -48,8 +48,6 @@ module.exports = { c: false }, ask_home: true, - ask_zero_xy_msg: false, - ask_zero_z_msg: false, showGcodeMessage: false } }, @@ -244,7 +242,6 @@ module.exports = { SvelteComponents.registerControllerMethods({ stop: (...args) => this.stop(...args), send: (...args) => this.send(...args), - goto_zero: (...args) => this.goto_zero(...args), isAxisHomed: (axis) => this[axis].homed, unhome: (...args) => this.unhome(...args), set_position: (...args) => this.set_position(...args), @@ -253,18 +250,6 @@ module.exports = { }, methods: { - goto_zero(zero_x, zero_y, zero_z, zero_a) { - const xcmd = zero_x ? "X0" : ""; - const ycmd = zero_y ? "Y0" : ""; - const zcmd = zero_z ? "Z0" : ""; - const acmd = zero_a ? "A0" : ""; - - this.ask_zero_xy_msg = false; - this.ask_zero_z_msg = false; - - this.send('G90\nG0' + xcmd + ycmd + zcmd + acmd + '\n'); - }, - getJogIncrStyle(value) { const weight = `font-weight:${this.jog_incr === value ? 'bold' : 'normal'}`; const color = this.jog_incr === value ? "color:#0078e7" : ""; diff --git a/src/pug/templates/control-view.pug b/src/pug/templates/control-view.pug index 83845b9..6ca4ec7 100644 --- a/src/pug/templates/control-view.pug +++ b/src/pug/templates/control-view.pug @@ -10,32 +10,6 @@ script#control-view-template(type="text/x-template") div(slot="footer") label Simulating {{(toolpath_progress || 0) | percent}} - message(:show.sync=`ask_zero_xy_msg`) - h3(slot="header") XY Origin - - div(slot="body") - p Move to XY origin? - - div(slot="footer") - button.pure-button(@click="goto_zero(1,1,0,0)") - | Confirm - - button.pure-button(@click='ask_zero_xy_msg = false') - | Cancel - - message(:show.sync=`ask_zero_z_msg`) - h3(slot="header") Z Origin - - div(slot="body") - p Move to Z origin? - - div(slot="footer") - button.pure-button(@click="goto_zero(0,0,1,0)") - | Confirm - - button.pure-button(@click='ask_zero_z_msg = false') - | Cancel - table(style="table-layout: fixed; width: 100%;") tr(style="height: fit-content;") td(style="white-space: nowrap; width: 410px;", rowspan="2") @@ -60,12 +34,12 @@ script#control-view-template(type="text/x-template") td(style="height:100px",align="center") button(@click="jog_fn(-1,0,0,0)") X- td(style="height:100px",align="center") - button(@click="ask_zero_xy_msg = true") + button(@click="showMoveToZeroDialog('xy')") .fa.fa-bullseye(style="font-size: 173%") td(style="height:100px",align="center") button(@click="jog_fn(1,0,0,0)") X+ td(style="height:100px",align="center") - button(@click='ask_zero_z_msg = true') Z0 + button(@click="showMoveToZeroDialog('z')") Z0 tr td(style="height:100px",align="center") button(@click="jog_fn(-1,-1,0,0)") diff --git a/src/svelte-components/src/dialogs/DialogHost.svelte b/src/svelte-components/src/dialogs/DialogHost.svelte index 0f5b103..377c5e2 100644 --- a/src/svelte-components/src/dialogs/DialogHost.svelte +++ b/src/svelte-components/src/dialogs/DialogHost.svelte @@ -7,6 +7,7 @@ import SetTimeDialog from "./SetTimeDialog.svelte"; import ManualHomeAxisDialog from "./ManualHomeAxisDialog.svelte"; import SetAxisPositionDialog from "./SetAxisPositionDialog.svelte"; + import MoveToZeroDialog from "./MoveToZeroDialog.svelte"; import ShutdownDialog from "./ShutdownDialog.svelte"; const HomeMachineDialogProps = writable(); @@ -50,6 +51,12 @@ axis: string; }; + const MoveToZeroDialogProps = writable(); + type MoveToZeroDialogPropsType = { + open: boolean; + axes: "xy" | "z"; + }; + const ShutdownDialogProps = writable(); type ShutdownDialogPropsType = { open: boolean; @@ -90,6 +97,11 @@ props: Omit ); + export function showDialog( + dialog: "MoveToZero", + props: Omit + ); + export function showDialog( dialog: "Shutdown", props: Omit @@ -125,6 +137,10 @@ SetAxisPositionDialogProps.set({ ...props, open: true }); break; + case "MoveToZero": + MoveToZeroDialogProps.set({ ...props, open: true }); + break; + case "Shutdown": ShutdownDialogProps.set({ ...props, open: true }); break; @@ -195,7 +211,6 @@ }); - @@ -203,4 +218,5 @@ + diff --git a/src/svelte-components/src/dialogs/MoveToZeroDialog.svelte b/src/svelte-components/src/dialogs/MoveToZeroDialog.svelte new file mode 100644 index 0000000..321d6be --- /dev/null +++ b/src/svelte-components/src/dialogs/MoveToZeroDialog.svelte @@ -0,0 +1,33 @@ + + + + + Move to ${(axes || "").toUpperCase()} origin? + + + + + + + + diff --git a/src/svelte-components/src/dialogs/ProbeDialog.svelte b/src/svelte-components/src/dialogs/ProbeDialog.svelte index 56dce8e..1fc9a3b 100644 --- a/src/svelte-components/src/dialogs/ProbeDialog.svelte +++ b/src/svelte-components/src/dialogs/ProbeDialog.svelte @@ -104,7 +104,7 @@ await stepCompleted("Done", userAcknowledged); if (probeType === "xyz") { - ControllerMethods.goto_zero(1, 1, 0, 0); + ControllerMethods.gotoZero("xy"); } } catch (err) { if (err.message !== "cancelled") { diff --git a/src/svelte-components/src/lib/RegisterControllerMethods.ts b/src/svelte-components/src/lib/RegisterControllerMethods.ts index f0b47d9..fe5388a 100644 --- a/src/svelte-components/src/lib/RegisterControllerMethods.ts +++ b/src/svelte-components/src/lib/RegisterControllerMethods.ts @@ -1,7 +1,6 @@ -type ControllerMethods = { +interface RegisterableControllerMethods { stop: () => void; send: (gcode: string) => void; - goto_zero: (x: number, y: number, z: number, a: number) => void; dispatch: (event: string, ...args: any[]) => void; isAxisHomed: (axis: string) => boolean; unhome: (axis: string) => void; @@ -9,11 +8,37 @@ type ControllerMethods = { set_home: (axis: string, value: number) => void; } +interface ControllerMethods extends RegisterableControllerMethods { + gotoZero: (axes: "xy" | "z") => void; +} + export let ControllerMethods: ControllerMethods; -export function registerControllerMethods(methods: Partial) { +export function registerControllerMethods(methods: Partial) { ControllerMethods = { ...ControllerMethods, - ...methods + ...methods, + gotoZero }; } + +function gotoZero(axes: "xy" | "z") { + let axesClause = ""; + switch (axes.toLowerCase()) { + case "xy": + axesClause = "X0Y0"; + break; + + case "z": + axesClause = "Z0"; + break; + + default: + throw new Error(`Invalid axes: ${axes}`); + } + + ControllerMethods.send(` + G90 + G0 ${axesClause} + `); +} \ No newline at end of file