diff --git a/.eslintrc b/.eslintrc index a3438b7bbf..41b24fab63 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,4 +1,5 @@ { + "parser": "babel-eslint", "extends": "airbnb/base", "globals": { "__DEV__": false, diff --git a/package.json b/package.json index c647a665bc..3c7a888805 100644 --- a/package.json +++ b/package.json @@ -35,8 +35,8 @@ "babel-preset-es2015": "^6.0.0", "bower": "^1.6.5", "eslint": "^1.10.3", - "eslint-config-airbnb": "^0.1.0", "html-minifier": "^1.0.0", + "eslint-config-airbnb": "^3.1.0", "vulcanize": "^1.14.0", "webpack": "^1.12" } diff --git a/src/components/entity-list.js b/src/components/entity-list.js index 5286e875f7..671d00620c 100644 --- a/src/components/entity-list.js +++ b/src/components/entity-list.js @@ -22,6 +22,6 @@ export default new Polymer({ entitySelected(ev) { ev.preventDefault(); - this.fire('entity-selected', {entityId: ev.model.entity.entityId}); + this.fire('entity-selected', { entityId: ev.model.entity.entityId }); }, }); diff --git a/src/components/entity/ha-entity-marker.js b/src/components/entity/ha-entity-marker.js index 9944f60833..49b9045bb8 100644 --- a/src/components/entity/ha-entity-marker.js +++ b/src/components/entity/ha-entity-marker.js @@ -40,7 +40,7 @@ export default new Polymer({ }, listeners: { - 'tap': 'badgeTap', + tap: 'badgeTap', }, badgeTap(ev) { diff --git a/src/components/entity/ha-entity-toggle.js b/src/components/entity/ha-entity-toggle.js index 0edb3841ee..a091d355e7 100644 --- a/src/components/entity/ha-entity-toggle.js +++ b/src/components/entity/ha-entity-toggle.js @@ -72,7 +72,7 @@ export default new Polymer({ service = turnOn ? 'turn_on' : 'turn_off'; } - serviceActions.callService(domain, service, {entity_id: this.stateObj.entityId}) + serviceActions.callService(domain, service, { entity_id: this.stateObj.entityId }) .then(() => this.forceStateChange()); }, }); diff --git a/src/components/entity/ha-state-label-badge.js b/src/components/entity/ha-state-label-badge.js index 1544293157..7ff55f6ab7 100644 --- a/src/components/entity/ha-state-label-badge.js +++ b/src/components/entity/ha-state-label-badge.js @@ -21,7 +21,7 @@ export default new Polymer({ }, listeners: { - 'tap': 'badgeTap', + tap: 'badgeTap', }, badgeTap(ev) { @@ -41,58 +41,58 @@ export default new Polymer({ computeClasses(state) { switch (state.domain) { - case 'scene': - return 'green'; - case 'binary_sensor': - case 'script': - return state.state === 'on' ? 'blue' : 'grey'; - case 'updater': - return 'blue'; - default: - return ''; + case 'scene': + return 'green'; + case 'binary_sensor': + case 'script': + return state.state === 'on' ? 'blue' : 'grey'; + case 'updater': + return 'blue'; + default: + return ''; } }, computeValue(state) { switch (state.domain) { - case 'binary_sensor': - case 'device_tracker': - case 'updater': - case 'sun': - case 'scene': - case 'script': - case 'alarm_control_panel': - return undefined; - case 'sensor': - return state.state; - default: - return state.state; + case 'binary_sensor': + case 'device_tracker': + case 'updater': + case 'sun': + case 'scene': + case 'script': + case 'alarm_control_panel': + return undefined; + case 'sensor': + return state.state; + default: + return state.state; } }, computeIcon(state) { switch (state.domain) { - case 'alarm_control_panel': - if (state.state === 'pending') { - return 'mdi:clock-fast'; - } else if (state.state === 'armed_away') { - return 'mdi:nature'; - } else if (state.state === 'armed_home') { - return 'mdi:home-variant'; - } - // state == 'disarmed' - return domainIcon(state.domain, state.state); - case 'binary_sensor': - case 'device_tracker': - case 'scene': - case 'updater': - case 'script': - return domainIcon(state.domain, state.state); - case 'sun': - return state.state === 'above_horizon' ? + case 'alarm_control_panel': + if (state.state === 'pending') { + return 'mdi:clock-fast'; + } else if (state.state === 'armed_away') { + return 'mdi:nature'; + } else if (state.state === 'armed_home') { + return 'mdi:home-variant'; + } + // state == 'disarmed' + return domainIcon(state.domain, state.state); + case 'binary_sensor': + case 'device_tracker': + case 'scene': + case 'updater': + case 'script': + return domainIcon(state.domain, state.state); + case 'sun': + return state.state === 'above_horizon' ? domainIcon(state.domain) : 'mdi:brightness-3'; - default: - return undefined; + default: + return undefined; } }, @@ -102,21 +102,21 @@ export default new Polymer({ computeLabel(state) { switch (state.domain) { - case 'scene': - case 'script': - return state.domain; - case 'device_tracker': - return state.state === 'not_home' ? 'Away' : state.state; - case 'alarm_control_panel': - if (state.state === 'pending') { - return 'pend'; - } else if (state.state === 'armed_away' || state.state === 'armed_home') { - return 'armed'; - } - // state == 'disarmed' - return 'disarm'; - default: - return state.attributes.unit_of_measurement; + case 'scene': + case 'script': + return state.domain; + case 'device_tracker': + return state.state === 'not_home' ? 'Away' : state.state; + case 'alarm_control_panel': + if (state.state === 'pending') { + return 'pend'; + } else if (state.state === 'armed_away' || state.state === 'armed_home') { + return 'armed'; + } + // state == 'disarmed' + return 'disarm'; + default: + return state.attributes.unit_of_measurement; } }, diff --git a/src/components/events-list.js b/src/components/events-list.js index 79e74c65ac..3b0e933b70 100644 --- a/src/components/events-list.js +++ b/src/components/events-list.js @@ -22,6 +22,6 @@ export default new Polymer({ eventSelected(ev) { ev.preventDefault(); - this.fire('event-selected', {eventType: ev.model.event.event}); + this.fire('event-selected', { eventType: ev.model.event.event }); }, }); diff --git a/src/components/ha-color-picker.js b/src/components/ha-color-picker.js index 21532bb560..e7e4384936 100644 --- a/src/components/ha-color-picker.js +++ b/src/components/ha-color-picker.js @@ -25,10 +25,10 @@ export default new Polymer({ }, listeners: { - 'mousedown': 'onMouseDown', - 'mouseup': 'onMouseUp', - 'touchstart': 'onTouchStart', - 'touchend': 'onTouchEnd', + mousedown: 'onMouseDown', + mouseup: 'onMouseUp', + touchstart: 'onTouchStart', + touchend: 'onTouchEnd', }, onMouseDown(ev) { @@ -82,13 +82,13 @@ export default new Polymer({ onColorSelect(x, y) { const data = this.context.getImageData(x, y, 1, 1).data; - this.setColor({r: data[0], g: data[1], b: data[2]}); + this.setColor({ r: data[0], g: data[1], b: data[2] }); }, setColor(rgb) { this.color = rgb; - this.fire('colorselected', {rgb: this.color}); + this.fire('colorselected', { rgb: this.color }); }, ready() { diff --git a/src/components/ha-zone-cards.js b/src/components/ha-zone-cards.js index 2956ef6d6e..3bc260a0ed 100644 --- a/src/components/ha-zone-cards.js +++ b/src/components/ha-zone-cards.js @@ -84,7 +84,7 @@ export default new Polymer({ return; } cards._columns[increaseIndex()].push(name); - cards[name] = {entities, groupEntity}; + cards[name] = { entities, groupEntity }; } byDomain.keySeq().sortBy(domain => getPriority(domain)) diff --git a/src/components/services-list.js b/src/components/services-list.js index 7870e4dfaa..171b15afd1 100644 --- a/src/components/services-list.js +++ b/src/components/services-list.js @@ -30,7 +30,7 @@ export default new Polymer({ serviceClicked(ev) { ev.preventDefault(); this.fire( - 'service-selected', {domain: ev.model.domain, - service: ev.model.service}); + 'service-selected', { domain: ev.model.domain, + service: ev.model.service }); }, }); diff --git a/src/components/state-history-chart-line.js b/src/components/state-history-chart-line.js index bf653bd870..4495437e10 100644 --- a/src/components/state-history-chart-line.js +++ b/src/components/state-history-chart-line.js @@ -70,12 +70,12 @@ export default new Polymer({ titlePosition: 'none', vAxes: { // Adds units to the left hand side of the graph - 0: {title: unit}, + 0: { title: unit }, }, hAxis: { format: 'H:mm', }, - chartArea: { left: '60', width: '95%'}, + chartArea: { left: '60', width: '95%' }, explorer: { actions: ['dragToZoom', 'rightClickToReset', 'dragToPan'], keepInBounds: true, diff --git a/src/components/state-history-charts.js b/src/components/state-history-charts.js index 73f4424838..5fc12e439f 100644 --- a/src/components/state-history-charts.js +++ b/src/components/state-history-charts.js @@ -44,7 +44,7 @@ export default new Polymer({ computeGroupedStateHistory(isLoading, stateHistory) { if (isLoading || !stateHistory) { - return {line: [], timeline: []}; + return { line: [], timeline: [] }; } const lineChartDevices = {}; @@ -75,7 +75,7 @@ export default new Polymer({ const unitStates = Object.keys(lineChartDevices).map( (unit) => [unit, lineChartDevices[unit]]); - return {line: unitStates, timeline: timelineDevices}; + return { line: unitStates, timeline: timelineDevices }; }, googleApiLoaded() { diff --git a/src/home-assistant.js b/src/home-assistant.js index 41286ee2c0..26a864a681 100644 --- a/src/home-assistant.js +++ b/src/home-assistant.js @@ -91,9 +91,10 @@ export default new Polymer({ navigator.serviceWorker.register('./service_worker.js').catch(err => { if (__DEV__) { + /* eslint-disable no-console */ console.warn('Unable to register service worker', err); + /* eslint-enable no-console */ } - }); }, }); diff --git a/src/layouts/login-form.js b/src/layouts/login-form.js index 8672c21ede..25031c562e 100644 --- a/src/layouts/login-form.js +++ b/src/layouts/login-form.js @@ -47,7 +47,7 @@ export default new Polymer({ }, listeners: { - 'keydown': 'passwordKeyDown', + keydown: 'passwordKeyDown', 'loginButton.tap': 'validatePassword', }, diff --git a/src/layouts/partial-dev-template.js b/src/layouts/partial-dev-template.js index eaed2ee36c..37881f60e6 100644 --- a/src/layouts/partial-dev-template.js +++ b/src/layouts/partial-dev-template.js @@ -37,6 +37,7 @@ export default new Polymer({ template: { type: String, + /* eslint-disable max-len */ value: '{%- if is_state("device_tracker.paulus", "home") and \n' + ' is_state("device_tracker.anne_therese", "home") -%}\n' + '\n' + @@ -55,6 +56,7 @@ export default new Polymer({ ' {%- if loop.first %}The {% elif loop.last %} and the {% else %}, the {% endif -%}\n' + ' {{ state.name | lower }} is {{state.state}} {{- state.attributes.unit_of_measurement}}\n' + '{%- endfor -%}.', + /* eslint-enable max-len */ observer: 'templateChanged', }, diff --git a/src/more-infos/more-info-alarm_control_panel.js b/src/more-infos/more-info-alarm_control_panel.js index f60a85c1f7..668f5f4cee 100644 --- a/src/more-infos/more-info-alarm_control_panel.js +++ b/src/more-infos/more-info-alarm_control_panel.js @@ -7,13 +7,13 @@ const { serviceActions } = hass; export default new Polymer({ is: 'more-info-alarm_control_panel', handleDisarmTap() { - this.callService('alarm_disarm', {code: this.enteredCode}); + this.callService('alarm_disarm', { code: this.enteredCode }); }, handleHomeTap() { - this.callService('alarm_arm_home', {code: this.enteredCode}); + this.callService('alarm_arm_home', { code: this.enteredCode }); }, handleAwayTap() { - this.callService('alarm_arm_away', {code: this.enteredCode}); + this.callService('alarm_arm_away', { code: this.enteredCode }); }, properties: { stateObj: { diff --git a/src/state-summary/state-card-rollershutter.js b/src/state-summary/state-card-rollershutter.js index 4bc27b1a1d..11b2f23e73 100644 --- a/src/state-summary/state-card-rollershutter.js +++ b/src/state-summary/state-card-rollershutter.js @@ -25,16 +25,16 @@ export default new Polymer({ onMoveUpTap() { serviceActions.callService('rollershutter', 'move_up', - {entity_id: this.stateObj.entityId}); + { entity_id: this.stateObj.entityId }); }, onMoveDownTap() { serviceActions.callService('rollershutter', 'move_down', - {entity_id: this.stateObj.entityId}); + { entity_id: this.stateObj.entityId }); }, onStopTap() { serviceActions.callService('rollershutter', 'stop', - {entity_id: this.stateObj.entityId}); + { entity_id: this.stateObj.entityId }); }, }); diff --git a/src/state-summary/state-card.js b/src/state-summary/state-card.js index b2254f7035..91cbe34272 100644 --- a/src/state-summary/state-card.js +++ b/src/state-summary/state-card.js @@ -16,7 +16,7 @@ export default new Polymer({ }, listeners: { - 'tap': 'cardTapped', + tap: 'cardTapped', }, cardTapped(ev) { diff --git a/src/util/domain-icon.js b/src/util/domain-icon.js index 84fed2f222..3f9e587f96 100644 --- a/src/util/domain-icon.js +++ b/src/util/domain-icon.js @@ -2,78 +2,78 @@ import defaultIcon from './default-icon'; export default function domainIcon(domain, state) { switch (domain) { - case 'alarm_control_panel': - return state && state === 'disarmed' ? 'mdi:bell-outline' : 'mdi:bell'; + case 'alarm_control_panel': + return state && state === 'disarmed' ? 'mdi:bell-outline' : 'mdi:bell'; - case 'binary_sensor': - return state && state === 'off' ? 'mdi:radiobox-blank' : 'mdi:checkbox-marked-circle'; + case 'binary_sensor': + return state && state === 'off' ? 'mdi:radiobox-blank' : 'mdi:checkbox-marked-circle'; - case 'camera': - return 'mdi:video'; + case 'camera': + return 'mdi:video'; - case 'configurator': - return 'mdi:settings'; + case 'configurator': + return 'mdi:settings'; - case 'conversation': - return 'mdi:text-to-speech'; + case 'conversation': + return 'mdi:text-to-speech'; - case 'device_tracker': - return 'mdi:account'; + case 'device_tracker': + return 'mdi:account'; - case 'group': - return 'mdi:google-circles-communities'; + case 'group': + return 'mdi:google-circles-communities'; - case 'homeassistant': - return 'mdi:home'; + case 'homeassistant': + return 'mdi:home'; - case 'light': - return 'mdi:lightbulb'; + case 'light': + return 'mdi:lightbulb'; - case 'lock': - return state && state === 'unlocked' ? 'mdi:lock-open' : 'mdi:lock'; + case 'lock': + return state && state === 'unlocked' ? 'mdi:lock-open' : 'mdi:lock'; - case 'media_player': - let icon = 'mdi:cast'; - if (state && state !== 'off' && state !== 'idle') { - icon += '-connected'; - } + case 'media_player': + let icon = 'mdi:cast'; + if (state && state !== 'off' && state !== 'idle') { + icon += '-connected'; + } - return icon; + return icon; - case 'notify': - return 'mdi:comment-alert'; + case 'notify': + return 'mdi:comment-alert'; - case 'updater': - return 'mdi:cloud-upload'; + case 'updater': + return 'mdi:cloud-upload'; - case 'rollershutter': - return state && state === 'open' ? 'mdi:window-open' : 'mdi:window-closed'; + case 'rollershutter': + return state && state === 'open' ? 'mdi:window-open' : 'mdi:window-closed'; - case 'scene': - return 'mdi:google-pages'; + case 'scene': + return 'mdi:google-pages'; - case 'script': - return 'mdi:file-document'; + case 'script': + return 'mdi:file-document'; - case 'sensor': - return 'mdi:eye'; + case 'sensor': + return 'mdi:eye'; - case 'simple_alarm': - return 'mdi:bell'; + case 'simple_alarm': + return 'mdi:bell'; - case 'sun': - return 'mdi:white-balance-sunny'; + case 'sun': + return 'mdi:white-balance-sunny'; - case 'switch': - return 'mdi:flash'; + case 'switch': + return 'mdi:flash'; - case 'thermostat': - return 'mdi:nest-thermostat'; + case 'thermostat': + return 'mdi:nest-thermostat'; - default: + default: /* eslint-disable no-console */ - console.warn(`Unable to find icon for domain ${domain} (${state})`); + console.warn(`Unable to find icon for domain ${domain} (${state})`); /* eslint-enable no-console */ - return defaultIcon; + return defaultIcon; } } diff --git a/src/util/validate-auth.js b/src/util/validate-auth.js index 710c0b98bb..36be6867b4 100644 --- a/src/util/validate-auth.js +++ b/src/util/validate-auth.js @@ -2,7 +2,7 @@ import hass from '../util/home-assistant-js-instance'; const { authActions, localStoragePreferences } = hass; -export default function(authToken, rememberAuth) { +export default function (authToken, rememberAuth) { authActions.validate(authToken, { rememberAuth, useStreaming: localStoragePreferences.useStreaming,