Added features for quick setting of temperatures for PLA and ABS - configured via new settings.

Not perfect, I'd like to show temperature to be set in UI.
On clicking it always moves to the top of the page.
The overflow and temp layout changes are to allow the drop down to display outside of the tab.

Is it worth having more temp boxes e.g. Nylon? - array like similar to move speeds?
master
Richard Mitchell 2013-02-23 01:09:30 +00:00
parent 1c9854b6c1
commit 9e351339a4
5 changed files with 130 additions and 16 deletions

View File

@ -166,14 +166,22 @@ def setTargetTemperature():
if not printer.isOperational():
return jsonify(SUCCESS)
if request.values.has_key("temp"):
elif request.values.has_key("temp"):
# set target temperature
temp = request.values["temp"]
if "ABS" == temp:
temp = settings().get(["temperature","extruderABS"])
elif "PLA" == temp:
temp = settings().get(["temperature","extruderPLA"])
printer.command("M104 S" + temp)
if request.values.has_key("bedTemp"):
elif request.values.has_key("bedTemp"):
# set target bed temperature
bedTemp = request.values["bedTemp"]
if "ABS" == bedTemp:
bedTemp = settings().get(["temperature","bedABS"])
elif "PLA" == bedTemp:
bedTemp = settings().get(["temperature","bedPLA"])
printer.command("M140 S" + bedTemp)
return jsonify(SUCCESS)
@ -353,7 +361,13 @@ def getSettings():
"timelapse": s.getBaseFolder("timelapse"),
"timelapseTmp": s.getBaseFolder("timelapse_tmp"),
"logs": s.getBaseFolder("logs")
}
},
"temperature": {
"extruderABS": s.get(["temperature", "extruderABS"]),
"bedABS": s.get(["temperature", "bedABS"]),
"extruderPLA": s.get(["temperature", "extruderPLA"]),
"bedPLA": s.get(["temperature", "bedPLA"])
}
})
@app.route(BASEURL + "settings", methods=["POST"])
@ -384,6 +398,12 @@ def setSettings():
if "timelapseTmp" in data["folder"].keys(): s.setBaseFolder("timelapse_tmp", data["folder"]["timelapseTmp"])
if "logs" in data["folder"].keys(): s.setBaseFolder("logs", data["folder"]["logs"])
if "temperature" in data.keys():
if "extruderABS" in data["temperature"].keys(): s.set(["temperature", "extruderABS"], data["temperature"]["extruderABS"])
if "bedABS" in data["temperature"].keys(): s.set(["temperature", "bedABS"], data["temperature"]["bedABS"])
if "extruderPLA" in data["temperature"].keys(): s.set(["temperature", "extruderPLA"], data["temperature"]["extruderPLA"])
if "bedPLA" in data["temperature"].keys(): s.set(["temperature", "bedPLA"], data["temperature"]["bedPLA"])
s.save()
return getSettings()

View File

@ -56,6 +56,12 @@ default_settings.update({
"z": 200,
"e": 300
}
},
"temperature": {
"extruderABS": 210,
"bedABS": 100,
"extruderPLA": 180,
"bedPLA": 60
}
})
@ -278,4 +284,4 @@ def _resolveSettingsDir(applicationName):
elif sys.platform == "win32":
return os.path.join(os.environ["APPDATA"], applicationName)
else:
return os.path.expanduser(os.path.join("~", "." + applicationName.lower()))
return os.path.expanduser(os.path.join("~", "." + applicationName.lower()))

View File

@ -98,8 +98,12 @@ table th.timelapse_files_action, table td.timelapse_files_action {
background-repeat: no-repeat;
}
#temp {
overflow: hidden;
.tab-content, .tab-pane {
overflow: visible;
}
.tempInput {
width: 50px;
}
#temp_newTemp, #temp_newBedTemp, #speed_innerWall, #speed_outerWall, #speed_fill, #speed_support, #webcam_timelapse_interval {

View File

