Переделал виджет, более читаем

This commit is contained in:
maxim
2021-09-13 16:40:37 +03:00
parent 4b08696ed2
commit 358ffbf794
12 changed files with 255 additions and 249 deletions

View File

@ -4,22 +4,29 @@ namespace backend\modules\calendar\controllers;
use backend\modules\card\models\UserCardSearch;
use Yii;
use yii\helpers\ArrayHelper;
use yii\web\Response;
class AjaxController extends \yii\web\Controller
{
public function actionGetBirthdayByMonth($month )
public function actionGetBirthdayDate($date)
{
$searchModel = new UserCardSearch();
$dataProvider = $searchModel->search(['date' => $date]);
return $this->render('_gridView', [
'dataProvider' => $dataProvider
]);
}
public function actionGetBirthdayDatesByMonth($month )
{
$searchModel = new UserCardSearch();
$models = $searchModel->search(Yii::$app->request->queryParams)->getModels();
$models_array = ArrayHelper::toArray($models, [
'backend\modules\card\models\UserCard' => [
'id',
'dob',
'fio'
],
]);
$models_array = array_map(function ($date){return date('Y').substr($date, 4,6);},
array_column($models, 'dob')
);
$response = Yii::$app->response;
$response->format = Response::FORMAT_JSON;

View File

@ -42,11 +42,11 @@ class CalendarController extends Controller
* Renders the index view for the module
* @return string
*/
public function actionCalendar(){
return $this->render('calendar');
public function actionIndex(){
return $this->render('index');
}
public function actionIndex()
public function actionTable()
{
$searchModel = new UserCardSearch();
$user_card = \common\models\UserCard::find()->all();
@ -67,7 +67,7 @@ class CalendarController extends Controller
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
}
return $this->render('index', [
return $this->render('table', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);

View File

@ -0,0 +1,18 @@
<?php
use yii\grid\GridView;
/* @var $this yii\web\View */
/* @var $dataProvider yii\data\ActiveDataProvider */
echo GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'fio',
'dob',
['class' => 'yii\grid\ActionColumn'],
],
]);
die();

View File

@ -1,59 +0,0 @@
<?php
use yii\helpers\Html;
$this->title = 'Календарь ДР';
?>
<?= \backend\widgets\Calendar::widget([
'css' => '.success{color: orange;}',
'button' => Html::a('<i class="fas fa-long-arrow-alt-left"></i> Назад',
Yii::$app->request->referrer, ['class' => 'btn btn-primary',]),
'runBuild' => "function (date, content){
this.build(date, content)
}",
'updateContent' => "function(date){
let monthNumber = date.substr(5, 2);
return fetch('../ajax/get-birthday-by-month?' +
'month=' + monthNumber)
.then((res) => {
return res.json()
})
}",
'getColor' => "function (date, dates = null) {
for (let contentDate of dates) {
if (contentDate['dob'].substr(8, 2) == DateHelper.intToDate(date.getDate())) {
return 'success';
}
}
}",
'getHtmlContentForDate' => 'function (content, date) {
let flag = false
let html = `<table class="table table-striped table-bordered">
<thead>
<tr>
<th>#</th>
<th>ФИО</th>
<th>Дата рождения</th>
<th class="action-column">&nbsp;</th>
</tr>
</thead><tbody>`;
for (let i = 1; i <= content.length; i++) {
let model = content[i - 1];
if (model["dob"].substr(8, 2) == date.substr(8, 2)) {
flag = true;
html += `<tr data-key="${model["id"]}">`
html += `<td>${i}</td>`
html += `<td>${model["fio"]}</td>`
html += `<td>${model["dob"]}</td>`
html += CalendarHelper._getActionColumn(`secure/calendar/calendar`,model[`id`])
html += `</tr>`
}
}
html += `</tbody></table>`
if (flag) return html;
return "empty"
}'
]) ?>

View File

@ -1,45 +1,25 @@
<?php
/* @var $searchModel backend\modules\card\models\UserCardSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
use yii\grid\GridView;
use yii\helpers\Html;
use yii\widgets\Pjax;
use yii\helpers\Url;
$this->title = 'Календарь ДР';
?>
<div style="display: flex;align-items: flex-start;">
<p>
<select id="options" class="btn btn-secondary dropdown-toggle">
<option selected="selected" value="?month=00">Выберите месяц</option>
<option value="?month=00">Показать все</option>
<option value="?month=01">январь</option>
<option value="?month=02">февраль</option>
<option value="?month=03">март</option>
<option value="?month=04">апрель</option>
<option value="?month=05">май</option>
<option value="?month=06">июнь</option>
<option value="?month=07">июль</option>
<option value="?month=08">август</option>
<option value="?month=09">сентябрь</option>
<option value="?month=10">октябрь</option>
<option value="?month=11">ноябрь</option>
<option value="?month=12">декабрь</option>
</select>
</p>
<?=Html::a('Календарь дней рождений '.Html::tag('i', null, ['class' => 'far fa-calendar-alt']),
['calendar'], ['class' => 'btn btn-success', 'style' => 'margin-left: 10px'])?>
</div>
<?php
Pjax::begin(['id' => 'reload']);
echo GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'fio',
'dob',
['class' => 'yii\grid\ActionColumn'],
<?= \backend\widgets\Calendar::widget([
'css' => '.success{color: orange;}',
'button' => Html::a('<i class="fa fa-table" aria-hidden="true"></i> Таблица',
['table'], ['class' => 'btn btn-primary',]),
'monthUpdate' => [
'url' => Url::base() . '/calendar/ajax/get-birthday-dates-by-month'
],
]);
Pjax::end();
?>
'dayUpdate' => [
'url' => Url::base() . '/calendar/ajax/get-birthday-date'
],
'colorClasses' => ['accept' => 'success', 'default' => '', 'offDay' => ''],
'offDaysShow' => 0,
]) ?>

View File

@ -0,0 +1,45 @@
<?php
/* @var $searchModel backend\modules\card\models\UserCardSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
use yii\grid\GridView;
use yii\helpers\Html;
use yii\widgets\Pjax;
?>
<div style="display: flex;align-items: flex-start;">
<p>
<select id="options" class="btn btn-secondary dropdown-toggle">
<option selected="selected" value="?month=00">Выберите месяц</option>
<option value="?month=00">Показать все</option>
<option value="?month=01">январь</option>
<option value="?month=02">февраль</option>
<option value="?month=03">март</option>
<option value="?month=04">апрель</option>
<option value="?month=05">май</option>
<option value="?month=06">июнь</option>
<option value="?month=07">июль</option>
<option value="?month=08">август</option>
<option value="?month=09">сентябрь</option>
<option value="?month=10">октябрь</option>
<option value="?month=11">ноябрь</option>
<option value="?month=12">декабрь</option>
</select>
</p>
<?=Html::a('Календарь дней рождений '.Html::tag('i', null, ['class' => 'far fa-calendar-alt']),
['index'], ['class' => 'btn btn-success', 'style' => 'margin-left: 10px'])?>
</div>
<?php
Pjax::begin(['id' => 'reload']);
echo GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'fio',
'dob',
['class' => 'yii\grid\ActionColumn'],
],
]);
Pjax::end();
?>