Giter Club home page Giter Club logo

Comments (6)

 avatar commented on September 23, 2024

working non-working demo is available here
http://grahovo.iriscouch.com/ws/3/JsonRest.html
lines 165 to 176 in custom/JsonRest.js

17 rows in viewport
25 rows returned
79 rows available and should be reported by results.total

slidebar should be about 1/5 of viewport height (17 / 79)
it should not be more than half or 17 / 25

thanks

from dgrid.

kfranqueiro avatar kfranqueiro commented on September 23, 2024

As I told you earlier on IRC, you need to be setting total on the immediate return of the results object. Setting it within the promise means it's not set immediately, which also means QueryResults is probably defaulting it to the length of the returned result set (which is only the length of the page - 25).

Here's an expansion of what I was trying to tell you on IRC earlier:

var dfd = xhr("GET", {
    url: this.target + (query || ""),
    handleAs: "json",
    headers: headers
});
var results = dfd.then(function(response){
    // dig out the inner property containing the array of items
    return response.rows;
});

// Assign a promise to the total property on the results object being returned;
// this promise will be resolved around the same time as the previous one
results.total = dfd.then(function(response){
    return response.total_rows;
});

// Now wrap the results object; since it already has total defined,
// QueryResults should leave it alone, and consumers should pick it up properly.
return QueryResults(results);

from dgrid.

 avatar commented on September 23, 2024

I have uploaded dojo source to help wih trying to debug minified cdn code.
it's here http://grahovo.iriscouch.com/ws/4/JsonRest.html

from dgrid.

neonstalwart avatar neonstalwart commented on September 23, 2024

@kfranqueiro the promise returned from xhr is frozen and so results.total cannot be assigned to it. i believe this is also a bug in JsonRest store. (cc: @kriszyp) assigning to results.total is futile in browsers that support Object.freeze.

the right way to do this for @teslan is along these lines

var dfd = new Deferred();

var results =  = xhr("GET", {
    url: this.target + (query || ""),
    handleAs: "json",
    headers: headers
});

Deferred.when(results, function (response) {
    return response.rows;
}, dfd.reject);

dfd.total = Deferred.when(results, function (response) {
    return response.total_rows;
});

return QueryResults(dfd);

or use delegate as is done in QueryResults. someone want to open a bug in dojo?

from dgrid.

neonstalwart avatar neonstalwart commented on September 23, 2024

the delegate version looks something like this:

    var dfd = xhr("GET", {
        url: this.target + (query || ""),
        handleAs: "json",
        headers: headers
    });

    // wrap the frozen promise so we can assign properties to the wrapper
    var results = lang.delegate(dfd.then(function (response){
        return response.rows;
    }));

    results.total = dfd.then(function(response){
        return response.total_rows;
    });

    return QueryResults(results);

from dgrid.

neonstalwart avatar neonstalwart commented on September 23, 2024

opened dojo bug for JsonRest - http://bugs.dojotoolkit.org/ticket/14930

from dgrid.

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.