* Finish caselib showimport zin page.

This commit is contained in:
wangyuting
2023-08-03 09:16:04 +08:00
parent 5b98f7a317
commit 4eeaa971db
5 changed files with 157 additions and 14 deletions
+19 -10
View File
@@ -482,7 +482,7 @@ class caselib extends control
move_uploaded_file($file['tmpname'], $fileName);
$rows = $this->file->parseCSV($fileName);
$fields = $this->testcase->getImportFields($productID);
$fields = $this->testcase->getImportFields();
$fields = array_flip($fields);
$header = array();
foreach($rows[0] as $i => $rowValue)
@@ -520,12 +520,11 @@ class caselib extends control
if(!isset($fields[$title])) continue;
$columnKey[] = $fields[$title];
}
if(count($columnKey) != count($header)) return print(js::alert($this->lang->testcase->errorEncode));
if(count($columnKey) != count($header)) return $this->send(array('result' => 'fail', 'message' => $this->lang->testcase->errorEncode));
}
$this->session->set('fileImport', $fileName);
return print(js::locate(inlink('showImport', "libID=$libID"), 'parent.parent'));
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'load' => inlink('showImport', "libID={$libID}"), 'closeModal' => true));
}
$this->display();
}
@@ -553,12 +552,12 @@ class caselib extends control
$this->caselib->createFromImport($libID);
if($this->post->isEndPage)
{
unlink($tmpFile);
return print(js::locate(inlink('browse', "libID=$libID"), 'parent'));
@unlink($tmpFile);
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'load' => inlink('browse', "libID=$libID")));
}
else
{
return print(js::locate(inlink('showImport', "libID=$libID&pagerID=" . ($this->post->pagerID + 1) . "&maxImport=$maxImport&insert=" . zget($_POST, 'insert', '')), 'parent'));
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'load' => inlink('showImport', "libID=$libID&pagerID=" . ((int)$this->post->pagerID + 1) . "&maxImport=$maxImport&insert=" . zget($_POST, 'insert', ''))));
}
}
@@ -668,7 +667,11 @@ class caselib extends control
$sign = $out[3];
$signbit = $sign == '.' ? 1 : 3;
$step = trim(substr($step, strlen($num) + $signbit));
if(!empty($step)) $caseStep[$num]['content'] = $step;
if(!empty($step))
{
$caseStep[$num]['content'] = $step;
$caseStep[$num]['number'] = $num;
}
$caseStep[$num]['type'] = 'item';
$caseStep[$parent]['type'] = 'group';
}
@@ -678,7 +681,11 @@ class caselib extends control
$sign = $out[2];
$signbit = $sign == '.' ? 1 : 3;
$step = trim(substr($step, strlen($num) + $signbit));
if(!empty($step)) $caseStep[$num]['content'] = $step;
if(!empty($step))
{
$caseStep[$num]['content'] = $step;
$caseStep[$num]['number'] = $num;
}
$caseStep[$num]['type'] = 'step';
}
elseif(isset($num))
@@ -693,19 +700,21 @@ class caselib extends control
$num = 1;
$caseStep[$num]['content'] = $step;
$caseStep[$num]['type'] = 'step';
$caseStep[$num]['number'] = $num;
}
if($field == 'stepExpect' and isset($stepData[$row]['desc']))
{
end($stepData[$row]['desc']);
$num = key($stepData[$row]['desc']);
$caseStep[$num]['content'] = $step;
$caseStep[$num]['number'] = $num;
}
}
}
unset($num);
unset($sign);
$stepVars += count($caseStep, COUNT_RECURSIVE) - count($caseStep);
$stepData[$row][$stepKey] = $caseStep;
$stepData[$row][$stepKey] = array_values($caseStep);
}
}
+26
View File
@@ -0,0 +1,26 @@
window.handleRenderRow = function($row, index, row)
{
let stepDesc = "<input class='hidden' type='text' name='lib[" + row.id + "]' value='" + libID + "'/>";
let stepExpect = '';
const descs = stepData[index + 1]['desc'];
const expect = stepData[index + 1]['expect'];
if(descs.length)
{
$.each(descs, function(id, desc)
{
if(!desc.content) return;
stepDesc += "<div class='flex col'><div class='cell flex border p-2'><div class='cell center'><input class='hidden' type='text' name='stepType[" + row.id + "][" + desc.number + "]' value='" + desc.type + "' /><span>" + desc.number + "、</span></div><div class='cell center flex-1'><textarea class='form-control form-batch-input' rows='10' name='desc[" + row.id + "][" + desc.number + "]' style='min-height: 32px; height:2rem;'>" + desc.content + "</textarea></div></div></div>";
stepExpect += "<div class='flex col'><div class='cell flex border p-2'><textarea class='form-control form-batch-input " + (desc.type != 'group' ? '' : 'disabled') + "'" + (desc.type != 'group' ? '' : 'readonly=readonly') + "' rows='10' name='expect[" + row.id + "][" + desc.number + "]' style='min-height: 32px; height:2rem;'>" + (expect[id]['content'] ? expect[id]['content'] : '') + "</textarea></div></div></div>";
})
}
else
{
stepDesc += "<div class='flex col'><div class='cell flex border p-2'><div class='cell center'><input class='hidden' type='text' name='stepType[" + row.id + "][1]' value='step' /><span>1、</span></div><div class='cell center flex-1'><textarea class='form-control form-batch-input' rows='10' name='desc[" + row.id + "][1]' style='min-height: 32px; height:2rem;'></textarea></div></div></div>";
stepExpect += "<div class='flex col'><div class='cell flex border p-2'><textarea class='form-control form-batch-input' rows='10' name='expect[" + row.id + "][1]' style='min-height: 32px; height:2rem;'></textarea></div></div>";
}
$row.find('td[data-name=stepDesc]').html(stepDesc);
$row.find('td[data-name=stepExpect]').html(stepExpect);
}
+1 -2
View File
@@ -376,7 +376,6 @@ class caselibModel extends model
$caseData->title = $data->title[$key];
$caseData->pri = (int)$data->pri[$key];
$caseData->type = $data->type[$key];
$caseData->status = $data->status[$key];
$caseData->stage = join(',', $data->stage[$key]);
$caseData->keywords = $data->keywords[$key];
$caseData->frequency = 1;
@@ -518,7 +517,7 @@ class caselibModel extends model
if($this->post->isEndPage)
{
unlink($this->session->fileImport);
if($this->session->fileImport) @unlink($this->session->fileImport);
unset($_SESSION['fileImport']);
}
}
+109
View File
@@ -0,0 +1,109 @@
<?php
declare(strict_types=1);
/**
* The showimport view file of caselib module of ZenTaoPMS.
* @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
* @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
* @author Yuting Wang <wangyuting@easycorp.ltd>
* @package caselib
* @link https://www.zentao.net
*/
namespace zin;
jsVar('stepData', $stepData);
jsVar('libID', $libID);
$items[] = array
(
'name' => 'id',
'label' => $lang->idAB,
'control' => 'index',
'width' => '32px'
);
$items[] = array
(
'name' => 'title',
'label' => $lang->testcase->title,
'width' => '240px',
);
$items[] = array
(
'name' => 'module',
'label' => $lang->testcase->module,
'control' => 'picker',
'items' => $modules,
'width' => '200px',
);
$items[] = array
(
'name' => 'type',
'label' => $lang->testcase->type,
'control' => 'picker',
'items' => $lang->testcase->typeList,
'width' => '160px',
);
$items[] = array
(
'name' => 'pri',
'label' => $lang->testcase->pri,
'control' => 'pripicker',
'items' => $lang->testcase->priList,
'width' => '80px',
);
$items[] = array
(
'name' => 'precondition',
'label' => $lang->testcase->precondition,
'control' => 'textarea',
'width' => '240px',
);
$items[] = array
(
'name' => 'keywords',
'label' => $lang->testcase->keywords,
'width' => '240px',
);
$items[] = array
(
'name' => 'stage',
'label' => $lang->testcase->stage,
'control' => 'picker',
'multiple' => true,
'items' => $lang->testcase->stageList,
'width' => '240px',
);
$items[] = array
(
'name' => 'stepDesc',
'label' => $lang->testcase->stepDesc,
'width' => '320px'
);
$items[] = array
(
'name' => 'stepExpect',
'label' => $lang->testcase->stepExpect,
'width' => '320px'
);
formBatchPanel
(
set::title($lang->caselib->import),
set::items($items),
set::data(array_values($caseData)),
set::mode('edit'),
set::actionsText(false),
set::onRenderRow(jsRaw('handleRenderRow')),
input(set::class('hidden'), set::name('isEndPage'), set::value($isEndPage ? '1' : '0')),
input(set::class('hidden'), set::name('pagerID'), set::value($pagerID)),
$dataInsert !== '' ? input(set::class('hidden'), set::name('insert'), set::value($dataInsert)) : null
);
render();
+2 -2
View File
@@ -1811,8 +1811,8 @@ class testcaseModel extends model
*/
public function getImportFields($productID = 0)
{
$product = $this->loadModel('product')->getById($productID);
if($product->type != 'normal') $this->lang->testcase->branch = $this->lang->product->branchName[$product->type];
$product = $this->loadModel('product')->getById($productID);
if($product && $product->type != 'normal') $this->lang->testcase->branch = $this->lang->product->branchName[$product->type];
$caseLang = $this->lang->testcase;
$caseConfig = $this->config->testcase;