npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

backbone-collectionview

v0.0.19

Published

A Backbone.js View that opperates on a collection, including child lifecycle management. Built on top of backbone-kinview

Downloads

6,310

Readme

CollectionView

CollectionView is a Backbone.js view that provides full lifecycle support for any element, including autorendering of children elements. It also adds sorting, filtering, and pagination. It remains simple, fluent, and idiomatic by relying on KinView for the underlying view management.

Installation

CollectionView has been designed to require'd by browserify, and is currently only supported in that environment. To install:

npm install backbone-collectionview --save

Code

CI

CollectionView continuous integrations is handled by Wercker:

wercker status

Testing

CollectionView maintains 100% test coverage. To manually run the tests, install with with --dev (as above) and run:

gulp testc

You can generate a HTML code coverage report by appending the --html switch

Issues

Issues can be opened in the usual location, pull requests welcome!

Usage

Getting started

Getting started with CollectionView is as simple as creating a new Backbone view:

var CollectionView = require('backbone-collectionview')

var view = CollectionView.extend({
    // regular Backbone.View opts here
})

Passing a collection to the view will allow the view to auto-append all items of the collection to the view and manage their lifecycle including adding child items as they get added to the collection, and cleaning up when the child view is removed. To pass a collection to a view:

var CollectionView = require('backbone-collectionview')

var view = CollectionView.extend({
    collection: new Backbone.Collection([/* models */])
    // regular Backbone.View opts here
})

note: view.setCollection(collection) can also be called to (re)set the views collection

Filtering & Sorting

CollectionView has built in support for filtering the collection data appended to the view.

Filtering data

To set a filter, a function should be passed to the view:

view.addFilter('name', function(){/* do something */})

Filter functions should return a boolean value. Only models with truthy values on ALL filters will be shown.

A view can have multiple filters. To add more filters, just call addFilter() as necessary. Note, multiple filters will be treaded as AND's (not as OR's), and as above - ALL filters must return true for a model to be displayed.

A filter can be removed by calling removeFilter('name').

Whenever a filter is added or removed, the view will be re-filtered. If rows have been added that aren't part of the collection, they will inadvertently be removed.

Sorting children

The order of children view can be sorted by passing a sort function:

view.setSort(/* some func here */)

Sorting is delegated to the native array sort

Pagination

Views can be limited to a given subset of the collection, commonly called pagination. This can help contain the total about of dom elements the children views add. To add pagination, use:

view.setPage(offset, limit)

where offset (zero based, children are in an array!) is the first child to display, and limit is the maximum amount of items to show.

Performance impact

Unlike with no options or just with filtering, When using sorting or pagination, every child added to the collection will cause a full redraw of the CollectionView. This should be kept in mind when adding children one at a time.