-
Save
+
Reset
+ path="hassio/addons/[[addonSlug]]/options"
+ data="[[resetData]]"
+ >Reset to defaults
+
Save
@@ -75,23 +75,14 @@ class HassioAddonNetwork extends window.hassMixins.EventsMixin(Polymer.Element)
static get properties() {
return {
hass: Object,
- addon: String,
- errors: {
- type: String,
- value: null,
- },
-
- _data: {
+ addonSlug: String,
+ config: Object,
+ addon: {
type: Object,
- value: [],
+ observer: 'addonChanged',
},
-
- addonState: {
- type: Object,
- observer: '_addonStateChanged',
- },
-
- _resetData: {
+ error: String,
+ resetData: {
type: Object,
value: {
network: null,
@@ -100,38 +91,32 @@ class HassioAddonNetwork extends window.hassMixins.EventsMixin(Polymer.Element)
};
}
- _addonStateChanged(addonState) {
- if (!addonState) return;
+ addonChanged(addon) {
+ if (!addon) return;
- var network = addonState.network || {};
- var items = Object.keys(network).map(function (key) {
- return {
- container: key,
- host: '' + network[key]
- };
- });
- this._data = items.sort(function (el1, el2) { return el1.host - el2.host; });
+ const network = addon.network || {};
+ const items = Object.keys(network).map(key => ({
+ container: key,
+ host: network[key]
+ }));
+ this.config = items.sort(function (el1, el2) { return el1.host - el2.host; });
}
- _saveTapped() {
- this.errors = null;
- var toSend = {};
- this._data.forEach(function (item) {
- toSend[item.container] = parseInt(item.host);
+ saveTapped() {
+ this.error = null;
+ const data = {};
+ this.config.forEach(function (item) {
+ data[item.container] = parseInt(item.host);
});
- var path = 'hassio/addons/' + this.addon + '/options';
+ const path = `hassio/addons/${this.addonSlug}/options`;
this.hass.callApi('post', path, {
- network: toSend
- }).then(function () {
+ network: data
+ }).then(() => {
this.fire('hass-api-called', { success: true, path: path });
- }.bind(this), function (resp) {
- this.errors = resp.body.message;
- }.bind(this));
- }
-
- _pathAddonOptions(addon) {
- return 'hassio/addons/' + addon + '/options';
+ }, (resp) => {
+ this.error = resp.body.message;
+ });
}
}
diff --git a/hassio/addon-view/hassio-addon-options.html b/hassio/addon-view/hassio-addon-options.html
deleted file mode 100644
index d5756e3031..0000000000
--- a/hassio/addon-view/hassio-addon-options.html
+++ /dev/null
@@ -1,129 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Save
-
Discard changes
-
-
-
-
-
-
diff --git a/hassio/addon-view/hassio-addon-view.html b/hassio/addon-view/hassio-addon-view.html
index d344f0c0e5..08f3e424fe 100644
--- a/hassio/addon-view/hassio-addon-view.html
+++ b/hassio/addon-view/hassio-addon-view.html
@@ -4,10 +4,8 @@
-
-
-
+
@@ -16,7 +14,7 @@
@@ -37,33 +36,37 @@
icon='mdi:arrow-left'
on-tap='backTapped'
>
- [[addonInfo.name]]
+ [[addon.name]]
-
+
+
-
+
+
+
-
+
+
@@ -75,34 +78,14 @@ class HassioAddonView extends Polymer.Element {
static get properties() {
return {
- hass: {
- type: Object,
- },
-
+ hass: Object,
route: Object,
- _routeData: {
+ routeData: {
type: Object,
- observer: '_routeDataChanged',
- },
-
- supervisorInfo: {
- type: Object,
- },
-
- addonInfo: {
- type: Object,
- computed: 'computeAddonInfo(supervisorInfo, _routeData.addon)',
- },
-
- addonState: {
- type: Object,
- value: null,
- },
-
- addonLogs: {
- type: String,
- value: '',
+ observer: 'routeDataChanged',
},
+ routeMatches: Boolean,
+ addon: Object,
};
}
@@ -112,35 +95,25 @@ class HassioAddonView extends Polymer.Element {
}
apiCalled(ev) {
- var path = ev.detail.path;
+ const path = ev.detail.path;
if (!path) return;
if (path.substr(path.lastIndexOf('/') + 1) === 'uninstall') {
this.backTapped();
} else {
- this._routeDataChanged(this._routeData);
+ this.routeDataChanged(this.routeData);
}
}
- _routeDataChanged(routeData) {
- if (!routeData || !routeData.addon) return;
- this.hass.callApi('get', 'hassio/addons/' + routeData.addon + '/info')
- .then(function (info) {
- this.addonState = info.data;
- }.bind(this), function () {
- this.addonState = null;
- }.bind(this));
- }
-
- computeAddonInfo(supervisorInfo, addon) {
- if (!supervisorInfo) return null;
-
- for (var i = 0; i < supervisorInfo.addons.length; i++) {
- var addonInfo = supervisorInfo.addons[i];
- if (addonInfo.slug === addon) return addonInfo;
- }
- return null;
+ routeDataChanged(routeData) {
+ if (!this.routeMatches || !routeData || !routeData.slug) return;
+ this.hass.callApi('get', `hassio/addons/${routeData.slug}/info`)
+ .then((info) => {
+ this.addon = info.data;
+ }, () => {
+ this.addon = null;
+ });
}
backTapped() {
diff --git a/hassio/hassio-main.html b/hassio/hassio-main.html
index 14c0401568..7f32b300ac 100644
--- a/hassio/hassio-main.html
+++ b/hassio/hassio-main.html
@@ -54,9 +54,6 @@
page-name='addon'
route='[[route]]'
hass='[[hass]]'
- supervisor-info='[[supervisorInfo]]'
- host-info='[[hostInfo]]'
- addon='[[addon]]'
>
-
-
-
-
-
-
-
-
-
-
-
-