* @package block * @link https://www.zentao.net */ namespace zin; $spanWidth = (strlen((string)($maxStoryEstimate)) * 0.425 + 0.125) . 'rem'; $doneStoryEstimateRows = array(); foreach($doneStoryEstimate as $productID => $storyEstimate) { $doneStoryEstimateRows[] = cell ( setClass('flex py-1.5 pr-4 text-sm'), cell ( setClass('ellipsis overflow-hidden whitespace-nowrap mr-1 text-right'), set::width('50%'), span ( set::title(zget($products, $productID)), zget($products, $productID) ) ), cell ( set::width('50%'), setClass('flex items-center'), div ( width("calc(calc(100% - {$spanWidth}) * " . ($maxStoryEstimate ? $storyEstimate / $maxStoryEstimate : 0) . ')'), setClass('progress progress-bar h-2'), set('role', 'progressbar'), setStyle(array('background' => 'var(--color-primary-300)')) ), span ( setClass('pl-0.5'), $storyEstimate ) ) ); } $spanWidth = (strlen((string)($maxStoryCount)) * 0.425 + 0.125) . 'rem'; $doneStoryCountRows = array(); foreach($doneStoryCount as $productID => $storyCount) { $doneStoryCountRows[] = cell ( setClass('flex py-1.5 pr-4 text-sm'), cell ( setClass('ellipsis overflow-hidden whitespace-nowrap mr-1 text-right'), set::width('50%'), span ( zget($products, $productID), ) ), cell ( set::width('50%'), setClass('flex items-center'), div ( width("calc(calc(100% - {$spanWidth}) * " . ($maxStoryCount ? $storyCount / $maxStoryCount : 0) . ')'), setClass('progress progress-bar h-2'), set('role', 'progressbar'), setStyle(array('background' => 'var(--color-primary-300)')) ), span ( setClass('pl-0.5'), $storyCount ) ) ); } $spanWidth = (strlen((string)($maxBugCount)) * 0.425 + 0.125) . 'rem'; $resolvedBugCountRows = array(); foreach($resolvedBugCount as $productID => $bugCount) { $resolvedBugCountRows[] = cell ( setClass('flex py-1.5 pr-4 text-sm'), cell ( setClass('ellipsis overflow-hidden whitespace-nowrap mr-1 text-right'), set::width('50%'), span(zget($products, $productID)) ), cell ( set::width('50%'), setClass('flex items-center'), div ( width("calc(calc(100% - {$spanWidth}) * " . ($maxBugCount ? $bugCount / $maxBugCount : 0) . ')'), setClass('progress progress-bar h-2'), set('role', 'progressbar'), setStyle(array('background' => 'var(--color-primary-300)')) ), span ( setClass('pl-0.5'), $bugCount ) ) ); } blockPanel ( to::titleSuffix ( icon ( setClass('text-light text-sm cursor-pointer'), toggle::tooltip ( array ( 'title' => sprintf($lang->block->tooltips['metricTime'], $metricTime), 'placement' => 'bottom', 'type' => 'white', 'className' => 'text-dark border border-light leading-5' ) ), 'help' ) ), div ( setClass('flex h-full w-full' . ($longBlock ? ' flex-nowrap' : ' flex-wrap')), cell ( setClass('flex flex-wrap overflow-hidden px-4 ' . ($longBlock ? 'py-2' : 'py-1 w-full mb-2')), set::width($longBlock ? '1/3' : '100%'), cell ( setClass('w-full font-bold'), icon('card-archive mr-1 mb-2'), span($lang->block->annualworkload->doneStoryEstimate) ), cell ( setClass('w-full overflow-y-auto' . ($longBlock ? ' h-64' : ' h-48')), $doneStoryEstimateRows ) ), cell ( setClass('flex flex-wrap overflow-hidden px-4 ' . ($longBlock ? 'py-2' : 'py-3 w-full my-2 border-t')), set::width($longBlock ? '1/3' : '100%'), cell ( setClass('w-full font-bold'), icon('sub-review mr-1 mb-2'), span($lang->block->annualworkload->doneStoryCount) ), cell ( setClass('w-full overflow-y-auto' . ($longBlock ? ' h-64' : ' h-48')), $doneStoryCountRows ) ), cell ( setClass('flex flex-wrap overflow-hidden px-4 ' . ($longBlock ? 'py-2' : 'py-3 w-full my-2 border-t')), set::width($longBlock ? '1/3' : '100%'), cell ( setClass('w-full font-bold'), icon('bug mr-1 mb-2'), span($lang->block->annualworkload->resolvedBugCount) ), cell ( setClass('w-full overflow-y-auto' . ($longBlock ? ' h-64' : ' h-48')), $resolvedBugCountRows ) ) ) ); render();