diff --git a/.gitignore b/.gitignore index 3f311b8..9b9b4d6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.pyc *.egg-info .DS_Store +config.yaml diff --git a/octoprint_enclosure/__init__.py b/octoprint_enclosure/__init__.py index 29e36aa..387ab06 100644 --- a/octoprint_enclosure/__init__.py +++ b/octoprint_enclosure/__init__.py @@ -5,17 +5,16 @@ import octoprint.plugin import octoprint.util - class EnclosurePlugin(octoprint.plugin.StartupPlugin, octoprint.plugin.TemplatePlugin, octoprint.plugin.SettingsPlugin, octoprint.plugin.AssetPlugin, octoprint.plugin.BlueprintPlugin, octoprint.plugin.EventHandlerPlugin): - # ~~ TemplatePlugin def get_template_configs(self): return [ - dict(type="settings", template="enclosure_settings.jinja2", custom_bindings=True) - ] + dict(type="settings", template="enclosure_settings.jinja2", + custom_bindings=True) + ] # ~~ AssetPlugin mixin def get_assets(self): @@ -23,25 +22,24 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, octoprint.plugin.TemplateP js=["js/enclosure.js", "js/bootstrap-colorpicker.min.js"], css=["css/bootstrap-colorpicker.css", "css/enclosure.css"]) - # ~~ SettingsPlugin + # ~~ SettingsPlugin def get_settings_defaults(self): - return dict(enclosureOutputs=[]) + return dict(enclosureOutputs=[], enclosureInputs=[]) # ~~ SettingsPlugin mixin def on_settings_save(self, data): enclosureOutputs = self._settings.get(["enclosureOutputs"]) + enclosureInputs = self._settings.get(["enclosureInputs"]) print(data) octoprint.plugin.SettingsPlugin.on_settings_save(self, data) # ~~ Softwareupdate hook def get_update_information(self): return dict(enclosure=dict(displayName="Enclosure Plugin", displayVersion=self._plugin_version, - # version check: github repository - type="github_release", user="vitormhenrique", repo="OctoPrint-Enclosure", current=self._plugin_version, - # update method: pip - pip="https://github.com/vitormhenrique/OctoPrint-Enclosure/archive/{target_version}.zip")) - - + # version check: github repository + type="github_release", user="vitormhenrique", repo="OctoPrint-Enclosure", current=self._plugin_version, + # update method: pip + pip="https://github.com/vitormhenrique/OctoPrint-Enclosure/archive/{target_version}.zip")) __plugin_name__ = "Enclosure Plugin" @@ -56,4 +54,4 @@ def __plugin_load__(): __plugin_hooks__ = { # "octoprint.comm.protocol.gcode.queuing" : __plugin_implementation__.hook_gcode_queuing, "octoprint.plugin.softwareupdate.check_config": __plugin_implementation__.get_update_information - } \ No newline at end of file + } diff --git a/octoprint_enclosure/old_stuff/static/js/enclosure.js b/octoprint_enclosure/old_stuff/static/js/old_enclosure.js similarity index 96% rename from octoprint_enclosure/old_stuff/static/js/enclosure.js rename to octoprint_enclosure/old_stuff/static/js/old_enclosure.js index 99876d3..905ecdc 100644 --- a/octoprint_enclosure/old_stuff/static/js/enclosure.js +++ b/octoprint_enclosure/old_stuff/static/js/old_enclosure.js @@ -11,7 +11,7 @@ $(function () { self.rpi_outputs = ko.observableArray(); self.rpi_inputs = ko.observableArray(); - self.settingsOpen = false; + self.settingsOpen = ko.observable(false); self.settings_outputs_regular = ko.pureComputed(function () { return ko.utils.arrayFilter(self.settingsViewModel.settings.plugins.enclosure.rpi_outputs(), function (item) { diff --git a/octoprint_enclosure/static/js/enclosure.js b/octoprint_enclosure/static/js/enclosure.js index fc883be..b62e4fd 100644 --- a/octoprint_enclosure/static/js/enclosure.js +++ b/octoprint_enclosure/static/js/enclosure.js @@ -137,17 +137,17 @@ $(function () { }); - self.fromOutputData = function (data) { + self.fromInputEnclosureData = function (data) { self.isNew(data === undefined); if (data === undefined) { var arrRelaysLength = self.enclosureInputs().length; - var nextIndex = arrRelaysLength == 0 ? 1 : self.enclosureInputs()[arrRelaysLength - 1].index_id + 1; + var nextIndex = arrRelaysLength == 0 ? 1 : self.enclosureInputs()[arrRelaysLength - 1].index_id() + 1; data = cleanInput(nextIndex); } else { objIndex = self.enclosureInputs().findIndex((obj => obj.index_id == data.index_id)); - data = self.enclosureInputs()[objIndex]; + data = ko.mapping.toJS(self.enclosureInputs()[objIndex]); } // general info @@ -173,7 +173,7 @@ $(function () { }; - self.toOutputData = function (data) { + self.toInputEnclosureData = function (data) { var output_data = { index_id: self.index_id(), label: self.label(), @@ -276,17 +276,17 @@ $(function () { return false; }); - self.fromOutputData = function (data) { + self.fromOutputEnclosureData = function (data) { self.isNew(data === undefined); if (data === undefined) { var arrRelaysLength = self.enclosureOutputs().length; - var nextIndex = arrRelaysLength == 0 ? 1 : self.enclosureOutputs()[arrRelaysLength - 1].index_id + 1; + var nextIndex = arrRelaysLength == 0 ? 1 : self.enclosureOutputs()[arrRelaysLength - 1].index_id() + 1; data = cleanOutput(nextIndex); } else { objIndex = self.enclosureOutputs().findIndex((obj => obj.index_id == data.index_id)); - data = self.enclosureOutputs()[objIndex]; + data = ko.mapping.toJS(self.enclosureOutputs()[objIndex]); } // general info @@ -347,7 +347,7 @@ $(function () { }; - self.toOutputData = function () { + self.toOutputEnclosureData = function () { var output_data = { index_id: self.index_id(), label: self.label(), @@ -427,16 +427,29 @@ $(function () { self.enclosureOutputs = ko.observableArray(); self.enclosureInputs = ko.observableArray(); + self.settings_unsaved = ko.observable(false); + self.onBeforeBinding = function () { - self.enclosureOutputs(self.settingsViewModel.settings.plugins.enclosure.enclosureOutputs()); + self.enclosureOutputs(self.settingsViewModel.settings.plugins.enclosure.enclosureOutputs()) + self.enclosureInputs(self.settingsViewModel.settings.plugins.enclosure.enclosureInputs()) + // self.settings_unsaved(false); }; - self.onEventSettingsUpdated = function () { + self.onSettingsBeforeSave = function () { // self.enclosureOutputs(self.settingsViewModel.settings.plugins.enclosure.enclosureOutputs()); }; - self.syncSettings = function () { + self.onEventSettingsUpdated = function () { self.settingsViewModel.settings.plugins.enclosure.enclosureOutputs(self.enclosureOutputs()); + self.settingsViewModel.settings.plugins.enclosure.enclosureInputs(self.enclosureInputs()); + self.settings_unsaved(false); + }; + + + self.syncSettings = function () { + // self.settingsViewModel.settings.plugins.enclosure.enclosureOutputs(self.enclosureOutputs()); + // self.settingsViewModel.settings.plugins.enclosure.enclosureInputs(self.enclosureInputs()); + // self.settings_unsaved(false); }; self.createOutputEditor = function (data) { @@ -458,17 +471,17 @@ $(function () { self.removeOutput = function (data) { self.enclosureOutputs.remove(data); - self.syncSettings(); + self.settings_unsaved(true); }; self.removeInput = function(data){ self.enclosureInputs.remove(data); - self.syncSettings(); + self.settings_unsaved(true); } self.showOutputEditorDialog = function (data) { - self.outputEditor.fromOutputData(data); + self.outputEditor.fromOutputEnclosureData(data); var editDialog = $("#settings_outputs_edit_dialog"); @@ -487,7 +500,7 @@ $(function () { self.showInputEditorDialog = function (data) { - self.inputEditor.fromOutputData(data); + self.inputEditor.fromInputEnclosureData(data); var editDialog = $("#settings_inputs_edit_dialog"); @@ -513,7 +526,7 @@ $(function () { self.addOutputs(callback); - self.syncSettings(); + // self.syncSettings(); } }; @@ -526,7 +539,7 @@ $(function () { self.addInputs(callback); - self.syncSettings(); + // self.syncSettings(); } }; @@ -534,12 +547,14 @@ $(function () { self.addOutputs = function (callback) { var isNew = self.outputEditor.isNew(); - var output = self.outputEditor.toOutputData(); + self.settings_unsaved(true); + + var output = ko.mapping.fromJS(self.outputEditor.toOutputEnclosureData()); if (isNew) { self.enclosureOutputs.push(output); } else { - objIndex = self.enclosureOutputs().findIndex((obj => obj.index_id == output.index_id)); + objIndex = self.enclosureOutputs().findIndex((obj => obj.index_id() == output.index_id())); var _old_output = self.enclosureOutputs()[objIndex]; self.enclosureOutputs.replace(_old_output, output); } @@ -552,12 +567,14 @@ $(function () { self.addInputs = function (callback) { var isNew = self.inputEditor.isNew(); - var input = self.inputEditor.toOutputData(); + self.settings_unsaved(true); + + var input = ko.mapping.fromJS(self.inputEditor.toInputEnclosureData()); if (isNew) { self.enclosureInputs.push(input); } else { - objIndex = self.enclosureInputs().findIndex((obj => obj.index_id == input.index_id)); + objIndex = self.enclosureInputs().findIndex((obj => obj.index_id() == input.index_id())); var _old_input = self.enclosureInputs()[objIndex]; self.enclosureInputs.replace(_old_input, input); } diff --git a/octoprint_enclosure/templates/enclosure_settings.jinja2 b/octoprint_enclosure/templates/enclosure_settings.jinja2 index c4abac7..34187d5 100644 --- a/octoprint_enclosure/templates/enclosure_settings.jinja2 +++ b/octoprint_enclosure/templates/enclosure_settings.jinja2 @@ -1,18 +1,33 @@ -