Frontend: handle modals in separate component
This commit is contained in:
parent
b6a3524e9b
commit
d81723c8fc
8 changed files with 135 additions and 133 deletions
|
@ -1,2 +1,2 @@
|
||||||
""" DO NOT MODIFY. Auto-generated by build_frontend script """
|
""" DO NOT MODIFY. Auto-generated by build_frontend script """
|
||||||
VERSION = "58bc00ea51f4f274240d9db1a0fec705"
|
VERSION = "14fb39cdbc1c103611d2c3d81558737d"
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,25 @@
|
||||||
|
<link rel="import" href="../bower_components/polymer/polymer.html">
|
||||||
|
|
||||||
|
<link rel="import" href="../dialogs/more-info-dialog.html">
|
||||||
|
|
||||||
|
<polymer-element name="ha-modals">
|
||||||
|
<template>
|
||||||
|
<more-info-dialog id="moreInfoDialog"></more-info-dialog>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
var uiActions = window.hass.uiActions,
|
||||||
|
dispatcher = window.hass.dispatcher;
|
||||||
|
|
||||||
|
Polymer({
|
||||||
|
ready: function() {
|
||||||
|
dispatcher.register(function(payload) {
|
||||||
|
switch (payload.actionType) {
|
||||||
|
case uiActions.ACTION_SHOW_DIALOG_MORE_INFO:
|
||||||
|
this.$.moreInfoDialog.show(payload.entityId);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}.bind(this));
|
||||||
|
},
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</polymer-element>
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
<polymer-element name="relative-ha-datetime" attributes="datetime">
|
<polymer-element name="relative-ha-datetime" attributes="datetime">
|
||||||
<template>
|
<template>
|
||||||
<span>{{ relativeTime }}</span>
|
{{ relativeTime }}
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
var UPDATE_INTERVAL = 60000; // 60 seconds
|
var UPDATE_INTERVAL = 60000; // 60 seconds
|
||||||
|
|
|
@ -1,95 +0,0 @@
|
||||||
<link rel="import" href="./bower_components/polymer/polymer.html">
|
|
||||||
|
|
||||||
<script src="./home-assistant-js/dist/homeassistant.min.js"></script>
|
|
||||||
|
|
||||||
<link rel="import" href="./dialogs/more-info-dialog.html">
|
|
||||||
|
|
||||||
<script>
|
|
||||||
var DOMAINS_WITH_CARD = ['thermostat', 'configurator'];
|
|
||||||
var DOMAINS_WITH_MORE_INFO = ['light', 'group', 'sun', 'configurator'];
|
|
||||||
|
|
||||||
// Register some polymer filters
|
|
||||||
|
|
||||||
PolymerExpressions.prototype.HATimeToDate = function(timeString) {
|
|
||||||
if (!timeString) return;
|
|
||||||
|
|
||||||
return window.hass.util.parseDateTime(timeString);
|
|
||||||
};
|
|
||||||
|
|
||||||
PolymerExpressions.prototype.HATimeStripDate = function(timeString) {
|
|
||||||
return (timeString || "").split(' ')[0];
|
|
||||||
};
|
|
||||||
|
|
||||||
// Add some frontend specific helpers to the models
|
|
||||||
Object.defineProperties(window.hass.stateModel.prototype, {
|
|
||||||
// how to render the card for this state
|
|
||||||
cardType: {
|
|
||||||
get: function() {
|
|
||||||
if(DOMAINS_WITH_CARD.indexOf(this.domain) !== -1) {
|
|
||||||
return this.domain;
|
|
||||||
} else if(this.canToggle) {
|
|
||||||
return "toggle";
|
|
||||||
} else {
|
|
||||||
return "display";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// how to render the more info of this state
|
|
||||||
moreInfoType: {
|
|
||||||
get: function() {
|
|
||||||
if(DOMAINS_WITH_MORE_INFO.indexOf(this.domain) !== -1) {
|
|
||||||
return this.domain;
|
|
||||||
} else {
|
|
||||||
return 'default';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
var state,
|
|
||||||
constants = window.hass.constants,
|
|
||||||
dispatcher = window.hass.dispatcher,
|
|
||||||
preferenceStore = window.hass.preferenceStore;
|
|
||||||
|
|
||||||
var uiActions = window.hass.uiActions = {
|
|
||||||
ACTION_SHOW_TOAST: constants.ACTION_SHOW_TOAST,
|
|
||||||
ACTION_SHOW_DIALOG_MORE_INFO: 'ACTION_SHOW_DIALOG_MORE_INFO',
|
|
||||||
|
|
||||||
showMoreInfoDialog: function(entityId) {
|
|
||||||
dispatcher.dispatch({
|
|
||||||
actionType: this.ACTION_SHOW_DIALOG_MORE_INFO,
|
|
||||||
entityId: entityId,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
validateAuth: function(authToken) {
|
|
||||||
window.hass.authActions.validate(authToken, preferenceStore.useStreaming());
|
|
||||||
},
|
|
||||||
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<polymer-element name="home-assistant-api" attributes="auth">
|
|
||||||
<template>
|
|
||||||
<more-info-dialog id="moreInfoDialog"></more-info-dialog>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
Polymer({
|
|
||||||
ready: function() {
|
|
||||||
dispatcher.register(function(payload) {
|
|
||||||
switch (payload.actionType) {
|
|
||||||
case uiActions.ACTION_SHOW_DIALOG_MORE_INFO:
|
|
||||||
this.$.moreInfoDialog.show(payload.entityId);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}.bind(this));
|
|
||||||
|
|
||||||
// if auth was given, tell the backend
|
|
||||||
if(this.auth) {
|
|
||||||
window.hass.uiActions.validateAuth(this.auth);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</polymer-element>
|
|
|
@ -2,8 +2,8 @@
|
||||||
<link rel="import" href="bower_components/font-roboto/roboto.html">
|
<link rel="import" href="bower_components/font-roboto/roboto.html">
|
||||||
|
|
||||||
<link rel="import" href="resources/home-assistant-style.html">
|
<link rel="import" href="resources/home-assistant-style.html">
|
||||||
|
<link rel="import" href="resources/home-assistant-js.html">
|
||||||
|
|
||||||
<link rel="import" href="home-assistant-api.html">
|
|
||||||
<link rel="import" href="layouts/login-form.html">
|
<link rel="import" href="layouts/login-form.html">
|
||||||
<link rel="import" href="layouts/home-assistant-main.html">
|
<link rel="import" href="layouts/home-assistant-main.html">
|
||||||
|
|
||||||
|
@ -40,6 +40,11 @@
|
||||||
document.getElementById('init').remove();
|
document.getElementById('init').remove();
|
||||||
|
|
||||||
this.listenToStores(true);
|
this.listenToStores(true);
|
||||||
|
|
||||||
|
// if auth was given, tell the backend
|
||||||
|
if(this.auth) {
|
||||||
|
window.hass.uiActions.validateAuth(this.auth);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
detached: function() {
|
detached: function() {
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<link rel="import" href="../layouts/partial-dev-set-state.html">
|
<link rel="import" href="../layouts/partial-dev-set-state.html">
|
||||||
|
|
||||||
<link rel="import" href="../components/ha-notifications.html">
|
<link rel="import" href="../components/ha-notifications.html">
|
||||||
|
<link rel="import" href="../components/ha-modals.html">
|
||||||
<link rel="import" href="../components/stream-status.html">
|
<link rel="import" href="../components/stream-status.html">
|
||||||
|
|
||||||
<polymer-element name="home-assistant-main">
|
<polymer-element name="home-assistant-main">
|
||||||
|
@ -66,6 +67,7 @@
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<ha-notifications></ha-notifications>
|
<ha-notifications></ha-notifications>
|
||||||
|
<ha-modals></ha-modals>
|
||||||
|
|
||||||
<core-drawer-panel id="drawer" on-core-responsive-change="{{responsiveChanged}}">
|
<core-drawer-panel id="drawer" on-core-responsive-change="{{responsiveChanged}}">
|
||||||
<core-header-panel mode="scroll" drawer>
|
<core-header-panel mode="scroll" drawer>
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
<script src="../home-assistant-js/dist/homeassistant.min.js"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function() {
|
||||||
|
var DOMAINS_WITH_CARD = ['thermostat', 'configurator'];
|
||||||
|
var DOMAINS_WITH_MORE_INFO = ['light', 'group', 'sun', 'configurator'];
|
||||||
|
|
||||||
|
// Register some polymer filters
|
||||||
|
|
||||||
|
PolymerExpressions.prototype.HATimeToDate = function(timeString) {
|
||||||
|
if (!timeString) return;
|
||||||
|
|
||||||
|
return window.hass.util.parseDateTime(timeString);
|
||||||
|
};
|
||||||
|
|
||||||
|
PolymerExpressions.prototype.HATimeStripDate = function(timeString) {
|
||||||
|
return (timeString || "").split(' ')[0];
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add some frontend specific helpers to the models
|
||||||
|
Object.defineProperties(window.hass.stateModel.prototype, {
|
||||||
|
// how to render the card for this state
|
||||||
|
cardType: {
|
||||||
|
get: function() {
|
||||||
|
if(DOMAINS_WITH_CARD.indexOf(this.domain) !== -1) {
|
||||||
|
return this.domain;
|
||||||
|
} else if(this.canToggle) {
|
||||||
|
return "toggle";
|
||||||
|
} else {
|
||||||
|
return "display";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// how to render the more info of this state
|
||||||
|
moreInfoType: {
|
||||||
|
get: function() {
|
||||||
|
if(DOMAINS_WITH_MORE_INFO.indexOf(this.domain) !== -1) {
|
||||||
|
return this.domain;
|
||||||
|
} else {
|
||||||
|
return 'default';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
var dispatcher = window.hass.dispatcher,
|
||||||
|
constants = window.hass.constants,
|
||||||
|
preferenceStore = window.hass.preferenceStore,
|
||||||
|
authActions = window.hass.authActions;
|
||||||
|
|
||||||
|
window.hass.uiActions = {
|
||||||
|
ACTION_SHOW_DIALOG_MORE_INFO: 'ACTION_SHOW_DIALOG_MORE_INFO',
|
||||||
|
|
||||||
|
showMoreInfoDialog: function(entityId) {
|
||||||
|
dispatcher.dispatch({
|
||||||
|
actionType: this.ACTION_SHOW_DIALOG_MORE_INFO,
|
||||||
|
entityId: entityId,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
validateAuth: function(authToken) {
|
||||||
|
authActions.validate(authToken, preferenceStore.useStreaming());
|
||||||
|
},
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
</script>
|
Loading…
Add table
Add a link
Reference in a new issue