* @package execution * @link https://www.zentao.net */ namespace zin; jsVar('workHour', $lang->execution->workHour); jsVar('storyPoint', $lang->execution->storyPoint); jsVar('burnBy', $burnBy); jsVar('+type', str_replace(',', '%2C', $type)); jsVar('executionID', $executionID); jsVar('watermark', $lang->execution->watermark); jsVar('burnXUnit', $lang->execution->burnXUnit); jsVar('burnYUnit', $lang->execution->burnYUnit); jsVar('executionName', $execution->name); $weekend = strpos($type, 'noweekend') !== false ? 'withweekend' : 'noweekend'; $delay = strpos($type, 'withdelay') !== false ? 'nodelay' : 'withdelay'; $weekendParam = $delay == 'withdelay' ? "nodelay,{$weekend}" : "withdelay,{$weekend}"; $delayParam = $weekend == 'noweekend' ? "withweekend,{$delay}" : "noweekend,{$delay}"; $isEn = $app->getClientLang() == 'en'; $intervalBoxWidth = $isEn ? '150px' :'100px'; $intervalPickerProp = $isEn ? set::style(array('width' => '150px')) : null; featureBar ( btn ( set ( array ( 'class' => 'btn primary mr-5 ajax-submit', 'url' => createLink('execution', 'computeBurn', 'reload=yes'), 'icon' => 'refresh' ) ), $lang->execution->computeBurn ), li ( setClass('nav-item'), a ( set::id('weekend'), set::href(createLink('execution', 'burn', "executionID={$execution->id}&type={$weekendParam}&interval={$interval}")), setData('app', $app->tab), $lang->execution->{$weekend} ) ), li ( setClass('nav-item'), a ( set::id('delay'), set::href(createLink('execution', 'burn', "executionID={$execution->id}&type={$delayParam}")), setData('app', $app->tab), $lang->execution->{$delay} ) ), common::canModify('execution', $execution) ? li ( setClass('nav-item'), a ( set ( array ( 'href' => createLink('execution', 'fixFirst', "id={$execution->id}"), 'data-toggle' => 'modal' ) ), $lang->execution->fixFirst ) ) : null, li ( setClass('nav-item mr-3'), html($lang->execution->howToUpdateBurn) ), li ( set::className('burnByBox'), set::style(array('width' => $isEn ? '160px' : '150px')), picker ( set::id('burnBy'), set::name('burnBy'), set::items($lang->execution->burnByList), set::value($burnBy), $isEn ? set::style(array('width' => '160px')) : null, set::required(true) ) ), $interval ? li ( set::className('intervalBox ml-4'), set::style(array('width' => $intervalBoxWidth)), picker ( set::id('interval'), set::name('interval'), set::items($dayList), set::value($interval), set::required(true), $intervalPickerProp ) ) : null ); toolbar ( btn ( setClass('btn primary'), $lang->export, on::click('downloadBurn') ) ); panel ( setID('burnPanel'), h2 ( setClass('flex items-center justify-center'), $executionName . ' ' . $this->lang->execution->burn . '(' . zget($lang->execution->burnByList, $burnBy) . ')', isset($execution->delay) ? label(setClass('label danger-pale circle size-sm nowrap ml-3'), sprintf($lang->project->delayInfo, $execution->delay)) : null ), echarts ( set::height(500), set::exts('timeline'), set::xAxis ( array ( 'type' => 'category', 'data' => $chartData['labels'], 'name' => $lang->execution->burnXUnit, 'boundaryGap' => false, 'axisLabel' => array('interval' => 0, 'rotate' => count($chartData['labels']) > 27 ? 45 : 0), ) ), set::yAxis ( array ( 'type' => 'value', 'name' => $burnBy == 'storyPoint' ? "({$lang->execution->storyPoint})" : "({$lang->execution->workHour})", 'axisLine' => array('show' => true) ) ), set::legend ( array ( 'selectedMode' => false, 'orient' => 'vertical', 'left' => 'right', 'top' => 'center', 'align' => 'left', 'data' => array($lang->execution->charts->burn->graph->actuality, $lang->execution->charts->burn->graph->reference, $lang->execution->charts->burn->graph->delay) ) ), set::tooltip ( array ( 'trigger' => 'axis', 'axisPointer' => array( 'type' => 'none' ), 'formatter' => "RAWJSRAWJS" ) ), set::series ( array ( array ( 'data' => $chartData['baseLine'], 'type' => 'line', 'name' => $lang->execution->charts->burn->graph->reference, 'symbolSize' => 8, 'symbol' => 'circle', 'itemStyle' => array ( 'normal' => array ( 'color' => '#D8D8D8', 'lineStyle' => array ( 'width' => 3, 'color' => '#F1F1F1' ) ), 'emphasis' => array ( 'color' => '#FFF', 'borderColor' => '#D8D8D8', 'borderWidth' => 2 ) ), 'emphasis' => array ( 'lineStyle' => array ( 'width' => 3, 'color' => '#F1F1F1' ) ) ), array ( 'data' => $chartData['burnLine'], 'type' => 'line', 'name' => $lang->execution->charts->burn->graph->actuality, 'symbolSize' => 8, 'symbol' => 'circle', 'itemStyle' => array ( 'normal' => array ( 'color' => '#006AF1', 'lineStyle' => array ( 'width' => 3, 'color' => '#2B7DFE' ) ), 'emphasis' => array ( 'color' => '#fff', 'borderColor' => '#006AF1', 'borderWidth' => 2 ) ) ), strpos($type, 'withdelay') !== false ? array ( 'data' => empty($chartData['delayLine']) ? array() : $chartData['delayLine'], 'type' => 'line', 'name' => $lang->execution->charts->burn->graph->delay, 'symbolSize' => 8, 'symbol' => 'circle', 'itemStyle' => array ( 'normal' => array ( 'color' => '#F00', 'lineStyle' => array ( 'color' => '#F00' ) ), 'emphasis' => array ( 'color' => '#fff', 'borderColor' => '#F00', 'borderWidth' => 2 ) ), ) : null ) ) ) );