From e8701195e66f2d27ffe17fb514eae8173795aaf7 Mon Sep 17 00:00:00 2001
From: Georgiy Bondarenko <69736697+nehilo@users.noreply.github.com>
Date: Thu, 4 Mar 2021 22:54:23 +0500
Subject: Initial commit
---
data/www/webmarlin.js | 872 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 872 insertions(+)
create mode 100644 data/www/webmarlin.js
(limited to 'data/www/webmarlin.js')
diff --git a/data/www/webmarlin.js b/data/www/webmarlin.js
new file mode 100644
index 0000000..943f7b9
--- /dev/null
+++ b/data/www/webmarlin.js
@@ -0,0 +1,872 @@
+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: " + strcmd + " " + 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(""+wmIcons.Exchange.AddClass('')+"");
+ ctrls.div.html("Connecting...");
+ ctrls.btn.html("");
+ 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(""+wmIcons.Wifi.AddClass('')+"");
+ ctrls.div.html("Disconnecting...");
+ ctrls.btn.html("");
+ 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: " + gcmd.val() + " 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 0) {
+ for(let i=0; i 0) {
+ for(let i=0; i"+fsv+"");
+ $('#div-fan-speed-set').html(rv+"%"+fsv+"");
+ 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-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 = "";
+ $('#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());
+});
--
cgit v1.2.3