OpenVeo Manage AngularJS back end

API Docs for: 1.0.0-alpha.0
Show:

File: app/client/admin/js/ovManage/SortTableDirective.js

'use strict';

(function(app) {

  /**
   * Creates a new Angular directive as an HTML attribute ov-manage-sort-table to be able to create a sort table.
   *
   * @example
   *  <th ov-manage-sort-table order="'name'" by="order" reverse="reverse">Name</th>
   *
   * @module ov.manage
   * @class ovManageSortTable
   */
  function ovManageSortTable() {

    return {
      restrict: 'A',
      transclude: true,
      template: '<a href="" title="Filter" ng-click="onClick()">' +
      '<span ng-transclude></span>' +
      '<span class="sort">' +
      '<i class="caret-top" ng-class="{\'\' : order === by && !reverse,  \'active\' : order === by && reverse}"></i>' +
      '<i class="caret" ng-class="{\'active\' : order === by && !reverse,  \'\' : order === by && reverse}"></i>' +
      '</span>' +
      '</a>',
      scope: {
        order: '=',
        by: '=',
        reverse: '=',
        fnSort: '&?'
      },
      link: function(scope) {
        scope.onClick = function() {
          if (scope.order === scope.by) {
            scope.reverse = !scope.reverse;
          } else {
            scope.by = scope.order;
            scope.reverse = false;
          }

          if (scope.fnSort !== undefined) {
            scope.fnSort({order: scope.order, reverse: scope.reverse});
          }
        };
      }
    };
  }

  app.directive('ovManageSortTable', ovManageSortTable);

})(angular.module('ov.manage'));