/** @var array $clusters */
/** @var array $years */
/** @var array $year */
+/** @var array $quarters */
/** @var array $inputDate */
$this->title = 'Изменение кустов ';
-?>
-<style>
-
-
- tr>th:first-child,tr>td:first-child {
- position: sticky;
- left: 0;
- }
-
- tr:nth-child(odd) td {
- background: #fff2f2;
- }
- tr:nth-child(odd) td {
- background: #ffffff;
- }
-
- tr:nth-child(even) td {
- background: #edf2f7;
- }
-</style>
-<div class="cluster-update m-5">
-
- <h1><?= Html::encode($this->title) ?></h1>
- <p>
- <?= Html::a('К списку', ['index'], ['class' => 'btn btn-primary']) ?>
- </p>
-
- <div class="cluster-form">
+// Определяем текущий квартал
+$currentMonth = date('n'); // Текущий месяц (1-12)
+$currentQuarter = ceil($currentMonth / 3); // Определяем квартал (1-4)
+?>
+ <style>
+ tr>th:first-child, tr>td:first-child {
+ position: sticky;
+ left: 0;
+ }
+ tr:nth-child(odd) td {
+ background: #fff2f2;
+ }
+ tr:nth-child(even) td {
+ background: #ffffff;
+ }
+ tr:nth-child(even) td {
+ background: #edf2f7;
+ }
+
+
+ .legend {
+ display: flex;
+ flex-wrap: wrap;
+ margin: 29px 0;
+ width: 100%;
+ }
+ .legend-item {
+ display: flex;
+ align-items: center;
+ margin-right: 15px;
+ }
+ .legend-box {
+ width: 20px;
+ height: 20px;
+ margin-right: 5px;
+ border: 1px solid #000;
+ }
+
+
+ .cluster-1 { background-color: #ff9999 !important; } /* Красный */
+ .cluster-2 { background-color: #99ccff !important; } /* Голубой */
+ .cluster-3 { background-color: #99ff99 !important; } /* Зеленый */
+ .cluster-4 { background-color: #ffcc99 !important; } /* Оранжевый */
+ .cluster-5 { background-color: #cc99ff !important; } /* Фиолетовый */
+ .cluster-none { background-color: #e0e0e0 !important; }
+
+ </style>
+
+ <div class="cluster-update m-5">
+ <h1><?= Html::encode($this->title) ?></h1>
+ <p>
+ <?= Html::a('К списку', ['index'], ['class' => 'btn btn-primary']) ?>
+ </p>
+
+ <div class="cluster-form">
+ <?php $form = ActiveForm::begin(); ?>
+
+ <!-- Кнопка для сохранения -->
+ <div class="form-group">
+ <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
+ </div>
+<div class="row">
+ <div class="col-6">
+ <!-- Выпадающий список для выбора года -->
+ <?= Html::dropDownList('year', $year, $years, [
+ 'class' => 'form-select form-select-sm mb-1',
+ 'aria-label' => 'Год',
+ ]) ?>
+ </div>
+ <div class="col-6">
+ <!-- Выпадающий список для выбора квартала -->
+ <?= Html::dropDownList('', $currentQuarter, [
+ 1 => '1 квартал (январь - март)',
+ 2 => '2 квартал (апрель - июнь)',
+ 3 => '3 квартал (июль - сентябрь)',
+ 4 => '4 квартал (октябрь - декабрь)',
+ ], [
+ 'id' => 'quarter-select',
+ 'class' => 'form-select form-select-sm mb-1',
+ 'aria-label' => 'Квартал',
+ 'name' => '',
+ ]) ?>
+ </div>
+</div>
- <?php $form = ActiveForm::begin(); ?>
+<div class="row">
- <div class="form-group">
- <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
+ <!-- Легенда для кластеров -->
+ <div class="legend">
+ <div class="legend-item">
+ <div class="legend-box cluster-1"></div>
+ <span>Кластер 1</span>
</div>
+ <div class="legend-item">
+ <div class="legend-box cluster-2"></div>
+ <span>Кластер 2</span>
+ </div>
+ <div class="legend-item">
+ <div class="legend-box cluster-3"></div>
+ <span>Кластер 3</span>
+ </div>
+ <div class="legend-item">
+ <div class="legend-box cluster-4"></div>
+ <span>Кластер 4</span>
+ </div>
+ <div class="legend-item">
+ <div class="legend-box cluster-5"></div>
+ <span>Кластер 5</span>
+ </div>
+ <div class="legend-item">
+ <div class="legend-box cluster-none"></div>
+ <span>Не выбран</span>
+ </div>
+ </div>
+</div>
- <?= Html::dropDownList('year', $year, $years,
- [
- 'class'=>"form-select form-select-sm mb-1",
- 'label' =>'Год',
- 'aria-label'=>"form-select-sm"
- ])?>
-
- <table class="table table-bordered border-primary table-responsive">
- <tr>
- <td>Месяца</td>
- <?php
- foreach ($monthNames as $month) {
- ?><td colspan="4"><?=$month?></td><?php
-
- }
- ?>
-
- </tr>
- <tr>
- <td>Магазины</td>
- <?php
- foreach ($monthNames as $month) {
-
- foreach (range(1,4) as $numWeekMonth) {
- ?><td>№ нед. <?=$numWeekMonth?>
-
-
- </td><?php
- }
- }
- ?>
-
- </tr>
- <?php
- foreach ($stores as $keyStore => $store) {
- ?>
+ <table class="table table-bordered border-primary table-responsive">
+ <thead>
<tr>
- <td><?=$store?></td><?php
-
- foreach ($monthNames as $keyMonth => $month) {
-
- foreach (range(1,4) as $numWeekMonth) {
-
- ?><td>
- <?php
- $nameClusterField = 'store_' . $keyStore .'__month_' . $keyMonth. '__weekMonth_' . $numWeekMonth;
+ <td>Магазины / Месяцы</td>
+
+ <td colspan="4" class="month-column" data-quarter="1">Январь</td>
+ <td colspan="4" class="month-column" data-quarter="1">Февраль</td>
+ <td colspan="4" class="month-column" data-quarter="1">Март</td>
+ <td colspan="4" class="month-column" data-quarter="2">Апрель</td>
+ <td colspan="4" class="month-column" data-quarter="2">Май</td>
+ <td colspan="4" class="month-column" data-quarter="2">Июнь</td>
+ <td colspan="4" class="month-column" data-quarter="3">Июль</td>
+ <td colspan="4" class="month-column" data-quarter="3">Август</td>
+ <td colspan="4" class="month-column" data-quarter="3">Сентябрь</td>
+ <td colspan="4" class="month-column" data-quarter="4">Октябрь</td>
+ <td colspan="4" class="month-column" data-quarter="4">Ноябрь</td>
+ <td colspan="4" class="month-column" data-quarter="4">Декабрь</td>
- $inputDateRow = null;
- $keyRow = $keyStore . '.' . $keyMonth. '.' . $numWeekMonth;
- $setValueRow = ArrayHelper::getValue($inputDate, $keyRow);
-
- if (!empty($setValueRow)) {
- $inputDateRow = $setValueRow;
- }
- ?>
- <?= Html::radioList($nameClusterField, $inputDateRow, $clusters); ?>
-
- </td><?php
+ </tr>
+ <tr>
+ <td></td>
+ <?php foreach ($monthNames as $keyMonth => $month): ?>
+ <?php foreach (range(1, 4) as $numWeekMonth): ?>
+ <td class="month-column" data-quarter="<?= ceil(($keyMonth + 1) / 3) ?>">Нед. №<?= $numWeekMonth ?></td>
+ <?php endforeach; ?>
+ <?php endforeach; ?>
+ </tr>
+ </thead>
+ <tbody>
+ <?php foreach ($stores as $keyStore => $store): ?>
+ <tr>
+ <td><?= $store ?></td>
+ <?php foreach ($monthNames as $keyMonth => $month): ?>
+ <?php foreach (range(1, 4) as $numWeekMonth): ?>
+ <td class="month-column cluster-select" data-quarter="<?= ceil(($keyMonth + 1) / 3) ?>" data-cluster="none">
+ <?php
+ // Генерация имени поля для выпадающего списка
+ $nameClusterField = 'store_' . $keyStore .'__month_' . $keyMonth. '__weekMonth_' . $numWeekMonth;
+
+ // Получение текущего значения из данных
+ $inputDateRow = null;
+ $keyRow = $keyStore . '.' . $keyMonth. '.' . $numWeekMonth;
+ $setValueRow = ArrayHelper::getValue($inputDate, $keyRow);
+
+ if (!empty($setValueRow)) {
+ $inputDateRow = $setValueRow;
+ }
+
+ // Вывод выпадающего списка для выбора кластера
+ echo Html::dropDownList($nameClusterField, $inputDateRow, $clusters, [
+ 'class' => 'form-select form-select-sm cluster-dropdown',
+ 'prompt' => 'Выберите кластер...',
+ 'data-cluster-field' => $nameClusterField, // Добавляем атрибут для идентификации
+ ]);
+ ?>
+ </td>
+ <?php endforeach; ?>
+ <?php endforeach; ?>
+
+
+ </tr>
+ <?php endforeach; ?>
+ </tbody>
+ </table>
+
+ <!-- Кнопка для сохранения -->
+ <div class="form-group">
+ <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
+ </div>
+
+ <?php ActiveForm::end(); ?>
+ </div>
+ </div>
- }
+ <!-- Скрипт для управления отображением месяцев по кварталам -->
+ <script>
+ document.addEventListener('DOMContentLoaded', function () {
+ const quarterSelect = document.getElementById('quarter-select');
+ const monthColumns = document.querySelectorAll('.month-column');
+ // Функция для обновления цвета ячейки в зависимости от выбранного кластера
+ function updateCellColor(selectElement) {
+ const selectedValue = selectElement.value;
+ const cell = selectElement.closest('td'); // Найти родительскую ячейку
+
+ // Сбрасываем все классы кластеров
+ cell.classList.remove('cluster-1', 'cluster-2', 'cluster-3', 'cluster-4', 'cluster-5', 'cluster-none');
+
+ // Присваиваем новый цвет в зависимости от выбранного значения
+ if (selectedValue === '') {
+ cell.classList.add('cluster-none'); // Серый цвет для невыбранного кластера
+ } else {
+ cell.classList.add('cluster-' + selectedValue); // Присвоение цвета по кластеру
}
}
- ?>
- </tr>
-
-
- </table>
-
- <div class="form-group">
- <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
- </div>
-
- <?php ActiveForm::end(); ?>
+ // Обработчик для всех выпадающих списков кластеров
+ document.querySelectorAll('.cluster-dropdown').forEach(function (selectElement) {
+ // Инициализация цвета при загрузке страницы
+ updateCellColor(selectElement);
+
+ // Обработка события изменения значения
+ selectElement.addEventListener('change', function () {
+ updateCellColor(selectElement);
+ });
+ });
+
+ function updateMonthColumns() {
+ const selectedQuarter = quarterSelect.value;
+
+ monthColumns.forEach(function (column) {
+ if (column.dataset.quarter === selectedQuarter) {
+ column.style.display = '';
+ } else {
+ column.style.display = 'none';
+ }
+ });
+ }
- </div>
+ // Событие при изменении квартала
+ quarterSelect.addEventListener('change', updateMonthColumns);
+ // Инициализация: отображаем текущий квартал при загрузке
+ updateMonthColumns();
+ });
+ </script>
-</div>
<?php
/*