| Current Path : /var/www/html/dyna-project/views/tasks/ |
| Current File : /var/www/html/dyna-project/views/tasks/index.php |
<?php
use yii\helpers\Html;
use yii\grid\GridView;
use app\models\Projects;
use app\models\Tasks;
/* @var $this yii\web\View */
/* @var $searchModel app\models\TasksSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = 'Tasks';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="kt-subheader kt-grid__item" id="kt_subheader">
<div class="kt-container ">
<div class="kt-subheader__main">
<h3 class="kt-subheader__title">My Tasks</h3>
<div class="kt-subheader__breadcrumbs">
<span class="kt-subheader__breadcrumbs-separator"></span>
<span class="kt-subheader__breadcrumbs-link"> My Tasks</span>
<span class="kt-subheader__breadcrumbs-separator"></span>
<span class="kt-subheader__breadcrumbs-link"> My Tasks List</span>
</div>
</div>
</div>
</div>
<div class="tasks-index">
<div class="kt-container kt-grid__item kt-grid__item--fluid">
<div class="kt-portlet kt-portlet--mobile">
<div class="kt-portlet__head"><?php echo $this->render('_search', ['model' => $searchModel]); ?></div>
<div class="kt-portlet__body p-0">
<?=
GridView::widget([
'dataProvider' => $dataProvider,
'tableOptions' => ['class' => 'table mb-0 table-borderless table-striped table-hover table-custom'],
'pager' => [
'firstPageLabel' => '<i class="fa fa-angle-double-left kt-font-brand"></i>',
'lastPageLabel' => '<i class="fa fa-angle-double-right kt-font-brand"></i>',
'prevPageLabel' => '<i class="fa fa-angle-left kt-font-brand"></i>',
'nextPageLabel' => '<i class="fa fa-angle-right kt-font-brand"></i>',
'maxButtonCount' => 3,
'options' => ['tag' => 'ul', 'class' => 'p-4 kt-pagination--brand kt-pagination__links',],
'activePageCssClass' => 'kt-pagination__link--active',
'prevPageCssClass' => 'kt-pagination__link--prev',
'nextPageCssClass' => 'kt-pagination__link--next',
'firstPageCssClass' => 'kt-pagination__link--first',
'lastPageCssClass' => 'kt-pagination__link--last',
],
'columns' => [
[
'class' => 'yii\grid\SerialColumn',
'headerOptions' => ['class' => 'text-center'],
'contentOptions' => ['class' => 'text-center align-middle'],
], [
'attribute' => 'project_name',
'headerOptions' => ['class' => 'head-sort'],
'contentOptions' => ['class' => 'align-middle'],
'format' => 'raw',
'value' => function ($model) {
$Projects = new Projects();
$project_name = $Projects->getname($model->project_id);
return Html::a($project_name, ['index', 'TasksSearch[search_keyword]' => $project_name]);
},
],
[
'attribute' => 'task_name',
'headerOptions' => ['class' => 'head-sort'],
'contentOptions' => ['class' => 'align-middle'],
'format' => 'raw',
'value' => function ($model) {
$output = $model->task_name;
if (!empty($model->descr) || !empty($model->file_url)) {
$file_url = '';
if (!empty($model->file_url))
$file_url = '<p><a href="' . $model->file_url . '" target="_blank">Download file attach here</a></p>';
$output .= '<button type="button" class="btn btn-link m-0 p-0 ml-2 btn-sm" data-toggle="modal" data-target="#modaldetails' . $model->id . '">
<i class="fas fa-info-circle"></i>
</button>
<div class="modal fade" id="modaldetails' . $model->id . '" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Task Details</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
' . $model->descr . '
' . $file_url . '
</div>
</div>
</div>
</div>';
}
return $output;
}
],
[
'attribute' => 'start_dt',
'headerOptions' => ['class' => 'head-sort text-nowrap'],
'contentOptions' => ['class' => 'align-middle text-nowrap'],
'value' => function ($model) {
return date("d M Y", strtotime($model->start_dt));
},
], [
'attribute' => 'end_dt',
'headerOptions' => ['class' => 'head-sort text-nowrap'],
'contentOptions' => ['class' => 'align-middle text-nowrap'],
'value' => function ($model) {
return date("d M Y", strtotime($model->end_dt));
},
], [
'header' => 'Due Days',
'headerOptions' => ['class' => 'text-nowrap'],
'contentOptions' => ['class' => 'align-middle text-nowrap'],
'format' => 'raw',
'value' => function ($model) {
if ($model->task_status != 'complete')
return $model->getduedays($model->end_dt);
else
return '';
},
],
[
'contentOptions' => ['class' => 'text-center align-middle'],
'header' => 'Modules',
'format' => 'raw',
'value' => function ($model) {
$total_module = Tasks::find()->where(['parent_id' => $model->id])->andwhere(['task_type' => 'module'])->count();
$link_module = Html::a('<span class="kt-font-primary icon-custom"><i class="far fa-edit"></i></span>', [
'tasks/managemodules',
'parent_id' => $model->id
], ['title' => 'Manage Modules',]);
return $total_module . ' ' . $link_module;
}
],
[
'attribute' => 'task_status',
'headerOptions' => ['class' => 'text-center head-sort', 'width' => '10%'],
'contentOptions' => ['class' => 'align-middle'],
'format' => 'raw',
'value' => function ($model) {
return $model->displaytaskstatus($model->task_status);
}
],
[
'class' => 'yii\grid\ActionColumn',
'header' => 'Action',
'headerOptions' => ['class' => 'text-center', 'width' => '10%'],
'contentOptions' => ['class' => 'text-center align-middle'],
'template' => '{start}{update}{complete}{log}',
'buttons' => [
'start' => function ($url, $model) {
if ($model->task_status == 'pending')
return Html::a('Start Task', $url, ['class' => 'btn btn-label-primary btn-sm btn-bold m-0 btn-block',]);
},
'update' => function ($url, $model) {
if ($model->task_status != 'pending')
return Html::a('<span class="kt-font-primary icon-custom"><i class="fas fa-plus fa-lg"></i></span>', ['taskslog/create', 'task_id' => $model->id], ['class' => 'mr-3', 'title' => 'Add task log',]);
}, 'complete' => function ($url, $model) {
if ($model->task_status == 'on-going')
return Html::a('<span class="kt-font-success icon-custom"><i class="fas fa-clipboard-check fa-lg"></i></span>', $url, ['class' => 'mr-3', 'title' => 'Update task status to compete',]);
}, 'log' => function ($url, $model) {
if ($model->task_status != 'pending')
return '<span class="kt-font-warning icon-custom" onclick="displaylog(' . $model->id . ')" style="cursor:pointer;"><i class="fas fa-sticky-note fa-lg"></i></span>';
},
],
],
],
]);
?>
</div>
</div>
</div>
</div>
<div class="modal fade" id="logModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Task Log</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="kt-timeline-v3">
<div class="kt-timeline-v3__items">
<div id="logcontent"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
function displaylog(task_id) {
$.ajax({
url: "index.php?r=taskslog/getlog",
method: "POST",
data: {"task_id": task_id},
success: function (response) {
$('#logcontent').html(response);
$('#logModal').modal('show');
},
});
}
function deletelog(id, task_id) {
Swal.fire({
title: 'Are you sure to delete this data?',
text: "You won't be able to revert this!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes, delete it!'
}).then((result) => {
if (result.value) {
$.ajax({
url: "index.php?r=taskslog/delete",
method: "POST",
data: {"id": id},
success: function (response) {
if (response === 'success') {
swal.fire({
position: 'center-center',
type: 'success',
title: 'Data has been deleted',
showConfirmButton: false,
timer: 1500, }).then(function (result) {
//location.reload();
displaylog(task_id);
});
}
},
});
}
});
}
</script>