Skip to content

Commit

Permalink
fix: add correct validators to extruder length and speed
Browse files Browse the repository at this point in the history
  • Loading branch information
cadriel committed Jan 21, 2021
1 parent 03f0918 commit 046a0da
Show file tree
Hide file tree
Showing 4 changed files with 115 additions and 76 deletions.
151 changes: 94 additions & 57 deletions src/components/widgets/ExtruderMovesWidget.vue
Original file line number Diff line number Diff line change
@@ -1,61 +1,61 @@
<template>
<div>
<v-row justify="end">
<v-col cols="6" class="text-right">
<v-text-field
v-model="extrudeLength"
:disabled="!klippyConnected"
@focus="$event.target.select()"
outlined
dense
hide-details
single-line
label="Extrude Length"
type="number"
suffix="mm">
</v-text-field>
</v-col>
<v-col cols="6">
<v-btn
@click="sendRetractGcode(extrudeLength, extrudeSpeed, waits.onExtract)"
:disabled="hasWaits || !extrudeRetractReady || !klippyConnected"
:elevation="2"
block
color="secondary"
class="mr-2">
Retract
<v-icon>$chevronUp</v-icon>
</v-btn>
</v-col>
</v-row>
<v-row justify="end">
<v-col cols="6" class="text-right">
<v-text-field
v-model="extrudeSpeed"
:disabled="!klippyConnected"
@focus="$event.target.select()"
outlined
dense
hide-details
single-line
label="Extrude Speed"
suffix="mm/s">
</v-text-field>
</v-col>
<v-col cols="6">
<v-btn
@click="sendExtrudeGcode(extrudeLength, extrudeSpeed, waits.onExtrude)"
:disabled="hasWaits || !extrudeRetractReady || !klippyConnected"
:elevation="2"
block
color="secondary"
class="mr-2">
Extrude
<v-icon>$chevronDown</v-icon>
</v-btn>
</v-col>
</v-row>
</div>
<v-form v-model="valid">
<v-row justify="end">
<v-col cols="6" class="text-right">
<v-text-field
ref="lengthfield"
v-model.number="extrudeLength"
:disabled="!klippyConnected"
:rules="[rules.min, rules.maxLength]"
@focus="$event.target.select()"
hide-details
outlined
dense
label="Extrude Length"
suffix="mm">
</v-text-field>
</v-col>
<v-col cols="6">
<v-btn
@click="sendRetractGcode(extrudeLength, extrudeSpeed, waits.onExtract)"
:disabled="hasWaits || !extrudeRetractReady || !klippyConnected || !valid"
:elevation="2"
block
color="secondary"
class="mr-2">
Retract
<v-icon>$chevronUp</v-icon>
</v-btn>
</v-col>
</v-row>
<v-row justify="end">
<v-col cols="6" class="text-right">
<v-text-field
v-model.number="extrudeSpeed"
:disabled="!klippyConnected"
:rules="[rules.min, rules.maxSpeed]"
@focus="$event.target.select()"
hide-details
outlined
dense
label="Extrude Speed"
suffix="mm/s">
</v-text-field>
</v-col>
<v-col cols="6">
<v-btn
@click="sendExtrudeGcode(extrudeLength, extrudeSpeed, waits.onExtrude)"
:disabled="hasWaits || !extrudeRetractReady || !klippyConnected || !valid"
:elevation="2"
block
color="secondary"
class="mr-2">
Extrude
<v-icon>$chevronDown</v-icon>
</v-btn>
</v-col>
</v-row>
</v-form>
</template>

<script lang="ts">
Expand All @@ -73,6 +73,27 @@ export default class ToolheadMovesWidget extends Mixins(UtilsMixin) {
waits = Waits
feedSpeed = -1
feedLength = -1
valid = true
rules = {
min: (v: number) => {
return (v >= 1) || 'Min 1'
},
maxSpeed: (v: number) => {
return (v <= this.maxExtrudeSpeed) || 'Max ' + this.maxExtrudeSpeed
},
maxLength: (v: number) => {
return (v <= this.maxExtrudeLength) || 'Max ' + this.maxExtrudeLength
}
}
get maxExtrudeSpeed () {
return this.$store.getters['socket/getPrinterSettings']('extruder.max_extrude_only_velocity')
}
get maxExtrudeLength () {
return this.$store.getters['socket/getPrinterSettings']('extruder.max_extrude_only_distance')
}
get extrudeSpeed () {
return (this.feedSpeed === -1)
Expand All @@ -93,5 +114,21 @@ export default class ToolheadMovesWidget extends Mixins(UtilsMixin) {
set extrudeLength (val: number) {
this.feedLength = val
}
sendRetractGcode (amount: number, rate: number, wait?: string) {
if (this.valid) {
const gcode = `M83
G1 E-${amount} F${rate * 60}`
this.sendGcode(gcode, wait)
}
}
sendExtrudeGcode (amount: number, rate: number, wait?: string) {
if (this.valid) {
const gcode = `M83
G1 E${amount} F${rate * 60}`
this.sendGcode(gcode, wait)
}
}
}
</script>
18 changes: 0 additions & 18 deletions src/mixins/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -184,24 +184,6 @@ export default class UtilsMixin extends Vue {
this.sendGcode(gcode, wait)
}

/**
* Retract.
*/
sendRetractGcode (amount: number, rate: number, wait?: string) {
const gcode = `M83
G1 E-${amount} F${rate * 60}`
this.sendGcode(gcode, wait)
}

/**
* Extrude.
*/
sendExtrudeGcode (amount: number, rate: number, wait?: string) {
const gcode = `M83
G1 E${amount} F${rate * 60}`
this.sendGcode(gcode, wait)
}

getFile (path: string, options?: AxiosRequestConfig) {
const o = { ...options }
return this.$http.get(
Expand Down
16 changes: 15 additions & 1 deletion src/store/socket/getters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -597,6 +597,20 @@ export const getters: GetterTree<SocketState, RootState> = {

getAllGcodeCommands: (state) => {
return state.availableCommands
}
},

/**
* Return a required setting from the printer.config object.
*/
getPrinterSettings: (state) => (setting: string) => {
if (
state.printer &&
state.printer.configfile &&
state.printer.configfile.settings
) {
// console.log('has printer config', get(state.printer.configfile.settings, setting, undefined))
return get(state.printer.configfile.settings, setting, undefined)
}
return undefined
}
}
6 changes: 6 additions & 0 deletions src/store/socket/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@ export const defaultState = (): SocketState => {
pause_resume: {},
display_status: {},
'gcode_macro CANCEL_PRINT': {}
},
settings: {
extruder: {
max_extrude_only_velocity: 100,
max_extrude_only_distance: 100
}
}
},
objects: [],
Expand Down

0 comments on commit 046a0da

Please sign in to comment.