/*______________ | ______ | U I Z E J A V A S C R I P T F R A M E W O R K | / / | --------------------------------------------------- | / O / | MODULE : Uize.Widgets.ColorsTransformer.ShiftAndRange.Widget Class | / / / | | / / / /| | ONLINE : http://uize.com | /____/ /__/_| | COPYRIGHT : (c)2010-2016 UIZE | /___ | LICENSE : Available under MIT License or GNU General Public License |_______________| http://uize.com/license.html */ /* Module Meta Data type: Class importance: 1 codeCompleteness: 100 docCompleteness: 5 */ /*? Introduction The =Uize.Widgets.ColorsTransformer.ShiftAndRange.Widget= class implements a widget for letting the user adjust shift and range transformtion values for a single color component. *DEVELOPERS:* `Chris van Rensburg` Visual Sampler Below is a visual sampler of the =Uize.Widgets.ColorsTransformer.ShiftAndRange.Widget= class... ....................................................................... << widget >> widgetClass: Uize.Widgets.ColorsTransformer.ShiftAndRange.VisualSampler ....................................................................... */ /* TODO: - factor out commonalities in CSS between this widget and the log widget - centered title - title state property and binding to HTML - heading styling to accommodate top right button */ Uize.module ({ name:'Uize.Widgets.ColorsTransformer.ShiftAndRange.Widget', superclass:'Uize.Widgets.BoxWithHeading.Widget', required:[ 'Uize.Widgets.Slider.Widget', 'Uize.Widgets.Buttons.Reset.Widget', 'Uize.Widgets.ColorsTransformer.ShiftAndRange.Html', 'Uize.Widgets.ColorsTransformer.ShiftAndRange.Css' ], builder:function (_superclass) { 'use strict'; return _superclass.subclass ({ hasLoc:true, set:{ html:Uize.Widgets.ColorsTransformer.ShiftAndRange.Html }, staticProperties:{ cssModule:Uize.Widgets.ColorsTransformer.ShiftAndRange.Css }, stateProperties:{ shiftExtent:{value:100}, shift:{value:0}, range:{value:50}, heading:{value:''}, sliderTrackLength:{value:'100%'}, /*** derived properties ***/ _shiftSliderMinValue:{derived:'shiftExtent: -shiftExtent'}, _shiftSliderMaxValue:{derived:'shiftExtent'}, _shiftSliderMinValueLabel:{derived:'shiftExtent: "-" + shiftExtent'}, _shiftSliderMaxValueLabel:{derived:'shiftExtent: "+" + shiftExtent'} }, children:Uize.copyInto ( Uize.map ( { shiftSlider:{}, rangeSlider:{ minValue:0, maxValue:100 } }, function (_properties) { return Uize.copyInto ( _properties, { widgetClass:Uize.Widgets.Slider.Widget, increments:0, orientation:'horizontal' } ); } ), { reset:{ widgetClass:Uize.Widgets.Buttons.Reset.Widget, action:function () { this.parent.set ({ shift:0, range:50 }); } } } ), childBindings:{ _shiftSliderMinValue:'shiftSlider.minValue', _shiftSliderMaxValue:'shiftSlider.maxValue', shift:'shiftSlider.value', range:'rangeSlider.value', sliderTrackLength:[ '->shiftSlider.trackLength', '->rangeSlider.trackLength' ] }, htmlBindings:{ heading:'title', loc_shift:'shiftLabel', loc_range:'rangeLabel', _shiftSliderMinValueLabel:'shiftMinValue', _shiftSliderMaxValueLabel:'shiftMaxValue' } }); } });