gathercontent-8.x-5.0/gathercontent_ui/js/gathercontent_ui.tablesorter.js

gathercontent_ui/js/gathercontent_ui.tablesorter.js
/**
 * @file
 * Activates tablesorter plugin for GatherContent tables.
 */

(function ($, Drupal, drupalSettings, once) {
  'use strict';

  Drupal.behaviors.gatherContentTableSorter = {
    attach: function (context) {
      if (typeof $().tablesorter === 'undefined') {
        return;
      }

      if ($.tablesorter.getParserById('data_date') === false) {
        $.tablesorter.addParser({
          id: 'data_date',
          is: function (s, table, cell, $cell) {
            return !!$cell.attr('data-date');
          },
          format: function (s, table, cell, cellIndex) {
            var $cell = $(cell);
            if ($cell.attr('data-date')) {
              return $cell.attr('data-date') || s;
            }

            return s;
          },
          parsed: false,
          type: 'text'
        });
      }

      $(once('gather-content-table-sorter', 'table.tablesorter-enabled', context)).each(function () {
        var tablesorterOptions = {
          cssAsc: 'sort-down',
          cssDesc: 'sort-up'
        };

        if ((typeof drupalSettings.gatherContent !== 'undefined') &&
          (typeof drupalSettings.gatherContent.tableSorterOptionOverrides === 'object')
        ) {
          var tsOverrides = drupalSettings.gatherContent.tableSorterOptionOverrides;

          for (var attrName in tsOverrides) {
            if (tsOverrides.hasOwnProperty(attrName)) {
              tablesorterOptions[attrName] = tsOverrides[attrName];
            }
          }
        }

        // Keeps sticky table cell classes up-to-date.
        // Makes sticky header's tablesorter classes follow the main table's
        // ones.
        $(this).tablesorter(tablesorterOptions)
          .bind('sortEnd', function (event) {
            if ($(this).is('table + table')) {
              var $baseTable = $('table + table');
              var $stickyTable = $baseTable.prev('table.sticky-header');

              if ($baseTable.length && $stickyTable.length) {
                var $baseTableHeaderCells = $baseTable.find('thead th');
                var $stickyTableHeaderCells = $stickyTable.find('thead th');
                var baseTableHeaderNum = $baseTableHeaderCells.length;

                for (var i = 0; i < baseTableHeaderNum; i++) {
                  var baseTableHeaderCellClasses = $($baseTableHeaderCells[i]).attr('class');

                  $($stickyTableHeaderCells[i]).attr('class', baseTableHeaderCellClasses);
                }
              }
            }
          });
      });
    }
  };
})(jQuery, Drupal, drupalSettings, once);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc