Search and Top Navigation
#10737 open feature ()
Opened December 30, 2014 09:33AM UTC
Last modified October 25, 2018 01:52PM UTC
Slider: allow for easy modification of the default linear behaviour
Reported by: | ssaki | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | none |
Component: | ui.slider | Version: | git (not yet released) |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
Currently there is no way to easy override the linear behavior of the slider. There are times where another visual behavior (e.g. logarithmic) is more appropriate.
Consider the following example scenario: having a price filter, represented by a range slider, for used cars site. Most of the items will be relatively evenly distributed into a given range, but if you add something with large deviation (e.g. Ferrari f50 among bunch of old) it will extend the range so much that the resolution in the lower range will become useless - one step of the slider will filter-out 50+% of the items. This is a common enough scenario to be addressed properly in a sane way.
Currently there in no option nor an extension point for that. The calculation code is located inside _refreshValue() and _mouseCapture() and the modification requires to extend the plugin and override all the code in those methods. As the calculations are only tiny fraction of them this would make maintenance painful.
It'd be better if the distance calculation code is located in separate methods thus allowing extending the plugin without the need to copy/paste all the unrelated (to the distance calculation) code in _refreshValue() and _mouseCapture() just to modify the handle progress/distance behaviour.
Additionally options may be introduced to hold a calculation callbacks that will default to plugin's own linear calculation methods. That way modifying plugins behavior will only require setting new callbacks which is even easier.
Modification in that way will not cause BC break as no existing method will change it's behaviour/API
Attachments (0)
Change History (4)
Changed December 30, 2014 11:50AM UTC by comment:1
Changed December 31, 2014 09:15PM UTC by comment:2
status: | new → open |
---|---|
summary: | No extension point for easy modification of the default linear behaviour → Slider: allow for easy modification of the default linear behaviour |
I think this is a reasonable use case for an extension point so I'll mark this as valid for now.
Changed December 31, 2014 09:31PM UTC by comment:3
I think this should probably wait and be part of the pending slider re-write.
Created a PR with the suggested approach: https://github.com/jquery/jquery-ui/pull/1407