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 920ba9c..8375a9a 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 1e78772..8f2c586 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 3925cb8..321cb56 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 4b5fb18..f77d509 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 9fd6036..bec3cfb 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 @@
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +