diff --git a/module/execution/ui/view.html.php b/module/execution/ui/view.html.php
index 8237f2d778..d2c5bc5fbc 100644
--- a/module/execution/ui/view.html.php
+++ b/module/execution/ui/view.html.php
@@ -40,12 +40,76 @@ if($config->systemMode == 'ALM' && $execution->projectInfo->grade > 1)
);
}
+$relatedProducts = null;
+if($execution->projectInfo->hasProduct || $features['plan'])
+{
+ foreach($products as $productID => $product)
+ {
+ $productDom = null;
+ $planDom = null;
+ if($execution->projectInfo->hasProduct)
+ {
+ foreach($product->branches as $branchID)
+ {
+ $branchName = isset($branchGroups[$productID][$branchID]) ? '/' . $branchGroups[$productID][$branchID] : '';
+ $productDom = h::td
+ (
+ icon('product mr-2'),
+ a
+ (
+ hasPriv('product', 'browse') ? set::href(createLink('product', 'browse', "productID={$productID}&branch={$branchID}")) : null,
+ span($product->name . $branchName)
+ )
+ );
+ }
+ }
+
+ if($features['plan'])
+ {
+ $plans = array();
+ foreach($product->plans as $planIDList)
+ {
+ $planIDList = explode(',', $planIDList);
+ foreach($planIDList as $planID)
+ {
+ if(!isset($planGroups[$productID][$planID])) continue;
+
+ $class = '';
+ if(count($plans) > 2) $class .= ' mt-2';
+ if(count($plans) % 3 != 0) $class .= ' pl-4';
+ $plans[] = div
+ (
+ setClass("flex-none w-1/3 clip {$class}"),
+ icon('calendar mr-2'),
+ a
+ (
+ hasPriv('productplan', 'view') ? set::href(createLink('productplan', 'view', "planID={$planID}")) : null,
+ span($product->name . '/' . $planGroups[$productID][$planID])
+ )
+ );
+ }
+ }
+
+ $planDom[] = h::td
+ (
+ div
+ (
+ setClass('flex flex-wrap'),
+ $plans
+ )
+ );
+ }
+
+ $relatedProducts[] = h::tr(setClass('border-r'), $productDom, $planDom);
+ }
+}
+
div
(
- setClass('flex clip'),
+ setClass('flex w-full'),
div
(
- setClass('flex-auto canvas flex p-4 w-2/3'),
+ setClass('flex-auto canvas flex p-4 w-1/2'),
div
(
setClass('text-center w-1/3 flex flex-col justify-center items-center'),
@@ -139,7 +203,7 @@ div
setClass('rounded-full'),
$execution->id
),
- span
+ div
(
setClass('article-h2 ml-2 clip'),
$execution->name
@@ -165,7 +229,7 @@ div
),
span
(
- setClass('ml-2'),
+ setClass('ml-2 flex-none'),
$lang->execution->kanbanAclList[$execution->acl],
icon
(
@@ -237,70 +301,6 @@ div
)
);
-$relatedProducts = null;
-if($execution->projectInfo->hasProduct || $features['plan'])
-{
- foreach($products as $productID => $product)
- {
- $productDom = null;
- $planDom = null;
- if($execution->projectInfo->hasProduct)
- {
- foreach($product->branches as $branchID)
- {
- $branchName = isset($branchGroups[$productID][$branchID]) ? '/' . $branchGroups[$productID][$branchID] : '';
- $productDom = h::td
- (
- icon('product mr-2'),
- a
- (
- hasPriv('product', 'browse') ? set::href(createLink('product', 'browse', "productID={$productID}&branch={$branchID}")) : null,
- span($product->name . $branchName)
- )
- );
- }
- }
-
- if($features['plan'])
- {
- $plans = array();
- foreach($product->plans as $planIDList)
- {
- $planIDList = explode(',', $planIDList);
- foreach($planIDList as $planID)
- {
- if(!isset($planGroups[$productID][$planID])) continue;
-
- $class = '';
- if(count($plans) > 2) $class .= ' mt-2';
- if(count($plans) % 3 != 0) $class .= ' pl-4';
- $plans[] = div
- (
- setClass("flex-none w-1/3 clip {$class}"),
- icon('calendar mr-2'),
- a
- (
- hasPriv('productplan', 'view') ? set::href(createLink('productplan', 'view', "planID={$planID}")) : null,
- span($product->name . '/' . $planGroups[$productID][$planID])
- )
- );
- }
- }
-
- $planDom[] = h::td
- (
- div
- (
- setClass('flex flex-wrap'),
- $plans
- )
- );
- }
-
- $relatedProducts[] = h::tr(setClass('border-r'), $productDom, $planDom);
- }
-}
-
$membersDom = array();
foreach(array('PM', 'PO', 'QD', 'RD') as $field)
{
@@ -752,36 +752,32 @@ div
div
(
setClass('ml-4 w-1/3 flex-none'),
- div
+ panel
(
- setClass('h-2/3 overflow-y-auto canvas'),
- panel
+ to::heading
(
- to::heading
+ div
(
- div
- (
- set('class', 'panel-title'),
- $lang->execution->latestDynamic,
- )
- ),
- to::headingActions
+ set('class', 'panel-title'),
+ $lang->execution->latestDynamic,
+ )
+ ),
+ to::headingActions
+ (
+ common::hasPriv('execution', 'dynamic') ? btn
(
- common::hasPriv('execution', 'dynamic') ? btn
- (
- setClass('ghost text-gray font-normal'),
- set::url(createLink('execution', 'dynamic', "executionID={$execution->id}&type=all")),
- $lang->more
- ) : null
- ),
- set::bodyClass('pt-0'),
- dynamic()
- )
+ setClass('ghost text-gray font-normal'),
+ set::url(createLink('execution', 'dynamic', "executionID={$execution->id}&type=all")),
+ $lang->more
+ ) : null
+ ),
+ set::bodyClass('h-80 overflow-y-auto pt-0'),
+ dynamic()
),
div
(
- setClass('mt-4 h-1/3 overflow-y-auto canvas'),
- history()
+ setClass('mt-4'),
+ history(set::bodyClass('h-72 overflow-y-auto'))
),
),
);