Allow inverting of any control axis from the webui, not just Z

Users who have already set the "invert Z" option must re-enable the
setting as the storage of the option has changed.
This commit is contained in:
Bryan Mayland 2013-09-26 09:41:09 -04:00
parent 076c6764a0
commit 8d78104be8
5 changed files with 38 additions and 8 deletions

View file

@ -665,7 +665,7 @@ def getSettings():
"feature": {
"gcodeViewer": s.getBoolean(["feature", "gCodeVisualizer"]),
"temperatureGraph": s.getBoolean(["feature", "temperatureGraph"]),
"invertZ": s.getBoolean(["feature", "invertZ"]),
"invertAxes": s.get(["feature", "invertAxes"]),
"waitForStart": s.getBoolean(["feature", "waitForStartOnConnect"]),
"alwaysSendChecksum": s.getBoolean(["feature", "alwaysSendChecksum"]),
"sdSupport": s.getBoolean(["feature", "sdSupport"]),
@ -737,7 +737,7 @@ def setSettings():
if "feature" in data.keys():
if "gcodeViewer" in data["feature"].keys(): s.setBoolean(["feature", "gCodeVisualizer"], data["feature"]["gcodeViewer"])
if "temperatureGraph" in data["feature"].keys(): s.setBoolean(["feature", "temperatureGraph"], data["feature"]["temperatureGraph"])
if "invertZ" in data["feature"].keys(): s.setBoolean(["feature", "invertZ"], data["feature"]["invertZ"])
if "invertAxes" in data["feature"].keys(): s.set(["feature", "invertAxes"], data["feature"]["invertAxes"])
if "waitForStart" in data["feature"].keys(): s.setBoolean(["feature", "waitForStartOnConnect"], data["feature"]["waitForStart"])
if "alwaysSendChecksum" in data["feature"].keys(): s.setBoolean(["feature", "alwaysSendChecksum"], data["feature"]["alwaysSendChecksum"])
if "sdSupport" in data["feature"].keys(): s.setBoolean(["feature", "sdSupport"], data["feature"]["sdSupport"])

View file

@ -56,7 +56,7 @@ default_settings = {
"feature": {
"gCodeVisualizer": True,
"temperatureGraph": True,
"invertZ": False,
"invertAxes": "",
"waitForStartOnConnect": False,
"alwaysSendChecksum": False,
"sdSupport": True,

View file

@ -81,7 +81,7 @@ function ControlViewModel(loginStateViewModel, settingsViewModel) {
if (typeof distance === "undefined")
distance = $('#jog_distance button.active').data('distance');
if (axis == "z" && self.settings.feature_invertZ()) {
if (self.settings.getFeature_InvertAxis(axis)) {
multiplier *= -1;
}

View file

@ -28,7 +28,7 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) {
self.feature_gcodeViewer = ko.observable(undefined);
self.feature_temperatureGraph = ko.observable(undefined);
self.feature_invertZ = ko.observable(undefined);
self.feature_invertAxes = ko.observable(undefined);
self.feature_waitForStart = ko.observable(undefined);
self.feature_alwaysSendChecksum = ko.observable(undefined);
self.feature_sdSupport = ko.observable(undefined);
@ -75,6 +75,29 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) {
self.terminalFilters.remove(filter);
};
self.getFeature_InvertAxis = function(axis) {
return (self.feature_invertAxes() || "").indexOf(axis) != -1;
};
self.setFeature_InvertAxis = function(axis, value) {
var currInvert = self.feature_invertAxes() || "";
var currValue = self.getFeature_InvertAxis(axis);
if (value && !currValue)
self.feature_invertAxes(currInvert + axis);
else if (!value && currValue)
self.feature_invertAxes(currInvert.replace(axis, ""));
};
self.koInvertAxis = function (axis) { return ko.computed({
read: function () { return self.getFeature_InvertAxis(axis); },
write: function (value) { self.setFeature_InvertAxis(axis, value); },
owner: self
})};
self.feature_invertX = self.koInvertAxis('x');
self.feature_invertY = self.koInvertAxis('y');
self.feature_invertZ = self.koInvertAxis('z');
self.requestData = function() {
$.ajax({
url: AJAX_BASEURL + "settings",
@ -106,7 +129,7 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) {
self.feature_gcodeViewer(response.feature.gcodeViewer);
self.feature_temperatureGraph(response.feature.temperatureGraph);
self.feature_invertZ(response.feature.invertZ);
self.feature_invertAxes(response.feature.invertAxes);
self.feature_waitForStart(response.feature.waitForStart);
self.feature_alwaysSendChecksum(response.feature.alwaysSendChecksum);
self.feature_sdSupport(response.feature.sdSupport);
@ -166,7 +189,7 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) {
"feature": {
"gcodeViewer": self.feature_gcodeViewer(),
"temperatureGraph": self.feature_temperatureGraph(),
"invertZ": self.feature_invertZ(),
"invertAxes": self.feature_invertAxes(),
"waitForStart": self.feature_waitForStart(),
"alwaysSendChecksum": self.feature_alwaysSendChecksum(),
"sdSupport": self.feature_sdSupport(),

View file

@ -185,8 +185,15 @@
</div>
<div class="control-group">
<div class="controls">
Invert controls
<label class="checkbox">
<input type="checkbox" data-bind="checked: feature_invertZ" id="settings-featureInvertZ"> Invert Z axis controls
<input type="checkbox" data-bind="checked: feature_invertX" id="settings-featureInvertX"> X axis
</label>
<label class="checkbox">
<input type="checkbox" data-bind="checked: feature_invertY" id="settings-featureInvertY"> Y axis
</label>
<label class="checkbox">
<input type="checkbox" data-bind="checked: feature_invertZ" id="settings-featureInvertZ"> Z axis
</label>
</div>
</div>