diff --git a/src/octoprint/plugins/lasercutterprofiles/static/js/lasercutterprofiles.js b/src/octoprint/plugins/lasercutterprofiles/static/js/lasercutterprofiles.js index a69b74f4..77cd5282 100644 --- a/src/octoprint/plugins/lasercutterprofiles/static/js/lasercutterprofiles.js +++ b/src/octoprint/plugins/lasercutterprofiles/static/js/lasercutterprofiles.js @@ -5,6 +5,7 @@ $(function() { self.workingarea = params[0]; self.control = params[1]; + self.conversion = params[2]; self._cleanProfile = function() { return { @@ -109,6 +110,8 @@ $(function() { self.workingarea.workingAreaWidthMM(self.currentProfileData().volume.width()); self.workingarea.workingAreaHeightMM(self.currentProfileData().volume.depth()); + var maxSpeed = Math.min(self.currentProfileData().axes.x.speed(), self.currentProfileData().axes.y.speed()); + self.conversion.maxSpeed(maxSpeed); }; self.addProfile = function(callback) { @@ -256,7 +259,7 @@ $(function() { // view model class, identifier, parameters for constructor, container to bind to ADDITIONAL_VIEWMODELS.push([LaserCutterProfilesViewModel, "laserCutterProfilesViewModel", - ["workingAreaViewModel", "controlViewModel"], + ["workingAreaViewModel", "controlViewModel", "vectorConversionViewModel"], document.getElementById("laserCutterProfiles")]); }); diff --git a/src/octoprint/plugins/svgtogcode/static/js/convert.js b/src/octoprint/plugins/svgtogcode/static/js/convert.js index 954b9cc7..f2a0e348 100644 --- a/src/octoprint/plugins/svgtogcode/static/js/convert.js +++ b/src/octoprint/plugins/svgtogcode/static/js/convert.js @@ -15,15 +15,21 @@ function VectorConversionViewModel(params) { self.defaultProfile = undefined; self.gcodeFilename = ko.observable(); - self.settingValues = ko.observable(self.settings.settings); self.laserIntensity = ko.observable(undefined); self.laserSpeed = ko.observable(undefined); + self.maxSpeed = ko.observable(3000); + self.minSpeed = ko.observable(30); self.title = ko.observable(undefined); self.slicer = ko.observable(); self.slicers = ko.observableArray(); self.profile = ko.observable(); self.profiles = ko.observableArray(); + self.maxSpeed.subscribe(function(val){ + console.log("maxSpeed changed", val); + self._configureFeedrateSlider(); + }); + // TODO check if still in use self.show = function(target, file) { self.target = target; @@ -39,7 +45,7 @@ function VectorConversionViewModel(params) { var speed = self.settings.settings.plugins.svgtogcode.defaultIntensity(); self.laserIntensity(intensity); self.laserSpeed(speed); - + self.svg = self.workingArea.getCompositionSVG(); // TODO: js svg conversion @@ -93,7 +99,7 @@ function VectorConversionViewModel(params) { var tmpGcodeFilename = self.gcodeFilename().trim(); return tmpGcodeFilename !== "" && tmpIntensity > 0 && tmpIntensity <= 1000 // TODO no magic numbers here! - && tmpSpeed >= 30 && tmpSpeed <= 3000; + && tmpSpeed >= self.minSpeed() && tmpSpeed <= self.maxSpeed(); } }); @@ -242,19 +248,34 @@ function VectorConversionViewModel(params) { reversed: false, selection: "after", orientation: "horizontal", - min: 30, - max: 3000, // TODO no magic numbers here. - step: 10, + min: 0, + max: 1000, + step: 1, value: 300, enabled: true, - formatter: function(value) { return "" + (value) +"mm/min"; } - }).on("slideStop", function(ev){ - self.laserSpeed(ev.value); - }); + formatter: function(value) { return "" + Math.round(self._calcRealSpeed(value)) +"mm/min"; } + }); - self.laserSpeed.subscribe(function(newVal){ - self.feedrateSlider.slider('setValue', parseInt(newVal)); + // use the class as a flag to avoid double binding of the slideStop event + if($("#svgtogcode_feedrate").attr('class') === 'uninitialized'){ + self.feedrateSlider.on("slideStop", function(ev){ + self.laserSpeed(self._calcRealSpeed(ev.value)); + }); + $("#svgtogcode_feedrate").removeClass('uninitialized'); + } + + + + var speedSubscription = self.laserSpeed.subscribe(function(realVal){ + var val = (parseInt(realVal) - self.minSpeed()) / (self.maxSpeed() - self.minSpeed()); + self.feedrateSlider.slider('setValue', val); + speedSubscription.dispose(); // only do it once }); }; + self._calcRealSpeed = function(sliderVal){ + console.log(); + return self.minSpeed() + sliderVal/1000 * (self.maxSpeed() - self.minSpeed()); + }; + } \ No newline at end of file diff --git a/src/octoprint/plugins/svgtogcode/templates/svgtogcode.jinja2 b/src/octoprint/plugins/svgtogcode/templates/svgtogcode.jinja2 index d87c2be4..549c5ccf 100644 --- a/src/octoprint/plugins/svgtogcode/templates/svgtogcode.jinja2 +++ b/src/octoprint/plugins/svgtogcode/templates/svgtogcode.jinja2 @@ -7,7 +7,7 @@

{{ _('Please select your laser intensity and speed:') }}

- +
@@ -15,10 +15,10 @@
- +
- +
diff --git a/src/octoprint/static/js/app/main.js b/src/octoprint/static/js/app/main.js index 3104d30f..d2bdfb9c 100644 --- a/src/octoprint/static/js/app/main.js +++ b/src/octoprint/static/js/app/main.js @@ -70,10 +70,7 @@ $(function() { var temperatureViewModel = new TemperatureViewModel(loginStateViewModel, settingsViewModel); var terminalViewModel = new TerminalViewModel(loginStateViewModel, settingsViewModel); - //var workingAreaViewModel = new WorkingAreaViewModel(loginStateViewModel, settingsViewModel, printerStateViewModel); var slicingViewModel = new SlicingViewModel(loginStateViewModel, printerProfilesViewModel); - //var vectorConversionViewModel = new VectorConversionViewModel(loginStateViewModel, settingsViewModel, printerStateViewModel, workingAreaViewModel); - //var gcodeFilesViewModel = new GcodeFilesViewModel(printerStateViewModel, loginStateViewModel, slicingViewModel, vectorConversionViewModel, workingAreaViewModel); var gcodeFilesViewModel = new GcodeFilesViewModel(printerStateViewModel, loginStateViewModel, slicingViewModel, null, null); var controlViewModel = new ControlViewModel(loginStateViewModel, settingsViewModel, printerStateViewModel); var navigationViewModel = new NavigationViewModel(loginStateViewModel, appearanceViewModel, settingsViewModel, usersViewModel); @@ -97,8 +94,6 @@ $(function() { navigationViewModel: navigationViewModel, logViewModel: logViewModel, slicingViewModel: slicingViewModel, - //vectorConversionViewModel: vectorConversionViewModel, - //workingAreaViewModel: workingAreaViewModel }; var allViewModels = _.values(viewModelMap);