diff --git a/module/port/control.php b/module/port/control.php
index 92d233bb53..d30963f48a 100644
--- a/module/port/control.php
+++ b/module/port/control.php
@@ -131,14 +131,23 @@ class port extends control
$this->display();
}
- public function ajaxGetTbody($model = '', $pagerID)
+ /**
+ * Ajax get Tbody .
+ *
+ * @param string $model
+ * @param int $pagerID
+ * @access public
+ * @return void
+ */
+ public function ajaxGetTbody($model = '', $lastID = 0, $pagerID = 1)
{
$this->loadModel($model);
$importFields = $this->config->$model->templateFields;
$fields = $this->port->initFieldList($model, $importFields, false);
$formatDatas = $this->port->format($model);
$datas = $this->port->getPageDatas($formatDatas, $pagerID);
- $html = $this->port->buildNextList($datas->datas, $fields);
+
+ $html = $this->port->buildNextList($datas->datas, $lastID, $fields, $pagerID);
die($html);
}
diff --git a/module/port/model.php b/module/port/model.php
index 70028fdf7d..b3f718a828 100644
--- a/module/port/model.php
+++ b/module/port/model.php
@@ -1304,21 +1304,30 @@ class portModel extends model
}
/**
- * buildNextList
+ * Build NextList.
*
* @param array $list
+ * @param int $lastID
* @param string $fields
* @access public
* @return void
*/
- public function buildNextList($list = array(), $fields = '')
+ public function buildNextList($list = array(), $lastID = 0, $fields = '', $pagerID = 1)
{
$html = '';
+ $key = key($list);
+ $showImportCount = $this->config->port->showImportCount;
+ $lastRow = $lastID + $key + $showImportCount;
+
foreach($list as $row => $object)
{
+ if($row <= $lastID) continue;
+ if($row > $lastRow) break;
+
+ $tmpList[$row] = $object;
$trClass = '';
- if(!isset($list[$row+1])) $trClass = 'showmore';
- $html .= "
";
$html .= '| ';
$html .= $object->id;
$html .= html::hidden("id[$row]", $object->id);
@@ -1331,9 +1340,16 @@ class portModel extends model
$name = "{$field}[$row]";
$selected = !empty($object->$field) ? $object->$field : '';
- if($control == 'select') $html .= ' | ' . html::select("$name", $values, $selected, "class='form-control picker-select' data-field='{$field}'") . ' | ';
+ $options = array();
+ if($control == 'select' or $control == 'multiple')
+ {
+ if(!empty($values[$selected])) $options = array($selected => $values[$selected]);
+ if(!empty($values[$selected]) and isset($values[0])) $options = array_slice($values, 0, 1);
+ }
- elseif($control == 'multiple') $html .= '' . html::select("{$name}[]", $values, $selected, "multiple class='form-control picker-select'") . ' | ';
+ if($control == 'select') $html .= '' . html::select("$name", $options, $selected, "class='form-control picker-select nopicker' data-field='{$field}'") . ' | ';
+
+ elseif($control == 'multiple') $html .= '' . html::select($name . "[]", $options, $selected, "multiple class='form-control picker-select nopicker' data-field='{$field}'") . ' | ';
elseif($control == 'date') $html .= '' . html::input("$name", $selected, "class='form-control form-date autocomplete='off'") . ' | ';
@@ -1343,7 +1359,11 @@ class portModel extends model
elseif($control == 'textarea') $html .= '' . html::textarea("$name", $selected, "class='form-control' cols='50' rows='1'") . ' | ';
- elseif($field == 'stepDesc' or $field == 'stepExpect') $html .= '' . $this->process4Testcase($field, $list, $row) . ' | ';
+ elseif($field == 'stepDesc' or $field == 'stepExpect')
+ {
+ $stepDesc = $this->process4Testcase($field, $tmpList, $row);
+ if($stepDesc) $html .= '' . $stepDesc . ' | ';
+ }
else $html .= '' . html::input("$name", $selected, "class='form-control autocomplete='off'") . ' | ';
}
diff --git a/module/testcase/model.php b/module/testcase/model.php
index b837f7c34f..e0090f6c60 100644
--- a/module/testcase/model.php
+++ b/module/testcase/model.php
@@ -2497,4 +2497,97 @@ class testcaseModel extends model
return $menu;
}
+
+ /**
+ * processDatas
+ *
+ * @param int $datas
+ * @access public
+ * @return void
+ */
+ public function processDatas($datas)
+ {
+ if(isset($datas->datas)) $datas = $datas->datas;
+ $columnKey = array();
+ $caseData = array();
+ $stepData = array();
+ $stepVars = 0;
+
+ foreach($datas as $row => $cellValue)
+ {
+ foreach($cellValue as $field => $value)
+ {
+ if($field != 'stepDesc' and $field != 'stepExpect') continue;
+ if($field == 'stepDesc' or $field == 'stepExpect')
+ {
+ $steps = $value;
+ if(strpos($value, "\n"))
+ {
+ $steps = explode("\n", $value);
+ }
+ elseif(strpos($value, "\r"))
+ {
+ $steps = explode("\r", $value);
+ }
+ if(is_string($steps)) $steps = explode("\n", $steps);
+
+ $stepKey = str_replace('step', '', strtolower($field));
+
+ $caseStep = array();
+ foreach($steps as $step)
+ {
+ $trimedStep = trim($step);
+ if(empty($trimedStep)) continue;
+ if(preg_match('/^(([0-9]+)\.[0-9]+)([.、]{1})/U', $step, $out) and ($field == 'stepDesc' or ($field == 'stepExpect' and isset($stepData[$row]['desc'][$out[1]]))))
+ {
+ $num = $out[1];
+ $parent = $out[2];
+ $sign = $out[3];
+ $signbit = $sign == '.' ? 1 : 3;
+ $step = trim(substr($step, strlen($num) + $signbit));
+ if(!empty($step)) $caseStep[$num]['content'] = $step;
+ $caseStep[$num]['type'] = 'item';
+ $caseStep[$parent]['type'] = 'group';
+ }
+ elseif(preg_match('/^([0-9]+)([.、]{1})/U', $step, $out) and ($field == 'stepDesc' or ($field == 'stepExpect' and isset($stepData[$row]['desc'][$out[1]]))))
+ {
+ $num = $out[1];
+ $sign = $out[2];
+ $signbit = $sign == '.' ? 1 : 3;
+ $step = trim(substr($step, strpos($step, $sign) + $signbit));
+ if(!empty($step)) $caseStep[$num]['content'] = $step;
+ $caseStep[$num]['type'] = 'step';
+ }
+ elseif(isset($num))
+ {
+ if(!isset($caseStep[$num]['content'])) $caseStep[$num]['content'] = '';
+ if(!isset($caseStep[$num]['type'])) $caseStep[$num]['type'] = 'step';
+ $caseStep[$num]['content'] .= "\n" . $step;
+ }
+ else
+ {
+ if($field == 'stepDesc')
+ {
+ $num = 1;
+ $caseStep[$num]['content'] = $step;
+ $caseStep[$num]['type'] = 'step';
+ }
+ if($field == 'stepExpect' and isset($stepData[$row]['desc']))
+ {
+ end($stepData[$row]['desc']);
+ $num = key($stepData[$row]['desc']); $caseStep[$num]['content'] = $step;
+ }
+ }
+ }
+
+ unset($num);
+ unset($sign);
+ $stepVars += count($caseStep, COUNT_RECURSIVE) - count($caseStep);
+ $stepData[$row][$stepKey] = $caseStep;
+ }
+
+ }
+ }
+ return $stepData;
+ }
}
diff --git a/module/testcase/view/showimport.html.php b/module/testcase/view/showimport.html.php
index 4135813bc4..86902fcbfd 100644
--- a/module/testcase/view/showimport.html.php
+++ b/module/testcase/view/showimport.html.php
@@ -49,6 +49,7 @@ $(function()
+
task->import;?>
@@ -99,7 +100,8 @@ $(function()
$hasMultiple = false;
?>
-
+
+
|
|