Skip to main content

Bug Tracker

Side navigation

#2501 closed enhancement (fixed)

Opened March 13, 2008 03:16PM UTC

Closed March 17, 2008 06:07PM UTC

ui.slider - Refactoring suggestions

Reported by: joern Owned by: joern
Priority: major Milestone: 1.2.4
Component: ui Version: 1.2.3
Keywords: Cc:
Blocked by: Blocking:

ui.slider currently contains quite a bit of duplicated code. A few suggestions for refactorings:

drag and moveTo contain a lot of the same code, eg. this is in both:

if(o.stepping) {
	var value = this.convertValue(modifier);
	value = Math.round(value / o.stepping) * o.stepping;
	modifier = this.translateValue(value);	

if(this.rangeElement) {
	if(this.currentHandle[0] == this.handle[0] && modifier >= this.translateValue(this.value(1))) modifier = this.translateValue(this.value(1));
	if(this.currentHandle[0] == this.handle[1] && modifier <= this.translateValue(this.value(0))) modifier = this.translateValue(this.value(0));

this.currentHandle.css([0], modifier);
if(this.rangeElement) this.updateRange();

Should be extracted to a single method.

Both value() and handleSize() contain code to find a handle:

$(handle != undefined ? this.handle[handle] || handle : this.currentHandle)

That could be extracted as well.

createRange and updateRange contain the same code to update CSS. createRange could use updateRange to avoid the duplication.

Both could use a method that returns an object with the necessary CSS properties, passing the index as an argument, something like this:

cssproperties: function(index) {
	var result = {};
	result[[index]] = parseInt($(this.handle[index]).css([index]),10) + this.handleSize(index)/2;
	return result;

Could then be used like this:

Attachments (0)
Change History (3)

Changed March 14, 2008 02:53PM UTC by paul comment:1

owner: paulbraeker

Changed March 17, 2008 05:34PM UTC by joern comment:2

owner: braekerjoern

Changed March 17, 2008 06:07PM UTC by joern comment:3

resolution: → fixed
status: newclosed

Mostly implemented in [5065] and previous revisions.