873 lines
		
	
	
		
			39 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			873 lines
		
	
	
		
			39 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var wmLogBuffer = new Array();
 | |
| var wmSdListCounter = {
 | |
|   FILES:0,
 | |
|   FOLDERS:0,
 | |
|   Reset: function() {
 | |
|     wmSdListCounter.FILES = 0;
 | |
|     wmSdListCounter.FOLDERS = 0;
 | |
|     $('#list-sd-content').empty();
 | |
|     $('#div-sdlist-file-count').text(wmSdListCounter.FILES);
 | |
|     $('#div-sdlist-folder-count').text(wmSdListCounter.FOLDERS);
 | |
|   }
 | |
| };
 | |
| 
 | |
| var WmButtonGroups = {
 | |
|   FileManagement: ["#btn-get-sdcontent","#btn-set-sdinit","#btn-set-sdrelease","#file-upload","#btn-file-upload"],
 | |
|   FileActions: ["#btn-set-sdprint","#btn-set-sddelete"],
 | |
|   FileProcess: ["#btn-file-proc","#btn-file-proc-cancel"],
 | |
|   TempStatus: ["#set-auto-temp","#auto-temp-interval","#chart-show-extruder","#chart-show-bed"],
 | |
|   FanSpeed: ["#fan-speed-range"],
 | |
|   MoveHome: ["#btn-move-home-all","#btn-move-home-x","#btn-move-home-y","#btn-move-home-z"],
 | |
|   Move: ["#btn-move-xl","#btn-move-xr","#btn-move-yf","#btn-move-yb","#btn-move-zu","#btn-move-zd"],
 | |
|   StepperAll: ["#set-stepper-all","#set-stepper-x","#set-stepper-y","#set-stepper-z","#set-stepper-e"],
 | |
|   Stepper: ["#set-stepper-x","#set-stepper-y","#set-stepper-z","#set-stepper-e"],
 | |
| 
 | |
|   All: function() {
 | |
|     let all = [];
 | |
|     all = all.concat(
 | |
|       WmButtonGroups.FileManagement,
 | |
|       WmButtonGroups.FileActions,
 | |
|       WmButtonGroups.FileProcess,
 | |
|       WmButtonGroups.TempStatus,
 | |
|       WmButtonGroups.FanSpeed,
 | |
|       WmButtonGroups.MoveHome,
 | |
|       WmButtonGroups.Move,
 | |
|       WmButtonGroups.StepperAll
 | |
|     );
 | |
|     return all;
 | |
|   }
 | |
| };
 | |
| 
 | |
| var wmWebSoket = {
 | |
|   WSObject: null,
 | |
|   Connect: function() {
 | |
| 	WsUrl=`ws://${location.host}/ws`;
 | |
|     try {
 | |
|       if(wmWebSoket.WSObject === null) {
 | |
|         jsLog.Debug("WebSocket: Trying connecting to " + WsUrl);
 | |
|         wmWebSoket.WSObject = new WebSocket(WsUrl);
 | |
|         wmWebSoket.SetWsStatusBar(wmWebSoket.WSObject.readyState);
 | |
|         wmWebSoket.WSObject.onopen = function () {
 | |
|           jsLog.Info("WebSocket: Successfully connected to " + WsUrl);
 | |
|           wmWebSoket.SetWsStatusBar(wmWebSoket.WSObject.readyState);
 | |
|           WmControls.Enable(WmButtonGroups.All());
 | |
|           wmWebSoket.Send(wmGCommands.SdPrintStatus);
 | |
|         };
 | |
|         wmWebSoket.WSObject.onclose = function () {
 | |
|           jsLog.Info("WebSocket: Disconnected from "+WsUrl);
 | |
|           wmWebSoket.SetWsStatusBar(null);
 | |
|           wmWebSoket.WSObject = null;
 | |
|           WmControls.Disable(WmButtonGroups.All());
 | |
|         };
 | |
|         wmWebSoket.WSObject.onerror = function () {
 | |
|           jsLog.Error("WebSocket: Connection error");
 | |
|           WmConsole.Trace(new wmLogItem("WebSoket connection error", wmEnums.WSMsgDirection.RECEIVED, wmEnums.ConsoleLevels.ERROR));
 | |
|         };
 | |
|         wmWebSoket.WSObject.onmessage = function (event) {
 | |
|           jsLog.Info("WebSocket: Message received: "+event.data);
 | |
|           wmWebSoket.OnMessage(event.data.trim());
 | |
|         };
 | |
|       }
 | |
|     }
 | |
|     catch (exception) {
 | |
|       jsLog.Error("WebSocket: Exception: "+exception);
 | |
|       wmWebSoket.SetWsStatusBar(wmWebSoket.WSObject.readyState);
 | |
|       WmConsole.Trace(new wmLogItem("WebSocket: Connection exception", wmEnums.WSMsgDirection.RECEIVED, wmEnums.ConsoleLevels.ERROR));
 | |
|     }
 | |
|   },
 | |
|   Disconnect: function() {
 | |
|     try {
 | |
|       if(wmWebSoket.WSObject !== null && wmWebSoket.WSObject.readyState === wmEnums.WSSatuses.OPEN) {
 | |
|         jsLog.Debug("WebSocket: Disconnecting from "+WsUrl);
 | |
|         WmConsole.Trace(new wmLogItem("WebSoket disconnecting...", wmEnums.WSMsgDirection.SENT, wmEnums.ConsoleLevels.INFO));
 | |
|         wmWebSoket.WSObject.close();
 | |
|         wmWebSoket.WSObject = null;
 | |
|       }
 | |
|     }
 | |
|     catch (exception) {
 | |
|       jsLog.Error("WebSocket: Exception: "+exception);
 | |
|       wmWebSoket.SetWsStatusBar(wmWebSoket.WSObject.readyState);
 | |
|       WmConsole.Trace(new wmLogItem("WebSoket connection exception", wmEnums.WSMsgDirection.RECEIVED, wmEnums.ConsoleLevels.ERROR));
 | |
|     }
 | |
|   },
 | |
|   Send: function(gCmd) {
 | |
|     if(wmWebSoket.WSObject !== null && wmWebSoket.WSObject.readyState === wmEnums.WSSatuses.OPEN) {
 | |
|       let strcmd = gCmd.GCode;
 | |
|       if (gCmd.GParams === null) { jsLog.Verbose('WebSocket: Send: Command with no params detected'); }
 | |
|       else {
 | |
|         jsLog.Verbose('WebSocket: Send: Arguments detected:'+gCmd.GParams);
 | |
|         gCmd.GParams = wmTools.StringFormat(gCmd.GParams, gCmd.Value);
 | |
|         strcmd = strcmd +" "+gCmd.GParams;
 | |
|       }
 | |
|       jsLog.Debug('WebSocket: Send commandstring: '+strcmd);
 | |
|       WmConsole.Trace(new wmLogItem("GCmd: <span class=\"badge badge-light\">" + strcmd + "</span> " + gCmd.Description, wmEnums.WSMsgDirection.SENT, wmEnums.ConsoleLevels.SUCCESS));
 | |
|       try { wmWebSoket.WSObject.send(strcmd + '\n'); }
 | |
|       catch (exception) {
 | |
|         jsLog.Error('WebSocket: Exception:' + exception);
 | |
|         WmConsole.Trace(new wmLogItem("WebSoket: Command exception: "+exception, wmEnums.WSMsgDirection.RECEIVED, wmEnums.ConsoleLevels.ERROR));
 | |
|       }
 | |
|     } else { $('#modal-connect').modal('show'); }
 | |
|   },
 | |
|   OnMessage: function(mdt) {
 | |
|     if(mdt === "") { jsLog.Debug("WSMessage match: Empty message (skipped)"); }
 | |
|     else {
 | |
|       let litem = wmLogItem.ParseWsMessage(mdt);
 | |
|       WmConsole.Trace(litem);
 | |
|       if(litem.SdFile !== null) { WmConsole.TraceSdFile(litem); }
 | |
|     }
 | |
|   },
 | |
|   SetWsStatusBar: function(rs) {
 | |
|     let cli = new wmLogItem();
 | |
|     let ctrls = { div:$('#div-conn-statusmsg'), ico:$('#div-conn-statusico'), btn:$('#btn-connect-status'), bar:$('#div-conn-statusbar') };
 | |
|     switch (rs) {
 | |
|       case wmEnums.WSSatuses.CONNECTING:
 | |
|         cli.SetValues("Connecting to "+WsUrl, wmEnums.WSMsgDirection.SENT, wmEnums.ConsoleLevels.INFO);
 | |
|         ctrls.ico.html("<span class=\"blink\">"+wmIcons.Exchange.AddClass('')+"</span>");
 | |
|         ctrls.div.html("Connecting...");
 | |
|         ctrls.btn.html("<span class=\"spinner-border spinner-border-sm\"></span>");
 | |
|         ctrls.bar.removeClass('bg-success bg-warning bg-danger text-light text-dark').addClass("bg-warning text-dark");
 | |
|         break;
 | |
|       case wmEnums.WSSatuses.OPEN:
 | |
|         cli.SetValues("Connected to "+WsUrl, wmEnums.WSMsgDirection.RECEIVED, wmEnums.ConsoleLevels.SUCCESS);
 | |
|         ctrls.ico.html(wmIcons.Wifi.AddClass(''));
 | |
|         ctrls.div.html("Connected");
 | |
|         ctrls.btn.html(wmIcons.Ban.ToHtml());
 | |
|         ctrls.bar.removeClass('bg-success bg-warning bg-danger text-light text-dark').addClass("bg-success text-light");
 | |
|         break;
 | |
|       case wmEnums.WSSatuses.CLOSED:
 | |
|         cli.SetValues("Disconnected from "+WsUrl, wmEnums.WSMsgDirection.RECEIVED, wmEnums.ConsoleLevels.ERROR);
 | |
|         ctrls.ico.html(wmIcons.Plug.AddClass(''));
 | |
|         ctrls.div.html("Disconnected");
 | |
|         ctrls.btn.html(wmIcons.Bolt.ToHtml());
 | |
|         ctrls.bar.removeClass('bg-success bg-warning bg-danger text-light text-dark').addClass("bg-danger text-light");
 | |
|         break;
 | |
|       case wmEnums.WSSatuses.CLOSING:
 | |
|         cli.SetValues("Disconnecting from "+WsUrl, wmEnums.WSMsgDirection.SENT, wmEnums.ConsoleLevels.WARNING);
 | |
|         ctrls.ico.html("<span class=\"blink\">"+wmIcons.Wifi.AddClass('')+"</span>");
 | |
|         ctrls.div.html("Disconnecting...");
 | |
|         ctrls.btn.html("<span class=\"spinner-border spinner-border-sm\"></span>");
 | |
|         ctrls.bar.removeClass('bg-success bg-warning bg-danger text-light text-dark').addClass("bg-warning text-dark");
 | |
|         break;
 | |
|       default:
 | |
|         cli.SetValues("Disconnected from "+WsUrl, wmEnums.WSMsgDirection.RECEIVED, wmEnums.ConsoleLevels.ERROR);
 | |
|         ctrls.ico.html(wmIcons.Plug.AddClass(''));
 | |
|         ctrls.div.html("Disconnected");
 | |
|         ctrls.btn.html(wmIcons.Bolt.ToHtml());
 | |
|         ctrls.bar.removeClass('bg-success bg-warning bg-danger text-light text-dark').addClass("bg-danger text-light");
 | |
|         break;
 | |
|     }
 | |
|     WmConsole.Trace(cli);
 | |
|   }
 | |
| };
 | |
