update
| 
						 | 
				
			
			@ -1,4 +1,7 @@
 | 
			
		|||
v1.0.207: Added LEAD1010 Laser Profile, fix bug #107 (Disable CheckSize button on PC's that doesnt support WebGL), fix bug with inch-mode Check Size
 | 
			
		||||
v1.0.210: Focussed on close button of alarm/error dialogs to ease closing, added Driver Install button for beginners, beta probing wizards (internal testing only)
 | 
			
		||||
v1.0.209: Added Node-Debugger to help check not-responding issue, disabled console.log debugging in server process
 | 
			
		||||
v1.0.208: Removed accidental S-Word from coolant menu commands
 | 
			
		||||
v1.0.207: Added LEAD1010 Laser Profile, fix bug #107 (Disable CheckSize button on PCs that doesn't support WebGL), fix bug with inch-mode Check Size
 | 
			
		||||
v1.0.206: Fixed update check to comply with Github deprecations: https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api/
 | 
			
		||||
v1.0.205: Updated version of avrgirl backend for Firmware flashing, fixes to CI
 | 
			
		||||
v1.0.204: Soft-Limits support in Keyboard Continuous Jogging
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,76 @@
 | 
			
		|||
.probe-label:hover {
 | 
			
		||||
  fill: #ccc;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.probe-label path {
 | 
			
		||||
  pointer-events: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.areaactive {
 | 
			
		||||
  fill: #dd0000;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.areaactive:hover {
 | 
			
		||||
  fill: #ff0000;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.probe-label, #probe-c-text, #probe-fl-text, #probe-fr-text, #probe-rl-text, #probe-rr-text {
 | 
			
		||||
  cursor: default;
 | 
			
		||||
  -webkit-user-select: none;
 | 
			
		||||
  -khtml-user-select: none;
 | 
			
		||||
  -moz-user-select: -moz-none;
 | 
			
		||||
  -o-user-select: none;
 | 
			
		||||
  user-select: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.B {
 | 
			
		||||
  stroke-linejoin: round
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.C {
 | 
			
		||||
  fill: #000
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.D {
 | 
			
		||||
  stroke: #000
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.E {
 | 
			
		||||
  word-spacing: 0px
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.F {
 | 
			
		||||
  font-family: Arial Black
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.G {
 | 
			
		||||
  text-anchor: middle
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.H {
 | 
			
		||||
  stroke: none
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.I {
 | 
			
		||||
  font-size: 10.033px
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.J {
 | 
			
		||||
  overflow: visible
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.K {
 | 
			
		||||
  fill-rule: evenodd
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.L {
 | 
			
		||||
  stroke-width: 1pt
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.M {
 | 
			
		||||
  stroke-width: 1.09
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.N {
 | 
			
		||||
  stroke-linejoin: miter
 | 
			
		||||
}
 | 
			
		||||
| 
		 Po Szerokość: | Wysokość: | Rozmiar: 54 KiB  | 
| 
		 Po Szerokość: | Wysokość: | Rozmiar: 45 KiB  | 
| 
		 Po Szerokość: | Wysokość: | Rozmiar: 50 KiB  | 
| 
		 Po Szerokość: | Wysokość: | Rozmiar: 56 KiB  | 
| 
		 Po Szerokość: | Wysokość: | Rozmiar: 3.6 KiB  | 
| 
		 Po Szerokość: | Wysokość: | Rozmiar: 80 KiB  | 
| 
		 Po Szerokość: | Wysokość: | Rozmiar: 45 KiB  | 
| 
		 Po Szerokość: | Wysokość: | Rozmiar: 18 KiB  | 
| 
		 Po Szerokość: | Wysokość: | Rozmiar: 4.5 KiB  | 
							
								
								
									
										260
									
								
								app/index.html
								
								
								
								
							
							
						
						| 
						 | 
				
			
			@ -13,6 +13,7 @@
 | 
			
		|||
    <link rel="stylesheet" href="lib/iconpicker/css/fontawesome-iconpicker.min.css" />
 | 
			
		||||
    <link rel="stylesheet" href="css/main.css" />
 | 
			
		||||
    <link rel="stylesheet" href="css/buttons.css" />
 | 
			
		||||
    <link rel="stylesheet" href="css/probev2.css" />
 | 
			
		||||
  </head>
 | 
			
		||||
 | 
			
		||||
  <body>
 | 
			
		||||
| 
						 | 
				
			
			@ -128,9 +129,11 @@
 | 
			
		|||
                    <select data-prepend=" <i class='fab fa-usb'></i>" class="success" data-role="select" data-filter="false" id="portUSB" disabled>
 | 
			
		||||
                      <option value="">Waiting for USB</option>
 | 
			
		||||
                    </select>
 | 
			
		||||
                    <button class="button success float-right" onclick="selectPort()" id="connectBtn" type="button" disabled>Connect</button>
 | 
			
		||||
                    <button class="button alert" style="display:none;" onclick="closePort()" id="disconnectBtn" type="button">Disconnect</button>
 | 
			
		||||
                    <button class="button secondary disabled" disabled style="display:none;" id="flashBtn" type="button">please wait...</button>
 | 
			
		||||
                    <button class="button small success float-right" onclick="selectPort()" id="connectBtn" type="button" style="margin: 5px;" disabled>Connect</button>
 | 
			
		||||
                    <button class="button alert" style="display:none;" onclick="closePort()" id="disconnectBtn" type="button" style="margin: 5px;">Disconnect</button>
 | 
			
		||||
                    <button class="button small secondary disabled" disabled style="display:none;" id="flashBtn" type="button" style="margin: 5px;">please wait...</button>
 | 
			
		||||
                    <button class="button small primary float-right" onclick="socket.emit('opendriverspage', true);" id="driverBtn" type="button" style="margin: 5px;">Install Drivers</button>
 | 
			
		||||
 | 
			
		||||
                  </form>
 | 
			
		||||
 | 
			
		||||
                </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -239,8 +242,8 @@
 | 
			
		|||
                    <!-- <li class="divider"></li> -->
 | 
			
		||||
                    <li><a class="grblmode" href="#" onclick="sendGcode('M3 S1000')">Plasma On (M3 S1000)</a></li>
 | 
			
		||||
                    <li class="divider fg-lightGray"></li>
 | 
			
		||||
                    <li id="menuMisting" style="display: none;"><a class="grblmode" href="#" onclick="sendGcode('M8 S1000')">Misting On (M7)</a></li>
 | 
			
		||||
                    <li><a class="grblmode" href="#" onclick="sendGcode('M8 S1000')">Coolant On (M8)</a></li>
 | 
			
		||||
                    <li id="menuMisting" style="display: none;"><a class="grblmode" href="#" onclick="sendGcode('M7')">Misting On (M7)</a></li>
 | 
			
		||||
                    <li><a class="grblmode" href="#" onclick="sendGcode('M8')">Coolant On (M8)</a></li>
 | 
			
		||||
                    <!-- <li><a class="grblmode" href="#" onclick="sendGcode('M9 S1000')">Coolant Off (M9)</a></li> -->
 | 
			
		||||
 | 
			
		||||
                  </ul>
 | 
			
		||||
| 
						 | 
				
			
			@ -260,7 +263,7 @@
 | 
			
		|||
                  <ul class="ribbon-dropdown grblmode" data-role="dropdown" data-duration="100">
 | 
			
		||||
                    <li><a class="grblmode" href="#" onclick="sendGcode('M5')">Spindle / Laser / Plasma Off (M5)</a></li>
 | 
			
		||||
                    <li class="divider fg-lightGray"></li>
 | 
			
		||||
                    <li><a class="grblmode" href="#" onclick="sendGcode('M9 S1000')">Coolant Off (M9)</a></li>
 | 
			
		||||
                    <li><a class="grblmode" href="#" onclick="sendGcode('M9')">Coolant Off (M9)</a></li>
 | 
			
		||||
 | 
			
		||||
                  </ul>
 | 
			
		||||
                </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -286,6 +289,7 @@
 | 
			
		|||
                  <ul class="ribbon-dropdown grblmode" data-role="dropdown" data-duration="100">
 | 
			
		||||
                    <li><a href="#" onclick="populateSurfaceToolForm();"><i class="fas fa-exchange-alt"></i> Surfacing / Flattening Wizard</a></li>
 | 
			
		||||
                    <li><a href="#" onclick="jogWidget();"><i class="fas fa-mobile-alt"></i> Mobile Jog Widget</a></li>
 | 
			
		||||
                    <li onclick="openProbeDialog();" class="needsXYZProbe"><a href="#"><span class="fas fa-podcast fa-rotate-180 icon"></span> Probing Wizards</a></li>
 | 
			
		||||
                    <li class="divider fg-lightGray"></li>
 | 
			
		||||
                    <li class="disabled grblCalibrationMenu" onclick="xstepscalibrate();"><a href="#"><i class="fas fa-wrench fa-fw"></i> Calibrate X-Axes Steps/mm</a></li>
 | 
			
		||||
                    <li class="disabled grblCalibrationMenu" onclick="ystepscalibrate();"><a href="#"><i class="fas fa-wrench fa-fw"></i> Calibrate Y-Axes Steps/mm</a></li>
 | 
			
		||||
| 
						 | 
				
			
			@ -354,7 +358,6 @@
 | 
			
		|||
                    <li class="divider"></li>
 | 
			
		||||
                    <li onclick="disableSerialLog =! disableSerialLog; saveDiagnostics(); location.reload();" id="disableSerialLogTick"><a href="#"><i class="fas fa-fw fa-terminal"></i> Disable Serial Log</a></li>
 | 
			
		||||
                    <li onclick="disableDROupdates = !disableDROupdates; saveDiagnostics(); location.reload();" id="disableDROupdatesTick"><a href="#"><i class="fas fa-fw fa-list-ol"></i> Disable DRO/Status Updates</a></li>
 | 
			
		||||
                  </ul>
 | 
			
		||||
                </div>
 | 
			
		||||
                <span class="title">Settings</span>
 | 
			
		||||
              </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -437,6 +440,9 @@
 | 
			
		|||
                          <ul class="d-menu context drop-shadow drop-right" data-role="dropdown">
 | 
			
		||||
                            <li><a href="#" onclick="sendGcode( 'G0 X0')"><span class="fas fa-chart-line fg-red icon"></span>Goto X0 (Work Coord) (G0 X0)</a></li>
 | 
			
		||||
                            <li id="gotoXzeroMpos"><a href="#" onclick="sendGcode( 'G53 G0 X0')"><span class="fas fa-chart-line fg-red icon"></span>Goto X0 (Machine Coord) (G53 G0 X0)</a></li>
 | 
			
		||||
                            <li class="divider"></li>
 | 
			
		||||
                            <li class="needsXYZProbe"><a href="#" onclick="openProbeXDialog()"><span class="fas fa-podcast fa-rotate-180 fg-blue icon"></span>Probe X-Zero Wizard</a></li>
 | 
			
		||||
                            <li class="needsXYZProbe"><a href="#" onclick="openProbeDialog()"><span class="fas fa-podcast fa-rotate-180 fg-blue icon"></span>Probe XYZ-Zero Wizard</a></li>
 | 
			
		||||
                          </ul>
 | 
			
		||||
                        </div>
 | 
			
		||||
                      </td>
 | 
			
		||||
| 
						 | 
				
			
			@ -469,6 +475,9 @@
 | 
			
		|||
                          <ul class="d-menu context drop-shadow drop-right" data-role="dropdown">
 | 
			
		||||
                            <li><a href="#" onclick="sendGcode( 'G0 Y0')"><span class="fas fa-chart-line fg-green icon"></span>Goto Y0 (Work Coord) (G0 Y0)</a></li>
 | 
			
		||||
                            <li id="gotoYzeroMpos"><a href="#" onclick="sendGcode( 'G53 G0 Y0')"><span class="fas fa-chart-line fg-green icon"></span>Goto Y0 (Machine Coord) (G53 G0 Y0)</a></li>
 | 
			
		||||
                            <li class="divider"></li>
 | 
			
		||||
                            <li class="needsXYZProbe"><a href="#" onclick="openProbeYDialog()"><span class="fas fa-podcast fa-rotate-180 fg-blue icon"></span>Probe Y-Zero Wizard</a></li>
 | 
			
		||||
                            <li class="needsXYZProbe"><a href="#" onclick="openProbeDialog()"><span class="fas fa-podcast fa-rotate-180 fg-blue icon"></span>Probe XYZ-Zero Wizard</a></li>
 | 
			
		||||
                          </ul>
 | 
			
		||||
                        </div>
 | 
			
		||||
                      </td>
 | 
			
		||||
| 
						 | 
				
			
			@ -502,7 +511,9 @@
 | 
			
		|||
                            <li><a href="#" onclick="sendGcode( 'G0 Z0')"><span class="fas fa-chart-line fg-blue icon"></span>Goto Z0 (Work Coord) (G0 Z0)</a></li>
 | 
			
		||||
                            <li id="gotoZzeroMpos"><a href="#" onclick="sendGcode( 'G53 G0 Z0')"><span class="fas fa-chart-line fg-blue icon"></span>Goto Z0 (Machine Coord) (G53 G0 Z0)</a></li>
 | 
			
		||||
                            <li class="divider"></li>
 | 
			
		||||
                            <li><a href="#" onclick="z0probe()"><span class="fas fa-podcast fa-rotate-180 fg-blue icon"></span>Probe Z0 Wizard</a></li>
 | 
			
		||||
                            <!-- <li><a href="#" onclick="z0probe()()"><span class="fas fa-podcast fa-rotate-180 fg-blue icon"></span>Probe Z-Zero Wizard</a></li> -->
 | 
			
		||||
                            <li class="needsXYZProbe"><a href="#" onclick="openProbeZDialog()"><span class="fas fa-podcast fa-rotate-180 fg-blue icon"></span>Probe Z-Zero Wizard with XYZ Plate</a></li>
 | 
			
		||||
                            <li class="needsXYZProbe"><a href="#" onclick="openProbeDialog()"><span class="fas fa-podcast fa-rotate-180 fg-blue icon"></span>Probe XYZ-Zero Wizard</a></li>
 | 
			
		||||
                          </ul>
 | 
			
		||||
                        </div>
 | 
			
		||||
                      </td>
 | 
			
		||||
| 
						 | 
				
			
			@ -1190,16 +1201,13 @@
 | 
			
		|||
            <li>Launches the installer for the new version</li>
 | 
			
		||||
          </ul>
 | 
			
		||||
          <small>You may want to wait until your machine is idle before continuing</small>
 | 
			
		||||
          <small id="changelogupdate"></small>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="dialog-actions">
 | 
			
		||||
          <button class="button js-dialog-close">Not right now please</button>
 | 
			
		||||
          <button class="button success js-dialog-close" onclick="socket.emit('applyUpdate', true)">OK, Proceed with Update</button>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <!-- Modal Divs -->
 | 
			
		||||
    <div style="display: none;">
 | 
			
		||||
 | 
			
		||||
      <div class="dialog dark" data-overlay-click-close="true" data-role="dialog" id="jogWidgetDialog">
 | 
			
		||||
        <div class="dialog-title"><i class="fas fa-mobile-alt"></i> Jog Widget</div>
 | 
			
		||||
| 
						 | 
				
			
			@ -1232,18 +1240,237 @@
 | 
			
		|||
          <button class="button js-dialog-close">Close</button>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <!-- XYZ Probe -->
 | 
			
		||||
      <div class="dialog dark" id="xyzProbeWindow" data-role="dialog" data-overlay-click-close="true" data-to-top="true" data-width="800">
 | 
			
		||||
        <div class="dialog-title">Probing Wizard</div>
 | 
			
		||||
        <div class="dialog-content" style="max-height: calc(100vh - 100px);overflow-y: auto; overflow-x: hidden;">
 | 
			
		||||
          <nav data-role="ribbonmenu">
 | 
			
		||||
            <ul class="tabs-holder">
 | 
			
		||||
              <li onclick="probexyztab();" class="probetabxyz" id="probexyztab"><a href="#">XYZ-Zero</a></li>
 | 
			
		||||
              <li onclick="probextab();" class="probetabxyz" id="probextab"><a href="#">X-Zero</a></li>
 | 
			
		||||
              <li onclick="probeytab();" class="probetabxyz" id="probeytab"><a href="#">Y-Zero</a></li>
 | 
			
		||||
              <li onclick="probeztab();" class="probetabxyz" id="probeztab"><a href="#">Z-Zero</a></li>
 | 
			
		||||
              <li onclick="probezplatetab();" class="probetabz" id="probezplatetab" style="display: none;"><a href="#">Z Touch Plate</a></li>
 | 
			
		||||
              <li onclick="probeautotab();" class="probetabxyz disabled" id="probeautotab"><a href="#">Automatic</a></li>
 | 
			
		||||
              <li onclick="probeendmilltab();" class="probetabxyz disabled" id="probeendmilltab"><a href="#">Endmill Diameter</a></li>
 | 
			
		||||
            </ul>
 | 
			
		||||
          </nav>
 | 
			
		||||
 | 
			
		||||
          <table>
 | 
			
		||||
            <tr>
 | 
			
		||||
 | 
			
		||||
              <td>
 | 
			
		||||
                <div>
 | 
			
		||||
                  <img src="./img/xyzprobe/auto.png" alt="probe-auto" height="350" id="img-probe-auto" class="img-probe">
 | 
			
		||||
                  <img src="./img/xyzprobe/xyz.png" alt="probe-xyz" height="350" id="img-probe-xyz" class="img-probe" style="display: none;">
 | 
			
		||||
                  <img src="./img/xyzprobe/x.png" alt="probe-x" height="350" id="img-probe-x" class="img-probe" style="display: none;">
 | 
			
		||||
                  <img src="./img/xyzprobe/y.png" alt="probe-y" height="350" id="img-probe-y" class="img-probe" style="display: none;">
 | 
			
		||||
                  <img src="./img/xyzprobe/z.png" alt="probe-z" height="350" id="img-probe-z" class="img-probe" style="display: none;">
 | 
			
		||||
                  <img src="./img/xyzprobe/zplate.png" alt="probe-zplate" height="350" id="img-probe-zplate" class="img-probe" style="display: none;">
 | 
			
		||||
                  <img src="./img/xyzprobe/endmill.png" alt="probe-endmill" height="350" id="img-probe-endmill" class="img-probe" style="display: none;">
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
              </td>
 | 
			
		||||
 | 
			
		||||
              <td style="padding: 4px; padding-left: 15px; vertical-align: top;">
 | 
			
		||||
 | 
			
		||||
                <div id="probe-auto" class="probe-tab-content" style="display: none;">
 | 
			
		||||
                  <small>Automatic Probe Routine: This routine is used to find the XYZ origins, as well as automatically
 | 
			
		||||
                    determine endmill diameter. </small>
 | 
			
		||||
                  <hr>
 | 
			
		||||
                  <small>Position the endmill above the hole in the probe plate as shown to the left just above the plate, clip
 | 
			
		||||
                    on the magnetic connecting clip, then click Probe</small>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div id="probe-xyz" class="probe-tab-content">
 | 
			
		||||
                  <small>XYZ Probe Routine: This routine is used to find the XYZ origins</small>
 | 
			
		||||
                  <hr>
 | 
			
		||||
                  <small>Position the endmill above the hole in the probe plate as shown to the left just above the plate, clip
 | 
			
		||||
                    on the magnetic connecting clip, then click Probe</small>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div id="probe-x" class="probe-tab-content" style="display: none;">
 | 
			
		||||
                  <small>X Probe Routine: This routine is used to find the X origin</small>
 | 
			
		||||
                  <hr>
 | 
			
		||||
                  <small>Position the endmill to the left of the probe plate as shown, clip on the magnetic connecting clip,
 | 
			
		||||
                    then click Probe</small>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div id="probe-y" class="probe-tab-content" style="display: none;">
 | 
			
		||||
                  <small>Y Probe Routine: This routine is used to find the Y origin</small>
 | 
			
		||||
                  <hr>
 | 
			
		||||
                  <small>Position the endmill in front of the probe plate as shown, clip on the magnetic connecting clip, then
 | 
			
		||||
                    click Probe</small>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div id="probe-z" class="probe-tab-content" style="display: none;">
 | 
			
		||||
                  <small>Z Probe Routine: This routine is used to find the Z origin</small>
 | 
			
		||||
                  <hr>
 | 
			
		||||
                  <small>Position the endmill above the probe plate as shown, clip on the magnetic connecting clip, then click
 | 
			
		||||
                    Probe</small>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div id="probe-endmill" class="probe-tab-content" style="display: none;">
 | 
			
		||||
                  <small>Endmill Probe Routine: This routine is used to find the Endmill Diameter</small>
 | 
			
		||||
                  <hr>
 | 
			
		||||
                  <small>Position the endmill above the hole in the probe plate as shown to the left just above the plate, clip
 | 
			
		||||
                    on the magnetic connecting clip, then click Probe</small>
 | 
			
		||||
                  <hr>
 | 
			
		||||
                  <small>
 | 
			
		||||
                    This operation will perform an XYZ probe to establish the plate position, then using the hole in the plate,
 | 
			
		||||
                    it will measure and calculate the Endmill Diameter and display it onscreen. <br>This operation will NOT set
 | 
			
		||||
                    any work-coordinates!
 | 
			
		||||
                  </small>
 | 
			
		||||
                </div>
 | 
			
		||||
                <hr>
 | 
			
		||||
                <div id="endmilldiameterform">
 | 
			
		||||
                  <label>Endmill Diameter</label>
 | 
			
		||||
                  <input id="probediameterxyz" type="number" value="6.35" data-role="input" data-append="mm" data-prepend="<img class='fa-fw' src='https://cam.openbuilds.com/images/endmilldia.svg' width='16px' height='16px'>"
 | 
			
		||||
                    data-clear-button="false">
 | 
			
		||||
                </div>
 | 
			
		||||
                <hr>
 | 
			
		||||
                <button class="button" id="toggle-probe-advanced"><i class="fas fa-fw fa-cogs"></i> Advanced</button>
 | 
			
		||||
                <div class="pos-relative">
 | 
			
		||||
                  <div data-role="collapse" data-toggle-element="#toggle-probe-advanced" data-collapsed="true" id="toggle-probe-advanced-content">
 | 
			
		||||
 | 
			
		||||
                    <div id="xyzdatum" class="probe-tab-content">
 | 
			
		||||
 | 
			
		||||
                      <small>Where is the XY Zero Datum / Origin in your CAM setup, relevant to the front-left corner we are
 | 
			
		||||
                        probing? </small>
 | 
			
		||||
                      <br>
 | 
			
		||||
 | 
			
		||||
                      <svg xmlns="http://www.w3.org/2000/svg" width="300" height="180" viewBox="0 0 79.375 47.625">
 | 
			
		||||
                        <style>
 | 
			
		||||
 | 
			
		||||
                        </style>
 | 
			
		||||
                        <defs>
 | 
			
		||||
                          <marker id="A" orient="auto" class="J">
 | 
			
		||||
                            <path transform="matrix(.4 0 0 .4 2.96 .4)" d="m-2.5-1c0 2.76-2.24 5-5 5s-5-2.24-5-5 2.24-5 5-5 5 2.24 5 5z" class="D K L" />
 | 
			
		||||
                          </marker>
 | 
			
		||||
                          <marker id="B" orient="auto" class="J">
 | 
			
		||||
                            <path transform="matrix(.4 0 0 .4 2.96 .4)" d="m-2.5-1c0 2.76-2.24 5-5 5s-5-2.24-5-5 2.24-5 5-5 5 2.24 5 5z" class="D K L" />
 | 
			
		||||
                          </marker>
 | 
			
		||||
                          <marker id="C" orient="auto" class="J">
 | 
			
		||||
                            <path transform="matrix(.8 0 0 .8 10 0)" d="M0 0l5-5-17.5 5L5 5z" class="D K L" />
 | 
			
		||||
                          </marker>
 | 
			
		||||
                          <marker id="D" orient="auto" class="J">
 | 
			
		||||
                            <path transform="matrix(.8 0 0 .8 10 0)" d="M0 0l5-5-17.5 5L5 5z" class="D K L" />
 | 
			
		||||
                          </marker>
 | 
			
		||||
                        </defs>
 | 
			
		||||
                        <g fill="#fff" class="D">
 | 
			
		||||
                          <g stroke-width=".132" class="B">
 | 
			
		||||
                            <path d="M7.195 7.363l15.94 28.46L70.758 31.1 47.99 5.015z" fill="#999" />
 | 
			
		||||
                            <path d="M23.133 35.823l-1.257 8.313 47.7-5.284 1.172-7.752z" fill="#ececec" />
 | 
			
		||||
                            <path d="M7.195 7.363l15.94 28.46-1.257 8.313-15.722-29.89z" fill="#ccc" />
 | 
			
		||||
                          </g>
 | 
			
		||||
                          <g stroke-width=".049" class="C N">
 | 
			
		||||
                            <path d="M7.198 7.363l63.74 25.952" />
 | 
			
		||||
                            <path d="M23.322 38.1L47.993 5.093" />
 | 
			
		||||
                          </g>
 | 
			
		||||
                          <g fill="none" stroke-width=".197" class="N">
 | 
			
		||||
                            <path d="M3.942 15.993L19.16 45.07" marker-start="url(#C)" marker-end="url(#A)" />
 | 
			
		||||
                            <path d="M70.118 41.003l-47.624 5.73" marker-start="url(#D)" marker-end="url(#B)" />
 | 
			
		||||
                          </g>
 | 
			
		||||
                          <g transform="matrix(.24595 -.020313 .020313 .24595 108.29 -158.287)">
 | 
			
		||||
                            <rect class="probe-label" id="probe-c" rx="5.925" height="16.422" width="59.717" y="682.21" x="-368.93" stroke-width=".987" class="B" />
 | 
			
		||||
                            <text id="probe-c-text" xml:space="preserve" letter-spacing="0" font-size="2.229" y="694.532" x="-339.852" class="C E F G H">
 | 
			
		||||
                              <tspan y="694.532" x="-330.852" class="I">CENTER</tspan>
 | 
			
		||||
                            </text>
 | 
			
		||||
                            <rect class="probe-label areaactive" id="probe-fl" rx="6.543" height="30.532" width="43.617" y="742.64" x="-423.17" class="B M" />
 | 
			
		||||
                            <text id="probe-fl-text" xml:space="preserve" letter-spacing="0" y="755.631" x="-401.459" class="C E F G H I">
 | 
			
		||||
                              <tspan y="755.631" x="-350">FRONT</tspan>
 | 
			
		||||
                              <tspan y="768.172" x="-350">LEFT</tspan>
 | 
			
		||||
                            </text>
 | 
			
		||||
                            <rect class="probe-label" id="probe-fr" rx="6.543" height="30.532" width="43.617" y="733.68" x="-239.82" class="B M" />
 | 
			
		||||
                            <text id="probe-fr-text" xml:space="preserve" letter-spacing="0" y="746.284" x="-217.439" class="C E F G H I">
 | 
			
		||||
                              <tspan y="746.284" x="-166">FRONT</tspan>
 | 
			
		||||
                              <tspan y="758.824" x="-169">RIGHT</tspan>
 | 
			
		||||
                            </text>
 | 
			
		||||
                            <rect class="probe-label" id="probe-rr" rx="6.543" height="30.532" width="43.617" y="621.52" x="-312.72" class="B M" />
 | 
			
		||||
                            <text id="probe-rr-text" xml:space="preserve" letter-spacing="0" y="633.759" x="-290.442" class="C E F G H I">
 | 
			
		||||
                              <tspan y="633.759" x="-239.442">REAR</tspan>
 | 
			
		||||
                              <tspan y="646.3" x="-242.442">RIGHT</tspan>
 | 
			
		||||
                            </text>
 | 
			
		||||
                            <rect class="probe-label" id="probe-rl" rx="6.543" height="30.532" width="43.617" y="616.07" x="-476.33" class="B M" />
 | 
			
		||||
                            <text id="probe-rl-text" xml:space="preserve" letter-spacing="0" y="628.815" x="-455.49" class="C E F G H I">
 | 
			
		||||
                              <tspan y="628.815" x="-404">REAR</tspan>
 | 
			
		||||
                              <tspan y="641.356" x="-404">LEFT</tspan>
 | 
			
		||||
                            </text></g>
 | 
			
		||||
                        </g>
 | 
			
		||||
                      </svg>
 | 
			
		||||
 | 
			
		||||
                      <br>
 | 
			
		||||
                      <small>If the origin is not Front, Left (Default): Then provide stock dimensions to calculate correct
 | 
			
		||||
                        offset of X0, Y0:</small>
 | 
			
		||||
                      <br>
 | 
			
		||||
                      <label>Width</label>
 | 
			
		||||
                      <input id="stockwidth" type="number" value="200" data-role="input" data-append="mm" data-prepend="<i class='fas fa-arrows-alt-h'></i>" data-clear-button="false">
 | 
			
		||||
                      <label>Length</label>
 | 
			
		||||
                      <input id="stocklength" type="number" value="200" data-role="input" data-append="mm" data-prepend="<i class='fas fa-arrows-alt-v'></i>" data-clear-button="false">
 | 
			
		||||
 | 
			
		||||
                    </div>
 | 
			
		||||
                    <!-- end xyzdatum-->
 | 
			
		||||
                  </div>
 | 
			
		||||
                </div>
 | 
			
		||||
              </td>
 | 
			
		||||
            </tr>
 | 
			
		||||
          </table>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="dialog-actions">
 | 
			
		||||
 | 
			
		||||
          <label>Probe Type: </label>
 | 
			
		||||
 | 
			
		||||
          <a class="button" id="context_toggle"><span id="probetypebtn"><span class="icon"><img src="./img/xyzprobe/xyztouch.png" /></span> Prototype OpenBuilds XYZ Probe</span></a>
 | 
			
		||||
          <ul class="d-menu context" data-role="dropdown" data-toggle-element="#context_toggle">
 | 
			
		||||
            <li onclick="probetype('protoxyz');"><a href="#"><span class="icon"><img src="./img/xyzprobe/xyztouch.png" /></span> Prototype OpenBuilds XYZ Probe</a></li>
 | 
			
		||||
            <li onclick="probetype('xyz');"><a href="#"><span class="icon"><img src="./img/xyzprobe/xyztouch.png" /></span> OpenBuilds XYZ Probe</a></li>
 | 
			
		||||
            <li onclick="probetype('z');"><a href="#"><span class="icon"><img src="./img/xyzprobe/ztouch.png" /></span>OpenBuilds Z Touch Plate</a></li>
 | 
			
		||||
            <li class="divider"></li>
 | 
			
		||||
            <!-- li  onclick="probetype('custom');"><a href="#">Custom</a></li -->
 | 
			
		||||
          </ul>
 | 
			
		||||
          <span style="padding-left: 200px;"></span>
 | 
			
		||||
          <button class="button js-dialog-close" onclick="Metro.dialog.close('#xyzProbeWindow');">Cancel</button>
 | 
			
		||||
          <button class="button success js-dialog-close" onclick="confirmProbeInPlace();">Probe</button>
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <!-- End XYZ Probe -->
 | 
			
		||||
 | 
			
		||||
      <!-- XYZ Probe confirmation -->
 | 
			
		||||
      <div class="dialog dark" id="confirmXYZprobeModal" data-role="dialog" data-overlay-click-close="true">
 | 
			
		||||
        <div class="dialog-title"><i class='fas fa-podcast' data-fa-transform='rotate-180'></i> Confirm Probe Hardware</div>
 | 
			
		||||
        <div class="dialog-content" id="confirmXYZprobeDiv">
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="dialog-actions">
 | 
			
		||||
          <div class="float-right">
 | 
			
		||||
            <button class="button js-dialog-close">Cancel</button>
 | 
			
		||||
            <button onclick="runProbeNew()" class="button success js-dialog-close">Probe</button>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <!-- end XYZ Probe confirmation -->
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      <!-- job completion confirmation -->
 | 
			
		||||
      <div class="dialog dark" id="completeMsgModal" data-role="dialog" data-overlay-click-close="true">
 | 
			
		||||
        <div class="dialog-title"><i class='far fa-check-square'></i> Completed</div>
 | 
			
		||||
        <div class="dialog-content" id="completeMsgDiv">
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="dialog-actions">
 | 
			
		||||
          <div class="float-right">
 | 
			
		||||
            <button class="button primary js-dialog-close">OK</button>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <!-- end job completion confirmation -->
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
  </body>
 | 
			
		||||
 | 
			
		||||
  <script type="x-shader/x-vertex" id="vertexShader">
 | 
			
		||||
    varying vec3 vWorldPosition; void main() { vec4 worldPosition = modelMatrix * vec4( position, 1.0 ); vWorldPosition = worldPosition.xyz; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }
 | 
			
		||||
 | 
			
		||||
</script>
 | 
			
		||||
  </script>
 | 
			
		||||
  <script type="x-shader/x-fragment" id="fragmentShader">
 | 
			
		||||
    uniform vec3 topColor; uniform vec3 bottomColor; uniform float offset; uniform float exponent; varying vec3 vWorldPosition; void main() { float h = normalize( vWorldPosition + offset ).z; gl_FragColor = vec4( mix( bottomColor, topColor, max( pow( max(
 | 
			
		||||
  h , 0.0), exponent ), 0.0 ) ), 1.0 ); }
 | 
			
		||||
    h , 0.0), exponent ), 0.0 ) ), 1.0 ); }
 | 
			
		||||
 | 
			
		||||
</script>
 | 
			
		||||
  </script>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  <script type="text/javascript" src="lib/fontawesome5/js/all.min.js"></script>
 | 
			
		||||
| 
						 | 
				
			
			@ -1303,6 +1530,7 @@
 | 
			
		|||
  <script type="text/javascript" src="js/calibrate-servo.js"></script>
 | 
			
		||||
 | 
			
		||||
  <script type="text/javascript" src="js/probe.js"></script>
 | 
			
		||||
  <script type="text/javascript" src="js/probev2.js"></script>
 | 
			
		||||
 | 
			
		||||
  <script type="text/javascript" src="wizards/surfacing.js"></script>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,7 @@ function saveDiagnostics() {
 | 
			
		|||
  localStorage.setItem('disable3Dgcodepreview', disable3Dgcodepreview);
 | 
			
		||||
  localStorage.setItem('disableSerialLog', disableSerialLog);
 | 
			
		||||
  localStorage.setItem('disableDROupdates', disableDROupdates);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function initDiagnostics() {
 | 
			
		||||
| 
						 | 
				
			
			@ -81,6 +82,7 @@ function initDiagnostics() {
 | 
			
		|||
  } else {
 | 
			
		||||
    disableDROupdates = false;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
initDiagnostics();
 | 
			
		||||
| 
						 | 
				
			
			@ -17,6 +17,15 @@ function getChangelog() {
 | 
			
		|||
    }
 | 
			
		||||
    template2 += `</ul>`
 | 
			
		||||
    $("#changelog").html(template2);
 | 
			
		||||
    var template3 = `Changelog: <hr> <ul>`
 | 
			
		||||
    for (var line = 0; line < 3; line++) {
 | 
			
		||||
      template3 += '<li>' + lines[line] + '</li>'
 | 
			
		||||
    }
 | 
			
		||||
    template3 += `</ul>`
 | 
			
		||||
 | 
			
		||||
    $("#changelogupdate").html(template3);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,517 @@
 | 
			
		|||
var protoxyzprobeplate = {
 | 
			
		||||
  xoffset: 6,
 | 
			
		||||
  yoffset: 6,
 | 
			
		||||
  zoffset: 5,
 | 
			
		||||
  name: "Prototype OpenBuilds XYZ Touchplate",
 | 
			
		||||
  xyzmode: true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var xyzprobeplate = {
 | 
			
		||||
  xoffset: 10,
 | 
			
		||||
  yoffset: 10,
 | 
			
		||||
  zoffset: 9,
 | 
			
		||||
  name: "OpenBuilds XYZ Touchplate",
 | 
			
		||||
  xyzmode: true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var zprobeplate = {
 | 
			
		||||
  xoffset: 0,
 | 
			
		||||
  yoffset: 0,
 | 
			
		||||
  zoffset: 20,
 | 
			
		||||
  name: "OpenBuilds Z Touchplate",
 | 
			
		||||
  xyzmode: false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var probemode = {
 | 
			
		||||
  mode: "auto", // auto, xyz, xzero, yzero, zzero, zplate, endmilldia
 | 
			
		||||
  endmilldia: 0,
 | 
			
		||||
  stock: {
 | 
			
		||||
    x: 0,
 | 
			
		||||
    y: 0,
 | 
			
		||||
    position: "fl" // fl, fr, rl, rr, c
 | 
			
		||||
  },
 | 
			
		||||
  plate: {
 | 
			
		||||
    traveldistance: 25,
 | 
			
		||||
    thickness: 20,
 | 
			
		||||
    feedrate: 500
 | 
			
		||||
  },
 | 
			
		||||
  probe: protoxyzprobeplate,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// still beta, lets hide it from users
 | 
			
		||||
// if (!enableBetaFeatures) {
 | 
			
		||||
//   $(".needsXYZProbe").hide();
 | 
			
		||||
// }
 | 
			
		||||
 | 
			
		||||
function openProbeDialog() {
 | 
			
		||||
  Metro.dialog.open("#xyzProbeWindow");
 | 
			
		||||
  if (localStorage.getItem('probeType')) {
 | 
			
		||||
    probetype(localStorage.getItem('probeType'))
 | 
			
		||||
    if (localStorage.getItem('probeType') == "z") {
 | 
			
		||||
      setTimeout(function() {
 | 
			
		||||
        probezplatetab()
 | 
			
		||||
        $(".probetabxyz").removeClass("active")
 | 
			
		||||
        $("#probezplatetab").addClass("active")
 | 
			
		||||
      }, 100)
 | 
			
		||||
    } else {
 | 
			
		||||
      setTimeout(function() {
 | 
			
		||||
        probexyztab()
 | 
			
		||||
        $(".probetabxyz").removeClass("active")
 | 
			
		||||
        $("#probexyztab").addClass("active")
 | 
			
		||||
      }, 100)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function openProbeXDialog() {
 | 
			
		||||
  Metro.dialog.open("#xyzProbeWindow");
 | 
			
		||||
  if (localStorage.getItem('probeType')) {
 | 
			
		||||
    probetype(localStorage.getItem('probeType'))
 | 
			
		||||
    if (localStorage.getItem('probeType') == "z") {
 | 
			
		||||
      // setTimeout(function() {
 | 
			
		||||
      //   probezplatetab()
 | 
			
		||||
      //   $(".probetabxyz").removeClass("active")
 | 
			
		||||
      //   $("#probezplatetab").addClass("active")
 | 
			
		||||
      // }, 100)
 | 
			
		||||
    } else {
 | 
			
		||||
      setTimeout(function() {
 | 
			
		||||
        probextab()
 | 
			
		||||
        $(".probetabxyz").removeClass("active")
 | 
			
		||||
        $("#probextab").addClass("active")
 | 
			
		||||
      }, 100)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function openProbeYDialog() {
 | 
			
		||||
  Metro.dialog.open("#xyzProbeWindow");
 | 
			
		||||
  if (localStorage.getItem('probeType')) {
 | 
			
		||||
    probetype(localStorage.getItem('probeType'))
 | 
			
		||||
    if (localStorage.getItem('probeType') == "z") {
 | 
			
		||||
      // setTimeout(function() {
 | 
			
		||||
      //   probezplatetab()
 | 
			
		||||
      //   $(".probetabxyz").removeClass("active")
 | 
			
		||||
      //   $("#probezplatetab").addClass("active")
 | 
			
		||||
      // }, 100)
 | 
			
		||||
    } else {
 | 
			
		||||
      setTimeout(function() {
 | 
			
		||||
        probeytab()
 | 
			
		||||
        $(".probetabxyz").removeClass("active")
 | 
			
		||||
        $("#probeytab").addClass("active")
 | 
			
		||||
      }, 100)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function openProbeZDialog() {
 | 
			
		||||
  Metro.dialog.open("#xyzProbeWindow");
 | 
			
		||||
  if (localStorage.getItem('probeType')) {
 | 
			
		||||
    probetype(localStorage.getItem('probeType'))
 | 
			
		||||
    if (localStorage.getItem('probeType') == "z") {
 | 
			
		||||
      setTimeout(function() {
 | 
			
		||||
        probezplatetab()
 | 
			
		||||
        $(".probetabxyz").removeClass("active")
 | 
			
		||||
        $("#probezplatetab").addClass("active")
 | 
			
		||||
      }, 100)
 | 
			
		||||
    } else {
 | 
			
		||||
      setTimeout(function() {
 | 
			
		||||
        probeztab()
 | 
			
		||||
        $(".probetabxyz").removeClass("active")
 | 
			
		||||
        $("#probeztab").addClass("active")
 | 
			
		||||
      }, 100)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function probeautotab() {
 | 
			
		||||
  probemode.mode = "auto"; // auto, xyz, xzero, yzero, zzero, zplate, endmilldia
 | 
			
		||||
  $(".probe-tab-content").hide();
 | 
			
		||||
  $("#probe-auto").show();
 | 
			
		||||
  $("#xyzdatum").show();
 | 
			
		||||
  $(".img-probe").hide();
 | 
			
		||||
  $("#img-probe-auto").show();
 | 
			
		||||
  $("#toggle-probe-advanced").show();
 | 
			
		||||
  $("#endmilldiameterform").hide();
 | 
			
		||||
  if (probemode.stock.position == "fl") {
 | 
			
		||||
    $("#toggle-probe-advanced-content").data('collapse').collapse()
 | 
			
		||||
  } else {
 | 
			
		||||
    $("#toggle-probe-advanced-content").data('collapse').expand()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function probexyztab() {
 | 
			
		||||
  probemode.mode = "xyz"; // auto, xyz, xzero, yzero, zzero, zplate, endmilldia
 | 
			
		||||
  $(".probe-tab-content").hide();
 | 
			
		||||
  $("#probe-xyz").show();
 | 
			
		||||
  $("#xyzdatum").show();
 | 
			
		||||
  $(".img-probe").hide();
 | 
			
		||||
  $("#img-probe-xyz").show();
 | 
			
		||||
  $("#toggle-probe-advanced").show();
 | 
			
		||||
  $("#endmilldiameterform").show();
 | 
			
		||||
  if (probemode.stock.position == "fl") {
 | 
			
		||||
    $("#toggle-probe-advanced-content").data('collapse').collapse()
 | 
			
		||||
  } else {
 | 
			
		||||
    $("#toggle-probe-advanced-content").data('collapse').expand()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function probextab() {
 | 
			
		||||
  probemode.mode = "xzero"; // auto, xyz, xzero, yzero, zzero, zplate, endmilldia
 | 
			
		||||
  resetOffsetFL();
 | 
			
		||||
  $(".probe-tab-content").hide();
 | 
			
		||||
  $("#probe-x").show();
 | 
			
		||||
  $("#xyzdatum").hide();
 | 
			
		||||
  $(".img-probe").hide();
 | 
			
		||||
  $("#img-probe-x").show();
 | 
			
		||||
  $("#toggle-probe-advanced").hide();
 | 
			
		||||
  $("#endmilldiameterform").show();
 | 
			
		||||
  $("#toggle-probe-advanced-content").data('collapse').collapse()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function probeytab() {
 | 
			
		||||
  probemode.mode = "yzero"; // auto, xyz, xzero, yzero, zzero, zplate, endmilldia
 | 
			
		||||
  resetOffsetFL();
 | 
			
		||||
  $(".probe-tab-content").hide();
 | 
			
		||||
  $("#probe-y").show();
 | 
			
		||||
  $("#xyzdatum").hide();
 | 
			
		||||
  $(".img-probe").hide();
 | 
			
		||||
  $("#img-probe-y").show();
 | 
			
		||||
  $("#toggle-probe-advanced").hide();
 | 
			
		||||
  $("#endmilldiameterform").show();
 | 
			
		||||
  $("#toggle-probe-advanced-content").data('collapse').collapse()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function probeztab() {
 | 
			
		||||
  probemode.mode = "zzero"; // auto, xyz, xzero, yzero, zzero, zplate, endmilldia
 | 
			
		||||
  resetOffsetFL();
 | 
			
		||||
  $(".probe-tab-content").hide();
 | 
			
		||||
  $("#probe-z").show();
 | 
			
		||||
  $("#xyzdatum").hide();
 | 
			
		||||
  $(".img-probe").hide();
 | 
			
		||||
  $("#img-probe-z").show();
 | 
			
		||||
  $("#toggle-probe-advanced").hide();
 | 
			
		||||
  $("#endmilldiameterform").hide();
 | 
			
		||||
  $("#toggle-probe-advanced-content").data('collapse').collapse()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function probezplatetab() {
 | 
			
		||||
  probemode.mode = "zplate"; // auto, xyz, xzero, yzero, zzero, zplate, endmilldia
 | 
			
		||||
  resetOffsetFL();
 | 
			
		||||
  $(".probe-tab-content").hide();
 | 
			
		||||
  $("#probe-z").show();
 | 
			
		||||
  $("#xyzdatum").hide();
 | 
			
		||||
  $(".img-probe").hide();
 | 
			
		||||
  $("#img-probe-zplate").show();
 | 
			
		||||
  $("#toggle-probe-advanced").hide();
 | 
			
		||||
  $("#endmilldiameterform").hide();
 | 
			
		||||
  $("#toggle-probe-advanced-content").data('collapse').expand()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function probeendmilltab() {
 | 
			
		||||
  probemode.mode = "endmilldia"; // auto, xyz, xzero, yzero, zzero, zplate, endmilldia
 | 
			
		||||
  resetOffsetFL();
 | 
			
		||||
  $(".probe-tab-content").hide();
 | 
			
		||||
  $("#probe-endmill").show();
 | 
			
		||||
  $("#xyzdatum").hide();
 | 
			
		||||
  $(".img-probe").hide();
 | 
			
		||||
  $("#img-probe-endmill").show();
 | 
			
		||||
  $("#toggle-probe-advanced").hide();
 | 
			
		||||
  $("#endmilldiameterform").hide();
 | 
			
		||||
  $("#toggle-probe-advanced-content").data('collapse').collapse()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function resetOffsetFL() {
 | 
			
		||||
  $(".probe-label").removeClass("areaactive")
 | 
			
		||||
  $("#probe-fl").addClass("areaactive")
 | 
			
		||||
  probemode.stock.position = "fl" // fl, fr, rl, rr, c
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$("#probe-fl, #probe-fl-text").on("click", function() {
 | 
			
		||||
  resetOffsetFL();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
$("#probe-fr, #probe-fr-text").on("click", function() {
 | 
			
		||||
  $(".probe-label").removeClass("areaactive")
 | 
			
		||||
  $("#probe-fr").addClass("areaactive")
 | 
			
		||||
  probemode.stock.position = "fr" // fl, fr, rl, rr, c
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
$("#probe-rl, #probe-rl-text").on("click", function() {
 | 
			
		||||
  $(".probe-label").removeClass("areaactive")
 | 
			
		||||
  $("#probe-rl").addClass("areaactive")
 | 
			
		||||
  probemode.stock.position = "rl" // fl, fr, rl, rr, c
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
$("#probe-rr, #probe-rr-text").on("click", function() {
 | 
			
		||||
  $(".probe-label").removeClass("areaactive")
 | 
			
		||||
  $("#probe-rr").addClass("areaactive")
 | 
			
		||||
  probemode.stock.position = "rr" // fl, fr, rl, rr, c
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
$("#probe-c, #probe-c-text").on("click", function() {
 | 
			
		||||
  $(".probe-label").removeClass("areaactive")
 | 
			
		||||
  $("#probe-c").addClass("areaactive")
 | 
			
		||||
  probemode.stock.position = "c" // fl, fr, rl, rr, c
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
function probetype(type) {
 | 
			
		||||
  localStorage.setItem('probeType', type);
 | 
			
		||||
  if (type == "xyz") {
 | 
			
		||||
    probemode.probe = xyzprobeplate // protoxyzprobeplate, xyzprobeplate, zprobeplate
 | 
			
		||||
    var template = `<span class="icon"><img src="https://i.ibb.co/QkxzYN8/xyztouch.png"/></span> OpenBuilds XYZ Probe`;
 | 
			
		||||
    $("#probetypebtn").html(template)
 | 
			
		||||
    $(".probetabz").hide();
 | 
			
		||||
    $(".probetabxyz").show();
 | 
			
		||||
    probexyztab()
 | 
			
		||||
  } else if (type == "protoxyz") {
 | 
			
		||||
    probemode.probe = protoxyzprobeplate // protoxyzprobeplate, xyzprobeplate, zprobeplate
 | 
			
		||||
    var template = `<span class="icon"><img src="https://i.ibb.co/QkxzYN8/xyztouch.png"/></span> Prototype OpenBuilds XYZ Probe`;
 | 
			
		||||
    $("#probetypebtn").html(template)
 | 
			
		||||
    $(".probetabz").hide();
 | 
			
		||||
    $(".probetabxyz").show();
 | 
			
		||||
    probexyztab()
 | 
			
		||||
  } else if (type == "z") {
 | 
			
		||||
    probemode.probe = zprobeplate // protoxyzprobeplate, xyzprobeplate, zprobeplate
 | 
			
		||||
    var template = `<span class="icon"><img src="https://i.ibb.co/CQ7rSW6/ztouch.png"/></span>OpenBuilds Z Touch Plate`;
 | 
			
		||||
    $("#probetypebtn").html(template)
 | 
			
		||||
    $(".probetabxyz").hide();
 | 
			
		||||
    $(".probetabz").show();
 | 
			
		||||
    probezplatetab();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function confirmProbeInPlace(operation) {
 | 
			
		||||
 | 
			
		||||
  var imgurl = "./img/xyzprobe/xyz.png"
 | 
			
		||||
  if (probemode.mode == "xyz") { // auto, xyz, xzero, yzero, zzero, zplate, endmilldia
 | 
			
		||||
    imgurl = "./img/xyzprobe/xyz.png"
 | 
			
		||||
  } else if (probemode.mode == "xzero") { // auto, xyz, xzero, yzero, zzero, zplate, endmilldia
 | 
			
		||||
    imgurl = "./img/xyzprobe/x.png"
 | 
			
		||||
  } else if (probemode.mode == "yzero") { // auto, xyz, xzero, yzero, zzero, zplate, endmilldia
 | 
			
		||||
    imgurl = "./img/xyzprobe/y.png"
 | 
			
		||||
  } else if (probemode.mode == "zzero") { // auto, xyz, xzero, yzero, zzero, zplate, endmilldia
 | 
			
		||||
    imgurl = "./img/xyzprobe/z.png"
 | 
			
		||||
  } else if (probemode.mode == "zplate") { // auto, xyz, xzero, yzero, zzero, zplate, endmilldia
 | 
			
		||||
    imgurl = "./img/xyzprobe/zplate.png"
 | 
			
		||||
  } else if (probemode.mode == "endmilldia") { // auto, xyz, xzero, yzero, zzero, zplate, endmilldia
 | 
			
		||||
    imgurl = "./img/xyzprobe/endmill.png"
 | 
			
		||||
  } else if (probemode.mode == "auto") { // auto, xyz, xzero, yzero, zzero, zplate, endmilldia
 | 
			
		||||
    imgurl = "./img/xyzprobe/auto.png"
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  var confirmTemplate = `
 | 
			
		||||
  <table>
 | 
			
		||||
    <tr>
 | 
			
		||||
      <td><img src="` + imgurl + `" height="350" class="img-probe"/>
 | 
			
		||||
      </td>
 | 
			
		||||
      <td style="padding: 4px; vertical-align: middle;">
 | 
			
		||||
        <ul>
 | 
			
		||||
          <li>Are you sure the probe plate was placed onto the front, left corner of the stock/workpiece?</li>
 | 
			
		||||
          <li>Are you sure the probe clip is attached to the bit?</li>
 | 
			
		||||
          <li>Are you sure you jogged the bit to the correct approximate position as shown, prior to initiating the probe?</li>
 | 
			
		||||
        </ul>
 | 
			
		||||
      </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
  </table>
 | 
			
		||||
  `
 | 
			
		||||
 | 
			
		||||
  $("#confirmXYZprobeDiv").html(confirmTemplate);
 | 
			
		||||
  setTimeout(function() {
 | 
			
		||||
    Metro.dialog.open("#confirmXYZprobeModal")
 | 
			
		||||
  }, 100);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function runProbeNew() {
 | 
			
		||||
  $("#consoletab").click()
 | 
			
		||||
  probemode.stock.x = $("#stockwidth").val();
 | 
			
		||||
  probemode.stock.y = $("#stocklength").val();
 | 
			
		||||
 | 
			
		||||
  template = `Code todo: run: \n`
 | 
			
		||||
  template += `Mode: ` + probemode.mode + `\n`
 | 
			
		||||
  template += `Probe: ` + probemode.probe.name + `\n`
 | 
			
		||||
  template += `Probe: X:` + probemode.probe.xoffset + `\n`
 | 
			
		||||
  template += `Probe: Y:` + probemode.probe.yoffset + `\n`
 | 
			
		||||
  template += `Probe: Z:` + probemode.probe.zoffset + `\n`
 | 
			
		||||
 | 
			
		||||
  if (probemode.mode == "xyz" || probemode.mode == "xzero" || probemode.mode == "yzero" || probemode.mode == "zzero") {
 | 
			
		||||
    probemode.endmilldia = $("#probediameterxyz").val();
 | 
			
		||||
    template += `Endmill: ` + probemode.endmilldia + `mm\n`
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  var stockoffset = {
 | 
			
		||||
    x: 0,
 | 
			
		||||
    y: 0
 | 
			
		||||
  }
 | 
			
		||||
  if (probemode.stock.position == "fl") { // fl, fr, rl, rr, c
 | 
			
		||||
    template += `Offset: NONE\n`
 | 
			
		||||
  }
 | 
			
		||||
  if (probemode.stock.position == "fr") { // fl, fr, rl, rr, c
 | 
			
		||||
    template += `Stock x:` + probemode.stock.x + `\n`;
 | 
			
		||||
    template += `Stock y: ` + probemode.stock.y + `\n`;
 | 
			
		||||
    template += `Offset: Front Right:\n`;
 | 
			
		||||
    template += `Offset x:` + probemode.stock.x + `\n`;
 | 
			
		||||
    template += `Offset y: ` + 0 + `\n`;
 | 
			
		||||
    stockoffset.x = probemode.stock.x
 | 
			
		||||
  }
 | 
			
		||||
  if (probemode.stock.position == "rl") { // fl, fr, rl, rr, c
 | 
			
		||||
    template += `Stock x:` + probemode.stock.x + `\n`;
 | 
			
		||||
    template += `Stock y: ` + probemode.stock.y + `\n`;
 | 
			
		||||
    template += `Offset: Rear Left:\n`;
 | 
			
		||||
    template += `Offset x:` + 0 + `\n`;
 | 
			
		||||
    template += `Offset y: ` + probemode.stock.y + `\n`;
 | 
			
		||||
    stockoffset.y = probemode.stock.y
 | 
			
		||||
  }
 | 
			
		||||
  if (probemode.stock.position == "rr") { // fl, fr, rl, rr, c
 | 
			
		||||
    template += `Stock x:` + probemode.stock.x + `\n`;
 | 
			
		||||
    template += `Stock y: ` + probemode.stock.y + `\n`;
 | 
			
		||||
    template += `Offset: Rear Right:\n`;
 | 
			
		||||
    template += `Offset x:` + probemode.stock.x + `\n`;
 | 
			
		||||
    template += `Offset y: ` + probemode.stock.y + `\n`;
 | 
			
		||||
    stockoffset.x = probemode.stock.x
 | 
			
		||||
    stockoffset.y = probemode.stock.y
 | 
			
		||||
  }
 | 
			
		||||
  if (probemode.stock.position == "c") { // fl, fr, rl, rr, c
 | 
			
		||||
    template += `Stock x:` + probemode.stock.x + `\n`;
 | 
			
		||||
    template += `Stock y: ` + probemode.stock.y + `\n`;
 | 
			
		||||
    template += `Offset: Center:\n`;
 | 
			
		||||
    template += `Offset x:` + probemode.stock.x / 2 + `\n`;
 | 
			
		||||
    template += `Offset y: ` + probemode.stock.y / 2 + `\n`;
 | 
			
		||||
    stockoffset.x = probemode.stock.y / 2
 | 
			
		||||
    stockoffset.y = probemode.stock.y / 2
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // alert(template)
 | 
			
		||||
 | 
			
		||||
  if (probemode.mode == "xzero") {
 | 
			
		||||
    var xoffset = (probemode.probe.xoffset + probemode.endmilldia / 2) * -1 // *-1 to make negative as we are off to the left too far from x0
 | 
			
		||||
    var yoffset = (probemode.probe.yoffset + probemode.endmilldia / 2) * -1 // *-1 to make negative as we are off to the front too far from y0
 | 
			
		||||
    var zoffset = probemode.probe.zoffset // not *-1 as its offset in z pos
 | 
			
		||||
 | 
			
		||||
    var xmacro = `
 | 
			
		||||
    ; Header
 | 
			
		||||
    G21 ; mm mode
 | 
			
		||||
    G10 P1 L20 X0 ; zero out current location
 | 
			
		||||
 | 
			
		||||
    ; Probe X
 | 
			
		||||
    G38.2 X25 F100 ; Probe X
 | 
			
		||||
    G4 P0.4
 | 
			
		||||
    G10 P1 L20 X` + xoffset + ` ; set X as offset and half endmill diameter
 | 
			
		||||
    G0 X` + (xoffset - 2).toFixed(3) + `
 | 
			
		||||
    `
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    socket.emit('runJob', {
 | 
			
		||||
      data: xmacro,
 | 
			
		||||
      isJob: false,
 | 
			
		||||
      completedMsg: "Probe Complete: Remove the Probe Clip and Probe Plate before continuing... "
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (probemode.mode == "yzero") {
 | 
			
		||||
    var xoffset = (probemode.probe.xoffset + probemode.endmilldia / 2) * -1 // *-1 to make negative as we are off to the left too far from x0
 | 
			
		||||
    var yoffset = (probemode.probe.yoffset + probemode.endmilldia / 2) * -1 // *-1 to make negative as we are off to the front too far from y0
 | 
			
		||||
    var zoffset = probemode.probe.zoffset // not *-1 as its offset in z pos
 | 
			
		||||
 | 
			
		||||
    var ymacro = `
 | 
			
		||||
    ; Header
 | 
			
		||||
    G21 ; mm mode
 | 
			
		||||
    G10 P1 L20 Y0 ; zero out current location
 | 
			
		||||
 | 
			
		||||
    G38.2 Y25 F100 ; probe Y
 | 
			
		||||
    G4 P0.4
 | 
			
		||||
    G10 P1 L20 Y` + yoffset + ` ; set Y as offset and half endmill diameter
 | 
			
		||||
    G0 Y` + (yoffset - 2).toFixed(3) + `
 | 
			
		||||
    `
 | 
			
		||||
    socket.emit('runJob', {
 | 
			
		||||
      data: ymacro,
 | 
			
		||||
      isJob: false,
 | 
			
		||||
      completedMsg: "Probe Complete: Remove the Probe Clip and Probe Plate before continuing... "
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (probemode.mode == "zzero") {
 | 
			
		||||
    var xoffset = (probemode.probe.xoffset + probemode.endmilldia / 2) * -1 // *-1 to make negative as we are off to the left too far from x0
 | 
			
		||||
    var yoffset = (probemode.probe.yoffset + probemode.endmilldia / 2) * -1 // *-1 to make negative as we are off to the front too far from y0
 | 
			
		||||
    var zoffset = probemode.probe.zoffset // not *-1 as its offset in z pos
 | 
			
		||||
 | 
			
		||||
    var zmacro = `
 | 
			
		||||
    ; Header
 | 
			
		||||
    G21 ; mm mode
 | 
			
		||||
    G10 P1 L20 Z0 ; zero out current location
 | 
			
		||||
 | 
			
		||||
    ; Probe Z
 | 
			
		||||
    G38.2 Z-25 F100 ; Probe Z
 | 
			
		||||
    G4 P0.4
 | 
			
		||||
    G10 P1 L20 Z` + zoffset + ` ; Set Z6 where 6 is thickness of plate
 | 
			
		||||
    G0 Z10 ; retract
 | 
			
		||||
    `
 | 
			
		||||
 | 
			
		||||
    socket.emit('runJob', {
 | 
			
		||||
      data: zmacro,
 | 
			
		||||
      isJob: false,
 | 
			
		||||
      completedMsg: "Probe Complete: Remove the Probe Clip and Probe Plate before continuing... "
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (probemode.mode == "xyz") {
 | 
			
		||||
    var xoffset = (probemode.probe.xoffset + probemode.endmilldia / 2) * -1 // *-1 to make negative as we are off to the left too far from x0
 | 
			
		||||
    var yoffset = (probemode.probe.yoffset + probemode.endmilldia / 2) * -1 // *-1 to make negative as we are off to the front too far from y0
 | 
			
		||||
    var zoffset = probemode.probe.zoffset // not *-1 as its offset in z pos
 | 
			
		||||
 | 
			
		||||
    var xyzmacro = `
 | 
			
		||||
    ; Header
 | 
			
		||||
    G21 ; mm mode
 | 
			
		||||
    G10 P1 L20 X0 Y0 Z0 ; zero out current location
 | 
			
		||||
 | 
			
		||||
    ; Probe Z
 | 
			
		||||
    G0 X22.5 Y22.5 ; position to center of logo
 | 
			
		||||
    G38.2 Z-25 F100 ; Probe Z
 | 
			
		||||
    G4 P0.4
 | 
			
		||||
    G10 P1 L20 Z` + zoffset + ` ; Set Z6 where 6 is thickness of plate
 | 
			
		||||
    G0 Z10 ; retract
 | 
			
		||||
    G0 X0 Y0 ; return
 | 
			
		||||
 | 
			
		||||
    ; Probe X
 | 
			
		||||
    G0 X-20 ; position to left side
 | 
			
		||||
    G0 Y15 ; and move forward a little to be closer to center of edge
 | 
			
		||||
    G0 Z0 ; drop down to be next to plate
 | 
			
		||||
    G38.2 X25 F100 ; Probe X
 | 
			
		||||
    G4 P0.4
 | 
			
		||||
    G10 P1 L20 X` + xoffset + ` ; set X as offset and half endmill diameter
 | 
			
		||||
    G0 X` + (xoffset - 2).toFixed(3) + `
 | 
			
		||||
    G0 Z10 ; retract
 | 
			
		||||
    G0 X0 Y0 ; return
 | 
			
		||||
 | 
			
		||||
    ; Probe Y
 | 
			
		||||
    G0 Y-20 ; position to front side
 | 
			
		||||
    G0 X15 ; and move right a little to be closer to center of edge
 | 
			
		||||
    G0 Z0 ; drop down to be next to plate
 | 
			
		||||
    G38.2 Y25 F100 ; probe Y
 | 
			
		||||
    G4 P0.4
 | 
			
		||||
    G10 P1 L20 Y` + yoffset + ` ; set Y as offset and half endmill diameter
 | 
			
		||||
    G0 Y` + (yoffset - 2).toFixed(3) + `
 | 
			
		||||
    G0 Z10 ; retract
 | 
			
		||||
    G0 X0 Y0 ; return
 | 
			
		||||
    `
 | 
			
		||||
 | 
			
		||||
    if (stockoffset.x != 0 || stockoffset.y != 0) {
 | 
			
		||||
      xyzmacro += `
 | 
			
		||||
      G10 P1 L20 X-` + stockoffset.x + ` ; set X stock offset
 | 
			
		||||
      G10 P1 L20 Y-` + stockoffset.y + ` ; set Y stock offset
 | 
			
		||||
      G0 X0 Y0 ; return
 | 
			
		||||
      `
 | 
			
		||||
    }
 | 
			
		||||
    socket.emit('runJob', {
 | 
			
		||||
      data: xyzmacro,
 | 
			
		||||
      isJob: false,
 | 
			
		||||
      completedMsg: "Probe Complete: Remove the Probe Clip and Probe Plate before continuing... "
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -8,6 +8,7 @@ function setConnectBar(val, status) {
 | 
			
		|||
    $("#flashBtn").hide();
 | 
			
		||||
    $('#portUSB').parent().show();
 | 
			
		||||
    $("#connectBtn").show();
 | 
			
		||||
    $("#driverBtn").show();
 | 
			
		||||
    if ($('#portUSB').val() != "") {
 | 
			
		||||
      $("#connectBtn").attr('disabled', false);
 | 
			
		||||
    } else {
 | 
			
		||||
| 
						 | 
				
			
			@ -29,6 +30,7 @@ function setConnectBar(val, status) {
 | 
			
		|||
    $('#connectStatus').html("Port: Connected");
 | 
			
		||||
    // Connect/Disconnect Button
 | 
			
		||||
    $("#connectBtn").hide();
 | 
			
		||||
    $("#driverBtn").hide();
 | 
			
		||||
    $('#portUSB').parent().hide();
 | 
			
		||||
    $("#connectBtn").attr('disabled', false);
 | 
			
		||||
    $("#disconnectBtn").show();
 | 
			
		||||
| 
						 | 
				
			
			@ -45,6 +47,7 @@ function setConnectBar(val, status) {
 | 
			
		|||
    $('#connectStatus').html("Port: Connected");
 | 
			
		||||
    // Connect/Disconnect Button
 | 
			
		||||
    $("#connectBtn").hide();
 | 
			
		||||
    $("#driverBtn").hide();
 | 
			
		||||
    $('#portUSB').parent().hide();
 | 
			
		||||
    $("#connectBtn").attr('disabled', false);
 | 
			
		||||
    $("#disconnectBtn").show();
 | 
			
		||||
| 
						 | 
				
			
			@ -61,6 +64,7 @@ function setConnectBar(val, status) {
 | 
			
		|||
    $('#connectStatus').html("Port: Connected");
 | 
			
		||||
    // Connect/Disconnect Button
 | 
			
		||||
    $("#connectBtn").hide();
 | 
			
		||||
    $("#driverBtn").hide();
 | 
			
		||||
    $('#portUSB').parent().hide();
 | 
			
		||||
    $("#connectBtn").attr('disabled', false);
 | 
			
		||||
    $("#disconnectBtn").show();
 | 
			
		||||
| 
						 | 
				
			
			@ -77,6 +81,7 @@ function setConnectBar(val, status) {
 | 
			
		|||
    $('#connectStatus').html("Port: Connected");
 | 
			
		||||
    // Connect/Disconnect Button
 | 
			
		||||
    $("#connectBtn").hide();
 | 
			
		||||
    $("#driverBtn").hide();
 | 
			
		||||
    $('#portUSB').parent().hide();
 | 
			
		||||
    $("#connectBtn").attr('disabled', false);
 | 
			
		||||
    $("#disconnectBtn").show();
 | 
			
		||||
| 
						 | 
				
			
			@ -92,6 +97,7 @@ function setConnectBar(val, status) {
 | 
			
		|||
    $('#connectStatus').html("Port: Flashing");
 | 
			
		||||
    // Connect/Disconnect Button
 | 
			
		||||
    $("#connectBtn").hide();
 | 
			
		||||
    $("#driverBtn").hide();
 | 
			
		||||
    $('#portUSB').parent().hide();
 | 
			
		||||
    $("#connectBtn").attr('disabled', false);
 | 
			
		||||
    $("#disconnectBtn").hide();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -116,6 +116,7 @@ function initSocket() {
 | 
			
		|||
    // 6 = Firmware Upgrade State
 | 
			
		||||
    if (laststatus.comms.connectionStatus < 3 && !continuousJogRunning) {
 | 
			
		||||
      $('#availVersion').html(data)
 | 
			
		||||
      getChangelog();
 | 
			
		||||
      Metro.dialog.open('#downloadUpdate')
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -153,7 +154,17 @@ function initSocket() {
 | 
			
		|||
  });
 | 
			
		||||
 | 
			
		||||
  socket.on("jobComplete", function(data) {
 | 
			
		||||
    console.log("Job Complete", data)
 | 
			
		||||
 | 
			
		||||
    console.log("jobComplete", data)
 | 
			
		||||
 | 
			
		||||
    if (data.completed) {
 | 
			
		||||
      console.log("Job Complete", data)
 | 
			
		||||
    }
 | 
			
		||||
    if (data.jobCompletedMsg && data.jobCompletedMsg.length > 0) {
 | 
			
		||||
      $("#completeMsgDiv").html(data.jobCompletedMsg);
 | 
			
		||||
      Metro.dialog.open("#completeMsgModal");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  socket.on("machinename", function(data) {
 | 
			
		||||
| 
						 | 
				
			
			@ -231,6 +242,9 @@ function initSocket() {
 | 
			
		|||
        }
 | 
			
		||||
      ]
 | 
			
		||||
    });
 | 
			
		||||
    setTimeout(function() {
 | 
			
		||||
      $(".closeAlarmBtn").focus();
 | 
			
		||||
    }, 200, )
 | 
			
		||||
    //
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -240,8 +254,18 @@ function initSocket() {
 | 
			
		|||
    Metro.dialog.create({
 | 
			
		||||
      title: "<i class='fas fa-exclamation-triangle'></i> Grbl Error:",
 | 
			
		||||
      content: "<i class='fas fa-exclamation-triangle fg-red'></i>  " + data,
 | 
			
		||||
      clsDialog: 'dark'
 | 
			
		||||
      clsDialog: 'dark',
 | 
			
		||||
      actions: [{
 | 
			
		||||
        caption: "OK",
 | 
			
		||||
        cls: "js-dialog-close alert closeErrorBtn",
 | 
			
		||||
        onclick: function() {
 | 
			
		||||
          socket.emit('clearAlarm', 2)
 | 
			
		||||
        }
 | 
			
		||||
      }]
 | 
			
		||||
    });
 | 
			
		||||
    setTimeout(function() {
 | 
			
		||||
      $(".closeErrorBtn").focus();
 | 
			
		||||
    }, 200, )
 | 
			
		||||
    //
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -586,7 +610,10 @@ function populatePortsMenu() {
 | 
			
		|||
    response += `<option value="` + laststatus.comms.interfaces.ports[i].comName + `">` + port.note + " " + laststatus.comms.interfaces.ports[i].comName.replace("/dev/tty.", "") + `</option>`;
 | 
			
		||||
  };
 | 
			
		||||
  if (!laststatus.comms.interfaces.ports.length) {
 | 
			
		||||
    response += `<option value="">Waiting for USB</option`
 | 
			
		||||
    response += `<option value="">Waiting for USB</option>`
 | 
			
		||||
    $("#driverBtn").show();
 | 
			
		||||
  } else {
 | 
			
		||||
    $("#driverBtn").hide();
 | 
			
		||||
  }
 | 
			
		||||
  response += `</optgroup></select>`
 | 
			
		||||
  var select = $("#portUSB").data("select");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
{
 | 
			
		||||
  "name": "OpenBuildsCONTROL",
 | 
			
		||||
  "version": "1.0.207",
 | 
			
		||||
  "version": "1.0.210", 
 | 
			
		||||
  "license": "AGPL-3.0",
 | 
			
		||||
  "description": "Machine Interface Driver for OpenBuilds",
 | 
			
		||||
  "author": "github.com/openbuilds <webmaster@openbuilds.com>",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
<svg class="quadrantField" width="65" height="65"><path class="bkg" d="M52.8,62.9H10.5c-5.5,0-10-4.5-10-10V10.5c0-5.5,4.5-10,10-10h42.3c5.5,0,10,4.5,10,10v42.3 C62.9,58.4,58.4,62.9,52.8,62.9z"></path><g class="area tl"><circle cx="11.8" cy="11.8" r="9.8"></circle><path id="XMLID_37_" d="M12.1,9.2h-1.7v7.4H8.5V9.2H6.7V7.4h5.5V9.2z"></path><path id="XMLID_39_" d="M12.9,16.6V7.4h1.9v7.4h2.7v1.7H12.9z"></path></g><g class="area tr"><circle cx="51.5" cy="11.8" r="9.8"></circle><path id="XMLID_13_" d="M51.1,9.2h-1.7v7.4h-1.9V9.2h-1.8V7.4h5.5V9.2z"></path><path id="XMLID_15_" d="M55.5,16.6l-1.1-3.3h-0.5v3.3h-1.9V8.7l1.4-1.3h3.9v5.8h-1l1.2,3.3H55.5z M55.3,11.6V9.2h-1.5v2.4H55.3z"></path></g><g class="area c"><circle cx="31.7" cy="31.7" r="9.8"></circle><path id="XMLID_19_" d="M32.5,34.7v-1.1h1.9v1.6l-1.3,1.3H29v-7.9l1.4-1.3h4v3.5h-1.9V29h-1.5v5.7H32.5z"></path></g><g class="area bl active"><circle cx="11.8" cy="51.5" r="9.8"></circle><path id="XMLID_30_" d="M12.3,52.5v3.8H8L6.7,55v-7.9h3.9l1.3,1.2v2.5L11,51.6L12.3,52.5z M10,50.8v-1.9H8.6v1.9H10z M10.3,54.5 v-2.1H8.6v2.1H10.3z"></path><path id="XMLID_34_" d="M13.1,56.3v-9.2H15v7.4h2.7v1.7H13.1z"></path></g><g class="area br"><circle cx="51.5" cy="51.5" r="9.8"></circle><path id="XMLID_22_" d="M51.2,52.5v3.8h-4.3L45.6,55v-7.9h3.9l1.3,1.2v2.5l-0.9,0.7L51.2,52.5z M48.9,50.8v-1.9h-1.4v1.9H48.9z M49.2,54.5v-2.1h-1.7v2.1H49.2z"></path><path id="XMLID_26_" d="M55.5,56.3L54.4,53h-0.5v3.3H52v-7.9l1.4-1.3h3.9v5.8h-1l1.2,3.3H55.5z M55.4,51.2v-2.4h-1.5v2.4H55.4z"></path></g></svg>
 | 
			
		||||
| 
		 Po Szerokość: | Wysokość: | Rozmiar: 1.5 KiB  |