Code Monkey home page Code Monkey logo

Comments (14)

wyuenho avatar wyuenho commented on June 12, 2024

Yep. I will add a demo to Backgrid.js today, but at the mean time you can take a look at the README and the QUnit tests. If you are working with Rails, you can just extend PageableCollection with a url, and everything else should just work like a plain Backbone.Collection with some extra methods.

from backbone-pageable.

gilbertwyw avatar gilbertwyw commented on June 12, 2024

Read from the source that the state are checked before making the request.
So if I don't have/know the "totalRecords" when I instantiate a new collection (server mode), does it mean that I need to do it manually inside the parse(), like calculating the "totalPages", "lastPage" and stuffs.

I need these state data to render the pagination UI (may probably try the Backgrid later but i want to use it separately by now).

Please correct me if i'm wrong.
Thanks

from backbone-pageable.

wyuenho avatar wyuenho commented on June 12, 2024

Generally you should bootstrap your server mode PageableCollection in your server side template, in which you should have a count. If your web page is a static page, you can still omit totalRecords when you instantiate a server mode PageableCollection. states is only checked when totalRecords, pageSize, currentPage and firstPage are all non-null, which is often not the case during instantiation. To grab the first page and update a server mode PageableCollection state after instantiation, issue a fetch to yield the server side states according to the queryParams mapping in the JSON response. No overriding parse is required.

from backbone-pageable.

gilbertwyw avatar gilbertwyw commented on June 12, 2024

Thanks for your promply response. For some reasons, bootstrapping a collection is not feasible in my case.
And I did call fetch() on collection to get the first page.

Here's is my config:
state: {
firstPage: 1,
pageSize: Config.pageSize
},
queryParams: {
currentPage: 'page',
pageSize: 'pageSize',
totalPages: null,
totalRecords: null
},
parse: function(response) {
this.state.totalRecords = response.total;
this.state.totalPages = Math.ceil(this.state.totalRecords / this.state.pageSize);
this.state.lastPage = this.state.totalPages;
return response.data;
}

Do I have to customize the response from the server-side
Please help.

from backbone-pageable.

wyuenho avatar wyuenho commented on June 12, 2024

totalPages and lastPage will be calculated automatically, you only need to provide totalRecords. If you've nulled out queryParams.totalPages and queryParams.totalRecords, you can still provide a response like this, you just need to manually get total from response[0].total to set state.totalRecords.

from backbone-pageable.

gilbertwyw avatar gilbertwyw commented on June 12, 2024

So you mean either I alter the server response for the fetch request using format like [{ pagination state }, [{}, {} ...]]
or I have to set "totalRecords" (and those depends on it) myself, am I correct?

One more thing, I notice Pageable's Collection.create() no longer trigger "add/request/sync" events when i call . Is it on purpose or any workarounds for that?

from backbone-pageable.

wyuenho avatar wyuenho commented on June 12, 2024

You need to provide a response format like [{ pagination state }, [{}, {} ...]] and override parse to set state.totelRecords manually since you've nulled out queryParams.totalRecords.

I didn't do anything with the create method and the Backbone.Collection test case for it passes. It should still trigger the appropriate events.

from backbone-pageable.

gilbertwyw avatar gilbertwyw commented on June 12, 2024

That's strange. I read the source that you didnt touch this part but when i switch back to plain old backbone collection, I can see those events(add/request/sync) propagates, which is missing if using Pageable.

Please let me know should you need me to provide more information.
Thanks for your help along the way.

from backbone-pageable.

wyuenho avatar wyuenho commented on June 12, 2024

File a separate bug report if you believe backbone-pageable is at fault. Please provide a jsfiddle or jsbin link when you do so.

from backbone-pageable.

gilbertwyw avatar gilbertwyw commented on June 12, 2024

Sorry, it's my fault.
I passed the plain old BB collection as dependency instead of the Pageable.

It works fine. Thanks for your help and work.

from backbone-pageable.

alanrubin avatar alanrubin commented on June 12, 2024

Thanks for the demos. Just wanted to let you know that the Infinite demo seems not to be working now.

from backbone-pageable.

wyuenho avatar wyuenho commented on June 12, 2024

@alanrubin It seems to work fine here. Github's API has a 60 req/hr rate limit on public access. Did you run out of quota?

from backbone-pageable.

alanrubin avatar alanrubin commented on June 12, 2024

The API request returns the correct results. Have you tried in FF ? I have tried with Safari and it works, so probably a FF issue.

from backbone-pageable.

wyuenho avatar wyuenho commented on June 12, 2024

WTF. Looks like a Firefox bug 608735. Thanks for reporting.

from backbone-pageable.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.