| 
 | |
| var WmUpload = {
 | |
|   Reader: null,
 | |
|   FileName: null,
 | |
|   FileSize: null,
 | |
|   FileContent: null,
 | |
|   ReadyToWrite: false,
 | |
|   Cancelled: false,
 | |
|   Load: function() {
 | |
|     let [fn,fe] = $("#file-upload-label").text().toUpperCase().split(".");
 | |
|     WmUpload.FileName = fn.substring(0,7)+".GCO";
 | |
|     let input = $('#file-upload').get(0);
 | |
|     if (input.files.length) {
 | |
|       let tfile = input.files[0];
 | |
|       WmUpload.Reader = new FileReader();
 | |
|       WmUpload.Reader.onloadstart = function() {
 | |
|         jsLog.Debug("File uploading starting");
 | |
|         $('#div-upload-fname').html(WmUpload.FileName);
 | |
|         if(!$('#upload-process-collapse').hasClass("show")){ $('#upload-process-collapse').collapse('show'); }
 | |
|       };
 | |
|       WmUpload.Reader.onload = function(e) {
 | |
|         jsLog.Debug("File uploading completed");
 | |
|         WmUpload.FileSize = e.loaded;
 | |
|         WmUpload.FileContent = e.target.result.split("\n");
 | |
|         WmUpload.Cancelled = false;
 | |
|         $('#div-upload-fsize').html(wmTools.FileSizeFormat(WmUpload.FileSize));
 | |
|         $('#div-upload-fproc').html(wmTools.FormatNumber(WmUpload.FileContent.length,0));
 | |
|         WmControls.Enable(WmButtonGroups.FileProcess);
 | |
|         WmUpload.FileProgress(0,"Ready to process...");
 | |
| 
 | |
|       };
 | |
|       WmUpload.Reader.onloadend = function(e) {
 | |
|         jsLog.Debug("File uploading finished");
 | |
|         jsLog.Debug("___________________onloadend");
 | |
|       };
 | |
|       WmUpload.Reader.readAsText(tfile);
 | |
|       return true;
 | |
|     } else {
 | |
|       WmControls.ShowModalAlert('Please select the upload file before continuing');
 | |
|       WmControls.Enable(WmButtonGroups.FileManagement,WmButtonGroups.FileActions);
 | |
|       return false;
 | |
|     }
 | |
|   },
 | |
|   Cancel: function() {
 | |
|     jsLog.Debug("File uploading aborted");
 | |
|     WmUpload.Reader = null;
 | |
|     WmUpload.FileName = null;
 | |
|     WmUpload.FileSize = null;
 | |
|     WmUpload.Cancelled = true;
 | |
|     WmControls.Disable(WmButtonGroups.FileProcess);
 | |
|     WmControls.Enable(WmButtonGroups.FileManagement,WmButtonGroups.FileActions);
 | |
|     $('#div-upload-fsize').html("-");
 | |
|     $('#div-upload-fproc').html("-");
 | |
|     $('#div-upload-fname').html("-");
 | |
|     WmUpload.FileProgress(0," ");
 | |
|     if($('#upload-process-collapse').hasClass("show")){ $('#upload-process-collapse').collapse('hide'); }
 | |
|   },
 | |
|   FileProcess: function() {
 | |
|     WmControls.Disable([$("#btn-file-proc")]);
 | |
|     let fl = WmUpload.FileContent.length;
 | |
|     jsLog.Debug("Start process GCode lines ("+WmUpload.FileSize+" total)");
 | |
|     WmUpload.FileProgress(0,"Start analyzing uploaded GCode...");
 | |
|     wmGCommands.SdFileStart.GParams = WmUpload.FileName;
 | |
|     wmWebSoket.Send(wmGCommands.SdFileStart);
 | |
|     var i = 0;
 | |
|     var n = 1;
 | |
|     (function pgline() {
 | |
|       if(WmUpload.Cancelled){
 | |
|         wmWebSoket.Send(wmGCommands.SdFileStop);
 | |
|         return;
 | |
|       }
 | |
|       else if(!WmUpload.ReadyToWrite){
 | |
|         jsLog.Debug("WmUpload.FileProcess: Waiting ready to write...");
 | |
|         WmUpload.FileProgress(0,"Waiting ready to write...");
 | |
|         setTimeout(pgline, 500);
 | |
|       }
 | |
|       else {
 | |
|         let p = wmTools.GetPercentage(i+1,fl);
 | |
|         WmUpload.FileProgress(p,"Analyzing line "+(i+1)+" of "+fl);
 | |
|         let gitem = { line:WmUpload.FileContent[i], process:false, cksum:0 };
 | |
| 
 | |
|         if(gitem.line.trim()==="" || gitem.line.match(/^ *$/)) { jsLog.Verbose("GLine: "+i+": "+gitem.line+" => Empty line (skip)"); }
 | |
|         else if(gitem.line.substring(0,1)===";") { jsLog.Verbose("GLine: "+i+": "+gitem.line+" => Comment line (skip)"); }
 | |
|         else if(gitem.line.indexOf(";") > -1) { gitem.line = gitem.line.substring(0,gitem.line.indexOf(";")); gitem.process=true; }
 | |
|         else { gitem.process = true; }
 | |
| 
 | |
|         if(gitem.process) {
 | |
|           gitem.line = "N"+n+" "+gitem.line.trim();
 | |
|           gitem.line = gitem.line+"*"+wmGCommandItem.CalcChecksum(gitem.line);
 | |
|           jsLog.Verbose("GLINE TO SEND: "+gitem.line);
 | |
|           wmGCommands.CustomCmd.GCode = gitem.line;
 | |
|           wmWebSoket.Send(wmGCommands.CustomCmd);
 | |
|           n++;
 | |
|         }
 | |
|         i++;
 | |
|         if (i < fl) { setTimeout(pgline, 10); }
 | |
|         else {
 | |
|           WmUpload.FileProgress(100,"GCode Analysis completed!");
 | |
|           WmUpload.ReadyToWrite = false;
 | |
|           wmWebSoket.Send(wmGCommands.SdFileStop);
 | |
|           WmUpload.FileCompleted();
 | |
|         }
 | |
|       }
 | |
|     })();
 | |
|   },
 | |
|   FileProgress: function(p,m) {
 | |
|     p = wmTools.FormatNumber(p,0);
 | |
|     $('#upload-progressbar').text(p+"%");
 | |
|     $('#upload-progressbar').css('width',p+'%').attr('aria-valuenow', p);
 | |
|     $('#upload-progress-text').html(m);
 | |
|     if(p===100) { $('#upload-progressbar').removeClass("progress-bar-animated"); }
 | |
|   },
 | |
|   FileCompleted: function() {
 | |
|     WmControls.Disable(WmButtonGroups.FileProcess);
 | |
|     WmButtons.GetSdContentList();
 | |
|   },
 | |
| };
 | |
