You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
/**
|
|
* @class Ext.ux.SlidingPager
|
|
* @extends Object
|
|
* Plugin for PagingToolbar which replaces the textfield input with a slider
|
|
* @constructor
|
|
* Create a new ItemSelector
|
|
* @param {Object} config Configuration options
|
|
*/
|
|
Ext.define('Ext.ux.SlidingPager', {
|
|
requires: [
|
|
'Ext.slider.Single',
|
|
'Ext.slider.Tip'
|
|
],
|
|
|
|
constructor : function(config) {
|
|
if (config) {
|
|
Ext.apply(this, config);
|
|
}
|
|
},
|
|
|
|
init : function(pbar){
|
|
var idx = pbar.items.indexOf(pbar.child("#inputItem")),
|
|
slider;
|
|
|
|
Ext.each(pbar.items.getRange(idx - 2, idx + 2), function(c){
|
|
c.hide();
|
|
});
|
|
|
|
slider = Ext.create('Ext.slider.Single', {
|
|
width: 114,
|
|
minValue: 1,
|
|
maxValue: 1,
|
|
hideLabel: true,
|
|
tipText: function(thumb) {
|
|
return Ext.String.format('Page <b>{0}</b> of <b>{1}</b>', thumb.value, thumb.slider.maxValue);
|
|
},
|
|
listeners: {
|
|
changecomplete: function(s, v){
|
|
pbar.store.loadPage(v);
|
|
}
|
|
}
|
|
});
|
|
|
|
pbar.insert(idx + 1, slider);
|
|
|
|
pbar.on({
|
|
change: function(pb, data){
|
|
slider.setMaxValue(data.pageCount);
|
|
slider.setValue(data.currentPage);
|
|
}
|
|
});
|
|
}
|
|
});
|