'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'); }, });