Skip to content

ziscloud/angular-footable

Repository files navigation

angular-footable

This is the directive to allow the use of JQuery footable plugin (http://fooplugins.com/plugins/footable-jquery/) in angular.

Installation

bower install angular-footable

Usage

inject into angular

angular
    .module('angular-footable-example', [
        'ui.footable'
    ])

activate the plugin via directive

<table class="table footable">

sorting

there is no new configuration add in this module, to enable sorting feature, you only need to follow the setup of the footable

  • include footable.sort.js in your app
<script type="text/javascript" src="footable/js/footable.sort.js"></script>
  • configure in the table header
<thead>
  <tr>
      <th data-type="numeric" data-sort-initial="true">
          ID
      </th>
      <th>
          First Name
      </th>
      <th data-sort-ignore="true">
          Last Name
      </th>
      <th data-hide="phone,tablet">
          Job Title
      </th>
      <th data-type="numeric" data-hide="phone,tablet">
          DOB
      </th>
      <th data-hide="phone">
          Status
      </th>
  </tr>
</thead>

filtering data

  • include footable.filter.js
<script type="text/javascript" src="footable/js/footable.filter.js"></script>
  • basic filter
<input id="filter" type="text"/>
<table class="table footable" data-filter="#filter">
  • custom filter
    • in the view
    <select class="filter-status" ng-model='filter.status' ng-change="filterByStatus()">
      <option></option>
      <option value="active">Active</option>
      <option value="disabled">Disabled</option>
      <option value="suspended">Suspended</option>
    </select>
    <a href="#clear" class="clear-filter" title="clear filter" ng-click="clearFilter()">[clear]</a>
    <table class="table footable" data-before-filtering="filteringEventHandler">
    • in the controller
    .controller('exampleCtrl', function($scope) {
          $scope.clearFilter = function() {
              $('.filter-status').val('');
              $('.footable').trigger('footable_clear_filter');
          };
    
          $scope.filteringEventHandler = function(e) {
              var selected = $('.filter-status').find(':selected').text();
              if (selected && selected.length > 0) {
                  e.filter += (e.filter && e.filter.length > 0) ? ' ' + selected : selected;
                  e.clear = !e.filter;
              }
          };
    
          $scope.filterByStatus = function() {
              $('.footable').trigger('footable_filter', {
                  filter: $('#filter').val()
              });
          };
    
          $scope.filter = {
              status: null
          };
      })

paginating

paginate table is very easy, follow the demo page of footable is enough

  • load foot.paginate.js into your app
<script type="text/javascript" src="footable/js/footable.paginate.js"></script>
  • configure the page size on the table element
<table class="table footable" data-page-size="5">
  • add the pagination bar in the table foot
<tfoot class="hide-if-no-paging">
<tr>
<td colspan="6" align="center">
  <ul class="pagination"></ul>
</td>
</tr>
</tfoot>

License

angular-slimscroll is released under the MIT License. Feel free to use it in personal and commercial projects.