| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761 |
- $(function()
- {
- $('#subNavbar a[data-toggle=dropdown]').parent().addClass('dropdown dropdown-hover');
- });
- function changeProduct(event)
- {
- const productID = $(event.target).val();
- if(productID == undefined) return false;
- if(typeof(changeProductConfirmed) != 'undefined' && !changeProductConfirmed && productID != bug.productID && (typeof(isShadowProduct) == 'undefined' || !isShadowProduct))
- {
- zui.Modal.confirm({message: confirmChangeProduct, onResult: function(result)
- {
- if(result)
- {
- changeProductConfirmed = true; // Only notice the user one time.
- changeProduct(event);
- }
- else
- {
- $('[name=product]').zui('picker').$.setValue(bug.product); // Revert old product id if confirm is no.
- }
- }});
- }
- else
- {
- loadProductBranches(productID)
- loadProductModules(productID);
- loadProductProjects(productID);
- loadExecutions(productID);
- loadAssignedTo(productID);
- loadProductBuilds(productID);
- loadProductPlans(productID);
- loadProductCases(productID);
- loadProductStories(productID, bug.storyID);
- loadProductBugs(productID, bug.id);
- }
- }
- function changeBranch(event)
- {
- const productID = $('[name="product"]').val();
- loadProductModules(productID);
- loadProductProjects(productID);
- loadExecutions(productID);
- loadAssignedTo(productID);
- loadProductBuilds(productID);
- loadProductPlans(productID);
- loadProductCases(productID);
- loadProductStories(productID, bug.storyID);
- }
- function changeProject(event)
- {
- const projectID = $(event.target).val();
- const projectInfoLink = $.createLink('bug', 'ajaxGetProjectInfo', 'projectID=' + projectID);
- $.getJSON(projectInfoLink, function(project)
- {
- $('#executionBox').closest('tr').toggleClass('hidden', project.multiple == 0);
- });
- if(config.currentMethod == 'edit' && isShadowProduct)
- {
- const productIDLink = $.createLink('bug', 'ajaxGetProductIDByProject', 'projectID=' + projectID);
- $.get(productIDLink, function(id)
- {
- const productID = id;
- const $productPicker = $('.detail-side [name=product]').zui('picker');
- $productPicker.$.setValue(productID);
- loadExecutionLabel(projectID);
- loadExecutions(productID, projectID);
- loadAssignedTo(productID, projectID);
- });
- }
- else
- {
- const productID = $('[name="product"]').val();
- loadExecutionLabel(projectID);
- loadExecutions(productID, projectID);
- loadAssignedTo(productID, projectID);
- }
- }
- function changeExecution(event)
- {
- const productID = $('[name="product"]').val();
- const projectID = $('[name="project"]').val() == 'undefined' ? 0 : $('[name="project"]').val();
- const executionID = $(event.target).val();
- if(executionID != 0)
- {
- loadProjectByExecutionID(executionID);
- loadExecutionStories(executionID);
- loadExecutionBuilds(executionID);
- loadAssignedToByExecution(executionID);
- loadTestTasks(productID, executionID);
- }
- else
- {
- loadProductStories(productID, bug.storyID);
- loadTestTasks(productID);
- if(projectID == 0)
- {
- loadAssignedToByProduct(productID);
- loadProductBuilds(productID);
- }
- else
- {
- loadAssignedToByProject(projectID);
- loadProjectBuilds(projectID);
- }
- }
- loadExecutionTasks(executionID);
- }
- function changeModule(event)
- {
- const moduleID = $(event.target).val();
- const productID = $('[name="product"]').val();
- const storyID = $('[name="story"]').val();
- let executionID = $('[name="execution"]').val();
- if(typeof(executionID) == 'undefined') executionID = 0;
- loadAssignedToByModule(moduleID, productID);
- loadProductStories(productID, storyID, moduleID, executionID);
- }
- function changeRegion(event)
- {
- const regionID = $(event.target).val();
- const url = $.createLink('kanban', 'ajaxGetLanes', 'regionID=' + regionID + '&type=bug&field=lane');
- $.get(url, function(lane)
- {
- if(!lane) lane = "<select id='lane' name='lane' class='form-control'></select>";
- $('#lane').replaceWith(lane);
- });
- }
- function refreshModule(event)
- {
- const productID = $('[name="product"]').val();
- loadProductModules(productID);
- }
- window.refreshProductBuild = function(event)
- {
- const productID = $('[name="product"]').val();
- loadProductBuilds(productID);
- }
- window.refreshExecutionBuild = function(event)
- {
- const executionID = $('[name="execution"]').val();
- loadExecutionBuilds(executionID);
- }
- function loadProductBranches(productID)
- {
- const branchStatus = methodName == 'create' ? 'active' : 'all';
- const oldBranch = methodName == 'edit' ? bug.branch : 0;
- let param = "productID=" + productID + "&oldBranch=" + oldBranch + "¶m=" + branchStatus;
- if(typeof(tab) != 'undefined' && (tab == 'execution' || tab == 'project')) param += "&projectID=" + bug[tab];
- $.getJSON($.createLink('branch', 'ajaxGetBranches', param), function(data)
- {
- if(data.length > 0)
- {
- if($('#branchPicker').length > 0)
- {
- const $branchPicker = $('#branchPicker').zui('picker');
- $branchPicker.render({items: data, defaultValue: data[0].value});
- $branchPicker.$.setValue('0');
- }
- else
- {
- $('[name="product"]').closest('.input-group').append($('<div id="branchPicker" class="form-group-wrapper picker-box"></div>').picker({name: 'branch', items: data, defaultValue: data[0].value, required: true}));
- }
- $('#branchPicker').css('width', methodName == 'create' ? '120px' : '70px');
- }
- else
- {
- $('#branchPicker').zui('picker').destroy();
- $('#branchPicker').remove();
- }
- });
- }
- function loadProductModules(productID)
- {
- if(methodName == 'edit')
- {
- const moduleID = $('[name="module"]').val();
- }
- let branch = $('[name="branch"]').val();
- if(typeof(branch) == 'undefined') branch = 0;
- if(typeof(moduleID) == 'undefined') moduleID = 0;
- const link = $.createLink('tree', 'ajaxGetOptionMenu', 'productID=' + productID + '&viewtype=bug&branch=' + branch + '&rootModuleID=0&returnType=items&fieldID=&extra=nodeleted¤tModuleID=' + moduleID);
- $.getJSON(link, function(data)
- {
- let moduleID = $('[name="module"]').val();
- let $modulePicker = $('[name="module"]').zui('picker');
- $modulePicker.render({items: data});
- if(moduleID != 0) $modulePicker.$.setValue('0');
- $('#manageModule').toggleClass('hidden', data.length > 1);
- if(data.length <= 1) $('#manageModule').attr('href', $.createLink('tree', 'browse', 'rootID=' + productID + '¤tModuleID=' + moduleID + '&branch=' + branch));
- });
- }
- function loadProductProjects(productID)
- {
- let branch = $('[name="branch"]').val();
- if(typeof(branch) == 'undefined') branch = 0;
- const link = $.createLink('bug', 'ajaxGetProjects', 'productID=' + productID + '&branch=' + branch + '&projectID=' + $('[name="project"]').val());
- $.getJSON(link, function(data)
- {
- let project = $('[name="project"]').val();
- let $projectPicker = $('[name="project"]').zui('picker');
- $projectPicker.render({items: data});
- $projectPicker.$.setValue(project != '0' ? project : '');
- });
- }
- function loadExecutions(productID, projectID = 0)
- {
- let branch = $('[name="branch"]').val();
- if(typeof(branch) == 'undefined') branch = 0;
- const isMultipleProject = projectID != 0 && projectExecutionPairs[projectID] !== undefined;
- $('#executionBox').toggle(!isMultipleProject);
- if(projectID == 0) projectID = $('[name="project"]').val();
- const link = $.createLink('product', 'ajaxGetExecutions', 'productID=' + productID + '&projectID=' + projectID + '&branch=' + branch + '&pageType=&executionID=&from=&mode=stagefilter');
- $.getJSON(link, function(data)
- {
- let executionID = isMultipleProject ? projectExecutionPairs[projectID] : $('[name=execution]').val();
- let $executionPicker = $('[name="execution"]').zui('picker');
- $executionPicker.render({items: data});
- $executionPicker.$.setValue(executionID != '0' ? executionID : '');
- });
- if($('[name="execution"]').val() == 0) projectID != 0 ? loadProjectBuilds(projectID) : loadProductBuilds(productID);
- }
- function loadExecutionLabel(projectID)
- {
- if(methodName == 'create' && projectID > 0)
- {
- const link = $.createLink('bug', 'ajaxGetExecutionLang', 'projectID=' + projectID);
- $.post(link, function(executionLang)
- {
- $('#executionBox .form-label').html(executionLang);
- })
- }
- }
- function loadAssignedTo(productID, projectID = 0, executionID = 0)
- {
- if(projectID != 0)
- {
- loadAssignedToByProject(projectID);
- }
- else if(executionID != 0)
- {
- loadAssignedToByExecution(executionID);
- }
- else
- {
- loadAssignedToByProduct(productID);
- }
- }
- function loadAssignedToByProduct(productID)
- {
- let branch = $('[name="branch"]').val();
- if(typeof(branch) == 'undefined') branch = 0;
- const link = $.createLink('bug', 'ajaxGetProductMembers', 'productID=' + productID + '&selectedUser=' + $('[name="assignedTo"]').val() + '&branchID=' + branch);
- $.getJSON(link, function(data)
- {
- let assignedTo = $('[name="assignedTo"]').val();
- let $assignedToPicker = $('[name="assignedTo"]').zui('picker');
- $assignedToPicker.render({items: data});
- $assignedToPicker.$.setValue(assignedTo);
- });
- }
- function loadAssignedToByProject(projectID)
- {
- const link = $.createLink('bug', 'ajaxGetProjectTeamMembers', 'projectID=' + projectID);
- $.getJSON(link, function(data)
- {
- let assignedTo = $('[name="assignedTo"]').val();
- let $assignedToPicker = $('[name="assignedTo"]').zui('picker');
- $assignedToPicker.render({items: data});
- $assignedToPicker.$.setValue(assignedTo);
- });
- }
- function loadAssignedToByExecution(executionID)
- {
- const link = $.createLink('bug', 'ajaxLoadAssignedTo', 'executionID=' + executionID);
- $.getJSON(link, function(data)
- {
- let assignedTo = $('[name="assignedTo"]').val();
- let $assignedToPicker = $('[name="assignedTo"]').zui('picker');
- $assignedToPicker.render({items: data});
- $assignedToPicker.$.setValue(assignedTo);
- });
- }
- function loadAssignedToByModule(moduleID, productID)
- {
- if(typeof(productID) == 'undefined') productID = $('[name="product"]').val();
- if(typeof(moduleID) == 'undefined') moduleID = $('[name="module"]').val();
- const link = $.createLink('bug', 'ajaxGetModuleOwner', 'moduleID=' + moduleID + '&productID=' + productID);
- $.getJSON(link, function(owner)
- {
- let account = owner.account;
- let realName = owner.realname;
- let isExist = false;
- let $assignedToPicker = $('[name="assignedTo"]').zui('picker');
- let assignedToItems = $assignedToPicker.options.items;
- let count = assignedToItems.length;
- for(var i = 0; i < count; i++)
- {
- if(assignedToItems[i].value == account)
- {
- isExist = true;
- break;
- }
- }
- if(!isExist && account)
- {
- assignedToItems.push({text: realName, value: account, keys: realName, key: account});
- $assignedToPicker.render({items: Array.from(assignedToItems)});
- }
- if(!bug.assignedTo) $assignedToPicker.$.setValue(account);
- });
- }
- function loadProjectBuilds(projectID)
- {
- let branch = $('[name="branch"]').val();
- if(typeof(branch) == 'undefined') branch = 0;
- const productID = $('[name="product"]').val();
- const oldOpenedBuild = $('[name^="openedBuild"]').val() ? $('[name^="openedBuild"]').val().toString() : 0;
- if(methodName == 'create')
- {
- const link = $.createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=&branch=' + branch);
- $.getJSON(link, function(data)
- {
- let buildID = $('[name^="openedBuild"]').val();
- let $buildPicker = $('[name^="openedBuild"]').zui('picker');
- $buildPicker.render({items: data});
- $buildPicker.$.setValue(buildID);
- loadBuildActions();
- })
- }
- else
- {
- const openedLink = $.createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch);
- $.getJSON(openedLink, function(data)
- {
- let $buildPicker = $('[name^="openedBuild"]').zui('picker');
- $buildPicker.render({items: data});
- $buildPicker.$.setValue(oldOpenedBuild);
- loadBuildActions();
- })
- const oldResolvedBuild = $('[name="resolvedBuild"]').val() ? $('[name="resolvedBuild"]').val().toString() : 0;
- const resolvedLink = $.createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild + '&branch=' + branch);
- $.getJSON(resolvedLink, function(data)
- {
- let $buildPicker = $('[name="resolvedBuild"]').zui('picker');
- $buildPicker.render({items: data});
- $buildPicker.$.setValue(oldResolvedBuild);
- });
- }
- }
- function loadProductBuilds(productID, type = 'normal', buildBox = 'all')
- {
- let branch = $('[name="branch"]').val();
- if(typeof(branch) == 'undefined') branch = 0;
- if(methodName == 'create')
- {
- if(buildBox == 'all' || buildBox == 'openedBuild')
- {
- const link = $.createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=openedBuild&build=&branch=' + (branch == 0 ? 'all' : branch) + '&type=' + type);
- $.getJSON(link, function(data)
- {
- let buildID = $('[name^="openedBuild"]').val();
- let $buildPicker = $('[name^="openedBuild"]').zui('picker');
- $buildPicker.render({items: data});
- $buildPicker.$.setValue(buildID);
- loadBuildActions();
- });
- }
- }
- else
- {
- if(buildBox == 'all' || buildBox == 'openedBuild')
- {
- const openedLink = $.createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=openedBuild&build=' + bug.openedBuild + '&branch=' + (branch == 0 ? 'all' : branch) + '&type=' + type);
- $.getJSON(openedLink, function(data)
- {
- let buildID = $('[name^="openedBuild"]').val().toString();
- let $buildPicker = $('[name^="openedBuild"]').zui('picker');
- $buildPicker.render({items: data});
- $buildPicker.$.setValue(buildID);
- });
- }
- if(buildBox == 'all' || buildBox == 'resolvedBuild')
- {
- const oldResolvedBuild = $('[name="resolvedBuild"]').val() ? $('[name="resolvedBuild"]').val().toString() : 0;
- const resolvedLink = $.createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild + '&branch=' + branch + '&type=' + type);
- $.getJSON(resolvedLink, function(data)
- {
- let $buildPicker = $('[name="resolvedBuild"]').zui('picker');
- $buildPicker.render({items: data});
- $buildPicker.$.setValue(oldResolvedBuild);
- });
- }
- }
- }
- function loadExecutionBuilds(executionID, num)
- {
- if(typeof(num) == 'undefined') num = '';
- let branch = num != '' ? $('#branch' + num).val() : $('[name="branch"]').val();
- let productID = num != '' ? $('#product' + num).val() : $('[name="product"]').val();
- const oldOpenedBuild = $('[name^="openedBuild"]' + num).val() ? $('[name^="openedBuild"]' + num).val().toString() : 0;
- if(typeof(branch) == 'undefined') branch = 'all';
- if(typeof(productID) == 'undefined') productID = 0;
- if(methodName == 'create')
- {
- const link = $.createLink('build', 'ajaxGetExecutionBuilds', 'executionID=' + executionID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + "&branch=" + branch + "&needCreate=true");
- $.getJSON(link, function(data)
- {
- let $buildPicker = $('[name^="openedBuild"]').zui('picker');
- $buildPicker.render({items: data});
- $buildPicker.$.setValue(oldOpenedBuild);
- loadBuildActions();
- });
- }
- else
- {
- const openedLink = $.createLink('build', 'ajaxGetExecutionBuilds', 'executionID=' + executionID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch + '&needCreate=false&type=normal&number=' + num);
- $.getJSON(openedLink, function(data)
- {
- let $buildPicker = $('[name^="openedBuild"]').zui('picker');
- $buildPicker.render({items: data});
- $buildPicker.$.setValue(oldOpenedBuild);
- });
- const oldResolvedBuild = $('[name="resolvedBuild"]').val() ? $('[name="resolvedBuild"]').val().toString() : 0;
- const resolvedLink = $.createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild + '&branch=' + branch);
- $.getJSON(resolvedLink, function(data)
- {
- let $buildPicker = $('[name^="resolvedBuild"]').zui('picker');
- $buildPicker.render({items: data});
- $buildPicker.$.setValue(oldResolvedBuild);
- });
- }
- }
- function loadProductPlans(productID)
- {
- if($('[name="plan"]').length == 0) return;
- let branch = $('[name="branch"]').val();
- if(typeof(branch) == 'undefined') branch = 0;
- const link = $.createLink('productplan', 'ajaxGetProductplans', 'productID=' + productID + '&branch=' + branch);
- $.getJSON(link, function(data)
- {
- if(data)
- {
- let planID = $('[name="plan"]').val();
- let $planPicker = $('[name="plan"]').zui('picker');
- $planPicker.render({items: data});
- $planPicker.$.setValue(planID);
- }
- });
- }
- function loadProductStories(productID, storyID, moduleID = 0, executionID = 0)
- {
- let branch = $('[name="branch"]').val();
- if(typeof(branch) == 'undefined') branch = 0;
- const link = $.createLink('story', 'ajaxGetProductStories', 'productID=' + productID + '&branch=' + branch + '&moduleID=' + moduleID + '&storyID=' + storyID + '&onlyOption=false&status=active&limit=0&type=full&hasParent=0&executionID=' + executionID);
- $.getJSON(link, function(data)
- {
- let $storyPicker = $('[name="story"]').zui('picker');
- $storyPicker.render({items: data});
- $storyPicker.$.setValue(storyID);
- });
- }
- function loadExecutionStories(executionID)
- {
- const productID = $('[name="product"]').val();
- let branch = $('[name="branch"]').val();
- if(typeof(branch) == 'undefined') branch = 0;
- const link = $.createLink('story', 'ajaxGetExecutionStories', 'executionID=' + executionID + '&productID=' + productID + '&branch=' + branch + '&moduleID=0&storyID=' + bug.storyID + '&number=&type=full&status=all&from=bug');
- $.getJSON(link, function(data)
- {
- let story = $('[name="story"]').val();
- let $storyPicker = $('[name="story"]').zui('picker');
- $storyPicker.render({items: data});
- $storyPicker.$.setValue(story);
- });
- }
- function loadExecutionTasks(executionID)
- {
- const link = $.createLink('task', 'ajaxGetExecutionTasks', 'executionID=' + executionID);
- $.post(link, function(data)
- {
- let $taskPicker = $('[name="task"]').zui('picker');
- if(data)
- {
- data = JSON.parse(data);
- $taskPicker.render({items: data});
- }
- })
- }
- function loadProjectByExecutionID(executionID)
- {
- const link = $.createLink('project', 'ajaxGetPairsByExecution', 'executionID=' + executionID, 'json');
- $.post(link, function(data)
- {
- if($('[name="project"]').val() == data.id.toString()) return;
- $projectPicker = $('[name="project"]').zui('picker');
- $projectPicker.$.setValue(data.id.toString());
- }, 'json')
- }
- function loadTestTasks(productID, executionID)
- {
- if(!$('#testtaskBox').length) return;
- if(typeof(executionID) == 'undefined') executionID = 0;
- const link = $.createLink('testtask', 'ajaxGetTestTasks', 'productID=' + productID + '&executionID=' + executionID + '&testtaskID=' + bug.testtask);
- $.getJSON(link, function(result)
- {
- let testtask = $('[name="testtask"]').val();
- let $testtaskPicker = $('[name="testtask"]').zui('picker');
- if(result.tasks)
- {
- $testtaskPicker.render({items: result.tasks});
- $testtaskPicker.$.setValue(testtask);
- }
- });
- }
- function loadAllBuilds(event)
- {
- const productID = $('[name="product"]').val();
- const $buildElement = $(event.target).closest('.input-group').find('select').length > 0 ? $(event.target).closest('.input-group').find('select') : $(event.target).closest('.input-group').find('input');
- const buildBox = $buildElement.attr('name').replace('[]', '');
- loadProductBuilds(productID, 'all', buildBox);
- }
- function loadAllUsers(event)
- {
- const isClosedBug = bug.status == 'closed';
- const params = isClosedBug ? 'params=devfirst' : 'params=devfirst,noclosed';
- const link = $.createLink('bug', 'ajaxLoadAllUsers', params);
- $.getJSON(link, function(data)
- {
- $('[name="assignedTo"]').zui('picker').render({items: data});
- if(!isClosedBug)
- {
- const moduleID = $('[name="module"]').val();
- const productID = $('[name="product"]').val();
- loadAssignedToByModule(moduleID, productID);
- }
- });
- }
- function setBranchRelated(event)
- {
- const $target = $(event.target);
- const $currentRow = $target.closest('tr');
- const branchID = $target.val();
- const productID = $('[name= "product"]').val();
- const moduleID = $currentRow.find('.form-batch-input[data-name="module"]').val() || '0';
- const moduleLink = $.createLink('tree', 'ajaxGetModules', 'productID=' + productID + '&viewType=bug&branch=' + branchID + '&num=0¤tModuleID=' + moduleID);
- $.getJSON(moduleLink, function(data)
- {
- if(!data || !data.modules) return;
- let $row = $currentRow;
- while($row.length)
- {
- const currentModuleID = $row.find('.form-batch-control[data-name="module"] input').val();
- const $modulePicker = $row.find('.form-batch-control[data-name="module"] input').zui('picker');
- $modulePicker.render({items: data.modules});
- $modulePicker.$.setValue(currentModuleID);
- $row = $row.next('tr');
- if(!$row.find('td[data-name="module"][data-ditto="on"]').length) break;
- }
- });
- var projectLink = $.createLink('product', 'ajaxGetProjectsByBranch', 'productID=' + productID + '&branch=' + branchID);
- $.getJSON(projectLink, function(projects)
- {
- if(!projects) return;
- let $row = $currentRow;
- while($row.length)
- {
- const currentProjectID = $row.find('.form-batch-control[data-name="project"] input').val();
- const $projectPikcer = $row.find('.form-batch-control[data-name="project"] input').zui('picker');
- $projectPikcer.render({items: projects});
- $projectPikcer.$.setValue(currentProjectID);
- $row = $row.next('tr');
- if(!$row.find('td[data-name="project"][data-ditto="on"]').length) break;
- }
- });
- const currentProjectID = $currentRow.find('.form-batch-input[data-name="project"]').val() || '0';
- var executionLink = $.createLink('product', 'ajaxGetExecutions', 'productID=' + productID + '&projectID=' + currentProjectID + '&branch=' + branchID + '&pageType=batch');
- $.getJSON(executionLink, function(executions)
- {
- if(!executions) return;
- let $row = $currentRow;
- while($row.length)
- {
- const currentExecutionID = $row.find('.form-batch-control[data-name="execution"] input').val();
- const $executionPicker = $row.find('.form-batch-control[data-name="execution"] input').zui('picker');
- $executionPicker.render({items: executions});
- $executionPicker.$.setValue(currentExecutionID);
- $row = $row.next('tr');
- if(!$row.find('td[data-name="execution"][data-ditto="on"]').length) break;
- }
- });
- /* If the branch of the current row is inconsistent with the one below, clear the module and execution of the nex row. */
- if(config.currentMethod == 'batchcreate')
- {
- let $nextRow = $currentRow.next('tr');
- let nextBranchID = $nextRow.find('td[data-name="branch"]').val();
- if(nextBranchID != branchID)
- {
- $nextRow.find('.form-batch-input[data-name="branch"]').attr('data-ditto', 'off');
- $nextRow.find('.form-batch-input[data-name="execution"]').attr('data-ditto', 'off');
- }
- var buildLink = $.createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + "&varName=openedBuilds&build=&branch=" + branchID);
- setOpenedBuilds(buildLink, $currentRow);
- }
- if(config.currentMethod == 'batchedit')
- {
- var planID = $('#plans_' + num).val();
- var planLink = $.createLink('product', 'ajaxGetPlans', 'productID=' + productID + '&branch=' + branchID + '&planID=' + planID + '&fieldID=' + num + '&needCreate=false&expired=¶m=skipParent');
- $('#plans_' + num).parent('td').load(planLink, function()
- {
- var firstBugID = $('.table-form tbody').first('tr').find('input[id^=bugIDList]').val();
- if(num == firstBugID)
- {
- $('#plans_' + firstBugID).find('option').each(function()
- {
- if($(this).val() == 'ditto') $(this).remove();
- $('#plans_' + firstBugID).trigger('chosen:updated');
- });
- }
- });
- }
- }
- function loadBuildActions()
- {
- if(methodName == 'edit') return;
- $('#createRelease, #createBuild').hide();
- let itemCount = $('[name^=openedBuild]').zui('picker').options.items.length;
- if(itemCount <= 1)
- {
- let html = '';
- if($('#execution').length == 0 || $('[name="execution"]').val() == 0)
- {
- $('#createRelease').show();
- }
- else
- {
- $('#createBuild').show();
- }
- }
- }
- let checkHasCheckedData = function(item, checkedValue)
- {
- return item.value == checkedValue;
- };
- function loadBuilds()
- {
- const productID = $('[name="product"]').val();
- const projectID = $('[name="project"]').val() == 'undefined' ? 0 : $('[name="project"]').val();
- const executionID = $('[name="execution"]').val() == 'undefined' ? 0 : $('[name="execution"]').val();
- if(executionID)
- {
- loadExecutionBuilds(executionID);
- }
- else if(projectID)
- {
- loadProjectBuilds(projectID);
- }
- else
- {
- loadProductBuilds(productID);
- }
- }
- function loadProductCases(productID)
- {
- const branchID = $('[name=branch]').length > 0 ? $('[name=branch]').val() : 0;
- const caseID = $('[name=case]').val();
- $.getJSON($.createLink('bug', 'ajaxGetProductCases', `productID=${productID}&branch=${branchID}`),function(cases)
- {
- const $casePicker = $('[name="case"]').zui('picker');
- $casePicker.render({items: cases});
- $casePicker.$.setValue(caseID);
- });
- }
- function loadProductBugs(productID, bugID)
- {
- if($('[name="duplicateBug"]').length == 0) return;
- const link = $.createLink('bug', 'ajaxGetDuplicateBugs', `bugID=${bugID}&duplicateBugID=${duplicateBugID}`);
- $.getJSON(link, function(data)
- {
- const $duplicateBugPicker = $('[name="duplicateBug"]').zui('picker');
- $duplicateBugPicker.render({items: data});
- $duplicateBugPicker.$.setValue(duplicateBugID);
- });
- }
|