Half the comments so far are looking for a non-code demo, and I imagine they mean something visual, so here's a bare-bones visualized version of the Basic PourOver sample code:<p><a href="http://gojs.net/temp/pourover.html" rel="nofollow">http://gojs.net/temp/pourover.html</a><p>It just takes the queries and uses the resulting data to make some nodes in GoJS (Disclaimer: a Diagramming library I develop. Not free, but easy to set up with this kind of data and see stuff fast).<p>If I had more time I'd make it prettier. The results are just visual representations of the data results getting filtered. Its very easy to take PourOver's example collections and data-bind some stuff to them (color of the nodes is data-bound to monster gender, etc). I'm sure it can't be hard to do the same in other data-bound visualization libraries.<p>This is very cool. I'll try to make a much prettier example tonight.
Hi, all.<p>A lot of folks are asking for a demo and, you're right. I should have included one. My apologies. I'll get to working on one as soon as I can.<p>In the meantime, I encourage readers to check out the source for <a href="http://www.nytimes.com/interactive/2014/02/02/fashion/red-carpet-project.html" rel="nofollow">http://www.nytimes.com/interactive/2014/02/02/fashion/red-ca...</a> That's probably the clearest "demo" of PourOver at the moment.<p>More to come!
Reminds me of crossfilter (<a href="http://square.github.io/crossfilter/" rel="nofollow">http://square.github.io/crossfilter/</a>) by square. It has a killer demo, however.
Noice! Btw, the docs page is acting funky on an iPad (iOS 7.1). The layout seems to be alternating between mobile and desktop with each pan/scroll event. [ps: only happens in landscape orientation. portrait is unaffected]
It seems similar to our Dynatable plugin [1], which is basically the functionality of this plugin with some additional table-read/write functions included. The main difference being that this library depends on underscore, while Dynatable depends on jQuery (which is mainly used for its browser compatibility functions).<p>Given both library's emphasis on speed, it looks like I have something to benchmark against!<p>[1] <a href="http://www.dynatable.com" rel="nofollow">http://www.dynatable.com</a>
I much prefer a basic construct that makes it simple to do filtering and sorting that can be simply extended to any complexity. Sorting and filtering are really nothing more than set manipulation (which they state themselves) so with simple data binding this becomes a trivial exercise to build an impressive client-side search.<p>In Ember that might look like this:<p><pre><code> Ember.ArrayController.extend({
filterA: Ember.computed.filter('fieldName1', function comparator() {}),
filterB: Ember.computed.filter('fieldName2', function comparator() {}),
joined: Ember.computed.union('filterA', 'filterB'),
filtered: Ember.computed.uniq('joined'),
sorted: Ember.computed.sort(function comparator() {})
});</code></pre>
More details at <a href="http://open.blogs.nytimes.com/2014/04/16/introducing-pourover-and-tamper" rel="nofollow">http://open.blogs.nytimes.com/2014/04/16/introducing-pourove...</a><p>There are a few links to projects at the nyt that has used these two libraries.
Off-topic, but related.<p>Does anyone know of any JS libraries that allow for Excel-like interaction? However I am looking for something that just implements the presentation layer.<p>The problem I am running into is that the libraries that do exist conflate the presentation and data layers and try to do everything for you. In other words, they make the assumption that all data will be downloaded to the client and then manipulated on the client. These libraries do not fit my use case.
If you going to handle that many obejcts in the browser wouldn't you use something like pouchdb? <a href="http://pouchdb.com/" rel="nofollow">http://pouchdb.com/</a><p>Also "Pagination strategies with PouchDB" <a href="http://pouchdb.com/2014/04/14/pagination-strategies-with-pouchdb.html" rel="nofollow">http://pouchdb.com/2014/04/14/pagination-strategies-with-pou...</a>
And here I thought I would be reading about the App.net PourOver posting service[0], which the NY Times Opinion account uses for posting[1]<p>[0]: <a href="https://directory.app.net/app/255/pourover/" rel="nofollow">https://directory.app.net/app/255/pourover/</a>
[1]: <a href="https://alpha.app.net/nytopinion" rel="nofollow">https://alpha.app.net/nytopinion</a>
I've used the <a href="https://mixitup.kunkalabs.com/" rel="nofollow">https://mixitup.kunkalabs.com/</a> library for similar functionality in the past. I am not sure how well it works with hundreds of thousands of items, but it does work well for the 600ish items that I am using it for.
Is this basically what Google Refine[0] does with their facet filters? (but obviously open source and allowing anyone to build their own platform)<p>[0] - <a href="http://openrefine.org/" rel="nofollow">http://openrefine.org/</a>
It would be a great move to isolate the Views/UI part of this out from the rest of the code base, which would make it more usable inside other MV* frameworks like Angular or Ember.