Craig Roberts
2008-Jun-06 15:53 UTC
How do you change the range on scriptaculous Slider afterwards
The way i have coded it at the moment is to simply create a new slider
the same as the other one but with an up to date range.
There must be a better way to do this as its causing a lot of lag
sliding after a new slider is created.
code is below thanks for any help in advance.
slider_t and b are seperate from the problem.
var slider;
var slider_t;
var slider_b;
var width;
var element;
var position;
var slider_obj;
//Event.observe(window, ''resize'', update);
document.observe("dom:loaded", function() {
slider_obj = this;
element = $(''plist_con'');
width = (element.scrollWidth-element.offsetWidth);
$(''plist_con'').setStyle({ maxwidth: (width) +
''px'' });
slider = new Control.Slider(''handle'',
''track'',
{
range: $R(0, width),
sliderValue: 0, // won''t work if set to 0 due to a bug(?) in
script.aculo.us
currentValue: 0,
onSlide: function(v)
{
scrollHorizontal(v, $(''plist_con''), slider);
$(''pageination'').innerHTML = ''slide:
'' + v
//alert(this);
},
onChange: function(v)
{
scrollHorizontal(v, $(''plist_con''), slider);
$(''pageination'').innerHTML = ''changed:
'' + v
}
});
slider_t = new Control.Slider(''side_t_bar'',
''side_t_track'', {
axis: ''vertical'',
onSlide: function(v) { scrollVertical(v,
$(''side_type''),
slider_b); },
onChange: function(v) { scrollVertical(v,
$(''side_type''),
slider_b); }
});
slider_b = new Control.Slider(''side_b_bar'',
''side_b_track'', {
axis: ''vertical'',
onSlide: function(v) { scrollVertical(v,
$(''side_brand''),
slider_b); },
onChange: function(v) { scrollVertical(v,
$(''side_brand''),
slider_b); }
});
// disable vertical scrolling if text doesn''t overflow the div
if ($(''side_type'').scrollHeight <=
$(''side_type'').offsetHeight) {
slider_t.setDisabled();
$(''side_t_wrap'').hide();
}
// disable vertical scrolling if text doesn''t overflow the div
if ($(''side_brand'').scrollHeight <=
$(''side_brand'').offsetHeight)
{
slider_b.setDisabled();
$(''side_b_wrap'').hide();
}
// disable horizontal scrolling if text doesn''t overflow the div
if ($(''plist_con'').scrollWidth <=
$(''plist_con'').offsetWidth) {
slider.setDisabled();
$(''wrap'').hide();
}
});
function update()
{
width = (element.scrollWidth-element.offsetWidth);
position = (element.scrollLeft);
slider = new Control.Slider(''handle'',
''track'',
{
range: $R(0, width),
sliderValue: position,
onSlide: function(v)
{
scrollHorizontal(v, $(''plist_con''), slider);
$(''pageination'').innerHTML = ''slide:
'' + v
},
onChange: function(v)
{
scrollHorizontal(v, $(''plist_con''), slider);
$(''pageination'').innerHTML = ''changed:
'' + v
}
});
//setTimeout(''update()'', 1120);
}
function scrollVertical(value, element, slider)
{
element.scrollTop = Math.round(value/
slider.maximum*(element.scrollHeight-element.offsetHeight));
}
function scrollHorizontal(value, element, slider)
{
element.scrollLeft = Math.round(value/
slider.maximum*(element.scrollWidth-element.offsetWidth));
}
function moveP()
{
x = document.getElementById(''plist_con'');
var col = Math.floor(x.offsetWidth / 214)
var scrollby = col * 214
new Effect.Scroll(''plist_con'',{x:-scrollby,
mode:''relative''});
setTimeout(''setscroll()'', 1120)
}
function moveN()
{
x = document.getElementById(''plist_con'');
//alert("Position: " + x.scrollLeft + ", Viewable: " +
x.offsetWidth + ", Total: "+ x.scrollWidth + ", Total(S): "
+
slider.maximum);
update();
var col = Math.floor(x.offsetWidth / 214)
var scrollby = col * 214
new Effect.Scroll(''plist_con'',{x:scrollby,
mode:''relative''});
setTimeout(''setscroll()'', 1120)
}
function setscroll(){
var browserName=navigator.appName;
update();
if (browserName=="Microsoft Internet Explorer")
{
x = document.getElementById(''plist_con'');
//alert("scroll left:" + x.scrollLeft);
slider.setValue(x.scrollLeft);
}
else
{
x = document.getElementById(''plist_con'');
//alert("scroll left:" + x.scrollLeft);
slider.setValue(x.scrollLeft);
}
}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Spinoffs" group.
To post to this group, send email to
rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---