Allow disabling of the temperature graph and gcode visualizer without any side effects

Also introduced feature parameter for the temperature graph

See #215
This commit is contained in:
Gina Häußge 2013-08-29 21:16:35 +02:00
parent 7155661259
commit 55cb991c44
7 changed files with 44 additions and 14 deletions

View file

@ -177,6 +177,7 @@ def index():
webcamStream=settings().get(["webcam", "stream"]),
enableTimelapse=(settings().get(["webcam", "snapshot"]) is not None and settings().get(["webcam", "ffmpeg"]) is not None),
enableGCodeVisualizer=settings().get(["feature", "gCodeVisualizer"]),
enableTemperatureGraph=settings().get(["feature", "temperatureGraph"]),
enableSystemMenu=settings().get(["system"]) is not None and settings().get(["system", "actions"]) is not None and len(settings().get(["system", "actions"])) > 0,
enableAccessControl=userManager is not None,
enableSdSupport=settings().get(["feature", "sdSupport"]),
@ -587,6 +588,7 @@ def getSettings():
},
"feature": {
"gcodeViewer": s.getBoolean(["feature", "gCodeVisualizer"]),
"temperatureGraph": s.getBoolean(["feature", "temperatureGraph"]),
"waitForStart": s.getBoolean(["feature", "waitForStartOnConnect"]),
"alwaysSendChecksum": s.getBoolean(["feature", "alwaysSendChecksum"]),
"sdSupport": s.getBoolean(["feature", "sdSupport"])
@ -651,6 +653,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 "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

@ -50,6 +50,7 @@ default_settings = {
},
"feature": {
"gCodeVisualizer": True,
"temperatureGraph": True,
"waitForStartOnConnect": False,
"alwaysSendChecksum": False,
"sdSupport": True

View file

@ -194,7 +194,10 @@ $(function() {
ko.applyBindings(temperatureViewModel, document.getElementById("temp"));
ko.applyBindings(controlViewModel, document.getElementById("control"));
ko.applyBindings(terminalViewModel, document.getElementById("term"));
ko.applyBindings(gcodeViewModel, document.getElementById("gcode"));
var gcode = document.getElementById("gcode");
if (gcode) {
ko.applyBindings(gcodeViewModel, gcode);
}
ko.applyBindings(settingsViewModel, document.getElementById("settings_dialog"));
ko.applyBindings(navigationViewModel, document.getElementById("navbar"));
ko.applyBindings(appearanceViewModel, document.getElementsByTagName("head")[0]);

View file

@ -27,6 +27,7 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) {
self.webcam_flipV = ko.observable(undefined);
self.feature_gcodeViewer = ko.observable(undefined);
self.feature_temperatureGraph = ko.observable(undefined);
self.feature_waitForStart = ko.observable(undefined);
self.feature_alwaysSendChecksum = ko.observable(undefined);
self.feature_sdSupport = ko.observable(undefined);
@ -98,6 +99,7 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) {
self.webcam_flipV(response.webcam.flipV);
self.feature_gcodeViewer(response.feature.gcodeViewer);
self.feature_temperatureGraph(response.feature.temperatureGraph);
self.feature_waitForStart(response.feature.waitForStart);
self.feature_alwaysSendChecksum(response.feature.alwaysSendChecksum);
self.feature_sdSupport(response.feature.sdSupport);
@ -151,6 +153,7 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) {
},
"feature": {
"gcodeViewer": self.feature_gcodeViewer(),
"temperatureGraph": self.feature_temperatureGraph(),
"waitForStart": self.feature_waitForStart(),
"alwaysSendChecksum": self.feature_alwaysSendChecksum(),
"sdSupport": self.feature_sdSupport()

View file

@ -104,6 +104,8 @@ function TemperatureViewModel(loginStateViewModel, settingsViewModel) {
self.targetTemp(data[data.length - 1].targetTemp);
self.bedTargetTemp(data[data.length - 1].targetBedTemp);
if (!CONFIG_TEMPERATURE_GRAPH) return;
if (!self.temperatures)
self.temperatures = [];
if (!self.temperatures.actual)
@ -115,12 +117,14 @@ function TemperatureViewModel(loginStateViewModel, settingsViewModel) {
if (!self.temperatures.targetBed)
self.temperatures.targetBed = [];
for (var i = 0; i < data.length; i++) {
self.temperatures.actual.push([data[i].currentTime, data[i].temp])
self.temperatures.target.push([data[i].currentTime, data[i].targetTemp])
self.temperatures.actualBed.push([data[i].currentTime, data[i].bedTemp])
self.temperatures.targetBed.push([data[i].currentTime, data[i].targetBedTemp])
}
_.each(data, function(d) {
var time = d.currentTime;
self.temperatures.actual.push([currentTime, d.temp]);
self.temperatures.target.push([currentTime, d.targetTemp]);
self.temperatures.actualBed.push([currentTime, d.bedTemp]);
self.temperatures.targetBed.push([currentTime, d.targetBedTemp]);
});
self.temperatures.actual = self.temperatures.actual.slice(-300);
self.temperatures.target = self.temperatures.target.slice(-300);
self.temperatures.actualBed = self.temperatures.actualBed.slice(-300);
@ -135,13 +139,17 @@ function TemperatureViewModel(loginStateViewModel, settingsViewModel) {
}
self.updatePlot = function() {
var data = [
{label: "Actual", color: "#FF4040", data: self.temperatures.actual},
{label: "Target", color: "#FFA0A0", data: self.temperatures.target},
{label: "Bed Actual", color: "#4040FF", data: self.temperatures.actualBed},
{label: "Bed Target", color: "#A0A0FF", data: self.temperatures.targetBed}
]
$.plot($("#temperature-graph"), data, self.plotOptions);
var graph = $("#temperature-graph");
if (graph.length) {
var data = [
{label: "Actual", color: "#FF4040", data: self.temperatures.actual},
{label: "Target", color: "#FFA0A0", data: self.temperatures.target},
{label: "Bed Actual", color: "#4040FF", data: self.temperatures.actualBed},
{label: "Bed Target", color: "#A0A0FF", data: self.temperatures.targetBed}
]
$.plot(graph, data, self.plotOptions);
}
}
self.setTempFromProfile = function(profile) {

View file

@ -26,6 +26,7 @@
var CONFIG_ACCESS_CONTROL = {% if enableAccessControl -%} true; {% else %} false; {%- endif %}
var CONFIG_SD_SUPPORT = {% if enableSdSupport -%} true; {% else %} false; {%- endif %}
var CONFIG_FIRST_RUN = {% if firstRun -%} true; {% else %} false; {%- endif %}
var CONFIG_TEMPERATURE_GRAPH = {% if enableTemperatureGraph -%} true; {% else %} false; {%- endif %}
var SOCKJS_URI = window.location.protocol.slice(0, -1) + "://" + (window.document ? window.document.domain : window.location.hostname) + ":" + window.location.port + "/sockjs";
var SOCKJS_DEBUG = {% if debug -%} true; {% else %} false; {%- endif %}
@ -245,9 +246,11 @@
<div class="tab-content">
<div class="tab-pane active" id="temp">
{% if enableTemperatureGraph %}
<div class="row" style="padding-left: 20px">
<div id="temperature-graph"></div>
</div>
{% endif %}
<div class="row-fluid" style="margin-bottom: 20px">
<div class="form-horizontal span6">
<h1>Temperature</h1>
@ -419,6 +422,7 @@
<script type="text/html" id="customControls_emptyTemplate"><div></div></script>
<!-- End of templates for custom controls -->
</div>
{% if enableGCodeVisualizer %}
<div class="tab-pane" id="gcode">
<canvas id="canvas" width="572" height="588"></canvas>
<div id="slider-vertical"></div>
@ -506,6 +510,7 @@
</div>
</div>
{% endif %}
<div class="tab-pane" id="term">
<pre id="terminal-output" class="pre-scrollable"></pre>
<label class="checkbox">

View file

@ -168,6 +168,13 @@
</div>
<div class="tab-pane" id="settings_features">
<form class="form-horizontal">
<div class="control-group">
<div class="controls">
<label class="checkbox">
<input type="checkbox" data-bind="checked: feature_temperatureGraph" id="settings-featureTemperatureGraph"> Enable Temperature Graph
</label>
</div>
</div>
<div class="control-group">
<div class="controls">
<label class="checkbox">