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