avoid double binding of the event. max speed now from machine profile
This commit is contained in:
parent
336076f254
commit
5d9eba510d
4 changed files with 40 additions and 21 deletions
|
|
@ -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")]);
|
||||
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
};
|
||||
|
||||
}
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
<p>{{ _('Please select your laser intensity and speed:') }}</p>
|
||||
<form class="form-horizontal">
|
||||
<div class="control-group">
|
||||
<label class="control-label">{{ _('Laser intensity (1-1000)') }}</label>
|
||||
<label class="control-label">{{ _('Laser intensity') }} (1-1000)</label>
|
||||
<div class="controls">
|
||||
<div class="input-append">
|
||||
<input id="svgtogcode_intensity" type="text" data-bind="slicerValue: laserIntensity">
|
||||
|
|
@ -15,10 +15,10 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">{{ _('Speed (30 - 3000)') }}</label>
|
||||
<label class="control-label">{{ _('Speed') }} (<span data-bind="text: minSpeed">30</span> - <span data-bind="text: maxSpeed">3000</span>)</label>
|
||||
<div class="controls">
|
||||
<div class="input-append">
|
||||
<input id="svgtogcode_feedrate" type="text" data-bind="value: laserSpeed">
|
||||
<input id="svgtogcode_feedrate" class="uninitialized" type="text" data-bind="value: laserSpeed">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue