124 lines
4.2 KiB
JavaScript
124 lines
4.2 KiB
JavaScript
$(function()
|
|
{
|
|
loadCurrentPage
|
|
({
|
|
url: resultsLink,
|
|
selector: '#casesResults',
|
|
partial: true,
|
|
success : function()
|
|
{
|
|
var $resultTrs = $('#resultsContainer').find('#casesResults tr');
|
|
if($resultTrs.length != 0 && $resultTrs.first().data('status') == 'ready')
|
|
{
|
|
$resultTrs.first().trigger('click');
|
|
}
|
|
}
|
|
});
|
|
|
|
$('#resultsContainer').off('click', '.result-item').on('click', '.result-item', toggleShowResults);
|
|
$('#resultsContainer').off('click', '.check-all .checkbox-primary').on('click', '.check-all .checkbox-primary', toggleCheckAll);
|
|
$('#resultsContainer').off('click', '.check-item').on('click', '.check-item', toggleCheckChildItem);
|
|
$('#resultsContainer').off('click', '.to-bug-button').on('click', '.to-bug-button', createBug);
|
|
});
|
|
|
|
/**
|
|
* Toggle results show or hide.
|
|
*
|
|
* @param event $event
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function toggleShowResults(event)
|
|
{
|
|
var $target = $(event.target).closest('tr');
|
|
if($target.data('status') == 'running') return;
|
|
|
|
$target.toggleClass('is-collapsed');
|
|
$target.toggleClass('is-expanded');
|
|
$target.toggleClass('show-detail');
|
|
var show = $target.hasClass('show-detail');
|
|
$target.next('.result-detail').toggleClass('hidden', !show);
|
|
$target.find('.collapse-handle').toggleClass('icon-angle-down', !show).toggleClass('icon-angle-top', show);
|
|
}
|
|
|
|
/**
|
|
* Create bug from fail case.
|
|
*
|
|
* @param event $event
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function createBug(event)
|
|
{
|
|
var $form = $(event.target).closest('form');
|
|
var stepIdList = '';
|
|
$form.find('.step .step-id input[type="checkbox"]:checked').each(function()
|
|
{
|
|
if($(this).prop('checked')) stepIdList += $(this).val() + '_';
|
|
});
|
|
|
|
const formData = new FormData();
|
|
formData.append('stepIdList', stepIdList);
|
|
|
|
var link = $.createLink('bug', 'create', $form.data('params'));
|
|
postAndLoadPage(link, formData, '', {app: tab == 'my' ? 'qa' : tab});
|
|
}
|
|
|
|
/**
|
|
* Toggle check all.
|
|
*
|
|
* @param event $event
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function toggleCheckAll(event)
|
|
{
|
|
var $checkAll = $(event.target).closest('.check-all').find("input[type='checkbox']");
|
|
var isChecked = $checkAll.prop('checked');
|
|
|
|
$checkAll.closest('.resultSteps').find('.step').find('input[type=checkbox]').prop('checked', isChecked);
|
|
}
|
|
|
|
/**
|
|
* Toggle child item check status.
|
|
*
|
|
* @param event $event
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function toggleCheckChildItem(event)
|
|
{
|
|
var $target = $(event.target).closest('.step-id').find("input[type='checkbox']");
|
|
var $step = $target.closest('.step');
|
|
var isChecked = $target.prop('checked');
|
|
|
|
var grade = $step.data('grade');
|
|
var $next = $target.closest('.step').next();
|
|
while(grade < $next.data('grade'))
|
|
{
|
|
$next.find("input[type='checkbox']").prop('checked', isChecked);
|
|
$next = $next.next();
|
|
}
|
|
|
|
var parentStepID = $step.data('parent');
|
|
if($step.data('id') != 0 && parentStepID != 0)
|
|
{
|
|
var allSiblings = $target.closest('.steps-body').find('[data-parent="' + parentStepID + '"]').length
|
|
var checkedSiblings = $target.closest('.steps-body').find('[data-parent="' + parentStepID + '"]' + ' input[type=checkbox]:checked').length
|
|
var $parentStep = $target.closest('.step').prevAll('[data-id="' + parentStepID + '"]').find('input[type=checkbox]');
|
|
var siblingsChecked = !!(allSiblings == checkedSiblings);
|
|
if(!$parentStep.prop('checked') && siblingsChecked)
|
|
{
|
|
$parentStep.trigger('click');
|
|
}
|
|
else
|
|
{
|
|
$parentStep.prop('checked', false);
|
|
if($parentStep.closest('.step').data('parent') != 0) $target.closest('.step').prevAll('[data-id="' + $parentStep.closest('.step').data('parent') + '"]').find('input[type=checkbox]').prop('checked', false);
|
|
}
|
|
}
|
|
|
|
var $resultSteps = $target.closest('.resultSteps');
|
|
$resultSteps.find('.check-all input[type=checkbox]').prop('checked', $resultSteps.find('.check-item input[type=checkbox]').length == $resultSteps.find('.check-item input[type=checkbox]:checked').length);
|
|
}
|