var newRowID = 0; function loadLibModules(libID) { link = createLink('tree', 'ajaxGetOptionMenu', 'libID=' + libID + '&viewtype=caselib&branch=0&rootModuleID=0&returnType=html&fieldID=&needManage=true'); $('#moduleIdBox').load(link, function() { $(this).find('select').chosen() if(typeof(caseModule) == 'string') $('#moduleIdBox').prepend("" + caseModule + "") }); } /** * Init testcase steps in form * * @param string selector * @access public * @return void */ function initSteps(selector) { var $steps = $(selector || '#steps'); var $stepTemplate = $('#stepTemplate').detach().removeClass('template').attr('id', null); var initSortableCallTask = null; var groupNameText = $steps.data('groupName'); var insertStepRow = function($row, count, type) { if(count === undefined) count = 1; for(var i = 0; i < count; ++i) { var $step = $stepTemplate.clone(); if($row) $row.after($step); else $steps.append($step); $step.addClass('step-new'); setTimeout(function(){$step.find('.step-steps').focus();}, 10); } }; var updateStepType = function($step, type) { var targetIsGroup = type =='group'; $step.attr('data-type', type).find('.step-steps').toggleClass('autosize', !targetIsGroup).attr('placeholder', targetIsGroup ? groupNameText : null).focus(); var displayType = (type =='item' && $step.hasClass('step-step')) ? 'step' : type; var activeTypeText = $step.find('.step-type-menu > a').removeClass('active').filter('[data-value="' + displayType + '"]').addClass('active').text(); $step.find('.step-type-current > span').text(activeTypeText); }; var refreshSteps = function() { var parentId = 1, childId = 0; $steps.children('.step:not(.drag-shadow)').each(function(idx) { var $step = $(this); var type = $step.find('.step-type').val(); var stepID; if(type == 'group') { $step.removeClass('step-item 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'); stepID = parentId++; $step.find('.step-id').text(stepID); childId = 0; } else { if(childId) // as child { stepID = (parentId - 1) + '.' + (childId++); $step.removeClass('step-step step-group').addClass('step-item').find('.step-item-id').text(stepID); } else { $step.removeClass('step-item step-group').addClass('step-step'); stepID = parentId++; $step.find('.step-id').text(stepID); } } $step.find('[name^="steps["]').attr('name', "steps[" +stepID + ']'); $step.find('[name^="stepType["]').attr('name', "stepType[" +stepID + ']'); $step.find('[name^="expects["]').attr('name', "expects[" +stepID + ']'); updateStepType($step, type); }); }; var initSortable = function() { var isMouseDown = false; var $moveStep = null, moveOrder = 0; $steps.on('mousedown', '.btn-step-move', function() { isMouseDown = true; $moveStep = $(this).closest('.step').addClass('drag-row'); $(document).off('.sortable').one('mouseup.sortable', function() { isMouseDown = false; $moveStep.removeClass('drag-row'); $steps.removeClass('sortable-sorting'); $moveStep = null; refreshSteps(); }); $steps.addClass('sortable-sorting'); }).on('mouseenter', '.step:not(.drag-row)', function() { if(!isMouseDown) return; var $targetStep = $(this); $steps.children('.step').each(function(idx) { $(this).data('order', idx); }); moveOrder = $moveStep.data('order'); var targetOrder = $targetStep.data('order'); if(moveOrder === targetOrder) return; else if(targetOrder > moveOrder) { $targetStep.after($moveStep); } else if(targetOrder < moveOrder) { $targetStep.before($moveStep); } }); } $steps.on('click', '.btn-step-add', function() { insertStepRow($(this).closest('.step')); refreshSteps(); }).on('click', '.btn-step-delete', function() { if($('tbody#steps tr.step').size() == 1) return false; $(this).closest('.step').remove(); refreshSteps(); }).on('click', '.step-type-menu a', function() { var $a = $(this); $a.closest('.step').find('.step-type').val($a.data('value')); refreshSteps(); }); initSortable(); refreshSteps(); } /** * Update the step id. * * @access public * @return void */ function updateStepID() { var i = 1; $('.stepID').each(function(){$(this).html(i ++)}); } $(function() { $('[data-toggle=tooltip]').tooltip(); initSteps(); $('#pri').on('change', function() { var $select = $(this); var $selector = $select.closest('.pri-selector'); var value = $select.val(); $selector.find('.pri-text').html('' + value + ''); }); })