diff --git a/hassio/addon-store/hassio-addon-repository.html b/hassio/addon-store/hassio-addon-repository.html index 4006a2a953..a89cda9c52 100644 --- a/hassio/addon-store/hassio-addon-repository.html +++ b/hassio/addon-store/hassio-addon-repository.html @@ -1,45 +1,46 @@ - - + + + @@ -49,31 +50,31 @@ class HassioAddonRepository extends window.hassMixins.EventsMixin(Polymer.Elemen static get properties() { return { - repo: { - type: Object, - }, - - addons: { - type: Array, - }, + repo: Object, + addons: Array, }; } - computeShowIntro(repo) { - return repo.url || repo.maintainer; + sortAddons(a, b) { + return a.name < b.name ? -1 : 1; } - computeInstallStatus(addon) { - if (!addon.installed) { - return 'Not installed'; - } else if (addon.installed !== addon.version) { - return addon.installed + ' (update available)'; - } - return addon.installed; + computeIcon(addon) { + return addon.installed && addon.installed !== addon.version ? 'mdi:arrow-up-bold-circle' : 'mdi:puzzle'; + } + + computeIconTitle(addon) { + if (addon.installed) return addon.installed !== addon.version ? 'New version available' : 'Add-on is installed'; + return 'Add-on is not installed'; + } + + computeIconClass(addon) { + if (addon.installed) return addon.installed !== addon.version ? 'update' : 'installed'; + return ''; } addonTapped(ev) { - history.pushState(null, null, '/hassio/store/' + this.addons[ev.model.index].slug); + history.pushState(null, null, '/hassio/addon/' + ev.model.addon.slug); this.fire('location-changed'); } } diff --git a/hassio/addon-store/hassio-addon-store-overview.html b/hassio/addon-store/hassio-addon-store-overview.html deleted file mode 100644 index 2c7a359094..0000000000 --- a/hassio/addon-store/hassio-addon-store-overview.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/hassio/addon-store/hassio-addon-store-view.html b/hassio/addon-store/hassio-addon-store-view.html deleted file mode 100644 index 0dbd9bbdf3..0000000000 --- a/hassio/addon-store/hassio-addon-store-view.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - diff --git a/hassio/addon-store/hassio-addon-store.html b/hassio/addon-store/hassio-addon-store.html index 0a8387449f..818ba5fd71 100644 --- a/hassio/addon-store/hassio-addon-store.html +++ b/hassio/addon-store/hassio-addon-store.html @@ -3,38 +3,55 @@ - - + - - + > + + + @@ -44,37 +61,13 @@ class HassioAddonStore extends Polymer.Element { static get properties() { return { - hass: { - type: Object, - }, - + hass: Object, + addons: Array, + repos: Array, visible: { type: Boolean, - observer: '_visibleChanged', + observer: 'visibleChanged', }, - - route: Object, - _routeData: Object, - _routeMatches: Boolean, - - selectedAddonObject: { - type: Object, - computed: 'computeActiveAddon(addons, _routeData.addon)', - }, - - addons: { - type: Array, - value: [], - }, - - repos: { - type: Array, - value: [] - }, - - supervisorInfo: { - type: Object, - } }; } @@ -86,52 +79,60 @@ class HassioAddonStore extends Polymer.Element { apiCalled(ev) { if (ev.detail.success) { - this._loadData(); + this.loadData(); } } - _visibleChanged(visible) { + sortRepos(a, b) { + if (a.slug === 'local') { + return -1; + } else if (b.slug === 'local') { + return 1; + } else if (a.slug === 'core') { + return -1; + } else if (b.slug === 'core') { + return 1; + } + return a.name < b.name ? -1 : 1; + } + + computeAddons(repo) { + return this.addons.filter(function (addon) { + return addon.repository === repo; + }); + } + + visibleChanged(visible) { if (visible) { - this._loadData(); + this.loadData(); } } - _loadData() { + loadData() { this.hass.callApi('get', 'hassio/addons') - .then(function (info) { + .then((info) => { this.addons = info.data.addons; this.repos = info.data.repositories; - }.bind(this), function () { + }, () => { this.addons = []; this.repos = []; - }.bind(this)); + }); } - computeActiveAddon(addons, selectedAddon) { - for (var i = 0; i < addons.length; i++) { - if (addons[i].slug === selectedAddon) { - return addons[i]; - } - } - return null; - } - - computeActiveRepo(repos, selectedAddonObject) { - if (!selectedAddonObject) return null; - - for (var i = 0; i < repos.length; i++) { - if (repos[i].slug === selectedAddonObject.repository) { - return repos[i]; - } - } - return null; - } refreshData() { this.hass.callApi('post', 'hassio/addons/reload') - .then(function () { - this._loadData(); - }.bind(this)); + .then(() => { + this.loadData(); + }); + } + + refreshTapped() { + this.fire('hassio-store-refresh'); + } + + backTapped() { + history.back(); } } diff --git a/hassio/addon-store/hassio-repositories-editor.html b/hassio/addon-store/hassio-repositories-editor.html index 3d9e7ada33..887d4fcbdc 100644 --- a/hassio/addon-store/hassio-repositories-editor.html +++ b/hassio/addon-store/hassio-repositories-editor.html @@ -1,35 +1,69 @@ - + + + + + @@ -39,36 +73,34 @@ class HassioRepositoriesEditor extends Polymer.Element { static get properties() { return { - hass: { - type: Object, - }, - - options: { - type: String, - value: '', - }, - + hass: Object, repos: { type: Array, observer: 'reposChanged', }, + repoList: Array, + repoUrl: String, }; } reposChanged(repos) { - this.options = repos - .filter(function (el) { return el.source !== null; }) - .map(function (el) { return el.source; }) - .join('\n'); + this.repoList = repos.filter(repo => repo.slug !== 'core' && repo.slug !== 'local'); + this.repoUrl = ''; } - computeOptionsData(options) { - var parsed = options.trim(); - parsed = parsed ? - parsed.split('\n').map(function (ent) { return ent.trim(); }) : []; - return { - addons_repositories: parsed, - }; + sortRepos(a, b) { + return a.name < b.name ? -1 : 1; + } + + computeRemoveRepoData(repoList, url) { + const list = repoList.filter(repo => repo.url !== url).map(repo => repo.url); + return { addons_repositories: list }; + } + + computeAddRepoData(repoList, url) { + const list = repoList.map(repo => repo.url); + list.push(url); + return { addons_repositories: list }; } } diff --git a/hassio/hassio-main.html b/hassio/hassio-main.html index 4bfedab52a..9bcf22c4e4 100644 --- a/hassio/hassio-main.html +++ b/hassio/hassio-main.html @@ -58,9 +58,7 @@