'use strict';
new ExceptionHandler();
/**
* Polymer element for selecting a time
* @namespace SettingTime
*/
Polymer({
is: 'setting-time',
behaviors: [
Chrome.LocalizeBehavior,
],
properties: {
/**
* Local storage key
* @memberOf SettingTime
*/
name: {
type: String,
value: 'store',
},
/**
* Time value '00:00' format
* @memberOf SettingTime
*/
value: {
type: String,
value: '00:00',
observer: '_valueChanged',
},
/**
* Time display label
* @memberOf SettingTime
*/
timeLabel: {
type: String,
value: '12:00 AM',
},
/**
* Display format 12/24 hr
* @memberOf SettingTime
*/
format: {
type: Number,
value: 1,
notify: true,
observer: '_formatChanged',
},
/**
* Descriptive label
* @memberOf SettingTime
*/
mainLabel: {
type: String,
value: '',
},
/**
* Secondary descriptive label
* @memberOf SettingTime
*/
secondaryLabel: {
type: String,
value: '',
},
/**
* Optional group title
* @memberOf SettingTime
*/
sectionTitle: {
type: String,
value: '',
},
/**
* Disabled state of element
* @memberOf SettingTime
*/
disabled: {
type: Boolean,
value: false,
},
/**
* Visibility state of optional divider
* @memberOf SettingTime
*/
noseparator: {
type: Boolean,
value: false,
},
},
/**
* Event: Show dialog on tap
* @private
* @memberOf SettingTime
*/
_onTap: function() {
if (!this.disabled) {
this.$.dialog.open();
}
},
/**
* Event: Set time on tap of OK button
* @private
* @memberOf SettingTime
*/
_onTimeSelected: function() {
const picker = this.$.timePicker;
const hour = ('0' + picker.hour).substr(-2);
const min = ('0' + picker.minute).substr(-2);
const value = `${hour}:${min}`;
this.set('value', value);
Chrome.GA.event(Chrome.GA.EVENT.BUTTON, `SettingTime.OK: ${this.name}`);
},
/**
* Observer: Value changed
* @param {string} newValue - value we changed to
* @private
* @memberOf SettingTime
*/
_valueChanged: function(newValue) {
this._setTimeLabel(newValue);
},
/**
* Observer: Global Time format changed
* @private
* @memberOf SettingTime
*/
_formatChanged: function() {
this._setTimeLabel(this.get('value'));
},
/**
* Get the time suitable for display
* @param {string} timeString - format '00:00'
* @returns {string} formatted time
* @private
* @memberOf SettingTime
*/
_formatTime: function(timeString) {
let ret = '12:00 AM';
if (timeString) {
ret = Chrome.Time.getStringFull(timeString, this.format);
} else {
Chrome.Log.error('timeString is null', 'setting-time._formatTime');
}
return ret;
},
/**
* Set the time display label
* @param {string} value - time in '00:00' format
* @private
* @memberOf SettingTime
*/
_setTimeLabel: function(value) {
this.set('timeLabel', this._formatTime(value));
},
/**
* Initialize value if it is not in localstorage
* @private
* @memberOf SettingTime
*/
_init: function() {
this.set('value', '00:00');
},
});