| 
 | |
| var WmButtons = {
 | |
|   ConsoleListClear: function() { WmConsole.Clear(); },
 | |
|   ConsoleListExport: function() { WmConsole.Export(); },
 | |
|   DeleteSdConfirm: function() {
 | |
|     $('#div-sdfile-delete-badge').html($('#txt-sdfile-selected').val());
 | |
|   },
 | |
|   DeleteSdSelected: function() {
 | |
|     jsLog.Debug("DeleteSdSelected: Delete file:"+$("#txt-sdfile-selected").val());
 | |
|     WmControls.Disable(WmButtonGroups.FileActions);
 | |
|     $('#div-sdfile-delete-rs').collapse('show');
 | |
|     wmGCommands.SdFileDel.GParams = $("#txt-sdfile-selected").val();
 | |
|     wmWebSoket.Send(wmGCommands.SdFileDel);
 | |
|     setTimeout(function(){
 | |
|       $('#modal-sdfile-delete').modal('hide');
 | |
|       $('#div-sdfile-delete-rs').collapse('hide');
 | |
|       WmButtons.GetSdContentList();
 | |
|     }, 2000);
 | |
|   },
 | |
|   GCommandSetPreset: function(gc) {
 | |
|     jsLog.Debug("Set preset GCommand ("+gc+")");
 | |
|     $('#text-gcommand').val(gc);
 | |
|     $('#modal-presets').modal('hide');
 | |
|     WmAutostart.SetGCommandChecksum();
 | |
|   },
 | |
|   GetSdContentList: function() {
 | |
|     wmSdListCounter.Reset();
 | |
|     $('#txt-sdfile-selected').val('');
 | |
|     WmControls.Disable(WmButtonGroups.FileManagement);
 | |
|     wmWebSoket.Send(wmGCommands.SdGetList);
 | |
|   },
 | |
|   PrintSdConfirm: function() {
 | |
|     $('#div-sdfile-print-badge').html($('#txt-sdfile-selected').val());
 | |
|   },
 | |
|   PrintSdSelected: function() {
 | |
|     jsLog.Debug("PrintSdSelected: Print file:"+$("#txt-sdfile-selected").val());
 | |
|     WmControls.Disable(WmButtonGroups.FileActions);
 | |
|     $('#div-sdfile-print-rs').collapse('show');
 | |
|     wmGCommands.SdFilePrint.GParams = $("#txt-sdfile-selected").val();
 | |
|     wmWebSoket.Send(wmGCommands.SdFilePrint);
 | |
|     setTimeout(function(){
 | |
|       $('#modal-sdfile-print').modal('hide');
 | |
|       $('#div-sdfile-print-rs').collapse('hide');
 | |
|       WmAutostart.SetShownPanel(wmEnums.Panels.STATUS);
 | |
|     }, 2000);
 | |
|   },
 | |
|   SaveSettings: function() {
 | |
|     jsLog.Verbose("Button 'btn-save-settings' clicked");
 | |
|     WmControls.Disable(['#btn-save-settings','#btn-close-settings']);
 | |
|     wmSettings.AutoConnect = document.getElementById('set-auto-connect').checked;
 | |
|     wmSettings.DefaultPanel = parseInt($('#set-default-panel').val());
 | |
|     wmSettings.LogLevel = parseInt($('#set-log-level').val());
 | |
|     wmSettings.SymbolMode = $('#set-log-symbol').val();
 | |
|     wmSettings.AutoTempInterval = $('#set-default-autotemp').val();
 | |
|     if($('#set-default-tempunit').val()===0) { wmSettings.TempUnit = wmEnums.TempUnits.CELSIUS; }
 | |
|     else if($('#set-default-tempunit').val()===1) { wmSettings.TempUnit = wmEnums.TempUnits.FAHRENHEIT; }
 | |
|     else if( $('#set-default-tempunit').val()===2) { wmSettings.TempUnit = wmEnums.TempUnits.KELVIN; }
 | |
| 
 | |
|     if(wmSettings.SymbolMode==='letter') {
 | |
|       wmSettings.SymbolSend = wmEnums.WsMsgSymbols.SENT.LETTER;
 | |
|       wmSettings.SymbolReceive = wmEnums.WsMsgSymbols.RECEIVED.LETTER;
 | |
|     } else {
 | |
|       wmSettings.SymbolSend = $('#div-log-symbol-icon-sample-s').html();
 | |
|       wmSettings.SymbolReceive = $('#div-log-symbol-icon-sample-r').html();
 | |
|     }
 | |
|     if(document.getElementById('set-trace-mode-append').checked) {
 | |
|       wmSettings.ConsoleDirection = wmEnums.ConsoleDirection.APPEND;
 | |
|     } else {
 | |
|       wmSettings.ConsoleDirection = wmEnums.ConsoleDirection.PREPEND;
 | |
|     }
 | |
|     wmCookie.Write(wmTools.StringFormatJson(wmSettings));
 | |
|     $('#div-save-setting-rs').collapse('show');
 | |
|     setTimeout(function(){
 | |
|       $('#modal-settings').modal('hide');
 | |
|       $('#div-save-setting-rs').collapse('hide');
 | |
|       WmControls.Enable(['#btn-save-settings','#btn-close-settings']);
 | |
|     }, 2000);
 | |
|   },
 | |
|   SdInit: function() {
 | |
|     wmWebSoket.Send(wmGCommands.SdInit);
 | |
|   },
 | |
|   SdRelease: function() {
 | |
|     wmWebSoket.Send(wmGCommands.SdRelease);
 | |
|   },
 | |
|   SendGcommand: function() {
 | |
|     if(wmWebSoket.WSObject !== null && wmWebSoket.WSObject.readyState === wmEnums.WSSatuses.OPEN) {
 | |
|       WmControls.Disable(["#btn-gcommand"]);
 | |
|       let gcmd = $('#text-gcommand');
 | |
|       if (gcmd.val() === "") {
 | |
|         gcmd.removeClass('border-dark').addClass('border-danger');
 | |
|         jsLog.Warning("Empty custom command string detected");
 | |
|         gcmd.focus();
 | |
|       } else {
 | |
|         gcmd.removeClass('border-danger').addClass('border-dark');
 | |
|         let gc = wmGCommandItem.GetCommandItemByCode(gcmd.val().trim().toUpperCase());
 | |
|         if(gc === null) {
 | |
|           wmGCommands.CustomCmd.GCode = gcmd.val().trim().toUpperCase();
 | |
|           jsLog.Debug("Sending custom command: " + wmGCommands.CustomCmd.GCode);
 | |
|           wmWebSoket.Send(wmGCommands.CustomCmd);
 | |
|         } else {
 | |
|           if(gc.Supported) {
 | |
|             wmGCommands.CustomCmd.GCode = gcmd.val().trim().toUpperCase();
 | |
|             jsLog.Debug("Sending custom command: " + wmGCommands.CustomCmd.GCode);
 | |
|             wmWebSoket.Send(wmGCommands.CustomCmd);
 | |
|           } else {
 | |
|             jsLog.Warning("Unsupported command: " + wmGCommands.CustomCmd.GCode);
 | |
|             WmConsole.Trace(new wmLogItem("GCmd: <span class=\"badge badge-light\">" + gcmd.val() + "</span> Unsupported command", wmEnums.WSMsgDirection.RECEIVED, wmEnums.ConsoleLevels.ERROR));
 | |
|           }
 | |
|         }
 | |
|         gcmd.val('');
 | |
|         $('#checksum-gcommand-value').html(' ');
 | |
|         WmControls.Enable(["#btn-gcommand"]);
 | |
|       }
 | |
|     } else { $('#modal-connect').modal('show'); }
 | |
|   },
 | |
|   SetPositionHome: function(b) {
 | |
|     if(b.id==="btn-move-home-all"){ wmWebSoket.Send(wmGCommands.MoveHome); }
 | |
|     else if (b.id==="btn-move-home-x"){ wmWebSoket.Send(wmGCommands.MoveHomeX); }
 | |
|     else if (b.id==="btn-move-home-y"){ wmWebSoket.Send(wmGCommands.MoveHomeY);}
 | |
|     else if (b.id==="btn-move-home-z"){ wmWebSoket.Send(wmGCommands.MoveHomeZ);}
 | |
|   },
 | |
|   SetSdSelected: function(sdi) {
 | |
|     jsLog.Debug("SetSdSelected: Selected file:"+$(sdi).attr("data-sdfile"));
 | |
|     $('#txt-sdfile-selected').val($(sdi).attr("data-sdfile"));
 | |
|     let lip = document.getElementById("list-sd-content").getElementsByTagName("a");
 | |
|     for (let i=0; i<lip.length; i++) { $(lip[i]).removeClass('list-group-item-success').addClass("list-group-item-light"); }
 | |
|     $(sdi).removeClass('list-group-item-light').addClass("list-group-item-success");
 | |
|     WmControls.Enable(WmButtonGroups.FileActions);
 | |
|     if(!$('#div-sd-selected-file').hasClass("show")) { $('#div-sd-selected-file').collapse("show"); }
 | |
|     wmGCommands.SdFileSel.GParams = $(sdi).attr("data-sdfile");
 | |
|     wmWebSoket.Send(wmGCommands.SdFileSel);
 | |
|   },
 | |
|   ToggleChecksumDiv: function() {
 | |
|     let csdiv = $('#checksum-gcommand-div');
 | |
|     if($('#btn-gcommand-checksum').hasClass('active')===true) { csdiv.collapse('hide'); } else { csdiv.collapse('show'); }
 | |
|   },
 | |
|   UploadSdFile: function() {
 | |
|     WmControls.Disable(WmButtonGroups.FileManagement);
 | |
|     WmControls.Disable(WmButtonGroups.FileActions);
 | |
|     if (!window.FileReader) {
 | |
|         jsLog.Error('Your browser do not support JS file uploading');
 | |
|         alert('Your browser do not support JS file uploading');
 | |
|         WmControls.Enable(WmButtonGroups.FileManagement,WmButtonGroups.FileActions);
 | |
|     } else {
 | |
|       jsLog.Debug("Starting upload file process");
 | |
|       if(WmUpload.Load()) { jsLog.Debug("Upload completed"); }
 | |
|       else {
 | |
|         jsLog.Error("Upload failed");
 | |
|         WmControls.Enable(WmButtonGroups.FileManagement,WmButtonGroups.FileActions);
 | |
|       }
 | |
|     }
 | |
|   },
 | |
|   WsConnect: function() {
 | |
|     if(wmWebSoket.WSObject === null) { wmWebSoket.Connect(); }
 | |
|     else { if(wmWebSoket.WSObject.readyState === wmEnums.WSSatuses.OPEN) { wmWebSoket.Disconnect(); } }
 | |
|   },
 | |
| };
 | |
