ha-frontend-cdce8p/hassio/hassio-pages-with-tabs.html
c727 39172f8c49
Hassio reload addons and snapshots (#937)
* Hassio reload addons and snapshots

* Add refresh button again

* Travis

* Remove Eventlistener
2018-03-01 17:23:47 +01:00

138 lines
4.6 KiB
HTML

<link rel='import' href='../bower_components/polymer/polymer-element.html'>
<link rel='import' href='../bower_components/app-layout/app-header-layout/app-header-layout.html'>
<link rel='import' href='../bower_components/app-layout/app-header/app-header.html'>
<link rel='import' href='../bower_components/app-layout/app-toolbar/app-toolbar.html'>
<link rel='import' href='../bower_components/paper-tabs/paper-tabs.html'>
<link rel='import' href='../bower_components/paper-tabs/paper-tab.html'>
<link rel='import' href='../bower_components/paper-icon-button/paper-icon-button.html'>
<link rel='import' href='../src/components/ha-menu-button.html'>
<link rel='import' href='../src/util/hass-mixins.html'>
<link rel='import' href='../src/resources/ha-style.html'>
<link rel='import' href='./dashboard/hassio-dashboard.html'>
<link rel='import' href='./snapshots/hassio-snapshots.html'>
<link rel='import' href='./snapshots/hassio-snapshot.html'>
<link rel='import' href='./addon-store/hassio-addon-store.html'>
<link rel='import' href='./system/hassio-system.html'>
<dom-module id='hassio-pages-with-tabs'>
<template>
<style include='iron-flex iron-positioning ha-style'>
:host {
color: var(--primary-text-color);
--paper-card-header-color: var(--primary-text-color);
}
paper-tabs {
margin-left: 12px;
--paper-tabs-selection-bar-color: #FFF;
text-transform: uppercase;
}
</style>
<app-header-layout has-scrolling-region>
<app-header fixed slot='header'>
<app-toolbar>
<ha-menu-button narrow='[[narrow]]' show-menu='[[showMenu]]'></ha-menu-button>
<div main-title>Hass.io</div>
<template is='dom-if' if='[[showRefreshButton(page)]]'>
<paper-icon-button
icon='mdi:refresh'
on-click='refreshClicked'
></paper-icon-button>
</template>
</app-toolbar>
<paper-tabs
scrollable
selected='[[page]]'
attr-for-selected='page-name'
on-iron-activate='handlePageSelected'
>
<paper-tab page-name='dashboard'>Dashboard</paper-tab>
<paper-tab page-name='snapshots'>Snapshots</paper-tab>
<paper-tab page-name='store'>Add-on store</paper-tab>
<paper-tab page-name='system'>System</paper-tab>
</paper-tabs>
</app-header>
<template is='dom-if' if='[[equals(page, "dashboard")]]'>
<hassio-dashboard
hass='[[hass]]'
supervisor-info='[[supervisorInfo]]'
hass-info='[[hassInfo]]'
></hassio-dashboard>
</template>
<template is='dom-if' if='[[equals(page, "snapshots")]]'>
<hassio-snapshots
hass='[[hass]]'
installed-addons='[[supervisorInfo.addons]]'
snapshot-slug='{{snapshotSlug}}'
snapshot-deleted='{{snapshotDeleted}}'
></hassio-snapshots>
</template>
<template is='dom-if' if='[[equals(page, "store")]]'>
<hassio-addon-store
hass='[[hass]]'
></hassio-addon-store>
</template>
<template is='dom-if' if='[[equals(page, "system")]]'>
<hassio-system
hass='[[hass]]'
supervisor-info='[[supervisorInfo]]'
host-info='[[hostInfo]]'
></hassio-system>
</template>
</app-header-layout>
<template is='dom-if' if='[[equals(page, "snapshots")]]'>
<hassio-snapshot
hass='[[hass]]'
snapshot-slug='{{snapshotSlug}}'
snapshot-deleted='{{snapshotDeleted}}'
></hassio-snapshot>
</template>
</template>
</dom-module>
<script>
class HassioPagesWithTabs extends window.hassMixins.NavigateMixin(Polymer.Element) {
static get is() { return 'hassio-pages-with-tabs'; }
static get properties() {
return {
hass: Object,
showMenu: Boolean,
narrow: Boolean,
page: String,
supervisorInfo: Object,
hostInfo: Object,
hassInfo: Object,
snapshotSlug: String,
snapshotDeleted: Boolean,
};
}
handlePageSelected(ev) {
const newPage = ev.detail.item.getAttribute('page-name');
if (newPage !== this.page) {
this.navigate(`/hassio/${newPage}`);
}
}
equals(a, b) {
return a === b;
}
showRefreshButton(page) {
return page === 'store' || page === 'snapshots';
}
refreshClicked() {
if (this.page === 'snapshots') {
this.shadowRoot.querySelector('hassio-snapshots').refreshData();
} else {
this.shadowRoot.querySelector('hassio-addon-store').refreshData();
}
}
}
customElements.define(HassioPagesWithTabs.is, HassioPagesWithTabs);
</script>