diff --git a/module/product/ui/track.html.php b/module/product/ui/track.html.php
index 9a3e591631..5654cee1e4 100644
--- a/module/product/ui/track.html.php
+++ b/module/product/ui/track.html.php
@@ -12,232 +12,13 @@ declare(strict_types=1);
namespace zin;
-if($config->URAndSR && $this->app->rawModule == 'projectstory' && $this->session->hasProduct)
-{
- $productItems = array();
- foreach($projectProducts as $id => $name)
- {
- $productItems[] = array('text' => $name, 'url' => createLink('projectstory', 'track', "projectID={$this->session->project}&productID={$id}"), 'active' => $productID == $id);
- }
-}
-
-$getRequirements = function($tracks)
-{
- global $app, $config, $lang;
- $requirementItems = array();
- $tab = $app->rawModule == 'projectstory' ? 'project' : 'product';
- $module = $app->rawModule == 'projectstory' ? 'projectstory' : 'story';
- foreach($tracks as $key => $requirement)
- {
- $track = ($key == 'noRequirement') ? $requirement : $requirement->track;
- $rowspan = count($track);
- $title = $lang->story->noRequirement;
- if($config->URAndSR && $key != 'noRequirement') $title = common::hasPriv($requirement->type, 'view') ? a(
- set('href', createLink('story', 'view', "storyID={$requirement->id}")),
- set('title', $requirement->title),
- set('data-app', $tab),
- $requirement->title
- ) : $requirement->title;
-
- $requirementItems[] = h::tr(
- $config->URAndSR ? h::td(
- $rowspan != 0 ? set('rowspan', $rowspan) : null,
- setClass('requirement'),
- $key != 'noRequirement' ? label(
- setClass('primary-pale ring-primary mr-1'),
- zget($lang->story->statusList, $requirement->status)
- ) : null,
- set('title', $key != 'noRequirement' ? $requirement->title : $lang->story->noRequirement),
- $title
- ) : null,
- count($track) != 0 ? getStoryTrack($track, $tab, $module) : null
- );
- }
- return $requirementItems;
-};
-
-function getStoryTrack($track, $tab, $module)
-{
- $i = 0;
- $storyItems = array();
- foreach($track as $storyID => $story)
- {
- if($i > 0)
- {
- $storyItems[] = h::tr(getTrackTd($storyID, $story, $tab, $module));
- }
- else
- {
- $storyItems[] = getTrackTd($storyID, $story, $tab, $module);
- }
- $i ++;
- }
- return $storyItems;
-};
-
-function getTrackTd($storyID, $story, $tab, $module)
-{
- global $lang, $config;
- $trackItem = array();
-
- /* Story. */
- $trackItem[] = h::td(
- isset($story->parent) && $story->parent > 0 ? label(
- setClass('rounded-full light mr-1'),
- set('title', $lang->story->children),
- $lang->story->childrenAB
- ) : null,
- a(
- set('href', createLink($module, 'view', "storyID={$storyID}")),
- set('title', $story->title),
- set('data-app', $tab),
- $story->title
- )
- );
-
- $trackItem[] = h::td(getTaskTd($story->tasks)); // Task
-
- if(in_array($config->edition, array('max', 'ipd'))) $trackItem[] = h::td(getDesignTd($story->designs)); // Design
-
- $trackItem[] = h::td(getCaseTd($story->cases)); // Case
-
- if(in_array($config->edition, array('max', 'ipd')) && helper::hasFeature('devops')) $trackItem[] = h::td(getRevisionTd($story->revisions)); // Revision
-
- $trackItem[] = h::td(getBugTd($story->bugs)); // Bug
-
- return $trackItem;
-};
-
-function getTaskTd($tasks)
-{
- $taskItems = array();
- foreach($tasks as $task)
- {
- $taskItems[] = a(
- set('href', createLink('task', 'view', "taskID={$task->id}")),
- set('title', $task->name),
- $task->name
- );
- $taskItems[] = br();
- }
- return $taskItems;
-};
-
-function getDesignTd($designs)
-{
- $designItems = array();
- foreach($designs as $design)
- {
- $designItems[] = a(
- set('href', createLink('design', 'view', "designID={$design->id}")),
- set('title', $design->name),
- $design->name
- );
- $designItems[] = br();
- }
- return $designItems;
-};
-
-function getCaseTd($cases)
-{
- $caseItems = array();
- foreach($cases as $case)
- {
- $caseItems[] = a(
- set('href', createLink('testcase', 'view', "caseID={$case->id}")),
- set('title', $case->title),
- $case->title
- );
- $caseItems[] = br();
- }
- return $caseItems;
-};
-
-function getRevisionTd($revisions)
-{
- $revisionItems = array();
- foreach($revisions as $revision => $repoComment)
- {
- $revisionItems[] = a(
- set('href', createLink('design', 'revision', "revisionID={$revision}")),
- set('title', $repoComment),
- '#'. $revision . '-' . $repoComment
- );
- $revisionItems[] = br();
- }
- return $revisionItems;
-};
-
-function getBugTd($bugs)
-{
- $bugItems = array();
- foreach($bugs as $bug)
- {
- $bugItems[] = a(
- set('href', createLink('bug', 'view', "bugID={$bug->id}")),
- set('title', $bug->title),
- $bug->title
- );
- $bugItems[] = br();
- }
- return $bugItems;
-};
-
-$colspan = 4;
-if($config->URAndSR) $colspan ++;
-if(in_array($config->edition, array('max', 'ipd'))) $colspan ++;
-if(in_array($config->edition, array('max', 'ipd')) && helper::hasFeature('devops')) $colspan ++;
div
(
- setClass('main-col'),
- div(
- setClass('main-table'),
- h::table
- (
- setID('trackList'),
- setClass('table table-bordered'),
- h::thead
- (
- $config->URAndSR ? h::th(
- !empty($productItems) ? dropdown(
- btn(
- setClass('ghost btn square btn-default'),
- set::icon('product'),
- $projectProducts[$productID]
- ),
- set::items($productItems),
- set::placement('bottom-start')
- ) : $lang->story->requirement
- ) : null,
- h::th($lang->story->story),
- h::th($lang->story->tasks),
- in_array($config->edition, array('max', 'ipd')) ? h::th($lang->story->design) : null,
- h::th($lang->story->case),
- in_array($config->edition, array('max', 'ipd')) && helper::hasFeature('devops') ? h::th($lang->story->repoCommit) : null,
- h::th($lang->story->bug)
- ),
- h::tbody
- (
- !empty($tracks) ? $getRequirements($tracks) : h::tr
- (
- h::td
- (
- setClass('text-gray text-center empty-tip'),
- set::colspan($colspan),
- $lang->product->noData
- )
- )
- )
- ),
- !empty($tracks) ? div
- (
- setClass('table-footer'),
- pager(
- set::_className('flex justify-end items-center'),
- set::linkCreator(createLink($app->rawModule, $app->rawMethod, "productID={$productID}&branch={$branch}&projectID={$projectID}&recTotal={$pager->recTotal}&recPerPage={recPerPage}&pagerID={page}"))
- )
- ) : null
+ set::id('track'),
+ zui::kanban
+ (
+ set::key('kanban'),
+ set::data($tracks),
+ set::height('calc(100vh - 120px)')
)
);
-
-render();