diff --git a/module/testcase/js/common.js b/module/testcase/js/common.js index ab596a743e..befa403a07 100644 --- a/module/testcase/js/common.js +++ b/module/testcase/js/common.js @@ -147,7 +147,8 @@ function setStories() function initSteps(selector) { /* Fix task #4832. Auto adjust textarea height. */ - $('textarea.autosize').each(function() { + $('textarea.autosize').each(function() + { $.autoResizeTextarea(this); }); @@ -177,7 +178,7 @@ function initSteps(selector) { return $steps.children('.step:not(.drag-shadow)'); }; - var refreshSteps = function() + var refreshSteps = function(skipAutoAddStep) { var parentId = 1, childId = 0; getStepsElements().each(function(idx) @@ -187,14 +188,14 @@ function initSteps(selector) var stepID; if(type == 'group') { - $step.removeClass('step-item step-step').addClass('step-group'); + $step.removeClass('step-item').removeClass('step-step').addClass('step-group'); stepID = parentId++; $step.find('.step-id').text(stepID); childId = 1; } else if(type == 'step') { - $step.removeClass('step-item step-group').addClass('step-step'); + $step.removeClass('step-item').removeClass('step-group').addClass('step-step'); stepID = parentId++; $step.find('.step-id').text(stepID); childId = 0; @@ -204,11 +205,11 @@ function initSteps(selector) if(childId) // type as child { stepID = (parentId - 1) + '.' + (childId++); - $step.removeClass('step-step step-group').addClass('step-item').find('.step-item-id').text(stepID); + $step.removeClass('step-step').removeClass('step-group').addClass('step-item').find('.step-item-id').text(stepID); } else // type as step { - $step.removeClass('step-item step-group').addClass('step-step'); + $step.removeClass('step-item').removeClass('step-group').addClass('step-step'); stepID = parentId++; $step.find('.step-id').text(stepID); } @@ -219,6 +220,25 @@ function initSteps(selector) updateStepType($step, type); }); + + /* Auto insert step to group without any steps */ + if(!skipAutoAddStep) + { + var needRefresh = false; + getStepsElements().each(function(idx) + { + var $step = $(this).attr('data-index', idx + 1); + if($step.attr('data-type') !== 'group') return; + var $nextStep = $step.next('.step:not(.drag-shadow)'); + if(!$nextStep.length || $nextStep.attr('data-type') !== 'item') + { + insertStepRow($step, 1, 'item', true); + needRefresh = true; + } + }); + + if(needRefresh) refreshSteps(true); + } }; var initSortable = function() { @@ -274,7 +294,7 @@ function initSteps(selector) var $step = $checkbox.closest('.step'); var isChecked = $checkbox.is(':checked'); var suggestType = isChecked ? 'group' : 'item'; - if(!isChecked) + if(!isChecked && ($step.find('textarea[name^="steps"]').val().length || $step.find('textarea[name^="expects"]').val().length)) { var $prevStep = $step.prev('.step:not(.drag-shadow)'); var suggestChild = $prevStep.length && $prevStep.is('.step-group') && $step.next('.step:not(.drag-shadow)').length;