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

angularjs-grid-view

v1.0.0

Published

A feature-rich but lightweight ES6 AngularJS Data Table crafted for large data sets!

Downloads

4

Readme

Features

  • Handle large data sets ( Virtual DOM )
  • Left and Right Column Pinning
  • Column Reordering
  • Column Resizing
  • Intelligent Column Width Algorithms ( Force fill / Flex-grow )
  • Horizontal/Vertical Scrolling
  • Virtual Paging WITH linked traditional pager
  • Tree Grids
  • Row Grouping
  • Checkbox and Row Selection ( multi / single / keyboard / touch )
  • Light codebase / No external deps
  • Client-side AND Server Pagination / Sorting
  • Rich header / column templates
  • Fixed AND Fluid height
  • Decoupled themeing with included Google Material theme
  • Decoupled Cell tooltips on overflow
  • Decoupled Column Add/Removing Menu
  • Expressive Syntax

Using It

Download

  • NPM npm install angularjs-grid-view
  • BOWER bower install angularjs-grid-view

or Github download or clone of course!

Run Demos

Ensure you have the latest NPM and JSPM installed globally. If you don't already have JSPM installed run: npm install jspm -g.

  • npm install
  • jspm install
  • gulp watch serve
  • Open your browser to http://localhost:9000

docs coming soon, in the meantime, 'View Source' is your friend ;)!

Build

gulp release to build Modules, ES* via Babel and compile.

Include

You've got 5 different options to include this in your build depending on your setup.

  • ./release/dataTable.js - A standalone file that was compiled with Babel (UMD)
  • ./release/dataTable.min.js - A minified standalone file that was compiled with Babel (UMD)
  • ./release/dataTable.cjs.js - A standalone file that was compiled with Babel (CommonJS)
  • ./release/dataTable.es6.js - Raw ES6 Version.

All distributions include babel helpers, so they do not have to be included separately.

There is also the CSS too:

  • ./release/dataTable.css - The base CSS, pretty much required
  • ./release/material.css - Material theme

Usage

Include the module in your angular app module like:

var myApp = angular.module('myApp', [ 'data-table' ]);

module.controller('HomeController', function($scope){
  $scope.options = {
    scrollbarV: false
  };

  $scope.data = [
    { name: 'Austin', gender: 'Male' },
    { name: 'Marjan', gender: 'Male' }
  ];
});

then using expressive markup in your template:

<dtable options="options" rows="data" class="material dt">
  <column name="Name" width="300" flex-grow="2"></column>
  <column name="Gender">
    <strong>{{$row.name}}</strong>: {{$cell}}
  </column>
</dtable>

and your off to the races! See live demos here.

Research

Alternatives

I looked over all the alternatives out there agnostic to any particular platform to find the best solution. Heres what I came up with:

  • Handsome Table - A great execl-like but lacked the ability to handle 100s of thousands of rows.

  • Angular Grid - A great project by a talented developer, however, lacked many of the core features I needed. Implementing the ones I needed was huge undertaking as some of the core would need to be re-worked.

  • React Fixed Data Table - This is probably the BEST table alternative out there. Its extremely smooth, handles millions of rows flawlessly, has a great API but lacked a few features I needed ( nor am I a react'er ).

  • React Data Grid - Another great alternative out there for react.

  • Kendo UI Grid - Extremely full featured but EXTREMELY HEAVY( 600kb )!

  • UI Grid - By far the most popular grid for Angular and has a LOT of features. Problem was I found several bugs ( I'm on a mac, the main devs are windows users ), it supports a ton of browsers ( hacky code and bloat ) and it has a ton of features ( bloat ).

  • Vaadin Poylmer Grid - A nice poylmer project but beta-ish.

  • Ember Table - A very nice table for Ember but doesn't handle large data sets very nicely and scrolling can be a bit 'janky' sometimes.

Design

The core CSS for the table has no assumptions about the styling of your application and therefore you can easily style it. I provided a out-of-the-box style based on Google Material design. Here is where I got some of the ideas: