From 18f009fa85ad365f94e024c12f88d600726a1086 Mon Sep 17 00:00:00 2001 From: ntoff Date: Wed, 30 Aug 2017 22:39:57 +1000 Subject: [PATCH] add a setting to change the default value of the slider --- README.md | 4 ++-- octoprint_fanspeedslider/__init__.py | 7 +++++- octoprint_fanspeedslider/static/css/style.css | 4 ++++ .../static/js/fanslider.js | 24 ++++++++++--------- .../templates/fanspeedslider_settings.jinja2 | 18 ++++++++++++++ setup.py | 2 +- 6 files changed, 44 insertions(+), 15 deletions(-) create mode 100644 octoprint_fanspeedslider/templates/fanspeedslider_settings.jinja2 diff --git a/README.md b/README.md index 843ba8c..31bf8cb 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# OctoPrint-FanSpeedSlider +# Fan Speed Slider Plugin -Adds a slider to control the speed of a parts cooling fan. +Add a slider to control the speed of a parts cooling fan. The default value of the slider is user configurable, however the value doesn't limit the output of the fan during a print, for that you'll have to use your slicer. ![](./image/slider.JPG) diff --git a/octoprint_fanspeedslider/__init__.py b/octoprint_fanspeedslider/__init__.py index feed38f..7cb3e58 100644 --- a/octoprint_fanspeedslider/__init__.py +++ b/octoprint_fanspeedslider/__init__.py @@ -9,7 +9,7 @@ class FanSliderPlugin(octoprint.plugin.StartupPlugin, octoprint.plugin.AssetPlugin): def get_settings_defaults(self): - return dict(fanSpeed="255") + return dict(fanSpeed=100) def get_assets(self): return dict( @@ -17,6 +17,11 @@ class FanSliderPlugin(octoprint.plugin.StartupPlugin, css=["css/style.css"] ) + def get_template_configs(self): + return [ + dict(type="settings", custom_bindings=False) + ] + def get_update_information(self): return dict( fanspeedslider=dict( diff --git a/octoprint_fanspeedslider/static/css/style.css b/octoprint_fanspeedslider/static/css/style.css index 81a22d4..d885502 100644 --- a/octoprint_fanspeedslider/static/css/style.css +++ b/octoprint_fanspeedslider/static/css/style.css @@ -13,4 +13,8 @@ -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; +} + +div#settings_plugin_fanspeedslider div { + width: 80%; } \ No newline at end of file diff --git a/octoprint_fanspeedslider/static/js/fanslider.js b/octoprint_fanspeedslider/static/js/fanslider.js index 56ebc40..efcd923 100644 --- a/octoprint_fanspeedslider/static/js/fanslider.js +++ b/octoprint_fanspeedslider/static/js/fanslider.js @@ -1,24 +1,24 @@ /* - * - * * Author: ntoff * License: AGPLv3 */ $(function() { - function FanSliderPluginViewModel(parameters) { + function FanSliderPluginViewModel(parameters) { var self = this; self.printerstate = parameters[0]; self.loginstate = parameters[1]; self.control = parameters[2]; + self.settings = parameters[3]; + //default to 100% fan speed - fanSpeed = ko.observable(100); + fanSpeed = ko.observable(undefined); //convert percentage into PWM fanPWM = ko.pureComputed(function () { return Math.round(fanSpeed() * 255 / 100); }); - //set fan speed + //send gcode to set fan speed sendFanSpeed = function () { self.control.sendCustomCommand({ command: "M106 S" + fanPWM() }); }; @@ -26,13 +26,12 @@ $(function() { $("#control > div.jog-panel").eq(0).addClass("controls"); $("#control > div.jog-panel").eq(1).addClass("tools"); $("#control > div.jog-panel").eq(2).addClass("general"); - //Only display the slider if TouchUI isn't active (sorry) + //If !TouchUI then remove standard buttons + add slider + new buttons if ($("#touch body").length ==0 ) { //add ID to buttons $("#control > div.general").find("button").eq(0).attr("id", "motors-off"); $("#control > div.general").find("button").eq(1).attr("id", "fan-on"); $("#control > div.general").find("button").eq(2).attr("id", "fan-off"); - //remove original fan on/off buttons $("#fan-on").remove(); $("#fan-off").remove(); @@ -42,11 +41,10 @@ $(function() { \ \ "); - } else { + } else { //if TouchUI is active we only add the speed input + fan on button in a new section. console.log("Fan Speed Slider: NOTICE! TouchUI is active, adding simplified control."); $("#control > div.jog-panel.general").after("\
\ -

" + gettext("Filament") + "

\
\ \ \ @@ -54,10 +52,14 @@ $(function() {
\ "); } + //retrieve settings + self.onBeforeBinding = function() { + fanSpeed(self.settings.settings.plugins.fanspeedslider.fanSpeed()); + } } OCTOPRINT_VIEWMODELS.push([ FanSliderPluginViewModel, - ["printerStateViewModel", "loginStateViewModel", "controlViewModel"] - ]); + ["printerStateViewModel", "loginStateViewModel", "controlViewModel", "settingsViewModel"] + ]); }); \ No newline at end of file diff --git a/octoprint_fanspeedslider/templates/fanspeedslider_settings.jinja2 b/octoprint_fanspeedslider/templates/fanspeedslider_settings.jinja2 new file mode 100644 index 0000000..ebbf725 --- /dev/null +++ b/octoprint_fanspeedslider/templates/fanspeedslider_settings.jinja2 @@ -0,0 +1,18 @@ +

{{ _('Fan Speed Slider') }}

+
+

{{ _('Set the default value for the fan speed slider.') }}

+
+
+
+
+ +
+
+ + % +
+ {{ _('This value does not affect the maximum or minimum value the fan will run at. To limit the power the fan will use during a print, see your slicer\'s settings.') }} +
+
+
+
diff --git a/setup.py b/setup.py index 0ec87ad..f1ce404 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ plugin_package = "octoprint_fanspeedslider" plugin_name = "OctoPrint-FanSpeedSlider" # The plugin's version. Can be overwritten within OctoPrint's internal data via __plugin_version__ in the plugin module -plugin_version = "0.1.1" +plugin_version = "0.1.3" # The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin # module