* Version bump to 20180510.1 * Fix hass util * Fix translations * Bye paper-time-input * Add webpack config * Add webpack to package.json * Fix translation import * Disable web animations polyfill bad import * Disable importHref import * Update webpack config to build authorize.js * Build translations json * Build frontend correctly * Run eslint --fix * Load markdown JS on demand (#1155) * Add HTML imports (#1160) * Fix localize (#1161) * Fix Roboto in build (#1162) * Load web animations polyfill (#1163) * P3: Fix chart js (#1164) * P3: Fix Chart JS * Update timeline package * P3: panel resolver (#1165) * WIP * Initial importing of panels * Fix panel resolver * Fix automation and script editor (#1166) * Expose Polymer and Polymer.Element on window (#1167) * Remove unused import * eslint --fix * Es5 build (#1168) * Build for ES5 * Fix build_frontend * Remove stale comment * Migrate to use paper-material-styles (#1170) * Send parsed date to history/logbook (#1171) * Fork app storage behavior (#1172) * Add paper input with type time (#1173) * Fix authorize * Lint * Sort imports * Lint * Remove eslint-html * Do not lint authorize.html * Fix polymer lint * Try chrome 62 for wct * P3: Add patched iconset (#1175) * Add patched iconset * Lint * Test with latest Chrome again * Use less window.hassUtil * Teporarily use my fecha fork * Import correct intl.messageFormat * Update wct-browser-legacy to 1.0.0 * Include polyfill in right place * Fix IntlMessageFormat * Fix test not having a global scope * Rollup <_< * Fork app-localize-behavior * Disable wct tests * Lint
111 lines
2.9 KiB
JavaScript
111 lines
2.9 KiB
JavaScript
import '@polymer/paper-card/paper-card.js';
|
|
import '@polymer/paper-input/paper-input.js';
|
|
import { html } from '@polymer/polymer/lib/utils/html-tag.js';
|
|
import { PolymerElement } from '@polymer/polymer/polymer-element.js';
|
|
|
|
import '../../src/components/buttons/ha-call-api-button.js';
|
|
import '../../src/resources/ha-style.js';
|
|
import '../../src/util/hass-mixins.js';
|
|
|
|
class HassioAddonNetwork extends window.hassMixins.EventsMixin(PolymerElement) {
|
|
static get template() {
|
|
return html`
|
|
<style include="ha-style">
|
|
:host {
|
|
display: block;
|
|
}
|
|
paper-card {
|
|
display: block;
|
|
}
|
|
.errors {
|
|
color: var(--google-red-500);
|
|
margin-bottom: 16px;
|
|
}
|
|
.card-actions {
|
|
@apply --layout;
|
|
@apply --layout-justified;
|
|
}
|
|
</style>
|
|
<paper-card heading="Network">
|
|
<div class="card-content">
|
|
<template is="dom-if" if="[[error]]">
|
|
<div class="errors">[[error]]</div>
|
|
</template>
|
|
|
|
<table>
|
|
<tbody><tr>
|
|
<th>Container</th>
|
|
<th>Host</th>
|
|
</tr>
|
|
<template is="dom-repeat" items="[[config]]">
|
|
<tr>
|
|
<td>
|
|
[[item.container]]
|
|
</td>
|
|
<td>
|
|
<paper-input value="{{item.host}}" no-label-float=""></paper-input>
|
|
</td>
|
|
</tr>
|
|
</template>
|
|
</tbody></table>
|
|
</div>
|
|
<div class="card-actions">
|
|
<ha-call-api-button class="warning" hass="[[hass]]" path="hassio/addons/[[addonSlug]]/options" data="[[resetData]]">Reset to defaults</ha-call-api-button>
|
|
<paper-button on-click="saveTapped">Save</paper-button>
|
|
</div>
|
|
</paper-card>
|
|
`;
|
|
}
|
|
|
|
static get is() { return 'hassio-addon-network'; }
|
|
|
|
static get properties() {
|
|
return {
|
|
hass: Object,
|
|
addonSlug: String,
|
|
config: Object,
|
|
addon: {
|
|
type: Object,
|
|
observer: 'addonChanged',
|
|
},
|
|
error: String,
|
|
resetData: {
|
|
type: Object,
|
|
value: {
|
|
network: null,
|
|
},
|
|
},
|
|
};
|
|
}
|
|
|
|
addonChanged(addon) {
|
|
if (!addon) return;
|
|
|
|
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.error = null;
|
|
const data = {};
|
|
this.config.forEach(function (item) {
|
|
data[item.container] = parseInt(item.host);
|
|
});
|
|
const path = `hassio/addons/${this.addonSlug}/options`;
|
|
|
|
this.hass.callApi('post', path, {
|
|
network: data
|
|
}).then(() => {
|
|
this.fire('hass-api-called', { success: true, path: path });
|
|
}, (resp) => {
|
|
this.error = resp.body.message;
|
|
});
|
|
}
|
|
}
|
|
|
|
customElements.define(HassioAddonNetwork.is, HassioAddonNetwork);
|