+ Refactor task view page.
This commit is contained in:
@@ -1,9 +1,2 @@
|
||||
.detail-side {width: 370px; border-left: 1px solid var(--color-slate-300);}
|
||||
.detail-header .text-title {font-weight: 600; color: var(--color-slate-800);}
|
||||
.detail-body .text-subtitle {font-size: 14px; line-height: 22px; font-weight: 600; color: var(--color-slate-900);}
|
||||
.detail-body .text-story-title {color: var(--color-slate-800); font-weight: 600;}
|
||||
.detail-body .desc-heading {color: var(--color-slate-600); font-weight: 600;}
|
||||
.detail-side .table-data th {min-width: 60px; padding: 6px 8px 6px 0; text-align: right; color: var(--color-slate-600); font-weight: normal;}
|
||||
.detail-side .table-data td {padding: 6px 0 6px 8px; word-break: break;}
|
||||
.detail-side .tab-content>.tab-pane {padding-left: 0 !important;}
|
||||
.detail-body .detail-desc {color: var(--color-slate-800);}
|
||||
|
||||
+107
-155
@@ -3,29 +3,6 @@ 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.
|
||||
*
|
||||
@@ -49,84 +26,46 @@ function createTaskBtn(array $props): wg
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
detailHeader
|
||||
(
|
||||
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' => ''))
|
||||
to::title(entityLabel(set(array('entityID' => $task->id, 'level' => 1, 'text' => $task->name)))),
|
||||
to::suffix(createTaskBtn(array('url' => '')))
|
||||
);
|
||||
|
||||
div
|
||||
(
|
||||
setClass('detail-body', 'canvas shadow rounded', 'flex'),
|
||||
div
|
||||
sectionList
|
||||
(
|
||||
setClass('detail-main grow'),
|
||||
section
|
||||
set::items
|
||||
(
|
||||
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->task->legendDesc, 'content' => empty($task->desc) ? $lang->noData : $task->desc),
|
||||
array(
|
||||
array(
|
||||
'title' => $lang->story->legendSpec,
|
||||
'content' => empty($task->storySpec) && empty($task->storyFiles) ? $lang->noData : $task->storySpec
|
||||
'title' => $lang->task->story,
|
||||
'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
|
||||
)
|
||||
),
|
||||
array(
|
||||
'title' => $lang->task->storyVerify,
|
||||
'content' => empty($task->storyVerify) ? $lang->noData : $task->storyVerify
|
||||
)
|
||||
'useHtml' => true,
|
||||
'subtitle' => function() use($task)
|
||||
{
|
||||
return entityLabel
|
||||
(
|
||||
setClass('my-3'),
|
||||
set::entityID($task->storyID),
|
||||
set::level(3),
|
||||
set::text($task->storyTitle),
|
||||
);
|
||||
}
|
||||
)
|
||||
),
|
||||
set::useHtml(true)
|
||||
)
|
||||
),
|
||||
history
|
||||
(
|
||||
@@ -136,51 +75,57 @@ div
|
||||
)
|
||||
),
|
||||
div(
|
||||
setClass('detail-side px-5 py-4 flex-none canvas'),
|
||||
setClass('detail-side px-5 py-4 flex-none'),
|
||||
tabs
|
||||
(
|
||||
set::items
|
||||
(
|
||||
array(
|
||||
array('id' => 'legend-basic', 'label' => $lang->task->legendBasic, 'active' => true),
|
||||
array('id' => 'legend-life', 'label' => $lang->task->legendLife),
|
||||
array(
|
||||
'id' => 'legend-basic',
|
||||
'label' => $lang->task->legendBasic,
|
||||
'active' => true,
|
||||
'data' => function() use($lang, $task, $execution)
|
||||
{
|
||||
return tableData
|
||||
(
|
||||
set::items
|
||||
(
|
||||
array(
|
||||
array('name' => $lang->task->execution, 'value' => $execution->name),
|
||||
array('name' => $lang->task->module, 'value' => ''),
|
||||
array('name' => $lang->task->assignedTo, 'value' => $task->assignedTo ? $task->assignedToRealName : $lang->noData),
|
||||
array('name' => $lang->task->type, 'value' => zget($this->lang->task->typeList, $task->type, $task->type)),
|
||||
array('name' => $lang->task->status, 'value' => $this->processStatus('task', $task)),
|
||||
array('name' => $lang->task->progress, 'value' => $task->progress . ' %'),
|
||||
array('name' => $lang->task->pri, 'value' => array('wg' => 'priLabel', 'pri' => '1'))
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
),
|
||||
array(
|
||||
'id' => 'legend-life',
|
||||
'label' => $lang->task->legendLife,
|
||||
'data' => function() use($lang, $task, $users)
|
||||
{
|
||||
return tableData
|
||||
(
|
||||
set::items
|
||||
(
|
||||
array(
|
||||
array('name' => $lang->task->openedBy, 'value' => $task->openedBy ? zget($users, $task->openedBy, $task->openedBy) . $lang->at . $task->openedDate : $lang->noData),
|
||||
array('name' => $lang->task->finishedBy, 'value' => $task->finishedBy ? zget($users, $task->finishedBy, $task->finishedBy) . $lang->at . $task->finishedDate : $lang->noData),
|
||||
array('name' => $lang->task->canceledBy, 'value' => $task->canceledBy ? zget($users, $task->canceledBy, $task->canceledBy) . $lang->at . $task->canceledDate : $lang->noData),
|
||||
array('name' => $lang->task->closedBy, 'value' => $task->closedBy ? zget($users, $task->closedBy, $task->closedBy) . $lang->at . $task->closedDate : $lang->noData),
|
||||
array('name' => $lang->task->closedReason, 'value' => $task->closedReason ? $lang->task->reasonList[$task->closedReason] : $lang->noData),
|
||||
array('name' => $lang->task->lastEdited, 'value' => $task->lastEditedBy ? zget($users, $task->lastEditedBy, $task->lastEditedBy) . $lang->at . $task->lastEditedDate : $lang->noData)
|
||||
)
|
||||
),
|
||||
);
|
||||
}
|
||||
),
|
||||
)
|
||||
),
|
||||
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
|
||||
@@ -189,39 +134,46 @@ div
|
||||
(
|
||||
array(
|
||||
array('id' => 'legend-effort', 'label' => $lang->task->legendEffort, 'active' => true),
|
||||
array('id' => 'legend-misc', 'label' => $lang->task->legendMisc),
|
||||
array('id' => 'legend-misc', 'label' => $lang->task->legendMisc),
|
||||
)
|
||||
),
|
||||
div
|
||||
to::tabPanes
|
||||
(
|
||||
setClass('tab-content'),
|
||||
tabPane
|
||||
(
|
||||
setID('legend-effort'),
|
||||
set::isActive(true),
|
||||
vtable
|
||||
array(
|
||||
tabPane
|
||||
(
|
||||
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,
|
||||
setID('legend-effort'),
|
||||
set::isActive(true),
|
||||
tableData
|
||||
(
|
||||
set::items
|
||||
(
|
||||
array(
|
||||
array('name' => $lang->task->estimate, 'value' => $task->estimate . $lang->workingHour),
|
||||
array('name' => $lang->task->consumed, 'value' => round($task->consumed, 2) . $lang->workingHour),
|
||||
array('name' => $lang->task->left, 'value' => $task->left . $lang->workingHour),
|
||||
array('name' => $lang->task->estStarted, 'value' => $task->estStarted),
|
||||
array('name' => $lang->task->realStarted, 'value' => helper::isZeroDate($task->realStarted) ? '' : substr($task->realStarted, 0, 19)),
|
||||
array('name' => $lang->task->deadline, 'value' => $task->deadline),
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
tabPane
|
||||
(
|
||||
setID('legend-misc'),
|
||||
vtable
|
||||
),
|
||||
tabPane
|
||||
(
|
||||
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,
|
||||
setID('legend-misc'),
|
||||
tableData
|
||||
(
|
||||
set::items
|
||||
(
|
||||
array(
|
||||
array('name' => $lang->task->linkMR, 'value' => $task->openedBy ? zget($users, $task->openedBy, $task->openedBy) . $lang->at . $task->openedDate : $lang->noData),
|
||||
array('name' => $lang->task->linkCommit, 'value' => $task->finishedBy ? zget($users, $task->finishedBy, $task->finishedBy) . $lang->at . $task->finishedDate : $lang->noData),
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user