diff --git a/bower.json b/bower.json index 942ef4b3be..1f762d592e 100644 --- a/bower.json +++ b/bower.json @@ -36,7 +36,8 @@ "layout": "Polymer/layout", "paper-styles": "polymerelements/paper-styles#^1.0.11", "pikaday": "~1.3.3", - "iron-media-query": "polymerelements/iron-media-query#~1.0.2" + "iron-media-query": "polymerelements/iron-media-query#~1.0.2", + "leaflet-map": "~1.1.0" }, "resolutions": { "polymer": "^1.0.0", diff --git a/package.json b/package.json index a75f42c385..8946f5e73d 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "author": "Paulus Schoutsen (http://paulusschoutsen.nl)", "license": "MIT", "dependencies": { - "home-assistant-js": "git+https://github.com/balloob/home-assistant-js.git#95b238ca6e548a8d8d998cfa6a55e85b95b4147d", + "home-assistant-js": "git+https://github.com/balloob/home-assistant-js.git#bb8bd7bd19cae511e43d4815191921c78c6f00fb", "lodash": "^3.10.1", "moment": "^2.10.6" }, diff --git a/src/components/entity/ha-entity-marker.html b/src/components/entity/ha-entity-marker.html new file mode 100644 index 0000000000..7e180bd329 --- /dev/null +++ b/src/components/entity/ha-entity-marker.html @@ -0,0 +1,38 @@ + + + + + + + + diff --git a/src/components/entity/ha-entity-marker.js b/src/components/entity/ha-entity-marker.js new file mode 100644 index 0000000000..c55ae8bb15 --- /dev/null +++ b/src/components/entity/ha-entity-marker.js @@ -0,0 +1,61 @@ +import Polymer from '../../polymer'; +import { + reactor, + entityGetters, + moreInfoActions, +} from '../../util/home-assistant-js-instance'; +import domainIcon from '../../util/domain-icon'; + +require('../../components/ha-label-badge'); + +export default new Polymer({ + is: 'ha-entity-marker', + + properties: { + entityId: { + type: String, + value: "", + }, + + state: { + type: Object, + computed: 'computeState(entityId)', + }, + + icon: { + type: Object, + computed: 'computeIcon(state)', + }, + + image: { + type: Object, + computed: 'computeImage(state)', + }, + }, + + listeners: { + 'click': 'badgeTap', + }, + + badgeTap(ev) { + ev.stopPropagation(); + if (this.entityId) { + this.async(() => moreInfoActions.selectEntity(this.entityId), 1); + } + }, + + computeState(entityId) { + return entityId && reactor.evaluate(entityGetters.byId(entityId)); + }, + + computeIcon(state) { + return state ? + !state.attributes.entity_picture && domainIcon(state.domain) : + 'home'; + }, + + computeImage(state) { + return state && state.attributes.entity_picture; + }, + +}); diff --git a/src/components/entity/ha-state-label-badge.js b/src/components/entity/ha-state-label-badge.js index 6dcf8193fe..2c9028607d 100644 --- a/src/components/entity/ha-state-label-badge.js +++ b/src/components/entity/ha-state-label-badge.js @@ -77,14 +77,12 @@ export default new Polymer({ computeIcon(state) { switch (state.domain) { - case 'alarm_control_panel': - return state.state === 'disarmed' ? - 'icons:lock-open' : 'icons:lock'; case 'device_tracker': return !state.attributes.entity_picture && domainIcon(state.domain); + case 'alarm_control_panel': case 'scene': case 'script': - return domainIcon(state.domain); + return domainIcon(state.domain, state.state); case 'sensor': return !state.attributes.unit_of_measurement && domainIcon(state.domain); case 'sun': diff --git a/src/components/ha-sidebar.html b/src/components/ha-sidebar.html index 7907441b1e..3bfb587aa5 100644 --- a/src/components/ha-sidebar.html +++ b/src/components/ha-sidebar.html @@ -88,6 +88,11 @@ + + + Map + + Log Out diff --git a/src/layouts/home-assistant-main.html b/src/layouts/home-assistant-main.html index 46efeb7eda..b92da60c8e 100644 --- a/src/layouts/home-assistant-main.html +++ b/src/layouts/home-assistant-main.html @@ -5,6 +5,7 @@ + @@ -20,7 +21,10 @@ - +