2022-07-12 13:44:08 +00:00
$ ( document ) . ready ( function ( ) {
var backupFileOpen = document . getElementById ( 'grblBackupFile' ) ;
if ( backupFileOpen ) {
backupFileOpen . addEventListener ( 'change' , readGrblBackupFile , false ) ;
}
} ) ;
function readGrblBackupFile ( evt ) {
var files = evt . target . files || evt . dataTransfer . files ;
loadGrblBackupFile ( files [ 0 ] ) ;
document . getElementById ( 'grblBackupFile' ) . value = '' ;
}
function loadGrblBackupFile ( f ) {
if ( f ) {
// Filereader
var r = new FileReader ( ) ;
// if (f.name.match(/.gcode$/i)) {
r . readAsText ( f ) ;
r . onload = function ( event ) {
//var grblsettingsfile = this.result
//console.log(this.result)
var data = this . result . split ( "\n" ) ;
for ( i = 0 ; i < data . length ; i ++ ) {
if ( data [ i ] . indexOf ( "$I=" ) == 0 ) {
setMachineButton ( data [ i ] . split ( '=' ) [ 1 ] )
} else {
var key = data [ i ] . split ( '=' ) [ 0 ] ;
var param = data [ i ] . split ( '=' ) [ 1 ]
$ ( "#val-" + key . substring ( 1 ) + "-input" ) . val ( parseFloat ( param ) )
fixGrblHALSettings ( key . substring ( 1 ) ) ; // Fix GrblHAL Defaults
}
} ;
checkifchanged ( ) ;
displayDirInvert ( ) ;
}
}
}
function backupGrblSettings ( ) {
var grblBackup = ""
for ( key in grblParams ) {
var key2 = key . split ( '=' ) [ 0 ] . substr ( 1 ) ;
if ( grblSettingsTemplate2 [ key2 ] !== undefined ) {
var descr = grblSettingsTemplate2 [ key2 ] . title
} else {
var descr = "unknown"
}
grblBackup += key + "=" + grblParams [ key ] + " ; " + descr + "\n"
}
if ( laststatus . machine . name . length > 0 ) {
grblBackup += "$I=" + laststatus . machine . name
}
var blob = new Blob ( [ grblBackup ] , {
type : "plain/text"
} ) ;
var date = new Date ( ) ;
if ( laststatus . machine . name . length > 0 ) {
invokeSaveAsDialog ( blob , 'grbl-settings-backup-' + laststatus . machine . name + "-" + date . yyyymmdd ( ) + '.txt' ) ;
} else {
invokeSaveAsDialog ( blob , 'grbl-settings-backup-' + date . yyyymmdd ( ) + '.txt' ) ;
}
}
function grblSettings ( data ) {
// console.log(data)
var template = ` `
grblconfig = data . split ( '\n' )
for ( i = 0 ; i < grblconfig . length ; i ++ ) {
var key = grblconfig [ i ] . split ( '=' ) [ 0 ] ;
2024-09-30 14:06:54 +00:00
var param = grblconfig [ i ] . split ( /[= ;(]/ ) [ 1 ]
2022-07-12 13:44:08 +00:00
grblParams [ key ] = param
}
// $('#grblconfig').show();
// grblPopulate();
// $('#grblSaveBtn').removeAttr('disabled');
// $('#grblFirmwareBtn').removeAttr('disabled');
$ ( '#grblSettings' ) . show ( )
2023-04-24 15:42:51 +00:00
if ( grblParams [ '$22' ] > 0 ) {
2022-07-12 13:44:08 +00:00
$ ( '#gotozeroMPos' ) . removeClass ( 'disabled' )
$ ( '#homeBtn' ) . attr ( 'disabled' , false )
$ ( '#gotoXzeroMpos' ) . removeClass ( 'disabled' )
$ ( '#gotoYzeroMpos' ) . removeClass ( 'disabled' )
$ ( '#gotoZzeroMpos' ) . removeClass ( 'disabled' )
$ ( '.PullOffMPos' ) . html ( "-" + grblParams [ '$27' ] )
} else {
$ ( '#gotozeroMPos' ) . addClass ( 'disabled' )
$ ( '#homeBtn' ) . attr ( 'disabled' , true )
$ ( '#gotoXzeroMpos' ) . addClass ( 'disabled' )
$ ( '#gotoYzeroMpos' ) . addClass ( 'disabled' )
$ ( '#gotoZzeroMpos' ) . addClass ( 'disabled' )
}
if ( grblParams [ '$32' ] == 1 ) {
$ ( '#enLaser' ) . removeClass ( 'alert' ) . addClass ( 'success' ) . html ( 'ON' )
} else {
$ ( '#enLaser' ) . removeClass ( 'success' ) . addClass ( 'alert' ) . html ( 'OFF' )
}
2023-02-03 16:47:44 +00:00
// grblHAL - enable Servo Buttons if Spindle PWM == 50hz
if ( grblParams [ '$33' ] == 50 ) {
$ ( '#enServo' ) . removeClass ( 'alert' ) . addClass ( 'success' ) . html ( 'ON' )
$ ( ".servo-active" ) . show ( )
} else {
$ ( '#enServo' ) . removeClass ( 'success' ) . addClass ( 'alert' ) . html ( 'OFF' )
$ ( ".servo-active" ) . hide ( )
}
2022-07-12 13:44:08 +00:00
updateToolOnSValues ( ) ;
if ( localStorage . getItem ( 'jogOverride' ) ) {
jogOverride ( localStorage . getItem ( 'jogOverride' ) )
} else {
jogOverride ( 100 ) ;
}
}
function grblPopulate ( ) {
if ( ! isJogWidget ) {
$ ( '#grblconfig' ) . show ( ) ;
$ ( '#grblconfig' ) . empty ( ) ;
var template = `
< form id = "grblSettingsTable" >
< div id = "grblProfileSection" >
< h6 class = "fg-dark" > < i class = "fas fa-tasks fg-blue" > < / i > 1 . L o a d M a c h i n e P r o f i l e < b r >
2024-07-23 20:49:47 +00:00
< small > Loads our standard Machine Profiles to your controller . If you have built a machine exactly to specification this is all your need . If you made modifications , or built a custom machine , you can customize the parameters in Section ( 2 ) below . Remember to click < u > SAVE TO FIRMWARE < / u > t o s a v e t h e s e t t i n g s t o y o u r c o n t r o l l e r < / s m a l l >
2022-07-12 13:44:08 +00:00
< / h 6 >
2024-07-23 20:49:47 +00:00
< div class = "grid" >
< div class = "row" >
< div class = "cell-12" >
< a style = "width: 100%;" class = "button dropdown-toggle bd-dark dark outline" id = "context_toggle2" > < img src = "img/mch/leadmachine1010.png" / > Select your machine type from the list : < / a >
< ul class = "ribbon-dropdown machine-profile-menu" data - role = "dropdown" data - duration = "100" >
< li > < a href = "#" onclick = "selectMachine('custom');" > < img src = "img/mch/custom.png" width = "16px" / > CUSTOM Machine ( Profile sets sane defaults ) < / a > < / l i >
2022-07-12 13:44:08 +00:00
< li >
2024-11-26 19:13:06 +00:00
< a href = "#" class = "dropdown-toggle" > < img src = "img/mch/acro55.png" width = "16px" / > OpenBuilds ACRO < / a >
2022-07-12 13:44:08 +00:00
< ul class = "ribbon-dropdown" data - role = "dropdown" >
2024-11-26 19:13:06 +00:00
< li onclick = "selectMachine('acro55');" > < a href = "#" > < img src = "img/mch/acro55.png" width = "16px" / > OpenBuilds ACRO 55 < / a > < / l i >
< li onclick = "selectMachine('acro510');" > < a href = "#" > < img src = "img/mch/acro510.png" width = "16px" / > OpenBuilds ACRO 510 < / a > < / l i >
< li onclick = "selectMachine('acro1010');" > < a href = "#" > < img src = "img/mch/acro1010.png" width = "16px" / > OpenBuilds ACRO 1010 < / a > < / l i >
< li onclick = "selectMachine('acro1510');" > < a href = "#" > < img src = "img/mch/acro1510.png" width = "16px" / > OpenBuilds ACRO 1510 < / a > < / l i >
< li onclick = "selectMachine('acro1515');" > < a href = "#" > < img src = "img/mch/acro1515.png" width = "16px" / > OpenBuilds ACRO 1515 < / a > < / l i >
< li class = "divider" > < / l i >
< li onclick = "selectMachine('acroa1');" > < a href = "#" > < img src = "img/mch/acroa1.png" width = "16px" / > OpenBuilds ACRO A1 < / a > < / l i >
2022-07-12 13:44:08 +00:00
< / u l >
< / l i >
< li >
< a href = "#" class = "dropdown-toggle" > < img src = "img/mch/cbeam.png" width = "16px" / > OpenBuilds C - Beam Machine < / a >
< ul class = "ribbon-dropdown" data - role = "dropdown" >
< li onclick = "selectMachine('cbeam');" > < a href = "#" > < img src = "img/mch/cbeam.png" width = "16px" / > OpenBuilds C - Beam Machine < / a > < / l i >
< li onclick = "selectMachine('cbeamxl');" > < a href = "#" > < img src = "img/mch/cbeamxl.png" width = "16px" / > OpenBuilds C - Beam XL < / a > < / l i >
< / u l >
< / l i >
< li >
< a href = "#" class = "dropdown-toggle" > < img src = "img/mch/leadmachine1010.png" width = "16px" / > OpenBuilds LEAD Machine < / a >
< ul class = "ribbon-dropdown" data - role = "dropdown" >
< li onclick = "selectMachine('leadmachine1010');" > < a href = "#" > < img src = "img/mch/leadmachine1010.png" width = "16px" / > OpenBuilds LEAD 1010 < / a > < / l i >
< li onclick = "selectMachine('leadmachine1010laser');" > < a href = "#" > < img src = "img/mch/leadmachine1010laser.png" width = "16px" / > OpenBuilds LEAD 1010 with Laser Module < / a > < / l i >
2024-04-11 19:33:42 +00:00
< li onclick = "selectMachine('leadmachine1010plasma');" > < a href = "#" > < img src = "img/mch/leadmachine1010plasma.png" width = "16px" / > OpenBuilds LEAD 1010 Plasma Add - On < / a > < / l i >
2022-07-12 13:44:08 +00:00
< li onclick = "selectMachine('leadmachine1515');" > < a href = "#" > < img src = "img/mch/leadmachine1515.png" width = "16px" / > OpenBuilds LEAD 1515 < / a > < / l i >
< / u l >
< / l i >
< li > < a href = "#" onclick = "selectMachine('minimill');" > < img src = "img/mch/minimill.png" width = "16px" / > OpenBuilds MiniMill < / a > < / l i >
< li >
< a href = "#" class = "dropdown-toggle" > < img src = "img/mch/sphinx55.png" width = "16px" / > OpenBuilds Sphinx < / a >
< ul class = "ribbon-dropdown" data - role = "dropdown" >
< li onclick = "selectMachine('sphinx55');" > < a href = "#" > < img src = "img/mch/sphinx55.png" width = "16px" / > OpenBuilds Sphinx 55 < / a > < / l i >
< li onclick = "selectMachine('sphinx1050');" > < a href = "#" > < img src = "img/mch/sphinx1050.png" width = "16px" / > OpenBuilds Sphinx 1050 < / a > < / l i >
< / u l >
< / l i >
< li >
< a href = "#" class = "dropdown-toggle" > < img src = "img/mch/workbee1010.png" width = "16px" / > OpenBuilds WorkBee < / a >
< ul class = "ribbon-dropdown" data - role = "dropdown" >
< li onclick = "selectMachine('workbee1010');" > < a href = "#" > < img src = "img/mch/workbee1010.png" width = "16px" / > OpenBuilds WorkBee 1010 < / a > < / l i >
< li onclick = "selectMachine('workbee1050');" > < a href = "#" > < img src = "img/mch/workbee1050.png" width = "16px" / > OpenBuilds WorkBee 1050 < / a > < / l i >
< li onclick = "selectMachine('workbee1510');" > < a href = "#" > < img src = "img/mch/workbee1510.png" width = "16px" / > OpenBuilds WorkBee 1510 < / a > < / l i >
< / u l >
< / l i >
< / u l >
< / d i v >
2024-07-23 20:49:47 +00:00
2022-07-12 13:44:08 +00:00
< / d i v >
< / d i v >
< hr class = "bg-openbuilds" >
< / d i v > < ! - - E n d g r b l P r o f i l e S e c t i o n - - >
2024-07-23 20:49:47 +00:00
< h6 class = "fg-dark" > < i class = "fas fa-cogs fg-lightOrange" > < /i> 2. Customize Profile (Optional)<br><small>Customise your Grbl settings below. For custom machines, modifications and also for fine tuning your machine profile. Remember to make a <u>BACKUP</u > so you don ' t lose your customized settings < / s m a l l > < / h 6 >
< div id = "grblSettingsTableView" style = "overflow-y: scroll; height: calc(100vh - 510px); max-height: calc(100vh - 460px);" >
< table data - role = "table" data - table - search - title = "Search for Parameters by Name or $-Key" data - search - fields = "Key, Parameter" data - on - draw = "setup_settings_table" data - on - table - create = "setup_settings_table" data - cell - wrapper = "false" class = "table compact striped row-hover row-border" data - show - rows - steps = "false" data - rows = "200" data - show - pagination = "false" data - show - table - info = "true" data - show - search = "true" >
< thead >
< tr >
< th style = "text-align: left;" > Key < / t h >
< th style = "text-align: left;" > Parameter < / t h >
< th style = "width: 250px; min-width: 240px !important;" > Value < / t h >
< th style = "width: 110px; min-width: 110px !important;" > Utility < / t h >
< / t r >
< / t h e a d >
< tbody > `
2022-07-12 13:44:08 +00:00
for ( key in grblParams ) {
var key2 = key . split ( '=' ) [ 0 ] . substr ( 1 ) ;
//console.log(key2)
if ( grblSettingsTemplate2 [ key2 ] !== undefined ) {
//template += grblSettingsTemplate2[key2].template;
template += ` <tr id="grblSettingsRow ` + key2 + ` " title=" ` + grblSettingsTemplate2 [ key2 ] . description + ` ">
2024-07-23 20:49:47 +00:00
< td > ` + grblSettingsTemplate2[key2].key + ` < / t d >
< td > ` + grblSettingsTemplate2[key2].title + ` < / t d >
< td > ` + grblSettingsTemplate2[key2].template + ` < / t d >
< td > ` + grblSettingsTemplate2[key2].utils + ` < / t d >
< / t r > `
2022-07-12 13:44:08 +00:00
} else {
template += `
2024-07-23 20:49:47 +00:00
< tr >
< td > ` + key + ` < / t d >
< td > < span class = "tally alert" > ` + key + ` < / s p a n > < / t d >
< td > < input data - role = "input" data - clear - button = "false" data - append = "?" type = "text" value = "` + grblParams[key] + `" id = "val-` + key2 + `-input" > < / t d >
< td > < / t d >
< / t r >
`
2022-07-12 13:44:08 +00:00
}
}
template += ` </tbody>
< / t a b l e >
< / d i v > < ! - - E n d o f g r b l S e t t i n g s T a b l e V i e w - - >
< / f o r m >
`
$ ( '#grblconfig' ) . append ( template )
$ ( '#grblSettingsTable' ) . on ( 'keyup paste click change' , 'input, select' , function ( ) {
checkifchanged ( )
} ) ;
// Event Handlers for Switch Checkboxes
setTimeout ( function ( ) {
2024-07-23 20:49:47 +00:00
setup _settings _table ( ) ;
2022-07-12 13:44:08 +00:00
} , 100 )
$ ( '#grblSettingsBadge' ) . hide ( ) ;
2023-04-24 15:42:51 +00:00
if ( grblParams [ '$21' ] == 1 && grblParams [ '$22' ] > 0 ) {
2022-07-12 13:44:08 +00:00
$ ( '#gotozeroMPos' ) . removeClass ( 'disabled' )
$ ( '#homeBtn' ) . attr ( 'disabled' , false )
} else {
$ ( '#gotozeroMPos' ) . addClass ( 'disabled' )
$ ( '#homeBtn' ) . attr ( 'disabled' , true )
}
setTimeout ( function ( ) {
setMachineButton ( laststatus . machine . name )
} , 500 )
}
}
function checkifchanged ( ) {
var hasChanged = false ;
for ( var key in grblParams ) {
if ( grblParams . hasOwnProperty ( key ) ) {
var j = key . substring ( 1 )
var newVal = $ ( "#val-" + j + "-input" ) . val ( ) ;
if ( newVal !== undefined ) {
// Only send values that changed
2022-11-22 16:29:24 +00:00
if ( newVal != grblParams [ key ] ) {
2022-07-12 13:44:08 +00:00
hasChanged = true ;
2022-11-22 16:29:24 +00:00
console . log ( "changed: " + key )
console . log ( "old: " + grblParams [ key ] )
console . log ( "new: " + newVal )
2022-07-12 13:44:08 +00:00
if ( ! $ ( "#val-" + j + "-input" ) . parent ( ) . is ( 'td' ) ) {
$ ( "#val-" + j + "-input" ) . parent ( ) . addClass ( 'alert' )
} else if ( $ ( "#val-" + j + "-input" ) . is ( 'select' ) ) {
$ ( "#val-" + j + "-input" ) . addClass ( 'alert' )
} else if ( j == 3 ) { // axes
$ ( '#xdirinvert' ) . parent ( ) . children ( '.check' ) . addClass ( 'bd-red' )
$ ( '#ydirinvert' ) . parent ( ) . children ( '.check' ) . addClass ( 'bd-red' )
$ ( '#zdirinvert' ) . parent ( ) . children ( '.check' ) . addClass ( 'bd-red' )
}
} else {
if ( ! $ ( "#val-" + j + "-input" ) . parent ( ) . is ( 'td' ) ) {
$ ( "#val-" + j + "-input" ) . parent ( ) . removeClass ( 'alert' )
} else if ( $ ( "#val-" + j + "-input" ) . is ( 'select' ) ) {
$ ( "#val-" + j + "-input" ) . removeClass ( 'alert' )
} else if ( j == 3 ) {
$ ( '#xdirinvert' ) . parent ( ) . children ( '.check' ) . removeClass ( 'bd-red' )
$ ( '#ydirinvert' ) . parent ( ) . children ( '.check' ) . removeClass ( 'bd-red' )
$ ( '#zdirinvert' ) . parent ( ) . children ( '.check' ) . removeClass ( 'bd-red' )
}
}
}
}
}
if ( hasChanged ) {
$ ( '#grblSettingsBadge' ) . fadeIn ( 'slow' ) ;
$ ( '#saveBtn' ) . attr ( 'disabled' , false ) . removeClass ( 'disabled' ) ;
$ ( '#saveBtnIcon' ) . removeClass ( 'fg-gray' ) . addClass ( 'fg-grayBlue' ) ;
} else {
$ ( '#grblSettingsBadge' ) . fadeOut ( 'slow' ) ;
$ ( '#saveBtn' ) . attr ( 'disabled' , true ) . addClass ( 'disabled' ) ;
$ ( '#saveBtnIcon' ) . removeClass ( 'fg-grayBlue' ) . addClass ( 'fg-gray' ) ;
}
}
function grblSaveSettings ( ) {
var toSaveCommands = [ ] ;
var saveProgressBar = $ ( "#grblSaveProgress" ) . data ( "progress" ) ;
for ( var key in grblParams ) {
if ( grblParams . hasOwnProperty ( key ) ) {
var j = key . substring ( 1 )
var newVal = $ ( "#val-" + j + "-input" ) . val ( ) ;
// Only send values that changed
if ( newVal !== undefined ) {
if ( parseFloat ( newVal ) != parseFloat ( grblParams [ key ] ) && newVal != grblParams [ key ] ) {
// console.log(key + ' was ' + grblParams[key] + ' but now, its ' + newVal);
toSaveCommands . push ( key + '=' + newVal ) ;
}
}
}
}
if ( toSaveCommands . length > 0 ) {
//console.log("commands", toSaveCommands)
let counter = 0 ;
// Blank the dialog
if ( saveProgressBar ) {
saveProgressBar . val ( 0 ) ;
}
$ ( "#grblNewParam" ) . html ( "" )
$ ( "#grblNewParamVal" ) . html ( "" )
// Open Dialog savingGrblSettingsProgress
Metro . dialog . open ( '#savingGrblSettingsProgress' )
const i = setInterval ( function ( ) {
//console.log(counter, toSaveCommands[counter]);
var newParam = toSaveCommands [ counter ] . split ( "=" ) [ 0 ] ;
var newParamKey = newParam . substr ( 1 ) ;
if ( grblSettingsTemplate2 [ newParamKey ] !== undefined ) {
var newParamName = grblSettingsTemplate2 [ newParamKey ] . title
} else {
var newParamName = "unknown"
}
var newParamVal = toSaveCommands [ counter ] . split ( "=" ) [ 1 ] ;
$ ( "#grblNewParam" ) . html ( "<code>" + newParam + " : " + newParamName + "</code>" )
$ ( "#grblNewParamVal" ) . html ( "<code>" + newParamVal + "</code>" )
if ( saveProgressBar ) {
saveProgressBar . val ( counter / toSaveCommands . length * 100 ) ;
}
//
sendGcode ( toSaveCommands [ counter ] + "\n" ) ; ;
counter ++ ;
if ( counter === toSaveCommands . length ) {
// Finished running
clearInterval ( i ) ;
grblParams = { } ;
toSaveCommands = [ ] ;
2024-04-07 07:45:27 +00:00
askToResetOnGrblSettingsChange ( ) ;
2022-07-12 13:44:08 +00:00
}
} , 400 ) ; // send another command every 200ms
}
}
2024-04-07 07:45:27 +00:00
function askToResetOnGrblSettingsChange ( ) {
setTimeout ( function ( ) {
Metro . dialog . close ( '#savingGrblSettingsProgress' )
Metro . dialog . create ( {
title : "Configuration Updated. Reset Grbl?" ,
content : "<div>Some changes in the Grbl Configuration only take effect after a restart/reset of the controller. Would you like to Reset the controller now?</div>" ,
clsDialog : 'dark' ,
actions : [ {
caption : "Yes" ,
cls : "js-dialog-close success" ,
onclick : function ( ) {
setTimeout ( function ( ) {
sendGcode ( String . fromCharCode ( 0x18 ) ) ;
setTimeout ( function ( ) {
refreshGrblSettings ( )
} , 1000 ) ; // refresh grbl settings
} , 800 ) ; // reset
}
} ,
{
caption : "Later" ,
cls : "js-dialog-close" ,
onclick : function ( ) {
console . log ( "Do nothing" )
refreshGrblSettings ( ) ;
}
}
]
} ) ;
$ ( '#grblSettingsBadge' ) . hide ( ) ;
} , 1000 ) ; // Just to show settings was written
}
2022-07-12 13:44:08 +00:00
function refreshGrblSettings ( ) {
$ ( '#saveBtn' ) . attr ( 'disabled' , true ) . addClass ( 'disabled' ) ;
$ ( '#saveBtnIcon' ) . removeClass ( 'fg-grayBlue' ) . addClass ( 'fg-gray' ) ;
grblParams = { } ;
$ ( '#grblconfig' ) . empty ( ) ;
$ ( '#grblconfig' ) . append ( "<center>Please Wait... </center><br><center>Requesting updated parameters from the controller firmware...</center>" ) ;
setTimeout ( function ( ) {
sendGcode ( '$$' ) ;
sendGcode ( '$I' ) ;
setTimeout ( function ( ) {
grblPopulate ( ) ;
} , 500 ) ;
} , 200 ) ;
}
// Calc Grbl 1.1 Invert Masks
// Call: calcDecFromMask(true, false, false)
// Return: 1
function calcDecFromMask ( x , y , z ) {
var string = "0000000" + ( z ? "1" : "0" ) + ( y ? "1" : "0" ) + ( x ? "1" : "0" ) ;
// console.log(string)
return parseInt ( string , 2 ) ;
}
// Calc Grbl 1.1 Invert Masks
// Call: calcMaskFromDec("4")
// Returns: {x: false, y: false, z: true}
function calcMaskFromDec ( dec ) {
var num = parseInt ( dec )
num = num . toString ( 2 )
num = ( "000" + num ) . substr ( - 3 , 3 )
// console.log(num)
var invertmask = {
x : ( num . charAt ( 2 ) == 0 ? false : true ) ,
y : ( num . charAt ( 1 ) == 0 ? false : true ) ,
z : ( num . charAt ( 0 ) == 0 ? false : true )
}
return invertmask
}
function changeProbeDirInvert ( ) {
var xticked = $ ( '#xHomeDir' ) . is ( ':checked' ) ;
var yticked = $ ( '#yHomeDir' ) . is ( ':checked' ) ;
var zticked = $ ( '#zHomeDir' ) . is ( ':checked' ) ;
var value = calcDecFromMask ( ! xticked , ! yticked , ! zticked )
console . log ( "Homing Dir $23=" + value )
$ ( "#val-23-input" ) . val ( value ) . trigger ( "change" ) ;
checkifchanged ( ) ;
}
function displayProbeDirInvert ( ) {
var dir = calcMaskFromDec ( $ ( "#val-23-input" ) . val ( ) )
$ ( '#xHomeDir:checkbox' ) . prop ( 'checked' , ! dir . x ) ;
$ ( '#yHomeDir:checkbox' ) . prop ( 'checked' , ! dir . y ) ;
$ ( '#zHomeDir:checkbox' ) . prop ( 'checked' , ! dir . z ) ;
checkifchanged ( ) ;
}
function changeDirInvert ( ) {
var xticked = $ ( '#xdirinvert' ) . is ( ':checked' ) ;
var yticked = $ ( '#ydirinvert' ) . is ( ':checked' ) ;
var zticked = $ ( '#zdirinvert' ) . is ( ':checked' ) ;
var value = calcDecFromMask ( xticked , yticked , zticked )
$ ( "#val-3-input" ) . val ( value ) . trigger ( "change" ) ;
checkifchanged ( ) ;
}
function displayDirInvert ( ) {
var dir = calcMaskFromDec ( $ ( "#val-3-input" ) . val ( ) )
$ ( '#xdirinvert:checkbox' ) . prop ( 'checked' , dir . x ) ;
$ ( '#ydirinvert:checkbox' ) . prop ( 'checked' , dir . y ) ;
$ ( '#zdirinvert:checkbox' ) . prop ( 'checked' , dir . z ) ;
checkifchanged ( ) ;
}
function clearSettings ( ) {
Metro . dialog . create ( {
title : "Are you sure?" ,
content : "<div>Resetting the Grbl Settings will restore all the settings to factory defaults, but will keep other EEPROM settings intact. Would you like to continue?</div>" ,
clsDialog : 'dark' ,
actions : [ {
caption : "Yes" ,
cls : "js-dialog-close success" ,
onclick : function ( ) {
sendGcode ( '$RST=$' ) ;
refreshGrblSettings ( )
}
} ,
{
caption : "Cancel" ,
cls : "js-dialog-close" ,
onclick : function ( ) {
refreshGrblSettings ( ) ;
}
}
]
} ) ;
}
function clearWCO ( ) {
Metro . dialog . create ( {
title : "Are you sure?" ,
content : "<div>Resetting the Work Coordinate Systems will erase all the coordinate system offsets currently stored in the EEPROM on the controller. Would you like to continue?</div>" ,
clsDialog : 'dark' ,
actions : [ {
caption : "Yes" ,
cls : "js-dialog-close success" ,
onclick : function ( ) {
sendGcode ( '$RST=#' ) ;
refreshGrblSettings ( )
}
} ,
{
caption : "Cancel" ,
cls : "js-dialog-close" ,
onclick : function ( ) {
refreshGrblSettings ( ) ;
}
}
]
} ) ;
}
function clearEEPROM ( ) {
Metro . dialog . create ( {
title : "Are you sure?" ,
content : "<div>Resetting the EEPROM will erase all the Grbl Firmware settings from your controller, effectively resetting it back to factory defaults. Would you like to continue?</div>" ,
clsDialog : 'dark' ,
actions : [ {
caption : "Yes" ,
cls : "js-dialog-close success" ,
onclick : function ( ) {
sendGcode ( '$RST=*' ) ;
refreshGrblSettings ( )
}
} ,
{
caption : "Cancel" ,
cls : "js-dialog-close" ,
onclick : function ( ) {
refreshGrblSettings ( ) ;
}
}
]
} ) ;
}
function updateToolOnSValues ( ) {
$ ( ".ToolOnS1" ) . html ( ( parseInt ( grblParams . $30 ) * 0.01 ) . toFixed ( 0 ) )
$ ( ".ToolOnS5" ) . html ( ( parseInt ( grblParams . $30 ) * 0.05 ) . toFixed ( 0 ) )
$ ( ".ToolOnS10" ) . html ( ( parseInt ( grblParams . $30 ) * 0.1 ) . toFixed ( 0 ) )
$ ( ".ToolOnS25" ) . html ( ( parseInt ( grblParams . $30 ) * 0.25 ) . toFixed ( 0 ) )
$ ( ".ToolOnS50" ) . html ( ( parseInt ( grblParams . $30 ) * 0.5 ) . toFixed ( 0 ) )
$ ( ".ToolOnS75" ) . html ( ( parseInt ( grblParams . $30 ) * 0.75 ) . toFixed ( 0 ) )
$ ( ".ToolOnS100" ) . html ( parseInt ( grblParams . $30 ) . toFixed ( 0 ) )
2024-07-23 20:49:47 +00:00
}
function setup _settings _table ( ) {
for ( key in grblParams ) {
var key2 = key . split ( '=' ) [ 0 ] . substr ( 1 ) ;
$ ( "#val-" + key2 + "-input" ) . val ( grblParams [ key ] )
}
setTimeout ( function ( ) {
$ ( "#val-32-input" ) . val ( parseInt ( grblParams [ '$32' ] ) ) . trigger ( "change" ) ;
$ ( "#val-20-input" ) . val ( parseInt ( grblParams [ '$20' ] ) ) . trigger ( "change" ) ;
$ ( "#val-21-input" ) . val ( parseInt ( grblParams [ '$21' ] ) ) . trigger ( "change" ) ;
$ ( "#val-22-input" ) . val ( parseInt ( grblParams [ '$22' ] ) ) . trigger ( "change" ) ;
$ ( "#val-23-input" ) . val ( parseInt ( grblParams [ '$23' ] ) ) . trigger ( "change" ) ;
$ ( "#val-5-input" ) . val ( parseInt ( grblParams [ '$5' ] ) ) . trigger ( "change" ) ;
$ ( "#val-6-input" ) . val ( parseInt ( grblParams [ '$6' ] ) ) . trigger ( "change" ) ;
$ ( "#val-2-input" ) . val ( parseInt ( grblParams [ '$2' ] ) ) . trigger ( "change" ) ;
$ ( "#val-3-input" ) . val ( parseInt ( grblParams [ '$3' ] ) ) . trigger ( "change" ) ;
$ ( "#val-4-input" ) . val ( parseInt ( grblParams [ '$4' ] ) ) . trigger ( "change" ) ;
2024-09-30 11:59:24 +00:00
$ ( "#val-13-input" ) . val ( parseInt ( grblParams [ '$13' ] ) ) . trigger ( "change" ) ;
2024-07-23 20:49:47 +00:00
} , 100 ) ; ;
$ ( '#xdirinvert:checkbox' ) . change ( function ( ) {
changeDirInvert ( ) ;
} ) ;
$ ( '#ydirinvert:checkbox' ) . change ( function ( ) {
changeDirInvert ( ) ;
} ) ;
$ ( '#zdirinvert:checkbox' ) . change ( function ( ) {
changeDirInvert ( ) ;
} ) ;
$ ( '#xHomeDir:checkbox' ) . change ( function ( ) {
changeProbeDirInvert ( ) ;
} ) ;
$ ( '#yHomeDir:checkbox' ) . change ( function ( ) {
changeProbeDirInvert ( ) ;
} ) ;
$ ( '#zHomeDir:checkbox' ) . change ( function ( ) {
changeProbeDirInvert ( ) ;
} ) ;
// populare Direction Invert Checkboxes
displayDirInvert ( )
displayProbeDirInvert ( )
console . log ( "Updated" )
2024-11-26 19:13:06 +00:00
}