[[error]]
Error: [[error]]
- -Error: [[error]]
+ @@ -92,7 +128,7 @@ class HassioSnapshot extends Polymer.Element { snapshotSlug: { type: String, notify: true, - observer: 'snapshotSlugChanged', + observer: '_snapshotSlugChanged', }, snapshotDeleted: { type: Boolean, @@ -108,12 +144,12 @@ class HassioSnapshot extends Polymer.Element { }; } - snapshotSlugChanged(snapshotSlug) { + _snapshotSlugChanged(snapshotSlug) { if (!snapshotSlug || snapshotSlug === 'update') return; this.hass.callApi('get', `hassio/snapshots/${snapshotSlug}/info`) .then((info) => { - info.data.folders = this.computeFolders(info.data.folders); - info.data.addons = this.computeAddons(info.data.addons); + info.data.folders = this._computeFolders(info.data.folders); + info.data.addons = this._computeAddons(info.data.addons); this.snapshot = info.data; this.$.dialog.open(); }, () => { @@ -121,7 +157,7 @@ class HassioSnapshot extends Polymer.Element { }); } - computeFolders(folders) { + _computeFolders(folders) { const list = []; if (folders.includes('homeassistant')) list.push({ slug: 'homeassistant', name: 'Home Assistant configuration', checked: true }); if (folders.includes('ssl')) list.push({ slug: 'ssl', name: 'SSL', checked: true }); @@ -130,16 +166,16 @@ class HassioSnapshot extends Polymer.Element { return list; } - computeAddons(addons) { + _computeAddons(addons) { return addons.map(addon => ( { slug: addon.slug, name: addon.name, version: addon.version, checked: true })); } - isFullSnapshot(type) { + _isFullSnapshot(type) { return type === 'full'; } - partialRestoreTapped() { + _partialRestoreClicked() { if (!confirm('Are you sure you want to restore this snapshot?')) { return; } @@ -162,7 +198,7 @@ class HassioSnapshot extends Polymer.Element { }); } - fullRestoreTapped() { + _fullRestoreClicked() { if (!confirm('Are you sure you want to restore this snapshot?')) { return; } @@ -176,7 +212,7 @@ class HassioSnapshot extends Polymer.Element { }); } - deleteTapped() { + _deleteClicked() { if (!confirm('Are you sure you want to delete this snapshot?')) { return; } @@ -189,23 +225,33 @@ class HassioSnapshot extends Polymer.Element { }); } - computeName(snapshot) { + _computeDownloadUrl(snapshotSlug) { + const password = encodeURI(this.hass.connection.options.authToken); + return `/api/hassio/snapshots/${snapshotSlug}/download?api_password=${password}`; + } + + _computeDownloadName(snapshot) { + const name = this._computeName(snapshot).replace(/[^a-z0-9]+/gi, '_'); + return `Hass_io_${name}.tar`; + } + + _computeName(snapshot) { return snapshot.name || snapshot.slug; } - computeType(type) { + _computeType(type) { return type === 'full' ? 'Full snapshot' : 'Partial snapshot'; } - computeSize(size) { - return Math.ceil(size) + ' MB'; + _computeSize(size) { + return (Math.ceil(size * 10) / 10) + ' MB'; } - sortAddons(a, b) { + _sortAddons(a, b) { return a.name < b.name ? -1 : 1; } - formatDatetime(datetime) { + _formatDatetime(datetime) { return new Date(datetime).toLocaleDateString(navigator.language, { weekday: 'long', year: 'numeric', @@ -216,7 +262,7 @@ class HassioSnapshot extends Polymer.Element { }); } - dialogClosed() { + _dialogClosed() { this.snapshotSlug = null; } } diff --git a/hassio/snapshots/hassio-snapshots.html b/hassio/snapshots/hassio-snapshots.html index 4f48f4802e..b53dcf9a89 100644 --- a/hassio/snapshots/hassio-snapshots.html +++ b/hassio/snapshots/hassio-snapshots.html @@ -13,7 +13,14 @@[[error]]