Files
EasySoft-ZenTaoPMS/module/task/ui/view.html.php
T
2023-05-23 14:10:08 +08:00

233 lines
7.3 KiB
PHP

<?php
declare(strict_types=1);
namespace zin;
global $lang;
/**
* Goback button wg.
*
* @param array $props type: array('url' => string, 'className' => ?string).
* @return wg
*/
function backBtn(array $props): wg
{
global $lang;
extract($props);
$className = isset($className) ? $className : null;
return btn
(
set::icon('back'),
set::url($url),
set::type('secondary'),
setClass($className, 'mr-4'),
$lang->goback
);
}
/**
* Create task button wg.
*
* @param array $props type: array('url' => string, className => ?string).
* @return wg
*/
function createTaskBtn(array $props): wg
{
global $lang;
extract($props);
$className = isset($className) ? $className : null;
return btn
(
set::icon('plus'),
set::url($url),
set::type('primary'),
setClass($className),
$lang->task->create
);
}
/**
* Vertical data table wg.
* @param array $data
*/
function vtable(array $data): wg
{
$trs = array();
foreach ($data as $key => $value)
{
$trs[] = h::tr
(
h::th($key),
h::td($value)
);
}
return h::table
(
setClass('table-data'),
h::tbody($trs)
);
}
div
(
setClass('detail-header flex justify-between mb-3'),
div
(
setClass('flex', 'items-center'),
backBtn(array('url' => '')),
entityLabel
(
set::entityID($task->id),
set::level(1),
set::text($task->name),
)
),
createTaskBtn(array('url' => ''))
);
div
(
setClass('detail-body', 'canvas shadow rounded', 'flex'),
div
(
setClass('detail-main grow'),
section
(
set::title($lang->task->legendDesc),
set::content(empty($task->desc) ? $lang->noData : $task->desc),
),
section
(
set::title($lang->task->story),
to::subTitle
(
entityLabel
(
setClass('my-3'),
set::entityID($task->storyID),
set::level(3),
set::text($task->storyTitle),
)
),
set::content
(
array(
array(
'title' => $lang->story->legendSpec,
'content' => empty($task->storySpec) && empty($task->storyFiles) ? $lang->noData : $task->storySpec
),
array(
'title' => $lang->task->storyVerify,
'content' => empty($task->storyVerify) ? $lang->noData : $task->storyVerify
)
)
),
set::useHtml(true)
),
history
(
set::actions($actions),
set::users($users),
set::methodName($methodName),
)
),
div(
setClass('detail-side px-5 py-4 flex-none canvas'),
tabs
(
set::items
(
array(
array('id' => 'legend-basic', 'label' => $lang->task->legendBasic, 'active' => true),
array('id' => 'legend-life', 'label' => $lang->task->legendLife),
)
),
div
(
setClass('tab-content'),
tabPane
(
setID('legend-basic'),
set::isActive(true),
vtable
(
array(
$lang->task->execution => $execution->name,
$lang->task->module => '',
$lang->task->assignedTo => $task->assignedTo ? $task->assignedToRealName : $lang->noData,
$lang->task->type => zget($this->lang->task->typeList, $task->type, $task->type),
$lang->task->status => $this->processStatus('task', $task),
$lang->task->progress => $task->progress . ' %',
$lang->task->pri => priLabel(1),
)
)
),
tabPane
(
setID('legend-life'),
vtable
(
array(
$lang->task->openedBy => $task->openedBy ? zget($users, $task->openedBy, $task->openedBy) . $lang->at . $task->openedDate : $lang->noData,
$lang->task->finishedBy => $task->finishedBy ? zget($users, $task->finishedBy, $task->finishedBy) . $lang->at . $task->finishedDate : $lang->noData,
$lang->task->canceledBy => $task->canceledBy ? zget($users, $task->canceledBy, $task->canceledBy) . $lang->at . $task->canceledDate : $lang->noData,
$lang->task->closedBy => $task->closedBy ? zget($users, $task->closedBy, $task->closedBy) . $lang->at . $task->closedDate : $lang->noData,
$lang->task->closedReason => $task->closedReason ? $lang->task->reasonList[$task->closedReason] : $lang->noData,
$lang->task->lastEdited => $task->lastEditedBy ? zget($users, $task->lastEditedBy, $task->lastEditedBy) . $lang->at . $task->lastEditedDate : $lang->noData
)
)
),
)
),
tabs
(
set::items
(
array(
array('id' => 'legend-effort', 'label' => $lang->task->legendEffort, 'active' => true),
array('id' => 'legend-misc', 'label' => $lang->task->legendMisc),
)
),
div
(
setClass('tab-content'),
tabPane
(
setID('legend-effort'),
set::isActive(true),
vtable
(
array(
$lang->task->estimate => $task->estimate . $lang->workingHour,
$lang->task->consumed => round($task->consumed, 2) . $lang->workingHour,
$lang->task->left => $task->left . $lang->workingHour,
$lang->task->estStarted => $task->estStarted,
$lang->task->realStarted => helper::isZeroDate($task->realStarted) ? '' : substr($task->realStarted, 0, 19),
$lang->task->deadline => $task->deadline,
)
)
),
tabPane
(
setID('legend-misc'),
vtable
(
array(
$lang->task->linkMR => $task->openedBy ? zget($users, $task->openedBy, $task->openedBy) . $lang->at . $task->openedDate : $lang->noData,
$lang->task->linkCommit => $task->finishedBy ? zget($users, $task->finishedBy, $task->finishedBy) . $lang->at . $task->finishedDate : $lang->noData,
)
)
),
)
)
)
);
commentDialog(set::name('comment'));
render();