| 
 | |
| var WmControls = {
 | |
|   Enable: function() {
 | |
|     if(arguments.length > 0) {
 | |
|       for(let i=0; i<arguments.length; i++) {
 | |
|         let fld = arguments[i];
 | |
|         for(let c=0; c<fld.length; c++) { WmControls.SetInputStatus(fld[c],'enabled'); }
 | |
|       }
 | |
|     } else { jsLog.Warning("WmControls.Enable: Missing input arguments"); }
 | |
|   },
 | |
|   Disable: function() {
 | |
|     if(arguments.length > 0) {
 | |
|       for(let i=0; i<arguments.length; i++) {
 | |
|         let fld = arguments[i];
 | |
|         for(let c=0; c<fld.length; c++) { WmControls.SetInputStatus(fld[c],'disabled'); }
 | |
|       }
 | |
|     } else { jsLog.Warning("WmControls.Disable: Missing input arguments"); }
 | |
|   },
 | |
|   SetInputStatus(inid,st) {
 | |
|     if($(inid).attr("data-input-type")==="togglebtn"){
 | |
|       if(st==="enabled") { $(inid).bootstrapToggle('enable'); } else { $(inid).bootstrapToggle('disable'); }
 | |
|     } else {
 | |
|       if(st==="enabled") { $(inid).prop("disabled", false); } else { $(inid).prop("disabled", true); }
 | |
|     }
 | |
|   },
 | |
|   SetCheckStatus: function(ao,b) {
 | |
|     let cs="off";
 | |
|     if(b) { cs="on"; }
 | |
|     for(let i=0; i<ao.length; i++) { $(ao[i]).bootstrapToggle(cs); }
 | |
|   },
 | |
|   SetUpload: function() {
 | |
|     let f = $("#file-upload").val();
 | |
|     jsLog.Debug("SetUploadFilename: Ready to upload file:"+f);
 | |
|     $("#file-upload-label").html(f.split("\\").pop());
 | |
|     WmControls.Enable(WmButtonGroups.FileManagement);
 | |
|     WmControls.Disable(WmButtonGroups.FileProcess);
 | |
|   },
 | |
|   ShowModalAlert: function(m) {
 | |
|     $('#div-alert-message').html(m);
 | |
|     $('#modal-alert').modal('show');
 | |
|   },
 | |
|   SetAutoTemp: function() {
 | |
|     if($('#set-auto-temp').prop('checked')) {
 | |
|       wmGCommands.SetTempOn.GParams = "S"+$('#auto-temp-interval').val();
 | |
|       wmWebSoket.Send(wmGCommands.SetTempOn);
 | |
|     } else { wmWebSoket.Send(wmGCommands.SetTempOff); }
 | |
|   },
 | |
|   SetFanSpeed: function(rv) {
 | |
|     rv = parseInt(rv);
 | |
|     jsLog.Debug("Set fan speed to: "+rv+"%");
 | |
|     let fsv = wmTools.FormatNumber(wmTools.GetNumPercent(rv,255),0);
 | |
|     $('#div-fan-speed-current').html(rv+"%<span class='badge badge-success ml-1'>"+fsv+"</span>");
 | |
|     $('#div-fan-speed-set').html(rv+"%<span class='badge badge-success ml-1'>"+fsv+"</span>");
 | |
|     if(rv===0) { wmWebSoket.Send(wmGCommands.FanOff); }
 | |
|     else {
 | |
|       wmGCommands.FanOn.GParams = "S"+fsv;
 | |
|       wmWebSoket.Send(wmGCommands.FanOn);
 | |
|     }
 | |
|     WmChartsData.FanSpeed.DataUpdate(rv);
 | |
|   },
 | |
|   ResetSdFileCounters() {
 | |
|     $('#list-sd-content').empty();
 | |
|     $('#div-sdlist-file-count').text(0);
 | |
|     $('#div-sdlist-folder-count').text(0);
 | |
|   },
 | |
|   UpdateTemperatures: function(dt){
 | |
|     $('#div-temp-extruder-detect').text(dt.ExtruderTemp);
 | |
|     $('#div-temp-extruder-set').text(dt.ExtruderSet);
 | |
|     $('#div-temp-extruder-unit').text(wmSettings.TempUnit.LABEL);
 | |
|     if(dt.BedTemp !== null) {
 | |
|       $('#div-temp-bed-detect').text(dt.BedTemp);
 | |
|       $('#div-temp-bed-set').text(dt.BedSet);
 | |
|       $('#div-temp-bed-unit').text(wmSettings.TempUnit.LABEL);
 | |
|     }
 | |
|   },
 | |
|   SetPrinterStatusInfo: function(s, m) {
 | |
|     if(!s) {
 | |
|       $('#div-pstatus-sdprint').removeClass("badge-danger").addClass("badge-info");
 | |
|       $('#div-pstatus-sdprint').html("Ready to print");
 | |
|       $('#div-pstatus-timer').collapse('hide');
 | |
|       $('#div-pstatus-progress').collapse('hide');
 | |
|     } else {
 | |
|       $('#div-pstatus-sdprint').removeClass("badge-danger badge-info").addClass("badge-success");
 | |
|       $('#div-pstatus-sdprint').html("Printing in progress");
 | |
|       $('#div-pstatus-timer').collapse('show');
 | |
|       $('#div-pstatus-progress').collapse('show');
 | |
|     }
 | |
|   },
 | |
|   SetSteppers: function(o) {
 | |
|     if(o.id==="set-stepper-all") {
 | |
|       WmControls.SetCheckStatus(WmButtonGroups.Stepper,o.checked);
 | |
|       if(o.checked) { wmWebSoket.Send(wmGCommands.StepEnableAll); } else { wmWebSoket.Send(wmGCommands.StepDisableAll); }
 | |
|     } else {
 | |
|       if(o.id==="set-stepper-x") { wmGCommands.StepEnable.GParams = "X"; }
 | |
|       else if(o.id==="set-stepper-y") { wmGCommands.StepEnable.GParams = "Y"; }
 | |
|       else if(o.id==="set-stepper-z") { wmGCommands.StepEnable.GParams = "Z"; }
 | |
|       else if(o.id==="set-stepper-e") { wmGCommands.StepEnable.GParams = "E"; }
 | |
|       if(o.checked) { wmWebSoket.Send(wmGCommands.StepEnable); } else { wmWebSoket.Send(wmGCommands.StepDisable); }
 | |
|     }
 | |
|   },
 | |
| };
 | |
