diff --git a/octoprint_fanspeedslider/__init__.py b/octoprint_fanspeedslider/__init__.py index 9dfc9fc..feed38f 100644 --- a/octoprint_fanspeedslider/__init__.py +++ b/octoprint_fanspeedslider/__init__.py @@ -4,16 +4,20 @@ from __future__ import absolute_import import octoprint.plugin class FanSliderPlugin(octoprint.plugin.StartupPlugin, - octoprint.plugin.TemplatePlugin, - octoprint.plugin.SettingsPlugin, - octoprint.plugin.AssetPlugin): - - def get_assets(self): - return dict( - js=["js/fanslider.js"] - ) - - def get_update_information(self): + octoprint.plugin.TemplatePlugin, + octoprint.plugin.SettingsPlugin, + octoprint.plugin.AssetPlugin): + + def get_settings_defaults(self): + return dict(fanSpeed="255") + + def get_assets(self): + return dict( + js=["js/fanslider.js"], + css=["css/style.css"] + ) + + def get_update_information(self): return dict( fanspeedslider=dict( displayName="Fan Speed Slider", diff --git a/octoprint_fanspeedslider/static/css/style.css b/octoprint_fanspeedslider/static/css/style.css new file mode 100644 index 0000000..81a22d4 --- /dev/null +++ b/octoprint_fanspeedslider/static/css/style.css @@ -0,0 +1,16 @@ +#touch body #control #control-fan-slider { + padding: 30px 0 15px 15px; + width: 50%; +} + +#touch body #control #control-fan-slider button, #touch body #control #control-fan-slider input { + padding: 10px 20px; + margin: 0 0 20px; + width: 100%; + min-height: 40px; + height: auto; + -ms-box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} \ No newline at end of file diff --git a/octoprint_fanspeedslider/static/js/fanslider.js b/octoprint_fanspeedslider/static/js/fanslider.js index be72e4d..56ebc40 100644 --- a/octoprint_fanspeedslider/static/js/fanslider.js +++ b/octoprint_fanspeedslider/static/js/fanslider.js @@ -11,35 +11,49 @@ $(function() { self.printerstate = parameters[0]; self.loginstate = parameters[1]; - self.control = parameters[2] - - fanSpeed = ko.observable(255); - //convert 0 - 255 to 0 - 100% for the button - fanPercent = ko.pureComputed(function () { - return Math.floor(fanSpeed() /255 * 100); + self.control = parameters[2]; + //default to 100% fan speed + fanSpeed = ko.observable(100); + //convert percentage into PWM + fanPWM = ko.pureComputed(function () { + return Math.round(fanSpeed() * 255 / 100); }); //set fan speed sendFanSpeed = function () { - self.control.sendCustomCommand({ command: "M106 S" + fanSpeed() }); - }; + self.control.sendCustomCommand({ command: "M106 S" + fanPWM() }); + }; //extra classes $("#control > div.jog-panel").eq(0).addClass("controls"); $("#control > div.jog-panel").eq(1).addClass("tools"); - $("#control > div.jog-panel").eq(2).addClass("general"); - - //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(); - //add new fan controls - $("#control > div.jog-panel.general").find("button").eq(0).before("\ - \ - "); - + $("#control > div.jog-panel").eq(2).addClass("general"); + //Only display the slider if TouchUI isn't active (sorry) + 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(); + //add new fan controls + $("#control > div.jog-panel.general").find("button").eq(0).before("\ + \ + \ + \ + "); + } else { + console.log("Fan Speed Slider: NOTICE! TouchUI is active, adding simplified control."); + $("#control > div.jog-panel.general").after("\ +