From 9e351339a4dea4de3319490dfa730066b9508390 Mon Sep 17 00:00:00 2001 From: Richard Mitchell Date: Sat, 23 Feb 2013 01:09:30 +0000 Subject: [PATCH] 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? --- octoprint/server.py | 26 ++++++++++-- octoprint/settings.py | 8 +++- octoprint/static/css/ui.css | 8 +++- octoprint/static/js/ui.js | 26 ++++++++++-- octoprint/templates/index.html | 78 +++++++++++++++++++++++++++++++--- 5 files changed, 130 insertions(+), 16 deletions(-) diff --git a/octoprint/server.py b/octoprint/server.py index 920ba9c9..8375a9ad 100644 --- a/octoprint/server.py +++ b/octoprint/server.py @@ -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() diff --git a/octoprint/settings.py b/octoprint/settings.py index 1e78772b..8f2c5865 100644 --- a/octoprint/settings.py +++ b/octoprint/settings.py @@ -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())) \ No newline at end of file + return os.path.expanduser(os.path.join("~", "." + applicationName.lower())) diff --git a/octoprint/static/css/ui.css b/octoprint/static/css/ui.css index 3925cb85..321cb566 100644 --- a/octoprint/static/css/ui.css +++ b/octoprint/static/css/ui.css @@ -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 { diff --git a/octoprint/static/js/ui.js b/octoprint/static/js/ui.js index 4b5fb18e..f77d5093 100644 --- a/octoprint/static/js/ui.js +++ b/octoprint/static/js/ui.js @@ -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", diff --git a/octoprint/templates/index.html b/octoprint/templates/index.html index 9fd6036d..bec3cfb2 100644 --- a/octoprint/templates/index.html +++ b/octoprint/templates/index.html @@ -156,8 +156,8 @@
-
-
+
+

Temperature

@@ -166,12 +166,30 @@
- + °C
- +
+ + + +
-
+

Bed Temperature

@@ -180,10 +198,27 @@
- + °C
- +
+ + + +
@@ -489,6 +524,7 @@
  • Webcam
  • Features
  • Folder
  • +
  • Temperature
  • @@ -594,6 +630,34 @@
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +