diff --git a/src/octoprint/plugins/svgtogcode/static/js/working_area.js b/src/octoprint/plugins/svgtogcode/static/js/working_area.js index 0f51f77d..c6f28d4c 100644 --- a/src/octoprint/plugins/svgtogcode/static/js/working_area.js +++ b/src/octoprint/plugins/svgtogcode/static/js/working_area.js @@ -17,10 +17,12 @@ function WorkingAreaViewModel(loginStateViewModel, settingsViewModel, printerSta self.isReady = ko.observable(undefined); self.isLoading = ko.observable(undefined); + self.px2mm_factor = 1; + self.move_laser = function(el){ - var x = event.offsetX; - var y = event.toElement.offsetHeight - event.offsetY; + var x = self.px2mm(event.offsetX); + var y = self.px2mm(event.toElement.offsetHeight - event.offsetY); var command = "G0 X"+x+" Y"+y; $.ajax({ url: API_BASEURL + "printer/command", @@ -31,20 +33,55 @@ function WorkingAreaViewModel(loginStateViewModel, settingsViewModel, printerSta }); }; + + self.crosshairX = function(){ var pos = self.state.currentPos(); - return pos !== undefined ? (pos.x - 15) : -100; // subtract width/2; + return pos !== undefined ? (self.mm2px(pos.x) - 15) : -100; // subtract width/2; }; self.crosshairY = function(){ var h = document.getElementById('area_preview').clientHeight; var pos = self.state.currentPos(); - return pos !== undefined ? (h - pos.y - 15) : -100; // subtract height/2; + return pos !== undefined ? (h - self.mm2px(pos.y) - 15) : -100; // subtract height/2; }; - - + self.workingAreaWidth = function(){ + return self.getDivDimensions()[0]; + }; + + self.workingAreaHeight = function(){ + return self.getDivDimensions()[1]; + }; + + self.getDivDimensions = function(){ + var maxH = document.documentElement.clientHeight - $('body>nav').height() - $('footer>*').outerHeight(); + var maxW = $('#workingarea div.span8').innerWidth(); + + // y/x = 297/216 respectively 594/432 + var hwRatio = self.settings.printer_bedDimensionY() / self.settings.printer_bedDimensionX(); + var w = 0; + var h = 0; + if( maxH/maxW > hwRatio) { + w = maxW; + h = maxW * hwRatio; + } else { + w = maxH / hwRatio; + h = maxH; + } + var dim = [w,h]; + self.px2mm_factor = self.settings.printer_bedDimensionX() / dim[0]; + return dim; + }; + + self.px2mm = function(val){ + return val * self.px2mm_factor; + }; + + self.mm2px = function(val){ + return val / self.px2mm_factor; + }; } diff --git a/src/octoprint/plugins/svgtogcode/templates/override_index.jinja2 b/src/octoprint/plugins/svgtogcode/templates/override_index.jinja2 index edd7d14a..5ba1ea9e 100644 --- a/src/octoprint/plugins/svgtogcode/templates/override_index.jinja2 +++ b/src/octoprint/plugins/svgtogcode/templates/override_index.jinja2 @@ -322,7 +322,13 @@ var UI_API_KEY = "{{ uiApiKey }}";
-
+
diff --git a/src/octoprint/static/css/mrbeam.css b/src/octoprint/static/css/mrbeam.css index 991ccb60..35960766 100644 --- a/src/octoprint/static/css/mrbeam.css +++ b/src/octoprint/static/css/mrbeam.css @@ -1529,8 +1529,8 @@ input.search-query, .workingarea { border:1px solid black; - height:297px; - width:210px; + height:80vh; + width:auto; position:relative; } diff --git a/src/octoprint/static/js/app/viewmodels/control.js b/src/octoprint/static/js/app/viewmodels/control.js index e612f984..31cebda4 100644 --- a/src/octoprint/static/js/app/viewmodels/control.js +++ b/src/octoprint/static/js/app/viewmodels/control.js @@ -110,12 +110,9 @@ function ControlViewModel(loginStateViewModel, settingsViewModel, printerStateVi self.laserPos = ko.computed(function(){ var pos = self.printerState.currentPos(); - console.log(pos) if(!pos){ - console.log("foo"); return "(?, ?)"; } else { - console.log("bar") return "("+ pos.x + ", "+ pos.y + ")"; } }, this);