Skip to content

Commit

Permalink
Initial getting rid of HA-JS (#180)
Browse files Browse the repository at this point in the history
Getting rid of HA-JS
  • Loading branch information
balloob committed Jan 30, 2017
1 parent 2f71369 commit a105768
Show file tree
Hide file tree
Showing 70 changed files with 1,959 additions and 1,079 deletions.
9 changes: 7 additions & 2 deletions .eslintrc
Expand Up @@ -2,7 +2,9 @@
"extends": "airbnb-base",
"globals": {
"__DEV__": false,
"Polymer": true
"__DEMO__": false,
"Polymer": true,
"webkitSpeechRecognition": false,
},
"env": {
"browser": true
Expand All @@ -19,7 +21,10 @@
"prefer-spread": 0,
"no-plusplus": 0,
"no-bitwise": 0,
"comma-dangle": 0
"comma-dangle": 0,
"vars-on-top": 0,
"no-continue": 0,
"no-param-reassign": 0
},
plugins: [
"html"
Expand Down
3 changes: 0 additions & 3 deletions .gitmodules
@@ -1,3 +0,0 @@
[submodule "home-assistant-js"]
path = home-assistant-js
url = https://github.com/home-assistant/home-assistant-js.git
1 change: 0 additions & 1 deletion home-assistant-js
Submodule home-assistant-js deleted from e5b4d6
6 changes: 1 addition & 5 deletions package.json
Expand Up @@ -30,11 +30,7 @@
"license": "Apache-2.0",
"_depComment": "keymirror, nuclear-js, object-assign, ha-js-ws are for ha-js",
"dependencies": {
"classnames": "^2.2.5",
"home-assistant-js-websocket": "0.5.0",
"keymirror": "^0.1.1",
"nuclear-js": "^1.4.0",
"object-assign": "^4.1.1"
"home-assistant-js-websocket": "^0.7.3"
},
"devDependencies": {
"bower": "^1.8.0",
Expand Down
19 changes: 7 additions & 12 deletions panels/dev-event/events-list.html
@@ -1,6 +1,5 @@
<link rel="import" href="../../bower_components/polymer/polymer.html">

<link rel="import" href="../../src/util/hass-behavior.html">

<dom-module id="events-list">
<template>
Expand All @@ -24,7 +23,7 @@
<template is='dom-repeat' items='[[events]]' as='event'>
<li>
<a href='#' on-click='eventSelected'>{{event.event}}</a>
<span> (</span><span>{{event.listenerCount}}</span><span> listeners)</span>
<span> (</span><span>{{event.listener_count}}</span><span> listeners)</span>
</li>
</template>
</ul>
Expand All @@ -35,26 +34,22 @@
Polymer({
is: 'events-list',

behaviors: [window.hassBehavior],

properties: {
hass: {
type: Object,
},

events: {
type: Array,
bindNuclear: function (hass) {
return [
hass.eventGetters.entityMap,
function (map) {
return map.valueSeq().sortBy(function (event) { return event.event; }).toArray();
},
];
},
},
},

attached: function () {
this.hass.callApi('GET', 'events').then(function (events) {
this.events = events;
}.bind(this));
},

eventSelected: function (ev) {
ev.preventDefault();
this.fire('event-selected', { eventType: ev.model.event.event });
Expand Down
7 changes: 6 additions & 1 deletion panels/dev-event/ha-panel-dev-event.html
Expand Up @@ -116,7 +116,12 @@
return;
}

this.hass.eventActions.fireEvent(this.eventType, eventData);
this.hass.callApi('POST', 'events/' + this.eventType, eventData)
.then(function () {
this.fire('hass-notification', {
message: 'Event ' + this.eventType + ' successful fired!',
});
}.bind(this));
},

computeFormClasses: function (narrow) {
Expand Down
29 changes: 3 additions & 26 deletions panels/dev-info/ha-panel-dev-info.html
Expand Up @@ -7,7 +7,6 @@
<link rel="import" href="../../bower_components/app-layout/app-toolbar/app-toolbar.html">

<link rel="import" href="../../src/components/ha-menu-button.html">
<link rel="import" href="../../src/util/hass-behavior.html">
<link rel="import" href="../../src/resources/ha-style.html">

<dom-module id="ha-panel-dev-info">
Expand Down Expand Up @@ -71,10 +70,10 @@
<p class='version'>
<a href='https://home-assistant.io'><img src="/static/icons/favicon-192x192.png" height="192" /></a><br />
Home Assistant<br />
[[hassVersion]]
[[hass.config.core.version]]
</p>
<p>
Path to configuration.yaml: [[hassConfigDir]]
Path to configuration.yaml: [[hass.config.core.config_dir]]
</p>
<p class='develop'>
<a href='https://home-assistant.io/developers/credits/' target='_blank'>
Expand All @@ -92,7 +91,6 @@
Built using
<a href='https://www.python.org'>Python 3</a>,
<a href='https://www.polymer-project.org' target='_blank'>Polymer [[polymerVersion]]</a>,
<a href='https://optimizely.github.io/nuclear-js/' target='_blank'>NuclearJS [[nuclearVersion]]</a><br />
Icons by <a href='https://www.google.com/design/icons/' target='_blank'>Google</a> and <a href='https://MaterialDesignIcons.com' target='_blank'>MaterialDesignIcons.com</a>.
</p>
</div>
Expand All @@ -110,8 +108,6 @@
Polymer({
is: 'ha-panel-dev-info',

behaviors: [window.hassBehavior],

properties: {
hass: {
type: Object,
Expand All @@ -127,30 +123,11 @@
value: false,
},

hassVersion: {
type: String,
bindNuclear: function (hass) {
return hass.configGetters.serverVersion;
},
},

hassConfigDir: {
type: String,
bindNuclear: function (hass) {
return hass.configGetters.configDir;
},
},

polymerVersion: {
type: String,
value: Polymer.version,
},

nuclearVersion: {
type: String,
value: '1.4.0',
},

errorLog: {
type: String,
value: '',
Expand All @@ -166,7 +143,7 @@

this.errorLog = 'Loading error log…';

this.hass.errorLogActions.fetchErrorLog().then(
this.hass.callApi('GET', 'error_log').then(
function (log) {
this.errorLog = log || 'No errors have been reported.';
}.bind(this));
Expand Down
62 changes: 20 additions & 42 deletions panels/dev-service/ha-panel-dev-service.html
Expand Up @@ -12,7 +12,6 @@

<link rel='import' href='../../src/components/ha-menu-button.html'>
<link rel='import' href='../../src/resources/ha-style.html'>
<link rel='import' href='../../src/util/hass-behavior.html'>

<dom-module id='ha-panel-dev-service'>
<template>
Expand Down Expand Up @@ -142,8 +141,6 @@ <h1>Valid Parameters</h1>
Polymer({
is: 'ha-panel-dev-service',

behaviors: [window.hassBehavior],

properties: {
hass: {
type: Object,
Expand Down Expand Up @@ -178,56 +175,37 @@ <h1>Valid Parameters</h1>

_attributes: {
type: Array,
computed: 'computeAttributesArray(hass, domain, service)',
computed: 'computeAttributesArray(serviceDomains, domain, service)',
},

serviceDomains: {
type: Array,
bindNuclear: function (hass) {
return hass.serviceGetters.entityMap;
},
type: Object,
computed: 'computeServiceDomains(hass)',
},
},

computeAttributesArray: function (hass, domain, service) {
return hass.reactor.evaluate([
hass.serviceGetters.entityMap,
function (map) {
if (map.has(domain) && map.get(domain).get('services').has(service)) {
return map
.get(domain)
.get('services')
.get(service)
.get('fields')
.map(function (field, key) {
var fieldCopy = field.toJS();
fieldCopy.key = key;
return fieldCopy;
})
.toArray();
}
return [];
},
]);
computeServiceDomains: function (hass) {
return hass.config.services;
},

computeAttributesArray: function (serviceDomains, domain, service) {
if (!(domain in serviceDomains)) return [];
if (!(service in serviceDomains[domain])) return [];

var fields = serviceDomains[domain][service].fields;
return Object.keys(fields).map(function (field) {
return Object.assign({}, fields[field], { key: field });
});
},

computeDomains: function (serviceDomains) {
return serviceDomains
.valueSeq()
.map(function (domain) { return domain.domain; })
.sort()
.toJS();
return Object.keys(serviceDomains).sort();
},

computeServices: function (serviceDomains, domain) {
if (domain) {
return serviceDomains
.get(domain)
.get('services')
.keySeq()
.toArray();
}
return '';
if (!(domain in serviceDomains)) return [];

return Object.keys(serviceDomains[domain]).sort();
},

domainChanged: function () {
Expand All @@ -250,7 +228,7 @@ <h1>Valid Parameters</h1>
return;
}

this.hass.serviceActions.callService(this.domain, this.service, serviceData);
this.hass.callService(this.domain, this.service, serviceData);
},
});
</script>
32 changes: 17 additions & 15 deletions panels/dev-state/ha-panel-dev-state.html
Expand Up @@ -10,7 +10,6 @@
<link rel="import" href="../../bower_components/app-layout/app-toolbar/app-toolbar.html">

<link rel="import" href="../../src/components/ha-menu-button.html">
<link rel="import" href="../../src/util/hass-behavior.html">
<link rel="import" href="../../src/resources/ha-style.html">

<dom-module id="ha-panel-dev-state">
Expand Down Expand Up @@ -82,7 +81,7 @@ <h1>Current entities</h1>
</tr>
<template is='dom-repeat' items='[[_entities]]' as='entity'>
<tr>
<td><a href='#' on-tap='entitySelected'>[[entity.entityId]]</a></td>
<td><a href='#' on-tap='entitySelected'>[[entity.entity_id]]</a></td>
<td>[[entity.state]]</td>
<template is='dom-if' if='[[computeShowAttributes(narrow, _showAttributes)]]'>
<td>[[attributeString(entity)]]</td>
Expand All @@ -99,8 +98,6 @@ <h1>Current entities</h1>
Polymer({
is: 'ha-panel-dev-state',

behaviors: [window.hassBehavior],

properties: {
hass: {
type: Object,
Expand Down Expand Up @@ -138,20 +135,13 @@ <h1>Current entities</h1>

_entities: {
type: Array,
bindNuclear: function (hass) {
return [
hass.entityGetters.entityMap,
function (map) {
return map.valueSeq().sortBy(function (entity) { return entity.entityId; }).toArray();
},
];
},
computed: 'computeEntities(hass)',
},
},

entitySelected: function (ev) {
var state = ev.model.entity;
this._entityId = state.entityId;
this._entityId = state.entity_id;
this._state = state.state;
this._stateAttributes = JSON.stringify(state.attributes, null, ' ');
ev.preventDefault();
Expand All @@ -168,13 +158,25 @@ <h1>Current entities</h1>
return;
}

this.hass.entityActions.save({
entityId: this._entityId,
this.hass.callApi('POST', 'states/' + this._entityId, {
state: this._state,
attributes: attr,
});
},

computeEntities: function (hass) {
return Object.keys(hass.states).map(function (key) { return hass.states[key]; })
.sort(function (entityA, entityB) {
if (entityA.entity_id < entityB.entity_id) {
return -1;
}
if (entityB.entity_id > entityA.entity_id) {
return 1;
}
return 0;
});
},

computeShowAttributes: function (narrow, _showAttributes) {
return !narrow && _showAttributes;
},
Expand Down

0 comments on commit a105768

Please sign in to comment.