mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-17 14:26:35 +00:00
Merge pull request #8 from persandstrom/master
Alarm control panel: support code format
This commit is contained in:
commit
8c317b4c27
@ -6,12 +6,12 @@
|
|||||||
<dom-module id='more-info-alarm_control_panel'>
|
<dom-module id='more-info-alarm_control_panel'>
|
||||||
<template>
|
<template>
|
||||||
<div class='layout horizontal'>
|
<div class='layout horizontal'>
|
||||||
<paper-input label='code' value='[[entered_code]]' pattern='[0-9]*' type='password' on-change='enteredCodeChanged'></paper-input>
|
<paper-input label='code' value='{{enteredCode}}' pattern='[[codeFormat]]' type='password' hidden='[[!codeInputVisible]]' disabled='[[!codeInputEnabled]]'></paper-input>
|
||||||
</div>
|
</div>
|
||||||
<div class='layout horizontal'>
|
<div class='layout horizontal'>
|
||||||
<paper-button on-tap='handleDisarmTap' hidden$='[[!disarm_button_enabled]]'>Disarm</paper-button>
|
<paper-button on-tap='handleDisarmTap' hidden='[[!disarmButtonVisible]]' disabled='[[!codeValid]]'>Disarm</paper-button>
|
||||||
<paper-button on-tap='handleHomeTap' hidden$='[[!arm_home_button_enabled]]'>Arm Home</paper-button>
|
<paper-button on-tap='handleHomeTap' hidden='[[!armHomeButtonVisible]]' disabled=[[!codeValid]]>Arm Home</paper-button>
|
||||||
<paper-button on-tap='handleAwayTap' hidden$='[[!arm_away_button_enabled]]'>Arm Away</paper-button>
|
<paper-button on-tap='handleAwayTap' hidden='[[!armAwayButtonVisible]]' disabled='[[!codeValid]]'>Arm Away</paper-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</dom-module>
|
</dom-module>
|
||||||
|
@ -5,46 +5,73 @@ import Polymer from '../polymer';
|
|||||||
export default new Polymer({
|
export default new Polymer({
|
||||||
is: 'more-info-alarm_control_panel',
|
is: 'more-info-alarm_control_panel',
|
||||||
handleDisarmTap() {
|
handleDisarmTap() {
|
||||||
this.callService('alarm_disarm', {code: this.entered_code});
|
this.callService('alarm_disarm', {code: this.enteredCode});
|
||||||
},
|
},
|
||||||
handleHomeTap() {
|
handleHomeTap() {
|
||||||
this.callService('alarm_arm_home', {code: this.entered_code});
|
this.callService('alarm_arm_home', {code: this.enteredCode});
|
||||||
},
|
},
|
||||||
handleAwayTap() {
|
handleAwayTap() {
|
||||||
this.callService('alarm_arm_away', {code: this.entered_code});
|
this.callService('alarm_arm_away', {code: this.enteredCode});
|
||||||
},
|
},
|
||||||
properties: {
|
properties: {
|
||||||
stateObj: {
|
stateObj: {
|
||||||
type: Object,
|
type: Object,
|
||||||
observer: 'stateObjChanged',
|
observer: 'stateObjChanged',
|
||||||
},
|
},
|
||||||
entered_code: {
|
enteredCode: {
|
||||||
type: String,
|
type: String,
|
||||||
value: '',
|
value: '',
|
||||||
},
|
},
|
||||||
disarm_button_enabled: {
|
disarmButtonVisible: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
value: false,
|
value: false,
|
||||||
},
|
},
|
||||||
arm_home_button_enabled: {
|
armHomeButtonVisible: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
value: false,
|
value: false,
|
||||||
},
|
},
|
||||||
arm_away_button_enabled: {
|
armAwayButtonVisible: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
value: false,
|
value: false,
|
||||||
},
|
},
|
||||||
|
codeInputVisible: {
|
||||||
|
type: Boolean,
|
||||||
|
value: false,
|
||||||
|
},
|
||||||
|
codeInputEnabled: {
|
||||||
|
type: Boolean,
|
||||||
|
value: false,
|
||||||
|
},
|
||||||
|
codeFormat: {
|
||||||
|
type: String,
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
codeValid: {
|
||||||
|
type: Boolean,
|
||||||
|
computed: 'validateCode(enteredCode, codeFormat)',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
enteredCodeChanged(ev) {
|
validateCode(code, format) {
|
||||||
this.entered_code = ev.target.value;
|
const re = new RegExp(format);
|
||||||
|
if (format === null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return re.test(code);
|
||||||
},
|
},
|
||||||
stateObjChanged(newVal) {
|
stateObjChanged(newVal) {
|
||||||
if (newVal) {
|
if (newVal) {
|
||||||
this.disarm_button_enabled = newVal.state === 'armed_home' || newVal.state === 'armed_away';
|
this.codeFormat = newVal.attributes.code_format;
|
||||||
this.arm_home_button_enabled = newVal.state === 'disarmed';
|
this.codeInputVisible = this.codeFormat !== null;
|
||||||
this.arm_away_button_enabled = newVal.state === 'disarmed';
|
this.codeInputEnabled = (
|
||||||
|
newVal.state === 'armed_home' ||
|
||||||
|
newVal.state === 'armed_away' ||
|
||||||
|
newVal.state === 'disarmed');
|
||||||
|
this.disarmButtonVisible = (
|
||||||
|
newVal.state === 'armed_home' ||
|
||||||
|
newVal.state === 'armed_away');
|
||||||
|
this.armHomeButtonVisible = newVal.state === 'disarmed';
|
||||||
|
this.armAwayButtonVisible = newVal.state === 'disarmed';
|
||||||
}
|
}
|
||||||
|
|
||||||
this.async(() => this.fire('iron-resize'), 500);
|
this.async(() => this.fire('iron-resize'), 500);
|
||||||
},
|
},
|
||||||
callService(service, data) {
|
callService(service, data) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user