avoid double binding of the event. max speed now from machine profile

This commit is contained in:
Teja 2015-01-28 20:36:54 +01:00
parent 336076f254
commit 5d9eba510d
4 changed files with 40 additions and 21 deletions

View file

@ -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")]);
});

View file

@ -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());
};
}

View file

@ -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>

View file

@ -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);