support code format

This commit is contained in:
Per Sandström 2015-09-24 22:37:30 +02:00
parent 8f13584c14
commit 283400f211
2 changed files with 35 additions and 8 deletions

View File

@ -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' input='[[entered_code]]' pattern='[[code_format]]' on-keyup='entered_code_changed' type='password' hidden$='[[!code_input_visible]]' disabled$='[[!code_input_enabled]]'></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$='[[!disarm_button_enabled]]' disabled$='[[!code_valid]]'>Disarm</paper-button>
<paper-button on-tap='handleHomeTap' hidden$='[[!arm_home_button_enabled]]'>Arm Home</paper-button> <paper-button on-tap='handleHomeTap' hidden$='[[!arm_home_button_enabled]]' disabled$='[[!code_valid]]'>Arm Home</paper-button>
<paper-button on-tap='handleAwayTap' hidden$='[[!arm_away_button_enabled]]'>Arm Away</paper-button> <paper-button on-tap='handleAwayTap' hidden$='[[!arm_away_button_enabled]]' disabled$='[[!code_valid]]'>Arm Away</paper-button>
</div> </div>
</template> </template>
</dom-module> </dom-module>

View File

@ -34,17 +34,44 @@ export default new Polymer({
type: Boolean, type: Boolean,
value: false, value: false,
}, },
code_input_visible: {
type: Boolean,
value: false,
},
code_input_enabled: {
type: Boolean,
value: false,
},
code_format: {
type: String,
value: '',
},
code_valid: {
type: Boolean,
value: false,
},
}, },
enteredCodeChanged(ev) { validate_code(code) {
this.entered_code = ev.target.value; if(this.code_format == null){
this.code_valid = true;
return;
}
var re = new RegExp(this.code_format);
this.code_valid = re.test(code);
},
entered_code_changed(ev) {
this.validate_code(ev.target.value);
}, },
stateObjChanged(newVal) { stateObjChanged(newVal) {
if (newVal) { if (newVal) {
this.disarm_button_enabled = newVal.state === 'armed_home' || newVal.state === 'armed_away'; this.code_format = newVal.attributes.code_format;
this.validate_code(this.entered_code);
this.code_input_visible = newVal.attributes.code_format != null;
this.code_input_enabled = (newVal.state === 'armed_home' || newVal.state === 'armed_away' || newVal.state === 'disarmed');
this.disarm_button_enabled = (newVal.state === 'armed_home' || newVal.state === 'armed_away');
this.arm_home_button_enabled = newVal.state === 'disarmed'; this.arm_home_button_enabled = newVal.state === 'disarmed';
this.arm_away_button_enabled = newVal.state === 'disarmed'; this.arm_away_button_enabled = newVal.state === 'disarmed';
} }
this.async(() => this.fire('iron-resize'), 500); this.async(() => this.fire('iron-resize'), 500);
}, },
callService(service, data) { callService(service, data) {