width="200", height="200", transform="scale(0.8, 0.8)",
xmlns:xlink="http://www.w3.org/1999/xlink")
defs
- lineargradient#gold
- stop(offset="0", stop-color="#ded99d")
- stop(offset="1", stop-color="#b7b287")
+ lineargradient#red
+ stop(offset="0", stop-color="#d26969")
+ stop(offset="1", stop-color="#ff7f7f")
+
+ lineargradient#green
+ stop(offset="0", stop-color="#69d269")
+ stop(offset="1", stop-color="#7fff7f")
lineargradient#blue
- stop(offset="0", stop-color="#b4b8e4")
- stop(offset="1", stop-color="#868ab6")
+ stop(offset="0", stop-color="#6969d2")
+ stop(offset="1", stop-color="#7f7fff")
- lineargradient#green
- stop(offset="0", stop-color="#a1cca1")
- stop(offset="1", stop-color="#6ba469")
+ lineargradient#orange
+ stop(offset="0", stop-color="#d29d69")
+ stop(offset="1", stop-color="#ffbf7f")
- lineargradient#red
- stop(offset="0", stop-color="#f88")
- stop(offset="1", stop-color="#ea5858")
+ lineargradient#cyan
+ stop(offset="0", stop-color="#69d2d2")
+ stop(offset="1", stop-color="#7fffff")
+
+ lineargradient#purple
+ stop(offset="0", stop-color="#d269d2")
+ stop(offset="1", stop-color="#ff7fff")
- each color in 'gold blue green red'.split(' ')
+ each color in 'red green blue orange cyan purple'.split(' ')
lineargradient(xlink:href="##{color}", id="#{color}-1",
gradientunits="userSpaceOnUse", gradienttransform="rotate(180 7 5)",
x1="0", y1="0", x2="15", y2="10")
// Home A
g.button(@click="home(0)", title="Home {{axes[0]}} axis",
- filter="url(#shadow)")
+ filter="url(#shadow)", v-if="enabled[0]")
use(xlink:href="#corner-button", fill="url(#{{colors[0]}}-2)",
transform="matrix(1 0 0 1 9 9)")
text(font-size="14", x="34", y="25") {{axes[0]}}
// Home B
g.button(@click="home(1)", title="Home {{axes[1]}} axis",
- filter="url(#shadow)")
+ filter="url(#shadow)", v-if="enabled[1]")
use(xlink:href="#corner-button", fill="url(#{{colors[1]}}-2)",
transform="matrix(-1 0 0 1 241 9)")
text(font-size="14", x="205", y="25") {{axes[1]}}
// Zero A
g.button(@click="zero(0)", title="Zero {{axes[0]}} axes",
- filter="url(#shadow)")
+ filter="url(#shadow)", v-if="enabled[0]")
use(xlink:href="#corner-button", fill="url(#{{colors[0]}}-2)",
transform="matrix(1 0 0 -1 9 231)")
text(font-size="20", x="12", y="227") ∅
// Zero B
g.button(@click="zero(1)", title="Zero {{axes[1]}} axis",
- filter="url(#shadow)")
+ filter="url(#shadow)", v-if="enabled[1]")
use(xlink:href="#corner-button", fill="url(#{{colors[1]}}-2)",
transform="matrix(-1 0 0 -1 241 231)")
text(font-size="14", x="208", y="227") {{axes[1]}}
// 100 ring
g.ring(fill="#9f9f9f", filter="url(#shadow-ring)")
- use.button(xlink:href="#pie-1",
+ use.button(xlink:href="#pie-1", v-if="enabled[0]",
transform="translate(134 121) rotate(-45)",
@click="jog(0, 100)", title="Jog +100 {{axes[0]}}")
- use.button(xlink:href="#pie-1",
+ use.button(xlink:href="#pie-1", v-if="enabled[0]",
transform="translate(115 121) rotate(135)",
@click="jog(0, -100)", title="Jog -100 {{axes[0]}}")
- g.button(@click="jog(1, 100)", title="Jog +100 {{axes[1]}}")
+ g.button(@click="jog(1, 100)", title="Jog +100 {{axes[1]}}",
+ v-if="enabled[1]")
use.button(xlink:href="#pie-1",
transform="translate(124 111) rotate(-135)")
text(x="125", y="24", transform="rotate(20 125 125)") 100
use.button(xlink:href="#pie-1", fill="transparent",
transform="translate(124 111) rotate(-135)")
- use.button(xlink:href="#pie-1",
+ use.button(xlink:href="#pie-1", v-if="enabled[1]",
transform="translate(124 130) rotate(45)",
@click="jog(1, -100)", title="Jog -100 {{axes[1]}}")
// 10 ring
g.ring(fill="#c5c5c5", filter="url(#shadow-ring)")
- use.button(xlink:href="#pie-2",
+ use.button(xlink:href="#pie-2", v-if="enabled[0]",
transform="translate(134 121) rotate(-45)",
@click="jog(0, 10)", title="Jog +10 {{axes[0]}}")
- use.button(xlink:href="#pie-2",
+ use.button(xlink:href="#pie-2", v-if="enabled[0]",
transform="translate(115 121) rotate(135)",
@click="jog(0, -10)", title="Jog -10 {{axes[0]}}")
- g.button(@click="jog(1, 10)", title="Jog +10 {{axes[1]}}")
+ g.button(@click="jog(1, 10)", title="Jog +10 {{axes[1]}}",
+ v-if="enabled[1]")
use.button(xlink:href="#pie-2",
transform="translate(124 111) rotate(-135)")
text(x="125", y="50") 10
use.button(xlink:href="#pie-2", fill="transparent",
transform="translate(124 111) rotate(-135)")
- use.button(xlink:href="#pie-2",
+ use.button(xlink:href="#pie-2", v-if="enabled[1]",
transform="translate(124 130) rotate(45)",
@click="jog(1, -10)", title="Jog -10 {{axes[1]}}")
// 1 ring
g.ring(fill="#e2e2e2", filter="url(#shadow-ring)")
- use.button(xlink:href="#pie-3",
+ use.button(xlink:href="#pie-3", v-if="enabled[0]",
transform="translate(134 121) rotate(-45)",
@click="jog(0, 1)", title="Jog +1 {{axes[0]}}")
- use.button(xlink:href="#pie-3",
+ use.button(xlink:href="#pie-3", v-if="enabled[0]",
transform="translate(115 121) rotate(135)",
@click="jog(0, -1)", title="Jog -1 {{axes[0]}}")
- g.button(@click="jog(1, 1)", title="Jog +1 {{axes[1]}}")
+ g.button(@click="jog(1, 1)", title="Jog +1 {{axes[1]}}",
+ v-if="enabled[1]")
use.button(xlink:href="#pie-3",
transform="translate(124 111) rotate(-135)")
text(x="125", y="75") 1
use.button(xlink:href="#pie-3", fill="transparent",
transform="translate(124 111) rotate(-135)")
- use.button(xlink:href="#pie-3",
+ use.button(xlink:href="#pie-3", v-if="enabled[1]",
transform="translate(124 130) rotate(45)",
@click="jog(1, -1)", title="Jog -1 {{axes[1]}}")
// 0.1 ring
g.ring(fill="#f7f7f7", filter="url(#shadow-ring)")
- use.button(xlink:href="#pie-4",
+ use.button(xlink:href="#pie-4", v-if="enabled[0]",
transform="translate(134 121) rotate(-45)",
@click="jog(0, 0.1)", title="Jog +0.1 {{axes[0]}}")
- use.button(xlink:href="#pie-4",
+ use.button(xlink:href="#pie-4", v-if="enabled[0]",
transform="translate(115 121) rotate(135)",
@click="jog(0, -0.1)", title="Jog -0.1 {{axes[0]}}")
- g.button(@click="jog(1, 0.1)", title="Jog +0.1 {{axes[1]}}")
+ g.button(@click="jog(1, 0.1)", title="Jog +0.1 {{axes[1]}}",
+ v-if="enabled[1]")
use.button(xlink:href="#pie-4",
transform="translate(124 111) rotate(-135)")
text(x="125", y="95") 0.1
use.button(xlink:href="#pie-4", fill="transparent",
transform="translate(124 111) rotate(-135)")
- use.button(xlink:href="#pie-4",
+ use.button(xlink:href="#pie-4", v-if="enabled[1]",
transform="translate(124 130) rotate(45)",
@click="jog(1, -0.1)", title="Jog -0.1 {{axes[1]}}")
// +A
g.button.arrow(@click="jog(0, 100)", title="Jog +100 {{axes[0]}}",
- transform="translate(230 120)")
+ transform="translate(230 120)", v-if="enabled[0]")
use(xlink:href="#arrow", fill="url(#{{colors[0]}}-1)")
text(x="-12", y="5", font-size="14", textLength="21") +{{axes[0]}}
// -A
g.button.arrow(@click="jog(0, -100)", title="Jog -100 {{axes[0]}}",
- transform="translate(20 120)")
+ transform="translate(20 120)", v-if="enabled[0]")
use(xlink:href="#arrow", fill="url(#{{colors[0]}}-1)",
transform="rotate(180)")
text(x="-8", y="5", font-size="14", textLength="16") -{{axes[0]}}
// +B
g.button.arrow(@click="jog(1, 100)", title="Jog +100 {{axes[1]}}",
- transform="translate(125, 18)")
+ transform="translate(125, 18)", v-if="enabled[1]")
use(xlink:href="#arrow", fill="url(#{{colors[1]}}-1)",
transform="rotate(-90)")
text(x="-8", y="5", font-size="12", textLength="16") +{{axes[1]}}
// -B
g.button.arrow(@click="jog(1, -100)", title="Jog -100 {{axes[1]}}",
- transform="translate(125, 225)")
+ transform="translate(125, 225)", v-if="enabled[1]")
use(xlink:href="#arrow", fill="url(#{{colors[1]}}-1)",
transform="rotate(90)")
text(x="-7", y="5", font-size="12", textLength="14") -{{axes[1]}}
script#control-view-template(type="text/x-template")
.jog
- axis-control(axes="XY", :colors="['gold', 'blue']")
- axis-control(axes="AZ", :colors="['red', 'green']")
+ axis-control(axes="XY", :colors="['red', 'green']",
+ :enabled="[enabled('x'), enabled('y')]",
+ v-if="enabled('x') || enabled('y')")
+ axis-control(axes="AZ", :colors="['orange', 'blue']",
+ :enabled="[enabled('a'), enabled('z')]",
+ v-if="enabled('a') || enabled('z')")
+ axis-control(axes="BC", :colors="['cyan', 'purple']",
+ :enabled="[enabled('b'), enabled('c')]",
+ v-if="enabled('b') || enabled('c')")
.estop(:class="{active: state.es}")
table.axes
tr
+ th Actions
th Axis
th Position
th Offset
th StallGuard
each axis in 'xyzabc'
- tr.axis(class="axis-#{axis}")
+ tr.axis(class="axis-#{axis}", v-if="enabled('#{axis}')")
+ th.actions
+ button.pure-button
+ .fa.fa-home
+ button.pure-button
+ .fa.fa-dot-circle-o
th.name #{axis}
td.position {{state.#{axis}p || 0 | fixed 4}}
td.offset {{state.#{axis}o || 0 | fixed 4}}
.toolbar
+ button.pure-button(@click="home", :disabled="running")
+ .fa.fa-home
+
button.pure-button(@click="play_pause()", :disabled="!file")
.fa(:class="running ? 'fa-pause' : 'fa-play'")
button.pure-button(@click="stop", :disabled="!running")
.fa.fa-stop
+ button.pure-button(@click="optional_stop", :disabled="!file")
+ .fa.fa-stop-circle-o
+
button.pure-button(@click="step", :disabled="running || !file")
.fa.fa-step-forward
- button.pure-button(@click="optional_stop", :disabled="!file")
- .fa.fa-stop-circle-o
+ .spacer
- button.pure-button(@click="open")
+ button.pure-button(@click="open", :disabled="running")
.fa.fa-folder-open
input.gcode-file-input(type="file", @change="upload", style="display:none",
accept=".nc,.gcode,.gc,.ngc")
- select(v-model="file", @change="load")
- option(v-for="file in files", :value="file") {{file}}
-
button.pure-button(@click="delete", :disabled="!file")
.fa.fa-trash
+ select(v-model="file", @change="load", :disabled="running")
+ option(v-for="file in files", :value="file") {{file}}
+
.gcode {{gcode || 'GCode displays here.'}}