* Code for showimport view.

This commit is contained in:
tanghucheng
2022-08-04 14:10:49 +08:00
parent 5f4699ceec
commit 2b26be85d5
4 changed files with 151 additions and 20 deletions
+93
View File
@@ -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;
}
}
+20 -11
View File
@@ -49,6 +49,7 @@ $(function()
</script>
<?php else:?>
<?php js::set('requiredFields', $requiredFields);?>
<?php js::set('allCount', $allCount);?>
<div id="mainContent" class="main-content">
<div class="main-header clearfix">
<h2><?php echo $lang->task->import;?></h2>
@@ -99,7 +100,8 @@ $(function()
$hasMultiple = false;
?>
</tbody>
<tfoot>
<tfoot class='hidden'>
<tr>
<td colspan='10' class='text-center form-actions'>
<?php
@@ -128,12 +130,18 @@ $(function()
</div>
<?php endif;?>
<script>
$.ajaxSetup({async: false});
$.get(createLink('port', 'ajaxGetTbody','model=<?php echo $model;?>&lastID=0&pagerID=<?php echo $pagerID;?>'), function(data)
{
$('#showData > tbody').append(data);
if($('#showData tbody').find('tr').hasClass('showmore') === false) $('#showData tfoot').removeClass('hidden');
$('#showData tbody').find('.picker-select').picker({chosenMode: true});
})
window.addEventListener('scroll', this.handleScroll);
function handleScroll(e)
{
var relative = 200; // 相对距离
var relative = 500; // 相对距离
$('tr.showmore').each(function()
{
var $showmore = $(this);
@@ -142,7 +150,7 @@ function handleScroll(e)
if(getScrollTop() + getWindowHeight() >= offsetTop - relative)
{
throttle(loadData($showmore), 150)
throttle(loadData($showmore), 250)
}
})
}
@@ -150,10 +158,13 @@ function handleScroll(e)
function loadData($showmore)
{
$showmore.removeClass('showmore');
$.get(createLink('port', 'ajaxGetTbody','model=<?php echo $model;?>&pagerID=<?php echo $pagerID;?>'), function(data)
var lastID = $showmore.attr('data-id');
var url = createLink('port', 'ajaxGetTbody','model=<?php echo $model;?>&lastID=' + lastID + '&pagerID=<?php echo $pagerID;?>');
$.get(url, function(data)
{
$showmore.after(data);
if($('#showData tbody').find('tr').hasClass('showmore') === false) $('#showData tfoot').removeClass('hidden');
$('#showData tbody').find('.picker-select.nopicker').picker({chosenMode: true}).removeClass('nopicker');
})
}
@@ -197,11 +208,6 @@ function getWindowHeight()
return document.compatMode == "CSS1Compat" ? windowHeight = document.documentElement.clientHeight : windowHeight = document.body.clientHeight
}
$.get(createLink('port', 'ajaxGetTbody','model=<?php echo $model;?>&pagerID=<?php echo $pagerID;?>'), function(data)
{
$('#showData > tbody').append(data);
})
$('#showData').on('mouseenter', '.picker', function(e){
var myPicker = $(this);
var field = myPicker.prev().attr('data-field');
@@ -211,12 +217,15 @@ $('#showData').on('mouseenter', '.picker', function(e){
var value = myPicker.prev().val();
if($('#' + id).attr('isInit')) return;
$.ajaxSettings.async = false;
$.get(createLink('port', 'ajaxGetOptions', 'model=<?php echo $model;?>&field=' + field + '&value=' + value + '&index=' + index), function(data)
{
$('#' + id).parent().html(data);
$('#' + id).picker({chosenMode: true});
$('#' + id).attr('isInit', true);
});
$.ajaxSettings.async = true;
})
$(function()