]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Изменил дизайн
authorvladfo <fvv2011@gmail.com>
Tue, 17 Sep 2024 14:41:25 +0000 (17:41 +0300)
committervladfo <fvv2011@gmail.com>
Tue, 17 Sep 2024 14:41:25 +0000 (17:41 +0300)
erp24/views/task/four-columns.php

index ccea47c58e70cd4d70b78a6e24f5d91cea8a8bbb..a812423841b3d818e289c207a85b2d7740000b3a 100755 (executable)
@@ -22,13 +22,56 @@ $this->registerJsFile('/js/task/four-columns.js', ['position' => \yii\web\View::
 
 ?>
 
+<?php
+// Получаем имя текущего пользователя
+$userName = Yii::$app->user->identity->name; // или другой метод получения имени пользователя
+
+// Проверяем примененные фильтры
+$appliedFilters = [];
+if ($filterModel->taskFilter !== '0') {
+   // $appliedFilters[] = 'Фильтр задач: ' . $filterModel->taskFilter;
+}
+if ($filterModel->searchText) {
+    $appliedFilters[] = 'Поиск: ' . Html::encode($filterModel->searchText);
+}
+if ($filterModel->updatedBy !== '0') {
+    $appliedFilters[] = 'Обновил: ' . $filterModel->updatedBy;
+}
+if ($filterModel->createdBy !== '0') {
+    $appliedFilters[] = 'Создал: ' . $filterModel->createdBy;
+}
+if ($filterModel->created_at_from || $filterModel->created_at_to) {
+    $appliedFilters[] = 'Дата создания: с ' . $filterModel->created_at_from . ' по ' . $filterModel->created_at_to;
+}
+if ($filterModel->deadline_from || $filterModel->deadline_to) {
+    $appliedFilters[] = 'Дедлайн: с ' . $filterModel->deadline_from . ' по ' . $filterModel->deadline_to;
+}
+if ($filterModel->company_function_id !== '0') {
+    $appliedFilters[] = 'Функция компании: ' . $companyFunctions[$filterModel->company_function_id];
+}
+?>
+<div class="container-fluid p-4">
 <div class="row mb-3">
     <div class="col-4">
         <h2>Доска задач</h2>
+        <p>Всего задач: <span id="task-count"><?= count($tasks); ?></span></p>
+
+
     </div>
     <div class="col-4">
-        <!-- Счетчик задач -->
-        <p>Всего задач: <span id="task-count"><?= count($tasks); ?></span></p>
+        <p>Пользователь: <strong><?= Html::encode($userName); ?></strong></p>
+
+        <!-- Если фильтры применены, выводим их -->
+        <?php if (!empty($appliedFilters)): ?>
+            <p><strong>Примененные фильтры:</strong></p>
+            <ul>
+                <?php foreach ($appliedFilters as $filter): ?>
+                    <li><?= Html::encode($filter); ?></li>
+                <?php endforeach; ?>
+            </ul>
+        <?php else: ?>
+            <p>Фильтры не применены</p>
+        <?php endif; ?>
     </div>
     <div class="col-4 text-end">
         <!-- Кнопка для создания задачи -->
@@ -36,17 +79,25 @@ $this->registerJsFile('/js/task/four-columns.js', ['position' => \yii\web\View::
     </div>
 </div>
 
-<!-- Тумблер для фильтрации активных задач -->
-<div class="row mb-3">
-    <div class="col-4">
-        <div class="form-check form-switch">
-            <input class="form-check-input" type="checkbox" id="activeTasksToggle">
-            <label class="form-check-label" for="activeTasksToggle">Активные</label>
-        </div>
-    </div>
-</div>
 
-<?php $form = ActiveForm::begin(['id' => 'filter-form']); ?>
+
+<?php
+// Фильтр значений по умолчанию
+$defaultFilterValues = [
+    'taskFilter' => '0',
+    'searchText' => null,
+    'updatedBy' => '0',
+    'createdBy' => '0',
+    'created_at_from' => date("d.m.Y", strtotime("-365 day", time())),
+    'created_at_to' => date("d.m.Y"),
+    'deadline_from' => date("d.m.Y", strtotime("-365 day", time())),
+    'deadline_to' => date("d.m.Y", strtotime("+365 day", time())),
+    'company_function_id' => '0',
+    'entity_type' => null,
+    'entity_id' => null
+];
+
+$form = ActiveForm::begin(['id' => 'filter-form']); ?>
 
 <?php /*PrintBlockHelper::printBlock('Группы', $form->field($filterModel, 'taskFilter')->radioList(
         ['0' => 'Мои', '1' => 'На контроле', '2' => 'Участвую', '3' => 'Просматриваю', '4' => 'Неразобранные'],
@@ -83,8 +134,12 @@ $this->registerJsFile('/js/task/four-columns.js', ['position' => \yii\web\View::
 
 <!-- Кнопка "Больше фильтров" -->
 <div class="row">
-    <div class="col-12 text-right">
-        <button type="button" id="toggle-filters" class="btn btn-primary">Больше фильтров</button>
+    <div class="col-12 text-center">
+        <button type="button" id="toggle-filters" class="btn btn-link">Больше фильтров</button>
+        <div class="form-check form-switch d-flex justify-content-center align-items-center " style="gap:10px" >
+            <input class="form-check-input ml-2 mb-3" type="checkbox" id="activeTasksToggle">
+            <label class="form-check-label " for="activeTasksToggle">Активные</label>
+        </div>
     </div>
 </div>
 
@@ -92,224 +147,200 @@ $this->registerJsFile('/js/task/four-columns.js', ['position' => \yii\web\View::
 <!-- Скрытая часть фильтров -->
 <div id="more-filters" style="display: none;">
 <div class="row">
-    <div class="col-1 text-right">
+
+    <div class="col-3">
+        <div class="mb-3">
         Содержит:
-    </div>
-    <div class="col-2">
         <?= $form->field($filterModel, 'searchText')->textInput(['class' => 'form-control'])->label(false) ?>
+        </div>
+        <div class="mb-3">
+            Исполнитель:
+            <?= $form->field($filterModel, 'updatedBy')->widget(Select2::class, [
+                'data' => $adminsWithGroup,
+                'language' => 'ru',
+                'options' => ['placeholder' => 'Исполнитель...'],
+                'pluginOptions' => [
+                    'allowClear' => true,
+                ]
+            ])->label(false) ?>
+        </div>
+        <div class="mb-3">
+            Автор:
+            <?= $form->field($filterModel, 'createdBy')->widget(Select2::class, [
+                'data' => $adminsWithGroup,
+                'language' => 'ru',
+                'options' => ['placeholder' => 'Автор...'],
+                'pluginOptions' => [
+                    'allowClear' => true,
+                ]
+            ])->label(false) ?>
+        </div>
     </div>
-    <div class="col-1 text-right">
-        Исполнитель:
-    </div>
-    <div class="col-2">
-        <?= $form->field($filterModel, 'updatedBy')->widget(Select2::class, [
-            'data' => $adminsWithGroup,
-            'language' => 'ru',
-            'options' => ['placeholder' => 'Исполнитель...'],
-            'pluginOptions' => [
-                'allowClear' => true,
-            ]
-        ])->label(false) ?>
-    </div>
-    <div class="col-1 text-right">
-        Автор:
-    </div>
+
     <div class="col-2">
-        <?= $form->field($filterModel, 'createdBy')->widget(Select2::class, [
-            'data' => $adminsWithGroup,
-            'language' => 'ru',
-            'options' => ['placeholder' => 'Автор...'],
-            'pluginOptions' => [
-                'allowClear' => true,
-            ]
-        ])->label(false) ?>
-    </div>
-</div>
-<div class="row">
-    <div class="col-3 text-right">
-        Тип сущности:
-    </div>
-    <div class="col-3">
-        <?= $form->field($filterModel, 'entity_type')->widget(Select2::class, [
-            'data' => ArrayHelper::map($taskEntities, 'alias', 'name'), // 'alias' используется для получения сущностей
-            'language' => 'ru',
-            'options' => [
-                'placeholder' => 'Выберите тип сущности...',
-                'id' => 'entity-type-dropdown'
-            ],
-            'pluginOptions' => [
-                'allowClear' => true,
+    <div class="mb-3">
+        Дата создания от:
+        <?= DatePicker::widget([
+            'model' => $filterModel,
+            'attribute' => 'created_at_from',
+            'template' => '{addon}{input}',
+            'clientOptions' => [
+                'autoclose' => true,
+                'format' => 'd.mm.yyyy',
+                'todayBtn' => true
             ],
-            'pluginEvents' => [
-                "change" => "function() {
-                    var alias = $(this).val();
-                    $.ajax({
-                        url: '" . \yii\helpers\Url::to(['/task/fetch-entities']) . "', // Экшн для получения сущностей
-                        type: 'POST',
-                        data: {alias: alias},
-                        success: function(data) {
-                            var entityDropdown = $('#entity-dropdown');
-                            entityDropdown.empty();
-                            $.each(data, function(id, name) {
-                                entityDropdown.append(new Option(name, id));
-                            });
-                        }
-                    });
-                }",
-            ]
-        ])->label(false) ?>
-    </div>
-    <div class="col-3 text-right">
-        Сущность:
-    </div>
-    <div class="col-3">
-        <?= $form->field($filterModel, 'entity_id')->widget(Select2::class, [
-            'data' => [], // данные заполнятся после выбора типа сущности
-            'language' => 'ru',
-            'options' => [
-                'placeholder' => 'Выберите сущность...',
-                'id' => 'entity-dropdown'
-            ],
-            'pluginOptions' => [
-                'allowClear' => true,
-            ]
-        ])->label(false) ?>
-    </div>
-</div>
-<div class="row">
-    <div class="col-3">
-        <div class="row">
-            <div class="col-5 text-right">
-                Дата создания от:
-            </div>
-            <div class="col-7">
-                <?= DatePicker::widget([
-                    'model' => $filterModel,
-                    'attribute' => 'created_at_from',
-                    'template' => '{addon}{input}',
-                    'clientOptions' => [
-                        'autoclose' => true,
-                        'format' => 'd.mm.yyyy',
-                        'todayBtn' => true
-                    ],
-                    'clientEvents' => [
-                        'changeDate' => 'function() {
+            'clientEvents' => [
+                'changeDate' => 'function() {
                             if (moment($("#dynamicmodel-created_at_from").val(), "DD-MM-YYYY") > moment($("#dynamicmodel-created_at_to").val(), "DD-MM-YYYY")) {
                                 const tmp = $("#dynamicmodel-created_at_from").val()
                                 $("#dynamicmodel-created_at_from").val($("#dynamicmodel-created_at_to").val())
                                 $("#dynamicmodel-created_at_to").val(tmp);
                             }
                         }'
-                    ]
-                ]) ?>
-            </div>
-        </div>
-        <div class="row">
-            <div class="col-5 text-right">
-                и до:
-            </div>
-            <div class="col-7">
-                <?= DatePicker::widget([
-                    'model' => $filterModel,
-                    'attribute' => 'created_at_to',
-                    'template' => '{addon}{input}',
-                    'clientOptions' => [
-                        'autoclose' => true,
-                        'format' => 'd.mm.yyyy',
-                        'todayBtn' => true
-                    ],
-                    'clientEvents' => [
-                        'changeDate' => 'function() {
+            ]
+        ]) ?>
+    </div>
+    <div class="mb-3">
+        и до:
+        <?= DatePicker::widget([
+            'model' => $filterModel,
+            'attribute' => 'created_at_to',
+            'template' => '{addon}{input}',
+            'clientOptions' => [
+                'autoclose' => true,
+                'format' => 'd.mm.yyyy',
+                'todayBtn' => true
+            ],
+            'clientEvents' => [
+                'changeDate' => 'function() {
                             if (moment($("#dynamicmodel-created_at_from").val(), "DD-MM-YYYY") > moment($("#dynamicmodel-created_at_to").val(), "DD-MM-YYYY")) {
                                 const tmp = $("#dynamicmodel-created_at_from").val()
                                 $("#dynamicmodel-created_at_from").val($("#dynamicmodel-created_at_to").val())
                                 $("#dynamicmodel-created_at_to").val(tmp);
                             }
                         }'
-                    ]
-                ]) ?>
-            </div>
-        </div>
+            ]
+        ]) ?>
     </div>
-    <div class="col-3">
-        <div class="row">
-            <div class="col-5 text-right">
-                Крайний срок от:
-            </div>
-            <div class="col-7">
-                <?= DatePicker::widget([
-                    'model' => $filterModel,
-                    'attribute' => 'deadline_from',
-                    'template' => '{addon}{input}',
-                    'clientOptions' => [
-                        'autoclose' => true,
-                        'format' => 'd.mm.yyyy',
-                        'todayBtn' => true
-                    ],
-                    'clientEvents' => [
-                        'changeDate' => 'function() {
+    </div>
+
+    <div class="col-2">
+        <div class="mb-3">
+            Крайний срок от:
+            <?= DatePicker::widget([
+                'model' => $filterModel,
+                'attribute' => 'deadline_from',
+                'template' => '{addon}{input}',
+                'clientOptions' => [
+                    'autoclose' => true,
+                    'format' => 'd.mm.yyyy',
+                    'todayBtn' => true
+                ],
+                'clientEvents' => [
+                    'changeDate' => 'function() {
                             if (moment($("#dynamicmodel-deadline_from").val(), "DD-MM-YYYY") > moment($("#dynamicmodel-deadline_to").val(), "DD-MM-YYYY")) {
                                 const tmp = $("#dynamicmodel-deadline_from").val()
                                 $("#dynamicmodel-deadline_from").val($("#dynamicmodel-deadline_to").val())
                                 $("#dynamicmodel-deadline_to").val(tmp);
                             }
                         }'
-                    ]
-                ]) ?>
-            </div>
+                ]
+            ]) ?>
         </div>
-        <div class="row">
-            <div class="col-5 text-right">
-                и до:
-            </div>
-            <div class="col-7">
-                <?= DatePicker::widget([
-                    'model' => $filterModel,
-                    'attribute' => 'deadline_to',
-                    'template' => '{addon}{input}',
-                    'clientOptions' => [
-                        'autoclose' => true,
-                        'format' => 'd.mm.yyyy',
-                        'todayBtn' => true
-                    ],
-                    'clientEvents' => [
-                        'changeDate' => 'function() {
+        <div class="mb-3">
+            и до:
+            <?= DatePicker::widget([
+                'model' => $filterModel,
+                'attribute' => 'deadline_to',
+                'template' => '{addon}{input}',
+                'clientOptions' => [
+                    'autoclose' => true,
+                    'format' => 'd.mm.yyyy',
+                    'todayBtn' => true
+                ],
+                'clientEvents' => [
+                    'changeDate' => 'function() {
                             if (moment($("#dynamicmodel-deadline_from").val(), "DD-MM-YYYY") > moment($("#dynamicmodel-deadline_to").val(), "DD-MM-YYYY")) {
                                 const tmp = $("#dynamicmodel-deadline_from").val()
                                 $("#dynamicmodel-deadline_from").val($("#dynamicmodel-deadline_to").val())
                                 $("#dynamicmodel-deadline_to").val(tmp);
                             }
                         }'
-                    ]
-                ]) ?>
-            </div>
+                ]
+            ]) ?>
         </div>
     </div>
     <div class="col-3">
-        <div class="row">
-            <div class="col-4 text-right">
-                Функция:
-            </div>
-            <div class="col-8">
-                <?= $form->field($filterModel, 'company_function_id')->widget(Select2::class, [
-                    'data' => $companyFunctions,
-                    'language' => 'ru',
-                    'options' => ['placeholder' => 'из функции ОФС...'],
-                    'pluginOptions' => [
-                        'allowClear' => true,
-                    ]
-                ])->label(false) ?>
-            </div>
+        <div class="mb-3">
+            Тип сущности:
+            <?= $form->field($filterModel, 'entity_type')->widget(Select2::class, [
+                'data' => ArrayHelper::map($taskEntities, 'alias', 'name'), // 'alias' используется для получения сущностей
+                'language' => 'ru',
+                'options' => [
+                    'placeholder' => 'Выберите тип сущности...',
+                    'id' => 'entity-type-dropdown'
+                ],
+                'pluginOptions' => [
+                    'allowClear' => true,
+                ],
+                'pluginEvents' => [
+                    "change" => "function() {
+                    var alias = $(this).val();
+                    $.ajax({
+                        url: '" . \yii\helpers\Url::to(['/task/fetch-entities']) . "', // Экшн для получения сущностей
+                        type: 'POST',
+                        data: {alias: alias},
+                        success: function(data) {
+                            var entityDropdown = $('#entity-dropdown');
+                            entityDropdown.empty();
+                            $.each(data, function(id, name) {
+                                entityDropdown.append(new Option(name, id));
+                            });
+                        }
+                    });
+                }",
+                ]
+            ])->label(false) ?>
+        </div>
+        <div class="mb-3">
+            Сущность:
+            <?= $form->field($filterModel, 'entity_id')->widget(Select2::class, [
+                'data' => [], // данные заполнятся после выбора типа сущности
+                'language' => 'ru',
+                'options' => [
+                    'placeholder' => 'Выберите сущность...',
+                    'id' => 'entity-dropdown'
+                ],
+                'pluginOptions' => [
+                    'allowClear' => true,
+                ]
+            ])->label(false) ?>
         </div>
-        <div class="row">
-            <div class="col-4"></div>
-            <div class="col-8">
-                <?= Html::submitButton('Применить фильтры', ['class' => 'btn btn-secondary btn-lg'])?>
-            </div>
+        <div class="mb-3">
+            Функция:
+            <?= $form->field($filterModel, 'company_function_id')->widget(Select2::class, [
+                'data' => $companyFunctions,
+                'language' => 'ru',
+                'options' => ['placeholder' => 'из функции ОФС...'],
+                'pluginOptions' => [
+                    'allowClear' => true,
+                ]
+            ])->label(false) ?>
         </div>
     </div>
+    <div class="col-2 d-flex flex-column justify-content-center align-items-center">
+        <div class="w-100 d-flex justify-content-center align-items-center mb-3">
+            <?= Html::submitButton('Применить фильтры', ['class' => 'btn btn-secondary btn-lg'])?>
+        </div>
+        <div class="w-100 d-flex justify-content-center align-items-center mb-3">
+        <?= Html::a('Сбросить фильтр', ['four-columns', 'filterModel' => $defaultFilterValues], ['class' => 'btn btn-outline-secondary btn-lg']); ?>
+        </div>
+    </div>
+
 </div>
 
+
+
 </div>
 <?php ActiveForm::end() ?>
 
@@ -321,11 +352,30 @@ $this->registerJsFile('/js/task/four-columns.js', ['position' => \yii\web\View::
         var buttonText = $('#more-filters').is(':visible') ? 'Скрыть фильтры' : 'Больше фильтров';
         $(this).text(buttonText);
     });
-$('input[name="taskFilter"]').on('change', function() {
+        $('input[name="taskFilter"]').on('change', function() {
             var selectedValue = $(this).val(); // Получаем значение выбранной радио-кнопки
             console.log('Выбрано значение: ' + selectedValue); // Выводим значение в консоль
             $('#filter-form').submit(); // Отправляем форму
         });
+
+/// Функция для управления видимостью задач
+        function toggleTasks() {
+            if ($('#activeTasksToggle').is(':checked')) {
+                // Скрываем задачи с статусами -1 и 6
+                $('.dragulaCard[data-status="-1"], .dragulaCard[data-status="6"]').find('[data-task_id]').hide();
+            } else {
+                // Показываем задачи с статусами -1 и 6
+                $('.dragulaCard[data-status="-1"], .dragulaCard[data-status="6"]').find('[data-task_id]').show();
+            }
+        }
+
+        // Изначально скрываем задачи с data-status = -1 или 6, если тумблер выключен
+        toggleTasks();
+
+        // При переключении тумблера показываем/скрываем задачи
+        $('#activeTasksToggle').on('change', function() {
+            toggleTasks();
+        });
 JS;
     $this->registerJs($script);
     ?>
@@ -333,7 +383,7 @@ JS;
 
 
 <div class="card mt-2">
-    <div class="row g-0">
+    <div class="row g-0 d-flex justify-content-between">
         <?php if (isset($taskStatuses)): //<div class="col-1 font-weight-bold"></div> ?>
             <?php foreach ($taskStatuses as $ind => $taskStatusName):?>
                 <?php if ($ind > -2 && $ind < 7): ?>
@@ -344,7 +394,7 @@ JS;
             <?php endforeach; ?>
         <?php endif; ?>
     </div>
-    <div class="row g-0">
+    <div class="row g-0 d-flex justify-content-between">
         <?php if (isset($taskStatuses)): // <div class="col-1 font-weight-bold"></div> ?>
             <?php foreach ($taskStatuses as $ind => $taskStatusName):?>
                 <?php if ($ind > -2 && $ind < 7): ?>
@@ -380,4 +430,6 @@ JS;
             <?php endforeach; ?>
         <?php endif; ?>
     </div>
+</div>
+
 </div>
\ No newline at end of file