'use strict'; new ExceptionHandler(); /** * Polymer element to select a value with a slider * @namespace SettingSlider */ Polymer({ is: 'setting-slider', properties: { /** * Local storage key * @memberOf SettingSlider */ name: { type: String, value: 'store', }, /** * Slider description * @memberOf SettingSlider */ label: { type: String, value: '', }, /** * Object containing slider value and display unit index * @memberOf SettingSlider */ value: { type: Object, notify: true, value: function() { return {'base': 10, 'display': 10, 'unit': 0}; }, }, /** * Array of unit labels * @memberOf SettingSlider */ units: { type: Array, value: function() { return []; }, }, /** * Optional group title * @memberOf SettingSlider */ sectionTitle: { type: String, value: '', }, /** * Disabled state of element * @memberOf SettingSlider */ disabled: { type: Boolean, value: false, }, /** * Visibility state of optional divider * @memberOf SettingSlider */ noseparator: { type: Boolean, value: false, }, }, /** * Event: User changed slider value * @private * @memberOf SettingSlider */ _onSliderValueChanged: function() { Chrome.GA.event(Chrome.GA.EVENT.SLIDER_VALUE, this.name); this._setBase(); }, /** * Event: Display unit was changed * @private * @memberOf SettingSlider */ _onUnitChanged: function() { if (this.$.selector.selectedItem) { // skip logging of initial selection Chrome.GA.event(Chrome.GA.EVENT.SLIDER_UNITS, this.name); } this.$.selector.select(this.units[this.value.unit]); this._setBase(); }, /** * Set the base value * @private * @memberOf SettingSlider */ _setBase: function() { this.set('value.base', this.unit.mult * this.value.display); }, /** * Initialize value if it is not in localstorage * @private * @memberOf SettingSlider */ _initValue: function() { this.value = { base: 10, display: 10, unit: 0, }; }, });