Sha256: 5c891a234f6f044b25d41a72b341835bcee18b8c4007631a43653a73db502149

Contents?: true

Size: 1.82 KB

Versions: 7

Compression:

Stored size: 1.82 KB

Contents

class Backbone.Poised.RangeControl extends Backbone.Poised.BaseControl
  initialize: (options) =>
    super

    @options = _.chain(@options)
      .pick('model', 'renderSpinner', 'clearOnFocus', 'stepSize', 'precision', 'range', 'attribute', 'unit', 'sliderMinValue', 'sliderMaxValue', 'spinnerMinValue', 'spinnerMaxValue')
      .defaults
        renderSpinner: true
        clearOnFocus: true
        type: 'number'
      .value()

    if @options.stepSize? and not @options.precision?
      @options.precision = _.find([0..3], (i) =>
        @options.stepSize * Math.pow(10, i) >= 1)

    # A spinner field is a textfield of type number.
    if @options.renderSpinner
      @spinnerOptions = _.chain(@options)
        .pick('model', 'attribute', 'type', 'clearOnFocus', 'unit', 'precision', 'stepSize')
        .defaults
          minValue: _.firstDefined(@options.spinnerMinValue, @options.range?[0], @options.range?.spinner?[0])
          maxValue: _.firstDefined(@options.spinnerMaxValue, @options.range?[1], @options.range?.spinner?[1])
          parentView: this
        .value()

    @sliderOptions = _.chain(@options)
      .pick('model', 'attribute', 'stepSize')
      .defaults
        minValue: _.firstDefined(@options.sliderMinValue, @options.range?[0], @options.range?.slider?[0])
        maxValue: _.firstDefined(@options.sliderMaxValue, @options.range?[1], @options.range?.slider?[1])
        parentView: this
      .value()

  render: =>
    super

    if @options.renderSpinner
      @subviews.spinner = new Backbone.Poised.Textfield(@spinnerOptions)
      @$input.html(@subviews.spinner.render().el)
    else
      @subviews.value = new Backbone.Poised.Value(@options)
      @$input.html(@subviews.value.render().el)

    @subviews.slider = new Backbone.Poised.Slider(@sliderOptions)
    @$el.append(@subviews.slider.render().el)

    this

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
ela-4.1.6 app/js/vendor/backbone.poised/form/range_control.coffee
ela-4.1.5 app/js/vendor/backbone.poised/form/range_control.coffee
ela-4.1.4 app/js/vendor/backbone.poised/form/range_control.coffee
ela-4.1.3 app/js/vendor/backbone.poised/form/range_control.coffee
ela-4.1.2 app/js/vendor/backbone.poised/form/range_control.coffee
ela-4.1.1 app/js/vendor/backbone.poised/form/range_control.coffee
ela-4.1.0 app/js/vendor/backbone.poised/form/range_control.coffee