A set of AngularJS directives designed to rapidly build modern web applications
JavaScript CSS HTML Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.github/ISSUE_TEMPLATE
sample
src
test
.eslintignore
.eslintrc.json
.gitignore
.travis.yml
Gruntfile.js
LICENSE
README.md
appveyor.yml
bower.json
bs-config.json
jsconfig.json
karma.conf.js
package.json
publish.sh
yarn.lock

README.md

Analytics Build Status Build status Coverage Status

Tubular

⭐️ Please star this project if you find it useful!

Tubular provides a set of directives and services using AngularJS as framework. The main component is a grid with multiple options:

  • Full markup design, you don't need to write even a Controller in AngularJS to start using our Grid or Form
  • Common functionality like Sorting, Filtering (specific to the data type), Free-text search, Paging and more.
  • Easy to implement inline editors, page or popup forms totally bound to your grid.
  • Basic services like Print and Export to CSV in client-side.
  • Independent backend platform (.NET and Node.js)
  • Compatible with modern browsers (Chrome, Firefox, and Edge). We are not supporting old browsers like Internet Explorer, you may need to include some polyfills.

Developing with .NET as backend? check Tubular DotNet project.

Developing with Node.js as backend? check Tubular Node.js project.

If you are looking for Angular2 components, check Tubular2 beta project.

Please visit the Tubular GitHub Page to learn how quickly you can start coding. Don't forget to check out the Tubular Generator which quickly turns models into an awesome UIs!

Dependencies

You will need to reference the following JS libraries in order to use Tubular in your HTML:

Using a CDN

You can get all the dependencies using the following links in your master HTML page. jsDelivr provides almost everything you need to import.

<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/font-awesome@latest/css/font-awesome.min.css" />

<script src="//cdn.jsdelivr.net/npm/angular@1.6.4/angular.js"></script>
<script src="//cdn.jsdelivr.net/npm/angular-route@1.6.4/angular-route.js"></script>
<script src="//cdn.jsdelivr.net/npm/angular-animate@1.6.4/angular-animate.js"></script>
<script src="//cdn.jsdelivr.net/combine/npm/angular-ui-bootstrap@2.5.0/dist/ui-bootstrap.min.js,npm/angular-ui-bootstrap@2.5.0/dist/ui-bootstrap-tpls.min.js,npm/moment@2.18.1"></script>

Then you will need to either grab your own copy of Tubular or you use jsDelivr to reference Tubular CSS and JS files.

<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/tubular@latest/dist/tubular-bundle.min.css" />
<script src="//cdn.jsdelivr.net/npm/tubular@1.8.1"></script>

Finally include Tubular to your module as follows:

angular.module('app', ['tubular']);

Bower Installation Bower version

# install Tubular package and add it to bower.json
$ bower install tubular --save

npm Installation npm version

# install Tubular package and add it to package.json
$ npm install tubular --save

Samples

You can check out the Tubular GitHub Page to get a few examples. We still need to work on more samples and better documentation, but we feel what we have now will get you up to speed very quickly :).

The following HTML represents a basic grid. You don't need to add anything else to your controller! Everything you need is to create your markup.

 <div class="container">
        <tb-grid server-url="/data/customers.json" page-size="20" 
                 class="row" grid-name="mygrid">
            <div class="col-md-12">
                <div class="panel panel-default panel-rounded">
                    <tb-grid-table class="table-bordered">
                        <tb-column-definitions>
                            <tb-column name="CustomerName">
                                <tb-column-header>
                                    <span>{{label}}</span>
                                </tb-column-header>
                            </tb-column>
                            <tb-column name="Invoices">
                                <tb-column-header>
                                    <span>{{label}}</span>
                                </tb-column-header>
                            </tb-column>
                        </tb-column-definitions>
                        <tb-row-set>
                            <tb-row-template ng-repeat="row in $component.rows" 
                                             row-model="row">
                                <tb-cell-template>
                                    {{row.CustomerName}}
                                </tb-cell-template>
                                <tb-cell-template>
                                    {{row.Invoices}}
                                </tb-cell-template>
                            </tb-row-template>
                        </tb-row-set>
                    </tb-grid-table>
                </div>
            </div>
        </tb-grid>
    </div>

Run Sample

There is a sample included in this project, you can run it just by doing the following.

// Install all the dependencies
npm install
// Builds the project and generates the bundles
grunt build
// Runs the sample project
npm run serve 

Boilerplate

We have 3 boilerplates ready to seed your project: