use kartik\grid\GridView;
use yii\helpers\Html;
use yii\web\View;
+use yii_app\records\Products1cNomenclatureActuality;
/* @var $this yii\web\View */
'label' => 'Только активные',
'uncheck' => 0,
'checked' => (bool)$filter->onlyActive,
+ 'id' => 'onlyActiveCheckbox'
])->label(false) ?>
+
<?= $formFilter->field($filter, 'onlyInactive')->checkbox([
'label' => 'Только неактивные',
'uncheck' => 0,
'checked' => (bool)$filter->onlyInactive,
+ 'id' => 'onlyInactiveCheckbox'
])->label(false) ?>
</div>
</div>
'floatHeader' => false,
'tableOptions' => ['class' => 'table table-bordered'],
'containerOptions' => ['style' => 'overflow:auto; max-height:500px;'],
- 'rowOptions' => function($model) {
- if ($model->hasActiveActuality()) {
+ 'rowOptions' => function($model) use ($filter) {
+ if ($filter->onlyInactive) {
+ if ($model->hasInactiveActuality()) {
+ return ['class' => 'table-danger'];
+ }
+ } elseif ($model->hasActiveActuality()) {
return ['class' => 'table-success'];
}
- if ($model->hasInactiveActuality()) {
- return ['class' => 'table-danger'];
- }
+ return [];
},
'columns' => [
[
'label' => 'Актуальность ассортимента',
'format' => 'raw',
'contentOptions' => ['style'=>'white-space:nowrap; min-width:200px;'],
- 'value' => function ($m, $k, $i) use ($months) {
- $active = $m->getActiveActuality()->one();
- $from = $active ? (new \DateTime($active->date_from))->format('Y-m') : null;
- $to = $active ? (new \DateTime($active->date_to))->format('Y-m') : null;
+ 'value' => function ($m, $k, $i) use ($months, $filter) {
+ if ($filter->onlyInactive) {
+ $actuality = Products1cNomenclatureActuality::find()
+ ->where(['guid' => $m->id, 'active' => 0])
+ ->one();
+ $from = $actuality ? (new \DateTime($actuality->date_from))->format('Y-m') : null;
+ $to = $actuality ? (new \DateTime($actuality->date_to))->format('Y-m') : null;
+ } else {
+ $active = $m->getActiveActuality()->one();
+ $from = $active ? (new \DateTime($active->date_from))->format('Y-m') : null;
+ $to = $active ? (new \DateTime($active->date_to))->format('Y-m') : null;
+ }
return Html::hiddenInput("actuality[$i][guid]", $m->id)
. Html::tag('div',
Html::dropDownList("actuality[$i][from]", $from, $months, [
$('#' + target).val(null).trigger('change');
});
+ var $onlyActiveCheckbox = $('#onlyActiveCheckbox');
+ var $onlyInactiveCheckbox = $('#onlyInactiveCheckbox');
+
+ $onlyActiveCheckbox.change(function() {
+ if ($(this).is(':checked')) {
+ $onlyInactiveCheckbox.prop('checked', false);
+ $onlyInactiveCheckbox.prop('disabled', true);
+ } else {
+ $onlyInactiveCheckbox.prop('disabled', false);
+ }
+ });
+
+ $onlyInactiveCheckbox.change(function() {
+ if ($(this).is(':checked')) {
+ $onlyActiveCheckbox.prop('checked', false);
+ $onlyActiveCheckbox.prop('disabled', true);
+ } else {
+ $onlyActiveCheckbox.prop('disabled', false);
+ }
+ });
+
+
+ if ($onlyActiveCheckbox.is(':checked')) {
+ $onlyInactiveCheckbox.prop('disabled', true);
+ } else if ($onlyInactiveCheckbox.is(':checked')) {
+ $onlyActiveCheckbox.prop('disabled', true);
+ }
+
});
\ No newline at end of file