Skip to content

Commit a105768

Browse files
authored
Initial getting rid of HA-JS (home-assistant#180)
Getting rid of HA-JS
1 parent 2f71369 commit a105768

File tree

70 files changed

+1959
-1079
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+1959
-1079
lines changed

.eslintrc

+7-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
"extends": "airbnb-base",
33
"globals": {
44
"__DEV__": false,
5-
"Polymer": true
5+
"__DEMO__": false,
6+
"Polymer": true,
7+
"webkitSpeechRecognition": false,
68
},
79
"env": {
810
"browser": true
@@ -19,7 +21,10 @@
1921
"prefer-spread": 0,
2022
"no-plusplus": 0,
2123
"no-bitwise": 0,
22-
"comma-dangle": 0
24+
"comma-dangle": 0,
25+
"vars-on-top": 0,
26+
"no-continue": 0,
27+
"no-param-reassign": 0
2328
},
2429
plugins: [
2530
"html"

.gitmodules

-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +0,0 @@
1-
[submodule "home-assistant-js"]
2-
path = home-assistant-js
3-
url = https://github.com/home-assistant/home-assistant-js.git

home-assistant-js

-1
This file was deleted.

package.json

+1-5
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,7 @@
3030
"license": "Apache-2.0",
3131
"_depComment": "keymirror, nuclear-js, object-assign, ha-js-ws are for ha-js",
3232
"dependencies": {
33-
"classnames": "^2.2.5",
34-
"home-assistant-js-websocket": "0.5.0",
35-
"keymirror": "^0.1.1",
36-
"nuclear-js": "^1.4.0",
37-
"object-assign": "^4.1.1"
33+
"home-assistant-js-websocket": "^0.7.3"
3834
},
3935
"devDependencies": {
4036
"bower": "^1.8.0",

panels/dev-event/events-list.html

+7-12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<link rel="import" href="../../bower_components/polymer/polymer.html">
22

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

54
<dom-module id="events-list">
65
<template>
@@ -24,7 +23,7 @@
2423
<template is='dom-repeat' items='[[events]]' as='event'>
2524
<li>
2625
<a href='#' on-click='eventSelected'>{{event.event}}</a>
27-
<span> (</span><span>{{event.listenerCount}}</span><span> listeners)</span>
26+
<span> (</span><span>{{event.listener_count}}</span><span> listeners)</span>
2827
</li>
2928
</template>
3029
</ul>
@@ -35,26 +34,22 @@
3534
Polymer({
3635
is: 'events-list',
3736

38-
behaviors: [window.hassBehavior],
39-
4037
properties: {
4138
hass: {
4239
type: Object,
4340
},
4441

4542
events: {
4643
type: Array,
47-
bindNuclear: function (hass) {
48-
return [
49-
hass.eventGetters.entityMap,
50-
function (map) {
51-
return map.valueSeq().sortBy(function (event) { return event.event; }).toArray();
52-
},
53-
];
54-
},
5544
},
5645
},
5746

47+
attached: function () {
48+
this.hass.callApi('GET', 'events').then(function (events) {
49+
this.events = events;
50+
}.bind(this));
51+
},
52+
5853
eventSelected: function (ev) {
5954
ev.preventDefault();
6055
this.fire('event-selected', { eventType: ev.model.event.event });

panels/dev-event/ha-panel-dev-event.html

+6-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,12 @@
116116
return;
117117
}
118118

119-
this.hass.eventActions.fireEvent(this.eventType, eventData);
119+
this.hass.callApi('POST', 'events/' + this.eventType, eventData)
120+
.then(function () {
121+
this.fire('hass-notification', {
122+
message: 'Event ' + this.eventType + ' successful fired!',
123+
});
124+
}.bind(this));
120125
},
121126

122127
computeFormClasses: function (narrow) {

panels/dev-info/ha-panel-dev-info.html

+3-26
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
<link rel="import" href="../../bower_components/app-layout/app-toolbar/app-toolbar.html">
88

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

1312
<dom-module id="ha-panel-dev-info">
@@ -71,10 +70,10 @@
7170
<p class='version'>
7271
<a href='https://home-assistant.io'><img src="/static/icons/favicon-192x192.png" height="192" /></a><br />
7372
Home Assistant<br />
74-
[[hassVersion]]
73+
[[hass.config.core.version]]
7574
</p>
7675
<p>
77-
Path to configuration.yaml: [[hassConfigDir]]
76+
Path to configuration.yaml: [[hass.config.core.config_dir]]
7877
</p>
7978
<p class='develop'>
8079
<a href='https://home-assistant.io/developers/credits/' target='_blank'>
@@ -92,7 +91,6 @@
9291
Built using
9392
<a href='https://www.python.org'>Python 3</a>,
9493
<a href='https://www.polymer-project.org' target='_blank'>Polymer [[polymerVersion]]</a>,
95-
<a href='https://optimizely.github.io/nuclear-js/' target='_blank'>NuclearJS [[nuclearVersion]]</a><br />
9694
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>.
9795
</p>
9896
</div>
@@ -110,8 +108,6 @@
110108
Polymer({
111109
is: 'ha-panel-dev-info',
112110

113-
behaviors: [window.hassBehavior],
114-
115111
properties: {
116112
hass: {
117113
type: Object,
@@ -127,30 +123,11 @@
127123
value: false,
128124
},
129125

130-
hassVersion: {
131-
type: String,
132-
bindNuclear: function (hass) {
133-
return hass.configGetters.serverVersion;
134-
},
135-
},
136-
137-
hassConfigDir: {
138-
type: String,
139-
bindNuclear: function (hass) {
140-
return hass.configGetters.configDir;
141-
},
142-
},
143-
144126
polymerVersion: {
145127
type: String,
146128
value: Polymer.version,
147129
},
148130

149-
nuclearVersion: {
150-
type: String,
151-
value: '1.4.0',
152-
},
153-
154131
errorLog: {
155132
type: String,
156133
value: '',
@@ -166,7 +143,7 @@
166143

167144
this.errorLog = 'Loading error log…';
168145

169-
this.hass.errorLogActions.fetchErrorLog().then(
146+
this.hass.callApi('GET', 'error_log').then(
170147
function (log) {
171148
this.errorLog = log || 'No errors have been reported.';
172149
}.bind(this));

panels/dev-service/ha-panel-dev-service.html

+20-42
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

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

1716
<dom-module id='ha-panel-dev-service'>
1817
<template>
@@ -142,8 +141,6 @@ <h1>Valid Parameters</h1>
142141
Polymer({
143142
is: 'ha-panel-dev-service',
144143

145-
behaviors: [window.hassBehavior],
146-
147144
properties: {
148145
hass: {
149146
type: Object,
@@ -178,56 +175,37 @@ <h1>Valid Parameters</h1>
178175

179176
_attributes: {
180177
type: Array,
181-
computed: 'computeAttributesArray(hass, domain, service)',
178+
computed: 'computeAttributesArray(serviceDomains, domain, service)',
182179
},
183180

184181
serviceDomains: {
185-
type: Array,
186-
bindNuclear: function (hass) {
187-
return hass.serviceGetters.entityMap;
188-
},
182+
type: Object,
183+
computed: 'computeServiceDomains(hass)',
189184
},
190185
},
191186

192-
computeAttributesArray: function (hass, domain, service) {
193-
return hass.reactor.evaluate([
194-
hass.serviceGetters.entityMap,
195-
function (map) {
196-
if (map.has(domain) && map.get(domain).get('services').has(service)) {
197-
return map
198-
.get(domain)
199-
.get('services')
200-
.get(service)
201-
.get('fields')
202-
.map(function (field, key) {
203-
var fieldCopy = field.toJS();
204-
fieldCopy.key = key;
205-
return fieldCopy;
206-
})
207-
.toArray();
208-
}
209-
return [];
210-
},
211-
]);
187+
computeServiceDomains: function (hass) {
188+
return hass.config.services;
189+
},
190+
191+
computeAttributesArray: function (serviceDomains, domain, service) {
192+
if (!(domain in serviceDomains)) return [];
193+
if (!(service in serviceDomains[domain])) return [];
194+
195+
var fields = serviceDomains[domain][service].fields;
196+
return Object.keys(fields).map(function (field) {
197+
return Object.assign({}, fields[field], { key: field });
198+
});
212199
},
213200

214201
computeDomains: function (serviceDomains) {
215-
return serviceDomains
216-
.valueSeq()
217-
.map(function (domain) { return domain.domain; })
218-
.sort()
219-
.toJS();
202+
return Object.keys(serviceDomains).sort();
220203
},
221204

222205
computeServices: function (serviceDomains, domain) {
223-
if (domain) {
224-
return serviceDomains
225-
.get(domain)
226-
.get('services')
227-
.keySeq()
228-
.toArray();
229-
}
230-
return '';
206+
if (!(domain in serviceDomains)) return [];
207+
208+
return Object.keys(serviceDomains[domain]).sort();
231209
},
232210

233211
domainChanged: function () {
@@ -250,7 +228,7 @@ <h1>Valid Parameters</h1>
250228
return;
251229
}
252230

253-
this.hass.serviceActions.callService(this.domain, this.service, serviceData);
231+
this.hass.callService(this.domain, this.service, serviceData);
254232
},
255233
});
256234
</script>

panels/dev-state/ha-panel-dev-state.html

+17-15
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
<link rel="import" href="../../bower_components/app-layout/app-toolbar/app-toolbar.html">
1111

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

1615
<dom-module id="ha-panel-dev-state">
@@ -82,7 +81,7 @@ <h1>Current entities</h1>
8281
</tr>
8382
<template is='dom-repeat' items='[[_entities]]' as='entity'>
8483
<tr>
85-
<td><a href='#' on-tap='entitySelected'>[[entity.entityId]]</a></td>
84+
<td><a href='#' on-tap='entitySelected'>[[entity.entity_id]]</a></td>
8685
<td>[[entity.state]]</td>
8786
<template is='dom-if' if='[[computeShowAttributes(narrow, _showAttributes)]]'>
8887
<td>[[attributeString(entity)]]</td>
@@ -99,8 +98,6 @@ <h1>Current entities</h1>
9998
Polymer({
10099
is: 'ha-panel-dev-state',
101100

102-
behaviors: [window.hassBehavior],
103-
104101
properties: {
105102
hass: {
106103
type: Object,
@@ -138,20 +135,13 @@ <h1>Current entities</h1>
138135

139136
_entities: {
140137
type: Array,
141-
bindNuclear: function (hass) {
142-
return [
143-
hass.entityGetters.entityMap,
144-
function (map) {
145-
return map.valueSeq().sortBy(function (entity) { return entity.entityId; }).toArray();
146-
},
147-
];
148-
},
138+
computed: 'computeEntities(hass)',
149139
},
150140
},
151141

152142
entitySelected: function (ev) {
153143
var state = ev.model.entity;
154-
this._entityId = state.entityId;
144+
this._entityId = state.entity_id;
155145
this._state = state.state;
156146
this._stateAttributes = JSON.stringify(state.attributes, null, ' ');
157147
ev.preventDefault();
@@ -168,13 +158,25 @@ <h1>Current entities</h1>
168158
return;
169159
}
170160

171-
this.hass.entityActions.save({
172-
entityId: this._entityId,
161+
this.hass.callApi('POST', 'states/' + this._entityId, {
173162
state: this._state,
174163
attributes: attr,
175164
});
176165
},
177166

167+
computeEntities: function (hass) {
168+
return Object.keys(hass.states).map(function (key) { return hass.states[key]; })
169+
.sort(function (entityA, entityB) {
170+
if (entityA.entity_id < entityB.entity_id) {
171+
return -1;
172+
}
173+
if (entityB.entity_id > entityA.entity_id) {
174+
return 1;
175+
}
176+
return 0;
177+
});
178+
},
179+
178180
computeShowAttributes: function (narrow, _showAttributes) {
179181
return !narrow && _showAttributes;
180182
},

0 commit comments

Comments
 (0)