PHP Фильтрация изотопа - PullRequest
       28

PHP Фильтрация изотопа

0 голосов
/ 27 апреля 2020

Прежде всего, извините за мой английский sh Я стараюсь изо всех сил, чтобы быть ясным.

Я использовал Изотоп для фильтрации некоторой информации в результате запроса. Работает нормально, но теперь я хочу добавить возможность фильтрации по нескольким критериям.

У меня есть следующие кнопки фильтра:

<div id="filters" class="button-group">  <button class="button is-checked" data-filter="*">Todos</button>
              <button class="button" data-filter="rcivil">Resp. Civil</button>
              <button class="button" data-filter="cbasica">C.Basica</button>
              <button class="button" data-filter="tcompleto">T.Completo</button>
              <button class="button" data-filter="triesgo">T.Riesgo</button>
            </div>

С этим Javascript:

        // init Isotope
    var $grid = $('.grid').isotope({
      itemSelector: '.grid1',
      layoutMode: 'fitRows',
      getSortData: {
        codigo: '.codigo',
        cuota: '.cuota',
      }
    });
    $grid.isotope({
      sortBy: 'cuota',
      sortAscending: true
    });

    // filter functions
    var filterFns = {
      // show if number is greater than 50
      numberGreaterThan50: function() {
        var number = $(this).find('.number').text();
        return parseInt( number, 10 ) > 50;
      },
      // responsabilidad civil
      rcivil: function() {
        var name = $(this).find('.codigo').text();
        return name.match( /\b(A1|A2|A3|A4|A22|A|A10|A10 PROMO)\b/ );
      },
      // cobertura basica
      cbasica: function() {
        var name = $(this).find('.codigo').text();
        return name.match( /\b(B2|B1|B|B1\-80|B\-80|E|E1)\b/ );
      },
      // terceros completos
      tcompleto: function() {
        var name = $(this).find('.codigo').text();
        return name.match( /\b(C1|C2|C|C2\-80|C1\-80|Sigma Importados|S0|LB1|LB|CF)\b/ );
      },
      // todo riesgo
      triesgo: function() {
        var name = $(this).find('.codigo').text();
        return name.match( /\b(T9|T14|T13|T2|TD|TD1|TD3)\b/ );
      }
    };
    // bind filter button click
    $('#filters').on( 'click', 'button', function() {
      var filterValue = $( this ).attr('data-filter');
      // use filterFn if matches value
      filterValue = filterFns[ filterValue ] || filterValue;
      $grid.isotope({ filter: filterValue });
    });

    // bind sort button click
    $('#sorts').on( 'click', 'button', function() {
      var sortByValue = $(this).attr('data-sort-by');
      $grid.isotope({ sortBy: sortByValue });
    });

    // change is-checked class on buttons
    $('.button-group').each( function( i, buttonGroup ) {
      var $buttonGroup = $( buttonGroup );
      $buttonGroup.on( 'click', 'button', function() {
        $buttonGroup.find('.is-checked').removeClass('is-checked');
        $( this ).addClass('is-checked');
      });
    });

Что мне делать, если я хочу выбрать больше, чем опция в в то же время? например "rcivil" и "cbasica" одновременно.

Любая помощь или идея будут более чем оценены.

Заранее спасибо.

1 Ответ

0 голосов
/ 27 апреля 2020

просто попробуйте использовать флажок.

Пример 1

Пример 2

You will understand from the links.
...