From 91030018159a892ccc88cd67f4cffb281f2cf779 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Wed, 21 Jun 2023 10:24:15 +0800 Subject: [PATCH] * Change the load of the story table. --- module/task/control.php | 24 ++++ module/task/js/create.ui.js | 9 +- module/task/ui/ajaxgetteststories.html.php | 154 +++++++++++++++++++++ module/task/ui/create.html.php | 133 +----------------- module/task/zen.php | 4 +- 5 files changed, 188 insertions(+), 136 deletions(-) create mode 100644 module/task/ui/ajaxgetteststories.html.php diff --git a/module/task/control.php b/module/task/control.php index 9f5fe01307..812f306055 100755 --- a/module/task/control.php +++ b/module/task/control.php @@ -1434,4 +1434,28 @@ class task extends control $this->view->users = $this->loadModel('user')->getPairs(); $this->display(); } + + /** + * AJAX: return stories of test in html select. + * + * @param int $executionID + * @param int $taskID + * @access public + * @return string + */ + public function ajaxGetTestStories(int $executionID, int $taskID = 0) + { + $stories = $this->story->getExecutionStoryPairs($executionID, 0, 'all', '', '', 'active'); + $testStoryIdList = $this->story->getTestStories(array_keys($stories), $executionID); + $testStories = array(); + foreach($stories as $testStoryID => $storyTitle) + { + if(empty($testStoryID) || isset($testStoryIdList[$testStoryID])) continue; + $testStories[$testStoryID] = $storyTitle; + } + + $this->view->testStories = $testStories; + $this->view->task = $this->task->getByID($taskID); + $this->display(); + } } diff --git a/module/task/js/create.ui.js b/module/task/js/create.ui.js index d8a86d42f5..6185fdf408 100644 --- a/module/task/js/create.ui.js +++ b/module/task/js/create.ui.js @@ -82,11 +82,16 @@ function typeChange(e) * 根据选择研发需求是否勾选切换相关字段的展示与隐藏。 * Dynamically control whether task fields are hidden based on selection status of selectTestStory. * + * @param int $execuitonID * @access public * @return void */ -function toggleSelectTestStory() +function toggleSelectTestStory(executionID) { + executionID = parseInt(executionID); + if(!executionID) executionID = $('#execution').val(); + + $('#testStoryBox').load($.createLink('task', 'ajaxGetTestStories', 'executionID=' + executionID + '&taskID=' + taskID)); if(!$('#selectTestStoryBox').hasClass('hidden') && $('#selectTestStory').prop('checked')) { $('#module').closest('.form-group').addClass('hidden'); @@ -150,7 +155,7 @@ function loadAll() loadExecutionMembers(executionID); $('#selectTestStory').prop('checked', false); - toggleSelectTestStory(); + toggleSelectTestStory(executionID); } /** diff --git a/module/task/ui/ajaxgetteststories.html.php b/module/task/ui/ajaxgetteststories.html.php new file mode 100644 index 0000000000..5d37d35028 --- /dev/null +++ b/module/task/ui/ajaxgetteststories.html.php @@ -0,0 +1,154 @@ + + * @package task + * @link https://www.zentao.net + */ +namespace zin; + +$requiredFields = array(); +foreach(explode(',', $config->task->create->requiredFields) as $field) +{ + if($field) $requiredFields[$field] = ''; +} + +$taskTR = array(); +$i = 0; +foreach($testStories as $storyID => $storyTitle) +{ + $taskTR[] = h::tr + ( + h::td + ( + select + ( + set::id("testStory{$i}"), + set::name("testStory[$i]"), + set::value($storyID), + set::items(array($storyID => $storyTitle)), + ), + ), + h::td + ( + select + ( + set::id("testPri{$i}"), + set::name("testPri[$i]"), + set::required(true), + set::value($task->pri), + set::items($lang->task->priList), + ), + ), + h::td + ( + input + ( + set::id("testEstStarted{$i}"), + set::name("testEstStarted[$i]"), + set::type('date'), + set::value($task->estStarted), + ), + ), + h::td + ( + input + ( + set::id("testDeadline{$i}"), + set::name("testDeadline[$i]"), + set::type('date'), + set::value($task->deadline), + ), + ), + h::td + ( + select + ( + set::id("testAssignedTo{$i}"), + set::name("testAssignedTo[$i]"), + set::value($task->assignedTo), + set::items($members), + ), + ), + h::td + ( + input + ( + set::id("testEstimate{$i}"), + set::name("testEstimate[$i]"), + ), + ), + h::td + ( + set::class('center'), + btnGroup + ( + set::items(array( + array('class' => 'btn btn-link text-gray', 'icon' => 'plus', 'onclick' => 'addItem(this)'), + array('class' => 'btn btn-link text-gray', 'icon' => 'trash', 'onclick' => 'removeItem(this)'), + )) + ) + ) + ); +} + +formGroup +( + set::label($lang->task->selectTestStory), + set::labelClass('selectStoryLabel'), + h::table + ( + set::class('w-full'), + h::thead + ( + h::tr + ( + h::th($lang->task->storyAB), + h::th + ( + $lang->task->pri, + set::width('70px'), + setClass(isset($requiredFields['pri']) ? 'required' : '') + ), + h::th + ( + $lang->task->estStarted, + set::width('140px'), + setClass(isset($requiredFields['estStarted']) ? 'required' : '') + ), + h::th + ( + $lang->task->deadline, + set::width('140px'), + setClass(isset($requiredFields['deadline']) ? 'required' : '') + ), + h::th + ( + $lang->task->assignedTo, + set::width('100px') + ), + h::th + ( + $lang->task->estimate, + set::width('70px'), + setClass(isset($requiredFields['estimate']) ? 'required' : '') + ), + h::th + ( + $lang->actions, + set::width('70px') + ), + ) + ), + h::tbody + ( + $taskTR + ) + ), +); + +/* ====== Render page ====== */ +render(); diff --git a/module/task/ui/create.html.php b/module/task/ui/create.html.php index 739c4994b4..fb1c82ea44 100644 --- a/module/task/ui/create.html.php +++ b/module/task/ui/create.html.php @@ -18,6 +18,7 @@ namespace zin; jsVar('toTaskList', !empty($task->id)); jsVar('blockID', $blockID); jsVar('executionID', $execution->id); +jsVar('taskID', $taskID); jsVar('ditto', $lang->task->ditto); jsVar('teamMemberError', $lang->task->error->teamMember); jsVar('vision', $config->vision); @@ -122,144 +123,12 @@ $storyPreviewBtn = span ), ); -$taskTR = array(); -$i = 0; -foreach($testStories as $storyID => $storyTitle) -{ - $taskTR[] = h::tr - ( - h::td - ( - select - ( - set::id("testStory{$i}"), - set::name("testStory[$i]"), - set::value($storyID), - set::items(array($storyID => $storyTitle)), - ), - ), - h::td - ( - select - ( - set::id("testPri{$i}"), - set::name("testPri[$i]"), - set::value($task->pri), - set::items($lang->task->priList), - ), - ), - h::td - ( - input - ( - set::id("testEstStarted{$i}"), - set::name("testEstStarted[$i]"), - set::type('date'), - set::value($task->estStarted), - ), - ), - h::td - ( - input - ( - set::id("testDeadline{$i}"), - set::name("testDeadline[$i]"), - set::type('date'), - set::value($task->deadline), - ), - ), - h::td - ( - select - ( - set::id("testAssignedTo{$i}"), - set::name("testAssignedTo[$i]"), - set::value($task->assignedTo), - set::items($members), - ), - ), - h::td - ( - input - ( - set::id("testEstimate{$i}"), - set::name("testEstimate[$i]"), - ), - ), - h::td - ( - set::class('center'), - btnGroup - ( - set::items(array( - array('icon' => 'plus', 'onclick' => 'addItem(this)'), - array('icon' => 'close', 'onclick' => 'removeItem(this)'), - )) - ) - ) - ); -} - $selectStoryRow = ''; if($execution->lifetime != 'ops' and !in_array($execution->attribute, array('request', 'review'))) { $selectStoryRow = formRow( set::id('testStoryBox'), setClass('hidden'), - formGroup - ( - set::label($lang->task->selectTestStory), - set::labelClass('selectStoryLabel'), - h::table - ( - set::class('w-full'), - h::thead - ( - h::tr - ( - h::th($lang->task->storyAB), - h::th - ( - $lang->task->pri, - set::width('70px'), - setClass(isset($requiredFields['pri']) ? 'required' : '') - ), - h::th - ( - $lang->task->estStarted, - set::width('140px'), - setClass(isset($requiredFields['estStarted']) ? 'required' : '') - ), - h::th - ( - $lang->task->deadline, - set::width('140px'), - setClass(isset($requiredFields['deadline']) ? 'required' : '') - ), - h::th - ( - $lang->task->assignedTo, - set::width('100px') - ), - h::th - ( - $lang->task->estimate, - set::width('70px'), - setClass(isset($requiredFields['estimate']) ? 'required' : '') - ), - h::th - ( - $lang->actions, - set::width('70px') - ), - ) - ), - h::tbody - ( - $taskTR - ) - ), - ) ); } diff --git a/module/task/zen.php b/module/task/zen.php index 56704b9433..87235fe34a 100644 --- a/module/task/zen.php +++ b/module/task/zen.php @@ -692,8 +692,8 @@ class taskZen extends task $task->execution = $executionID; $task->story = $storyID; $task->pri = $postData->testPri[$key]; - $task->estStarted = $estStarted; - $task->deadline = $deadline; + $task->estStarted = empty($estStarted) ? null : $estStarted; + $task->deadline = empty($deadline) ? null : $deadline; $task->assignedTo = $assignedTo; $task->estimate = (float)$postData->testEstimate[$key]; $task->left = (float)$postData->testEstimate[$key];