From 61af0f367f593c709be4afb237a7cc937df7979f Mon Sep 17 00:00:00 2001 From: liugang Date: Fri, 11 Aug 2023 17:09:48 +0800 Subject: [PATCH] * testcase: refactor the updateOrder method. --- module/testcase/control.php | 42 ++++++++++++---------------- module/testcase/view/browse.html.php | 9 +++--- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/module/testcase/control.php b/module/testcase/control.php index 0d63dff01d..71948934cf 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -2900,37 +2900,31 @@ class testcase extends control */ public function updateOrder() { - $idList = explode(',', trim($this->post->scenes, ',')); + $idList = explode(',', trim($this->post->idList, ',')); $orderBy = $this->post->orderBy; if(strpos($orderBy, 'sort') === false) return false; - /* Get list of original scenes and cases, and sort with orderBy param. */ - $scenesMap = $this->dao->select('id,sort,isCase')->from(VIEW_SCENECASE)->where('id')->in($idList)->orderBy($orderBy)->fetchAll('id'); - foreach($scenesMap as $scene) + $caseIDList = array_filter(array_map(function($id){return strpos($id, 'case_') !== false ? str_replace('case_', '', $id) : '';}, $idList)); + $sceneIDList = array_filter(array_map(function($id){return strpos($id, 'scene_') !== false ? str_replace('scene_', '', $id) : '';}, $idList)); + + if(count($caseIDList) > 1) { - /* Compare with sorted list from front-end. */ - $newID = array_shift($idList); - if($scene->id == $newID) continue; - - /* Change sort value of scene. */ - if ($scenesMap[$newID]->isCase == 2) + $caseSorts = $this->dao->select('sort')->from(TABLE_CASE)->where('id')->in($caseIDList)->orderBy($orderBy)->fetchPairs(); + foreach($caseSorts as $sort) { - $this->dao->update(TABLE_SCENE) - ->set('sort')->eq($scene->sort) - ->set('lastEditedBy')->eq($this->app->user->account) - ->set('lastEditedDate')->eq(helper::now()) - ->where('id')->eq($newID - CHANGEVALUE) - ->exec(); - continue; + $caseID = array_shift($caseIDList); + $this->dao->update(TABLE_CASE)->set('sort')->eq($sort)->where('id')->eq($caseID)->exec(); } + } - /* Change sort value of case. */ - $this->dao->update(TABLE_CASE) - ->set('sort')->eq($scene->sort) - ->set('lastEditedBy')->eq($this->app->user->account) - ->set('lastEditedDate')->eq(helper::now()) - ->where('id')->eq($newID) - ->exec(); + if(count($sceneIDList) > 1) + { + $sceneSorts = $this->dao->select('sort')->from(TABLE_SCENE)->where('id')->in($sceneIDList)->orderBy($orderBy)->fetchPairs(); + foreach($sceneSorts as $sort) + { + $sceneID = array_shift($sceneIDList); + $this->dao->update(TABLE_SCENE)->set('sort')->eq($sort)->where('id')->eq($sceneID)->exec(); + } } } diff --git a/module/testcase/view/browse.html.php b/module/testcase/view/browse.html.php index ffa1256a9a..edeb953d52 100644 --- a/module/testcase/view/browse.html.php +++ b/module/testcase/view/browse.html.php @@ -141,8 +141,9 @@ js::set('langNormal', $lang->testcase->normal); { $case->index = $index; + $prefix = $case->isCase == 1 ? 'case_' : 'scene_'; $trClass = ''; - $trAttrs = "data-id='{$case->id}' data-auto='" . zget($case, 'auto', '') . "' data-order='{$case->sort}' data-parent='{$case->parent}' data-product='{$case->product}'"; + $trAttrs = "data-id='{$prefix}{$case->id}' data-auto='" . zget($case, 'auto', '') . "' data-order='{$case->sort}' data-parent='{$case->parent}' data-product='{$case->product}'"; if($case->isCase == 2) { $trAttrs .= " data-nested='true'"; @@ -502,9 +503,9 @@ function toOrder(sourceID,targetID) } } - var scenes = newOrders.join(); - var orderBy = 'sort_desc'; - $.post(createLink('testcase', 'updateOrder'), {'scenes' : scenes, 'orderBy' : orderBy}, function(data){ + const idList = newOrders.join(); + const orderBy = 'sort_desc'; + $.post(createLink('testcase', 'updateOrder'), {idList, orderBy}, function(data){ window.location.reload(); }); }