]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Фильтрация по имени
authorVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 23 Sep 2025 09:26:32 +0000 (12:26 +0300)
committerVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 23 Sep 2025 09:26:32 +0000 (12:26 +0300)
erp24/records/MatrixBouquetActualitySearch.php
erp24/views/matrix-bouquet-actuality/index.php
erp24/web/js/matrix-bouquet-actuality/index.js

index 38a464fdc4cc55a9741907849f0ef26addcc2273..e42b211cf6a4db3e63a012866900b92ae9006ed3 100644 (file)
@@ -45,7 +45,6 @@ class MatrixBouquetActualitySearch extends MatrixBouquetActuality
         $query = MatrixBouquetActuality::find()
             ->joinWith(['bouquet']);;
 
-        // add conditions that should always apply here
 
         $dataProvider = new ActiveDataProvider([
             'query' => $query,
@@ -54,12 +53,10 @@ class MatrixBouquetActualitySearch extends MatrixBouquetActuality
         $this->load($params, $formName);
 
         if (!$this->validate()) {
-            // uncomment the following line if you do not want to return any records when validation fails
-            // $query->where('0=1');
+
             return $dataProvider;
         }
 
-        // grid filtering conditions
         $query->andFilterWhere([
             'id' => $this->id,
             'bouquet_id' => $this->bouquet_id,
index 2827100e16683c1863f9f89780a17b8a0ae265fd..d5b6579ff63b9779babe2f83e0602a5ecd7386ac 100644 (file)
@@ -5,12 +5,13 @@ use kartik\grid\GridView;
 use yii\helpers\Html;
 use yii\helpers\Url;
 use yii\web\View;
-use yii_app\records\Products1cNomenclatureActuality;
+
 
 
 /* @var $this yii\web\View */
 /* @var $filter yii\base\DynamicModel */
 /* @var $dataProvider yii\data\ActiveDataProvider */
+/* @var yii_app\records\MatrixBouquetActualitySearch $searchModel */
 /* @var $groups array */
 /* @var $subgroups array */
 
@@ -194,8 +195,15 @@ foreach ($subgroups as $sg) {
         <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success', 'id' => 'saveButton']) ?>
     </div>
     <?= GridView::widget([
+        'id' => 'matrix-bouquet-grid',
         'dataProvider' => $dataProvider,
         'filterModel' => $searchModel,
+        'pjax' => true,
+        'pjaxSettings' => [
+            'options' => [
+                'id' => 'matrix-bouquet-grid-pjax'
+            ]
+        ],
         'responsive' => false,
         'hover' => true,
         'floatHeader' => false,
@@ -211,10 +219,17 @@ foreach ($subgroups as $sg) {
                 'label' => 'Наименование',
                 'format' => 'raw',
                 'contentOptions' => ['style'=>'min-width:150px;'],
-                'filter' => \yii\helpers\Html::activeTextInput($searchModel, 'bouquet_name', [
-                    'class' => 'form-control',
-                    'placeholder' => 'Поиск по имени'
-                ]),
+                'filter' => '
+                    <div class="d-flex align-items-center">
+                        ' . \yii\helpers\Html::activeTextInput($searchModel, 'bouquet_name', [
+                            'class' => 'form-control',
+                            'placeholder' => 'Поиск по имени'
+                        ]) . '
+                        <div class="ms-1" id="clear-bouquet-name-filter" style="cursor: pointer;">
+                            <i class="fa fa-times"></i>
+                        </div>
+                    </div>
+                ',
                 'value' => function ($row, $key, $index) {
                     $product = $row['product'];
                     $price = $row['price'] ?? null;
@@ -325,6 +340,7 @@ foreach ($subgroups as $sg) {
 
 
     <?php ActiveForm::end(); ?>
+
     <script>
         window.productActualityConfig = {
             months: <?= json_encode($months, JSON_UNESCAPED_UNICODE) ?>
index e010a4a7b020f08bf70abe22ddc0f169874e9cac..38e22ff70068402a981296c8e3191311d79d109d 100644 (file)
         syncToWithFrom($inserted.find('.from-month'));
     });
 
+    $(document).on('keyup', '#bouquetcompositionsearch-bouquet_name', function() {
+        var value = $(this).val().toLowerCase();
+        var grid = $(this).closest('.grid-view');
+
+        grid.find('tbody tr').each(function() {
+            var row = $(this);
+            var nameCell = row.find('td:first a');
+            var name = nameCell.text().toLowerCase();
+
+            if (name.indexOf(value) > -1) {
+                row.show();
+            } else {
+                row.hide();
+            }
+        });
+    });
+
+    $(document).on('click', '#clear-bouquet-name-filter', function(e) {
+        e.preventDefault();
+        var input = $('#bouquetcompositionsearch-bouquet_name');
+
+        if (input.val() === '') {
+            return;
+        }
+
+        input.val('');
+        input.trigger('keyup');
+
+        var currentUrl = new URL(window.location.href);
+        currentUrl.searchParams.delete('BouquetCompositionSearch[bouquet_name]');
+
+        $.pjax.reload({
+            container: '#matrix-bouquet-grid-pjax',
+            url: currentUrl.toString(),
+            timeout: false
+        });
+    });
 })();
\ No newline at end of file