| 
 | |
| var WmChartsData = {
 | |
|   Temperatures: {
 | |
|     TimeFormat: 'HH:mm:ss',
 | |
|     Speed: 1000,
 | |
|     Scale: 1,
 | |
|     Extruder: {
 | |
|       Label: "Extruder",
 | |
|       BorderColor: wmColors.RedCoral,
 | |
|       BgColor: wmColors.RedCoral,
 | |
|       Data:[]
 | |
|     },
 | |
|     Bed: {
 | |
|       Label: "Bed",
 | |
|       BorderColor: wmColors.Blue,
 | |
|       BgColor: wmColors.Blue,
 | |
|       Data:[]
 | |
|     },
 | |
|     AddEmpty: function(arr, n) {
 | |
|       for(var i = 0; i < n; i++) {
 | |
|         let xd = moment().subtract((n - i) * WmChartsData.Temperatures.Speed, 'milliseconds').toDate();
 | |
|         arr.push({ x: xd, y: null });
 | |
|       }
 | |
|     },
 | |
|     DataUpdate(di) {
 | |
|       let dt = new Date();
 | |
|       WmChartsData.Temperatures.Extruder.Data.push({ x: dt, y: di.ExtruderTemp });
 | |
|       WmChartsData.Temperatures.Extruder.Data.shift();
 | |
|       if(di.BedTemp !== null) {
 | |
|         WmChartsData.Temperatures.Bed.Data.push({ x: dt, y: di.BedTemp });
 | |
|         WmChartsData.Temperatures.Bed.Data.shift();
 | |
|       }
 | |
|       requestAnimationFrame(WmCharts.Advance);
 | |
|     }
 | |
|   },
 | |
|   FanSpeed: {
 | |
|     Values: {
 | |
|       Label: ["Fan speed",""],
 | |
|       BgColor: [wmColors.GreenSuc, wmColors.Grey],
 | |
|       Data: [0,100]
 | |
|     },
 | |
|     DataUpdate(di) {
 | |
|       WmChartsData.FanSpeed.Values.Data[0] = di;
 | |
|       WmChartsData.FanSpeed.Values.Data[1] = 100 - di;
 | |
|       if(di < 30) { WmChartsData.FanSpeed.Values.BgColor[0] = wmColors.GreenSuc; }
 | |
|       else if(di < 60) { WmChartsData.FanSpeed.Values.BgColor[0] = wmColors.Yellow; }
 | |
|       else if(di < 80) { WmChartsData.FanSpeed.Values.BgColor[0] = wmColors.Orange; }
 | |
|       else { WmChartsData.FanSpeed.Values.BgColor[0] = wmColors.Red; }
 | |
|       requestAnimationFrame(function() { WmCharts.FanSpeed.CanvasItem.update()});
 | |
|     }
 | |
|   }
 | |
| };
 | |
