Переделал виджет, более читаем
This commit is contained in:
@ -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;
|
||||
|
@ -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,
|
||||
]);
|
||||
|
18
backend/modules/calendar/views/ajax/_gridView.php
Normal file
18
backend/modules/calendar/views/ajax/_gridView.php
Normal 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();
|
||||
|
@ -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"> </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"
|
||||
}'
|
||||
]) ?>
|
||||
|
||||
|
@ -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,
|
||||
|
||||
]) ?>
|
||||
|
||||
|
||||
|
45
backend/modules/calendar/views/calendar/table.php
Normal file
45
backend/modules/calendar/views/calendar/table.php
Normal 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();
|
||||
?>
|
Reference in New Issue
Block a user