Infusion Pager API Conversation
Steven Githens
swgithen at mtu.edu
Mon May 11 19:01:56 UTC 2009
Michelle D'Souza wrote:
> Hi,
>
> Last week it was mentioned in the channel that it would be useful to
> get together as a group to discuss the Pager API prior to the 1.1
> feature freeze. I've scheduled a meeting tomorrow at 11:00 am Eastern
> for us to talk about this. Let's meet in Breeze.
I think I have a meeting at this time. If I don't I might drop in and
lurk, but if I can't my biggest suggestion is to add a constructor
option for 1.1 that allows to specify the amount of data. I know a lot
of the focus is on building cool integrated things backed by models, but
the pager is incredibly useful javascript to just plop on a random page
and let it do the math for you, so it'd be great for it to just work by
specifying the total number of things you want to page. And making it
easy to change that number at any time if your volume of stuff changes.
Right now I'm hacking this by going:
/*
* Set up the pagers
*/
// I'm getting a too much recursion error when using my component
tree, using a simple array for now.
var fakedata = [];
for (var i = 0; i < asnn2.pageState.dataArray.length; i++) {
fakedata.push(i);
}
var pager = fluid.pager("#asnn-list-area", {
listeners: {
onModelChange: function (newModel, oldModel) {
// We need to store the pageModel so that the Sorting links can
use it when they need
// to refresh the list
asnn2.pageState.pageModel = newModel;
asnn2.renderAsnnListPage();
}
},
dataModel: fakedata,
pagerBar: {type: "fluid.pager.pagerBar", options: {
pageList: {type: "fluid.pager.renderedPageList",
options: {
linkBody: "a"
}
}
}}
});
Also, a convenience method to figure out what to render. If you just
want to 'use' the pager, this is some error prone math that would be
nice to have easily accessible. I'm guessing there is actually
something like this already (since it has to calculate it for rendering
the databound version) and I just haven't found it in the API yet.
But just in case there isn't.
/**
* Determine the slice to render based off a pageModel.
* @param {pageModel} Page model from the Fluid Pager. This is the
object model you get whenever it
* changes.
* @return {Array} An array consisting of the start and end to use. ex.
[10,14]
*/
asnn2.findPageSlice = function(pageModel) {
var start = pageModel.pageIndex * pageModel.pageSize;
var end = start + Number(pageModel.pageSize) - 1; // This was getting
coerced to String addition
if (end > (pageModel.totalRange-1)) {
end = pageModel.totalRange-1;
}
return [start,end];
};
Sorry, my javascript still sucks, I'm sure there's a better way to cast
that stuff.
Also, apologies if this has been discussed already. (I have 1333 unread
messages in my Fluid email folder at the moment :p ).
Just wanted to mention this stuff since we are using it, testing on
preprod now, and Asnn2 will be using it on prod in June. Great stuff,
just needs some convenience methods for various things in future
versions of the API's.
Megacheers,
Steve
>
> Michelle
>
> ------------------------------------------------------
> Michelle D'Souza
> Software Developer, Fluid Project
> Adaptive Technology Resource Centre
> University of Toronto
>
>
>
> _______________________________________________________
> fluid-work mailing list - fluid-work at fluidproject.org
> To unsubscribe, change settings or access archives,
> see http://fluidproject.org/mailman/listinfo/fluid-work
More information about the fluid-work
mailing list