| 
 | |
| var WmCharts = {
 | |
|   Temperatures: {
 | |
|     CanvasItem: null,
 | |
|     Config: {
 | |
|       type: 'line',
 | |
|       data: {
 | |
|         datasets: [{
 | |
|           label: WmChartsData.Temperatures.Extruder.Label,
 | |
|           data: WmChartsData.Temperatures.Extruder.Data,
 | |
|           backgroundColor: WmChartsData.Temperatures.Extruder.BgColor,
 | |
|           borderColor: WmChartsData.Temperatures.Extruder.BorderColor,
 | |
|           borderWidth: 2,
 | |
|           fill: false,
 | |
|           pointRadius: 1.5
 | |
|         },{
 | |
|           label: WmChartsData.Temperatures.Bed.Label,
 | |
|           data: WmChartsData.Temperatures.Bed.Data,
 | |
|           backgroundColor: WmChartsData.Temperatures.Bed.BgColor,
 | |
|           borderColor: WmChartsData.Temperatures.Bed.BorderColor,
 | |
|           borderWidth: 2,
 | |
|           fill: false,
 | |
|           pointRadius: 1.5
 | |
|         }]
 | |
|       },
 | |
|       options: {
 | |
|         responsive: true,
 | |
|         animation: { duration: WmChartsData.Temperatures.Speed * 1.5, easing:'linear' },
 | |
|         scales: {
 | |
|           xAxes: [{ type:'time', time:{ displayFormats: { second: 'HH:mm:ss'} }, scaleLabel: { display: false } }],
 | |
|           yAxes: [{ ticks: { min: 0} }]
 | |
|         }
 | |
|       }
 | |
|     },
 | |
|     DisplayAxis: function(ck) {
 | |
|       if(ck.id==="chart-show-extruder") {
 | |
|         WmCharts.Temperatures.CanvasItem.getDatasetMeta(0).hidden = ck.checked===true ? false : true;
 | |
|         $('#chart-show-extruder-label').text(ck.checked===true ? "Show" : "Hide");
 | |
|       }
 | |
|       else if(ck.id==="chart-show-bed") {
 | |
|         WmCharts.Temperatures.CanvasItem.getDatasetMeta(1).hidden = ck.checked===true ? false : true;
 | |
|         $('#chart-show-bed-label').text(ck.checked===true ? "Show" : "Hide");
 | |
|       }
 | |
|       if(!$('#set-auto-temp').prop('checked')){ WmCharts.Temperatures.CanvasItem.update(); }
 | |
|     }
 | |
|   },
 | |
|   FanSpeed: {
 | |
|     CanvasItem: null,
 | |
|     Config: {
 | |
|       type: 'doughnut',
 | |
|       data: {
 | |
|         datasets: [{
 | |
|           data: WmChartsData.FanSpeed.Values.Data,
 | |
|           backgroundColor: WmChartsData.FanSpeed.Values.BgColor,
 | |
|         }],
 | |
|         labels: WmChartsData.FanSpeed.Values.Label
 | |
|       },
 | |
|       options: {
 | |
|         responsive: true,
 | |
|         circumference: Math.PI,
 | |
|         rotation: -Math.PI,
 | |
|         legend: { display: false },
 | |
|         tooltips: { enabled: false },
 | |
|         title: { display: false },
 | |
|         animation: {
 | |
|           animateScale: true,
 | |
|           animateRotate: true,
 | |
|           onComplete: function () {
 | |
|             var ctx = this.chart.ctx;
 | |
|             ctx.font = "14pt Verdana";
 | |
|             ctx.textAlign = 'center';
 | |
|             ctx.textBaseline = 'bottom';
 | |
|             ctx.fillStyle = wmColors.Black;
 | |
|             let ds = this.data.datasets;
 | |
|             let model = ds[0]._meta[Object.keys(ds[0]._meta)[0]].data[0]._model;
 | |
|             let xp = wmTools.FormatNumber(model.x,0), yp = wmTools.FormatNumber(model.y,0);
 | |
|             jsLog.Debug("Drawing speed gauge percentage label position (x,y): "+xp+","+yp);
 | |
|             ctx.fillText(WmChartsData.FanSpeed.Values.Data[0]+'%', xp, yp);
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   },
 | |
|   Init: function() {
 | |
|     WmChartsData.Temperatures.AddEmpty(WmChartsData.Temperatures.Extruder.Data, 20);
 | |
|     WmChartsData.Temperatures.AddEmpty(WmChartsData.Temperatures.Bed.Data, 20);
 | |
|     WmCharts.Temperatures.CanvasItem = new Chart(document.getElementById('chart-temps'), WmCharts.Temperatures.Config);
 | |
|     WmCharts.FanSpeed.CanvasItem = new Chart(document.getElementById('chart-fanspeed'), WmCharts.FanSpeed.Config);
 | |
|   },
 | |
|   Advance: function() {
 | |
|     if (WmChartsData.Temperatures.Extruder.Data[0] !== null && WmChartsData.Temperatures.Extruder.Scale < 4) { WmCharts.Temperatures.CanvasItem.update(); }
 | |
|     WmCharts.Temperatures.CanvasItem.update();
 | |
|   },
 | |
|   SetTempReport: function(tr) {
 | |
|     let temps = {
 | |
|       ExtruderTemp: tr[0].replace(/T:/,""),
 | |
|       ExtruderSet: tr[1],
 | |
|       BedTemp: tr[2]==="undefined" ? null : tr[2].replace(/B:/,""),
 | |
|       BedSet: tr[3]==="undefined" ? null : tr[3]
 | |
|     };
 | |
|     WmChartsData.Temperatures.DataUpdate(temps);
 | |
|     WmControls.UpdateTemperatures(temps);
 | |
|   }
 | |
| };
 | |
| 
 | |
| var WmConsole = {
 | |
|   Clear: function() {
 | |
|     jsLog.Debug("Clearing console message list...");
 | |
|     $('#gcommand-console-list').empty();
 | |
|     wmLogBuffer.length = 0;
 | |
|     WmConsole.Trace(new wmLogItem("Console list cleared by user", wmEnums.WSMsgDirection.RECEIVED, wmEnums.ConsoleLevels.SUCCESS));
 | |
|   },
 | |
|   Export: function() {
 | |
|     jsLog.Debug("Exporting console message list...");
 | |
|     var fdt = new Array();
 | |
|     // DA FINIRE LA PRIMA RIGA NOMI CAMPI
 | |
|     for(i=0; i<wmLogBuffer.length; i++) { fdt.push(wmLogBuffer[i].ToCsv()+"\n"); }
 | |
|     wmTools.FileDownload("e4dbox_log.csv", "text/csv;charset=utf-8", fdt);
 | |
|   },
 | |
|   SetMessageSymbol: function() {
 | |
|     if($('#set-log-symbol').val()==="icon") {
 | |
|       jsLog.Verbose("Set message symbol icon collapse panel to 'show'",this);
 | |
|       WmConsole.SetSymbolIcon();
 | |
|       $('#div-log-symbol-icon').collapse('show');
 | |
|     } else {
 | |
|       jsLog.Verbose("Set message symbol icon collapse panel to 'hide'",this);
 | |
|       $('#div-log-symbol-icon').collapse('hide');
 | |
|     }
 | |
|   },
 | |
|   SetSymbolIcon: function() {
 | |
|     let ctrl = parseInt($('#set-log-symbol-icon').val());
 | |
|     let hc = {s:null, r:null};
 | |
|     jsLog.Verbose("Set settings symbol sample fields ("+ctrl+")");
 | |
|     if(ctrl===0) { hc.s = wmIcons.ChevronUp.ToHtml(); hc.r = wmIcons.ChevronDown.ToHtml(); }
 | |
|     else if(ctrl===1) { hc.s = wmIcons.LongArrowUp.ToHtml(); hc.r = wmIcons.LongArrowDown.ToHtml(); }
 | |
|     else if(ctrl===2) { hc.s = wmIcons.ChevronLeft.ToHtml(); hc.r = wmIcons.ChevronRight.ToHtml(); }
 | |
|     else if(ctrl===3) { hc.s = wmIcons.LongArrowLeft.ToHtml(); hc.r = wmIcons.LongArrowRight.ToHtml(); }
 | |
|     $('#div-log-symbol-icon-sample-s').html(hc.s);
 | |
|     $('#div-log-symbol-icon-sample-r').html(hc.r);
 | |
|   },
 | |
|   Trace: function(litem) {
 | |
|     wmLogBuffer.push(litem);
 | |
|     let clist = $('#gcommand-console-list');
 | |
|     if (wmSettings.ConsoleDirection === wmEnums.ConsoleDirection.APPEND) { clist.append(litem.ToLoglist()); } else { clist.prepend(litem.ToLoglist()); }
 | |
|     $('#log-counter-badge').text(wmLogBuffer.length);
 | |
|   },
 | |
|   TraceSdFile: function(litem) {
 | |
|     if(litem.SdFile === "Begin file list") { wmSdListCounter.Reset(); }
 | |
|     if(litem.SdFile !== "Begin file list" && litem.SdFile !== "End file list") {
 | |
|       wmSdListCounter.FILES++;
 | |
|       if(litem.SdFile.indexOf("/")>-1) { wmSdListCounter.FOLDERS++; }
 | |
|     }
 | |
|     $('#list-sd-content').append(litem.ToSdFileList());
 | |
|     $('#div-sdlist-file-count').text(wmSdListCounter.FILES);
 | |
|     $('#div-sdlist-folder-count').text(wmSdListCounter.FOLDERS);
 | |
|     if(litem.SdFile === "End file list") { WmControls.Enable(WmButtonGroups.FileManagement); }
 | |
|   }
 | |
| };
 | |
| 
 | |
| var WmAutostart = {
 | |
|   SetDefaultPanel: function() {
 | |
|     jsLog.Verbose("Set default shown panel ("+wmSettings.DefaultPanel+")");
 | |
|     if (wmSettings.DefaultPanel == wmEnums.Panels.STATUS) { $('#accordion-panel-status-body').addClass("show"); }
 | |
|     else if (wmSettings.DefaultPanel === wmEnums.Panels.CONTROLS) { $('#accordion-panel-controls-body').addClass("show"); }
 | |
|     else if (wmSettings.DefaultPanel === wmEnums.Panels.TEMP) { $('#accordion-panel-temp-body').addClass("show"); }
 | |
|     else if (wmSettings.DefaultPanel === wmEnums.Panels.FILES) { $('#accordion-panel-file-body').addClass("show"); }
 | |
|     else if (wmSettings.DefaultPanel === wmEnums.Panels.CONSOLE) { $('#accordion-panel-console-body').addClass("show"); }
 | |
|   },
 | |
|   SetShownPanel: function(p) {
 | |
|     jsLog.Verbose("Set shown panel ("+p+")");
 | |
|     if (p === wmEnums.Panels.STATUS) { $('#accordion-panel-status-body').removeClass("hide").addClass("show"); } else { $('#accordion-panel-status-body').removeClass("show").addClass("hide"); }
 | |
|     if (p === wmEnums.Panels.CONTROLS) { $('#accordion-panel-controls-body').removeClass("hide").addClass("show"); } else { $('#accordion-panel-controls-body').removeClass("show").addClass("hide"); }
 | |
|     if (p === wmEnums.Panels.TEMP) { $('#accordion-panel-temp-body').removeClass("hide").addClass("show"); } else { $('#accordion-panel-temp-body').removeClass("show").addClass("hide"); }
 | |
|     if (p === wmEnums.Panels.FILES) { $('#accordion-panel-file-body').removeClass("hide").addClass("show"); } else { $('#accordion-panel-file-body').removeClass("show").addClass("hide"); }
 | |
|     if (p === wmEnums.Panels.CONSOLE) { $('#accordion-panel-console-body').removeClass("hide").addClass("show"); } else { $('#accordion-panel-console-body').removeClass("show").addClass("hide"); }
 | |
|   },
 | |
|   SetGCommandChecksum: function() {
 | |
|     cs = wmGCommandItem.CalcChecksum($('#text-gcommand').val());
 | |
|     $('#checksum-gcommand-value').text(cs);
 | |
|     jsLog.Debug("Set GCommand checksum ("+cs+")");
 | |
|   },
 | |
|   SetGCommandPresetList: function() {
 | |
|     jsLog.Verbose("Fill GCommand preset list");
 | |
|     let lip = document.getElementById("list-presets").getElementsByTagName("li");
 | |
|     let i=0;
 | |
|     if(lip.length === 1) {
 | |
|       Object.keys(wmGCommands).forEach(key => {
 | |
|         if(wmGCommands[key].GCode != "" && wmGCommands[key].Supported) {
 | |
|           let gp = wmGCommands[key].GParams !== null ? wmTools.StringFormat(wmGCommands[key].GParams,wmGCommands[key].Values) : '';
 | |
|           var lib = "<button type=\"button\" class=\"list-group-item list-group-item-action p-1\" onclick=\"WmButtons.GCommandSetPreset('"+wmGCommands[key].GCode+" "+gp+"')\">";
 | |
|           lib += "<span class=\"h5\"><span class=\"badge badge-success mr-1\" style=\"width:100px;\">"+wmGCommands[key].GCode+" "+gp+"</span></span>";
 | |
|           lib += wmGCommands[key].Description+"</button>";
 | |
|           $('#list-presets').append(lib);
 | |
|           i++;
 | |
|         }
 | |
|       });
 | |
|     }
 | |
|     jsLog.Verbose("Fill GCommand preset list completed ("+i+" items)");
 | |
|   },
 | |
|   SetWmSettingsControls: function() {
 | |
|     jsLog.Verbose("Set settings controls fields");
 | |
|     $('#set-default-panel').val(wmSettings.DefaultPanel);
 | |
|     $('#set-auto-connect').bootstrapToggle(wmSettings.AutoConnect==true ? "on" : "off");
 | |
|     $('#set-default-autotemp').val(wmSettings.AutoTempInterval);
 | |
|     $('#set-default-tempunit').val(wmSettings.TempUnit.VALUE);
 | |
|     $('#set-log-level').val(wmSettings.LogLevel);
 | |
|     if(wmSettings.ConsoleDirection===wmEnums.ConsoleDirection.APPEND) {
 | |
|       $('#set-trace-mode-prepend').prop('checked',false);
 | |
|       $('#set-trace-mode-append').prop('checked',true);
 | |
|     } else {
 | |
|       $('#set-trace-mode-append').prop('checked',false);
 | |
|       $('#set-trace-mode-prepend').prop('checked',true);
 | |
|     }
 | |
|     $('#set-log-symbol').val(wmSettings.SymbolMode);
 | |
|     if(wmSettings.SymbolMode==='letter') { $('#div-log-symbol-icon').collapse('hide'); }
 | |
|     else { $('#div-log-symbol-icon').collapse('show'); SetConsoleSymbolIcon(); }
 | |
|   },
 | |
|   SetAutotempDefault: function() {
 | |
|     $('#auto-temp-interval').val(wmSettings.AutoTempInterval);
 | |
|   }
 | |
| };
 | |
| 
 | |
| $(document).ready(function () {
 | |
|   $('.accordion-always-open').on('show.bs.collapse', function () { $(this).data('isShowing', true); });
 | |
|   $('.accordion-always-open').on('hide.bs.collapse', function (event) {
 | |
|     if (!$(this).data('isShowing')) { event.preventDefault(); }
 | |
|     $(this).data('isShowing', false);
 | |
|   });
 | |
|   jsLog.Debug("Browser in use: "+wmTools.GetBrowser());
 | |
|   jsLog.Debug("Browser sizes: "+wmTools.GetScreenSize());
 | |
| 
 | |
|   // AutoStar Actions
 | |
|   WmAutostart.SetWmSettingsControls();
 | |
|   WmAutostart.SetDefaultPanel();
 | |
|   WmAutostart.SetGCommandPresetList();
 | |
|   WmAutostart.SetAutotempDefault();
 | |
| 
 | |
|   // EVENTS: Buttons
 | |
|   $('#btn-clear-console').click(function() { WmButtons.ConsoleListClear(); });
 | |
|   $('#btn-export-console').click(function() { WmButtons.ConsoleListExport(); });
 | |
|   $('#btn-file-proc').click(function(){ WmUpload.FileProcess(); });
 | |
|   $('#btn-file-proc-cancel').click(function() { WmUpload.Cancel(); });
 | |
|   $('#btn-file-upload').click(function(){ WmButtons.UploadSdFile(); });
 | |
|   $('#btn-gcommand').click(function() { WmButtons.SendGcommand(); });
 | |
|   $('#btn-get-sdcontent').click(function() { WmButtons.GetSdContentList(); });
 | |
|   $('#btn-move-home-all').click(function() { WmButtons.SetPositionHome(this); });
 | |
|   $('#btn-move-home-x').click(function() { WmButtons.SetPositionHome(this); });
 | |
|   $('#btn-move-home-y').click(function() { WmButtons.SetPositionHome(this); });
 | |
|   $('#btn-move-home-z').click(function() { WmButtons.SetPositionHome(this); });
 | |
|   $('#btn-save-settings').click(function() { WmButtons.SaveSettings(); });
 | |
|   $('#btn-sdfile-delete-modal').click(function() { WmButtons.DeleteSdSelected(); });
 | |
|   $('#btn-sdfile-print-modal').click(function() { WmButtons.PrintSdSelected(); });
 | |
|   $('#btn-set-sdinit').click(function() { WmButtons.SdInit(); });
 | |
|   $('#btn-set-sdrelease').click(function() { WmButtons.SdRelease(); });
 | |
|   $('#btn-wsconnect').click(function() { WmButtons.WsConnect(); });
 | |
|   $('#btn-wsconnect-modal').click(function() { WmButtons.WsConnect(); });
 | |
| 
 | |
|   // EVENTS: Inputs fields
 | |
|   $('#text-gcommand').keyup(function()  { WmAutostart.SetGCommandChecksum(); });
 | |
|   $('#text-gcommand').change(function() { WmAutostart.SetGCommandChecksum(); });
 | |
|   $('#set-log-symbol').change(function() { WmConsole.SetMessageSymbol(); });
 | |
|   $('#set-log-symbol-icon').change(function() { WmConsole.SetSymbolIcon(); });
 | |
|   $('#file-upload').change( function() { WmControls.SetUpload(); });
 | |
|   $('#set-auto-temp').change( function() { WmControls.SetAutoTemp(); });
 | |
|   $('#auto-temp-interval').change( function() { WmControls.SetAutoTemp();} );
 | |
|   $('#chart-show-extruder').change( function() { WmCharts.Temperatures.DisplayAxis(this); });
 | |
|   $('#chart-show-bed').change( function() { WmCharts.Temperatures.DisplayAxis(this); });
 | |
|   $('#fan-speed-range').on("change", function() { WmControls.SetFanSpeed(this.value); });
 | |
|   $('#set-stepper-all').change( function() { WmControls.SetSteppers(this); });
 | |
|   $('#set-stepper-e').change( function() { WmControls.SetSteppers(this); });
 | |
|   $('#set-stepper-x').change( function() { WmControls.SetSteppers(this); });
 | |
|   $('#set-stepper-y').change( function() { WmControls.SetSteppers(this); });
 | |
|   $('#set-stepper-z').change( function() { WmControls.SetSteppers(this); });
 | |
| 
 | |
|   // Autorun onload
 | |
|   WmConsole.Trace(new wmLogItem("Ready", wmEnums.WSMsgDirection.SENT, wmEnums.ConsoleLevels.SUCCESS));
 | |
|   if(wmSettings.AutoConnect===true) { wmWebSoket.Connect(); }
 | |
|   window.onload = function() {
 | |
|     WmCharts.Init();
 | |
|     WmCharts.Advance();
 | |
|   };
 | |
| 
 | |
|   WmControls.Enable(WmButtonGroups.All());
 | |
| });
 |