@ -1019,6 +1019,11 @@ function SettingsViewModel() {
self.folder_timelapseTmp = ko.observable(undefined);
self.folder_logs = ko.observable(undefined);
self.temperature_extruderABS = ko.observable(undefined);
self.temperature_bedABS = ko.observable(undefined);
self.temperature_extruderPLA = ko.observable(undefined);
self.temperature_bedPLA = ko.observable(undefined);
self.requestData = function() {
$.ajax({
url: AJAX_BASEURL + "settings",
@ -1046,6 +1051,11 @@ function SettingsViewModel() {
self.folder_timelapse(response.folder.timelapse);
self.folder_timelapseTmp(response.folder.timelapseTmp);
self.folder_logs(response.folder.logs);
self.temperature_extruderABS(response.temperature.extruderABS);
self.temperature_bedABS(response.temperature.bedABS);
self.temperature_extruderPLA(response.temperature.extruderPLA);
self.temperature_bedPLA(response.temperature.bedPLA);
}
self.saveData = function() {
@ -1071,7 +1081,13 @@ function SettingsViewModel() {
"timelapse": self.folder_timelapse(),
"timelapseTmp": self.folder_timelapseTmp(),
"logs": self.folder_logs()
}
},
"temperature": {
"extruderABS": self.temperature_extruderABS(),
"bedABS": self.temperature_bedABS(),
"extruderPLA": self.temperature_extruderPLA(),
"bedPLA": self.temperature_bedPLA()
},
}
$.ajax({
@ -1207,8 +1223,10 @@ $(function() {
//~~ Temperature control
$("#temp_newTemp_set").click(function() {
$("#temp_newTemp_set, .temp_newTemp_set").click(function() {
var newTemp = $("#temp_newTemp").val();
if ($(this).data('temp') != null)
newTemp = $(this).data('temp');
$.ajax({
url: AJAX_BASEURL + "control/temperature",
type: "POST",
@ -1217,8 +1235,10 @@ $(function() {
success: function() {$("#temp_newTemp").val("")}
})
})
$("#temp_newBedTemp_set").click(function() {
$("#temp_newBedTemp_set, .temp_newBedTemp_set").click(function() {
var newBedTemp = $("#temp_newBedTemp").val();
if ($(this).data('temp') != null)
newBedTemp = $(this).data('temp');
$.ajax({
url: AJAX_BASEURL + "control/temperature",
type: "POST",

View File

@ -156,8 +156,8 @@
<div class="row" style="padding-left: 20px">
<div id="temperature-graph"></div>
</div>
<div>
<div class="form-horizontal" style="width: 49%; float: left; margin-bottom: 20px;">
<div class="row-fluid" style="margin-bottom: 20px">
<div class="form-horizontal span6">
<h1>Temperature</h1>
<label>Current: <strong data-bind="text: tempString"></strong></label>
@ -166,12 +166,30 @@
<label for="temp_newTemp">New Target</label>
<div class="input-append">
<input class="span1" type="text" id="temp_newTemp" data-bind="attr: {placeholder: targetTemp}">
<input type="text" id="temp_newTemp" data-bind="attr: {placeholder: targetTemp}" class="tempInput">
<span class="add-on">°C</span>
</div>
<button type="submit" class="btn" id="temp_newTemp_set">Set</button>
<div class="btn-group">
<button type="submit" class="btn" id="temp_newTemp_set">Set</button>
<button class="btn dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<!-- Tried using data-bind="attr: {'data-temp': temperatureABS}" however I don't have access to the settingsViewModel -->
<li>
<a href="#" class="temp_newTemp_set" data-temp="ABS">Set ABS</a>
</li>
<li>
<a href="#" class="temp_newTemp_set" data-temp="PLA">Set PLA</a>
</li>
<li class="divider"></li>
<li>
<a href="#" class="temp_newTemp_set" data-temp="0">Off</a>
</li>
</ul>
</div>
</div>
<div class="form-horizontal" style="width: 49%; margin-left: 2%; float: left; margin-bottom: 20px;">
<div class="form-horizontal span6">
<h1>Bed Temperature</h1>
<label>Current: <strong data-bind="text: bedTempString"></strong></label>
@ -180,10 +198,27 @@
<label for="temp_newBedTemp">New Target</label>
<div class="input-append">
<input class="span1" type="text" id="temp_newBedTemp" data-bind="attr: {placeholder: bedTargetTemp}">
<input type="text" id="temp_newBedTemp" data-bind="attr: {placeholder: bedTargetTemp}" class="tempInput">
<span class="add-on">°C</span>
</div>
<button type="submit" class="btn" id="temp_newBedTemp_set">Set</button>
<div class="btn-group">
<button type="submit" class="btn" id="temp_newBedTemp_set">Set</button>
<button class="btn dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li>
<a href="#" class="temp_newBedTemp_set" data-temp="ABS">Set ABS</a>
</li>
<li>
<a href="#" class="temp_newBedTemp_set" data-temp="PLA">Set PLA</a>
</li>
<li class="divider"></li>
<li>
<a href="#" class="temp_newBedTemp_set" data-temp="0">Off</a>
</li>
</ul>
</div>
</div>
</div>
</div>
@ -489,6 +524,7 @@
<li><a href="#settings_webcam" data-toggle="tab">Webcam</a></li>
<li><a href="#settings_features" data-toggle="tab">Features</a></li>
<li><a href="#settings_folder" data-toggle="tab">Folder</a></li>
<li><a href="#settings_temperature" data-toggle="tab">Temperature</a></li>
</ul>
<div class="tab-content">
@ -594,6 +630,34 @@
</div>
</form>
</div>
<div class="tab-pane" id="settings_temperature">
<form class="form-horizontal">
<div class="control-group">
<label class="control-label" for="settings-temperatureExtruderABS">Extruder Temperature (ABS)</label>
<div class="controls">
<input type="number" class="input-mini text-right" data-bind="value: temperature_extruderABS" id="settings-temperatureExtruderABS">
</div>
</div>
<div class="control-group">
<label class="control-label" for="settings-temperatureBedABS">Bed Temperature (ABS)</label>
<div class="controls">
<input type="number" class="input-mini text-right" data-bind="value: temperature_bedABS" id="settings-temperatureBedABS">
</div>
</div>
<div class="control-group">
<label class="control-label" for="settings-temperatureExtruderPLA">Extruder Temperature (PLA)</label>
<div class="controls">
<input type="number" class="input-mini text-right" data-bind="value: temperature_extruderPLA" id="settings-temperatureExtruderPLA">
</div>
</div>
<div class="control-group">
<label class="control-label" for="settings-temperatureBedPLA">Bed Temperature (PLA)</label>
<div class="controls">
<input type="number" class="input-mini text-right" data-bind="value: temperature_bedPLA" id="settings-temperatureBedPLA">
</div>
</div>
</form>
</div>
</div>
</div>
</div>