monitoring-8.x-1.x-dev/js/monitoring.sensor.overview.js

js/monitoring.sensor.overview.js
/**
 * @file
 * Monitoring sensor overview behaviors.
 */

(function ($, Drupal) {

  "use strict";

  /**
   * Filters the monitoring sensor overview table by input search filters.
   *
   * Text search input:   input.table-filter-text
   * Select sensor type:  select.table-filter-select-sensor-type
   * Select category:     select.table-filter-select-category
   * Target table:        input.table-filter-text[data-table]
   * Source text:         .table-filter-text-source, .table-filter-category, .table-filter-sensor-type
   *
   * @type {Drupal~behavior}
   */
  Drupal.behaviors.tableFilterByText = {
    attach: function (context, settings) {
      var $input = $(once('table-filter-text', 'input.table-filter-text'));
      var $select_category = $(once('table-filter-select-category', 'select.table-filter-select-category'));
      var $select_sensor_type = $(once('table-filter-select-sensor-type', 'select.table-filter-select-sensor-type'));
      var $table = $($input.attr('data-table'));
      var $rows;
      var $details;

      function filterSensorList(e) {
        var category_value = $select_category.val().toLowerCase();
        var sensor_type_value = $select_sensor_type.val().toLowerCase();
        var input_value = $input.val().toLowerCase();

        function showSensorRow(index, row) {
          var $row = $(row);
          var $category_sources = $row.find('.table-filter-category');
          var $sensor_type_sources = $row.find('.table-filter-sensor-type');
          var $input_value_sources = $row.find('.table-filter-text-source');

          if (category_value && $category_sources.text().toLowerCase() !== category_value) {
            $row.hide();
            return;
          }
          if (sensor_type_value && $sensor_type_sources.text().toLowerCase() !== sensor_type_value) {
            $row.hide();
            return;
          }
          if (input_value && $input_value_sources.text().toLowerCase().indexOf(input_value) == -1) {
            $row.hide();
            return;
          }
          $row.show();
        }

        // Filter if the length of the input field is longer than 2 characters
        // or an option is selected.
        if (category_value || sensor_type_value || input_value.length >= 2) {
          $rows.each(showSensorRow);
        }
        else {
          $rows.show();
          $details.attr('open', false);
        }
      }

      if ($table.length) {
        $rows = $table.find('tbody tr');
        $input.on('keyup', filterSensorList);
        $select_category.on('change', filterSensorList);
        $select_sensor_type.on('change', filterSensorList);
        $details = $table.find('details');
      }
    }
  };

}(jQuery, Drupal));

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

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