$(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(); enableLimits(); // Enable or Disable 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]; var param = grblconfig[i].split('=')[1] grblParams[key] = param } // $('#grblconfig').show(); // grblPopulate(); // $('#grblSaveBtn').removeAttr('disabled'); // $('#grblFirmwareBtn').removeAttr('disabled'); $('#grblSettings').show() if (grblParams['$22'] > 0) { $('#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') } // 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() } updateToolOnSValues(); if (localStorage.getItem('jogOverride')) { jogOverride(localStorage.getItem('jogOverride')) } else { jogOverride(100); } } function grblPopulate() { if (!isJogWidget) { $('#grblconfig').show(); $('#grblconfig').empty(); var template = `
` $('#grblconfig').append(template) 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"); }, 100);; $('#grblSettingsTable').on('keyup paste click change', 'input, select', function() { checkifchanged() }); // $("#grblSettingsTableView").scroll(function() { // var scroll = $("#grblSettingsTableView").scrollTop(); // console.log('scrolling: ', scroll) // if (scroll > 200) { // if (allowGrblSettingsViewScroll) { // $("#grblProfileSection").slideUp('slow'); // $("#grblSettingsTableView").css("max-height", "calc(100vh - 320px)") // $("#grblSettingsTableView").css("height", "calc(100vh - 320px)") // } // } else if (scroll < 200) { // $("#grblProfileSection").slideDown('slow') // $("#grblSettingsTableView").css("max-height", "calc(100vh - 460px)") // $("#grblSettingsTableView").css("height", "calc(100vh - 460px)") // } // }); // Event Handlers for Switch Checkboxes setTimeout(function() { $('#limitsinstalled:checkbox').change(function() { enableLimits(); }); $('#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() }, 100) $('#grblSettingsBadge').hide(); if (grblParams['$21'] == 1 && grblParams['$22'] > 0) { $('#limitsinstalled:checkbox').prop('checked', true); $('#gotozeroMPos').removeClass('disabled') $('#homeBtn').attr('disabled', false) } else { $('#limitsinstalled:checkbox').prop('checked', false); $('#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 if (newVal != grblParams[key]) { hasChanged = true; console.log("changed: " + key) console.log("old: " + grblParams[key]) console.log("new: " + newVal) 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'); } // if ($("#val-21-input").val() == 1 && $("#val-22-input").val() == 1) { // $('#limitsinstalled:checkbox').prop('checked', true); // $('#gotozeroMPos').removeClass('disabled') // $('#homeBtn').attr('disabled', false) // } else { // $('#limitsinstalled:checkbox').prop('checked', false); // $('#gotozeroMPos').addClass('disabled') // $('#homeBtn').attr('disabled', true) // } // if ($("#val-21-input").val() == 1) { // Hard Limits enabled? // if (laststatus.machine.inputs.includes('X') || laststatus.machine.inputs.includes('Y') || laststatus.machine.inputs.includes('Z')) { // But a limit is currently Active? // console.log("created") // for (i = 0; i < openDialogs.length; i++) { // Metro.dialog.close(openDialogs[i]); // } // openDialogs.length = 0; // var dialog = Metro.dialog.create({ // title: "Enable Hard Limits / Endstops?", // content: `$21=1 ; Hard Limits = Enabled
in your settings. // //
PIN | //Status | //
---|---|
X-Limit | //NOCOMM | //
Y-Limit | //NOCOMM | //
Z-Limit | //NOCOMM | //
" + newParam + " : " + newParamName + "
")
$("#grblNewParamVal").html("" + newParamVal + "
")
if (saveProgressBar) {
saveProgressBar.val(counter / toSaveCommands.length * 100);
}
//
sendGcode(toSaveCommands[counter] + "\n");;
counter++;
if (counter === toSaveCommands.length) {
// Finished running
clearInterval(i);
grblParams = {};
toSaveCommands = [];
setTimeout(function() {
Metro.dialog.close('#savingGrblSettingsProgress')
Metro.dialog.create({
title: "Configuration Updated. Reset Grbl?",
content: "