From 1ff84ea2402eed9d97b4a57837a93edd61f557c0 Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 목, 10 2월 2022 17:14:59 +0900 Subject: [PATCH] - 이슈 담당부서 수정시 프로젝트 내의 부서로 검색 가능하도록 수정 - 이슈 유형의 '사용 프로젝트'의 담당부서를 '워크플로우'의 담당부서로 세팅 --- src/main/webapp/scripts/components/utils/autoComplete.controller.js | 468 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 447 insertions(+), 21 deletions(-) diff --git a/src/main/webapp/scripts/components/utils/autoComplete.controller.js b/src/main/webapp/scripts/components/utils/autoComplete.controller.js index 3d9aed3..ab73af6 100644 --- a/src/main/webapp/scripts/components/utils/autoComplete.controller.js +++ b/src/main/webapp/scripts/components/utils/autoComplete.controller.js @@ -22,6 +22,10 @@ var UserWorkspace = $injector.get("UserWorkspace"); var IspField = $injector.get("IspField"); var HostingField = $injector.get("HostingField"); + var IssueType = $injector.get("IssueType"); + var IssueTypeCustomField = $injector.get("IssueTypeCustomField"); + var CustomField = $injector.get("CustomField"); + var CompanyFieldCategory = $injector.get("CompanyFieldCategory"); var $log = $injector.get("$log"); var SweetAlert = $injector.get("SweetAlert"); @@ -29,12 +33,22 @@ $scope.fn.getUserList = getUserList; // �궗�슜�옄 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. $scope.fn.getProjectList = getProjectList; // �봽濡쒖젥�듃 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. $scope.fn.getIssueList = getIssueList; // �씪媛� 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. + $scope.fn.getParentIssueList = getParentIssueList; // �긽�쐞 �씠�뒋 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. + $scope.fn.getRelIssueList = getRelIssueList; // �뿰愿� �씠�뒋 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. + $scope.fn.getDownIssueList = getDownIssueList; // �븯�쐞 �씠�뒋 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. $scope.fn.getWorkflowList = getWorkflowList; // �썙�겕�뵆濡쒖슦 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. $scope.fn.getUserDepartmentList = getUserDepartmentList; // 遺��꽌 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. - $scope.fn.getCompanyFieldList = getCompanyFieldList; // �뾽泥� 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. + $scope.fn.getIssueCompanyFieldList = getIssueCompanyFieldList; // �뾽泥� 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. $scope.fn.getIssueDepartmentList = getIssueDepartmentList; // �떞�떦�옄 -> �떞�떦遺��꽌 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. - $scope.fn.getIspFieldList = getIspFieldList; // ISP 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. - $scope.fn.getHostingFieldList = getHostingFieldList; // �샇�뒪�똿 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. + $scope.fn.getIssueIspFieldList = getIssueIspFieldList; // ISP 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. + $scope.fn.getIssueHostingFieldList = getIssueHostingFieldList; // �샇�뒪�똿 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. + $scope.fn.getPartnerList = getPartnerList; // �뾽泥�/isp/�샇�뒪�똿 紐⑸줉 議고쉶 + $scope.fn.getIssueTypeList = getIssueTypeList; // �씠�뒋 �쑀�삎 紐⑸줉 議고쉶 + $scope.fn.getCustomFieldList = getCustomFieldList; // �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉 議고쉶 + $scope.fn.getMailTargetAll = getMailTargetAll; // �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉 議고쉶 + $scope.fn.getIssueTypeCustomFieldList = getIssueTypeCustomFieldList; // �씠�뒋 �쑀�삎�뿉�꽌 �궗�슜以묒씤 �궗�슜�옄�젙�쓽 �븘�뱶媛��졇�삤湲� + $scope.fn.getCompanyTypeCategory = getCompanyTypeCategory; // �뾽泥� 移댄뀒怨좊━ 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. + $scope.fn.getCompanyChildSector = getCompanyChildSector; // �뾽泥� 移댄뀒怨좊━ 紐⑸줉 �젙蹂대�� 議고쉶�븳�떎. function getUserList(query, excludeList, page, callBack) { var conditions = { @@ -59,7 +73,8 @@ }); return excludeIds; - })() + })(), + issueId : $rootScope.currentDetailIssueId }; var deferred = $q.defer(); @@ -120,9 +135,16 @@ return deferred.promise; } - function getIssueList(query, excludeList, page, callBack) { + function getIssueList(query, issueTypeId, excludeList, page, callBack) { var conditions = { name : query, + /*issueTypeIds : (function () { + var ids = []; + + ids.push(issueTypeId); + + return ids; + })(),*/ excludeIds : (function () { var excludeIds = []; @@ -151,6 +173,134 @@ } }); + return deferred.promise; + } + + function getParentIssueList(query, issueTypeId, excludeList, page, callBack) { + var conditions = { + name : query, + excludeIds : (function () { + var excludeIds = []; + + angular.forEach(excludeList, function (exclude) { + excludeIds.push(exclude.id); + }); + return excludeIds; + })() + }; + + var deferred = $q.defer(); + + if ($rootScope.isDefined(page) && page > 0) { + $rootScope.spinner = true; + } + + Issue.find($resourceProvider.getContent( + conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) { + if (result.data.message.status === "success") { + if ($rootScope.isDefined(callBack)) { + callBack(result); + } + deferred.resolve(result.data.data); + } + else { + SweetAlert.swal($filter("translate")("common.failedToIssueListLookUp"), result.data.message.message, "error"); // "�썙�겕�뵆濡쒖슦 紐⑸줉 議고쉶 �떎�뙣" + } + $rootScope.spinner = false; + }); + return deferred.promise; + } + + function getRelIssueList(parentYN, project, query, issueTypeId, excludeList, page, callBack) { + var conditions = { + name : query, + excludeIds : (function () { + var excludeIds = []; + + angular.forEach(excludeList, function (exclude) { + excludeIds.push(exclude.id); + }); + return excludeIds; + })(), + parentYN : parentYN, + projectIds : (function () { + var projectIds = []; + if (project != null) { + if (project.length < 1) { + SweetAlert.swal($filter("translate")("common.failedToIssueListLookUp"), $filter("translate")("common.selectToProjectListLookUp"), "error"); // "�봽濡쒖젥�듃瑜� 癒쇱� �꽑�깮 �빐 二쇱꽭�슂." + } + if ($rootScope.isDefined(project[0])) { + projectIds.push(project[0].id); + } + } + return projectIds; + })() + }; + + var deferred = $q.defer(); + + if ($rootScope.isDefined(page) && page > 0) { + $rootScope.spinner = true; + } + + Issue.find($resourceProvider.getContent( + conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) { + if (result.data.message.status === "success") { + if ($rootScope.isDefined(callBack)) { + callBack(result); + } + deferred.resolve(result.data.data); + } + else { + SweetAlert.swal($filter("translate")("common.failedToIssueListLookUp"), result.data.message.message, "error"); // "�썙�겕�뵆濡쒖슦 紐⑸줉 議고쉶 �떎�뙣" + } + $rootScope.spinner = false; + }); + return deferred.promise; + } + + function getDownIssueList(query, issueTypeId, parentIssueId, excludeList, page, callBack) { + var conditions = { + name : query, + issueTypeIds : (function () { + var ids = []; + + ids.push(issueTypeId); + + return ids; + })(), + excludeIds : (function () { + var excludeIds = []; + + angular.forEach(excludeList, function (exclude) { + excludeIds.push(exclude.id); + }); + + if(parentIssueId != null) { + excludeIds.push(parentIssueId); + } + return excludeIds; + })() + }; + var deferred = $q.defer(); + + if ($rootScope.isDefined(page) && page > 0) { + $rootScope.spinner = true; + } + + Issue.find($resourceProvider.getContent( // �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎. + conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) { + if (result.data.message.status === "success") { + if ($rootScope.isDefined(callBack)) { + callBack(result); + } + deferred.resolve(result.data.data); + } + else { + SweetAlert.swal($filter("translate")("common.failedToIssueListLookUp"), result.data.message.message, "error"); // "�썙�겕�뵆濡쒖슦 紐⑸줉 議고쉶 �떎�뙣" + } + $rootScope.spinner = false; + }); return deferred.promise; } @@ -191,7 +341,6 @@ function getUserDepartmentList(query, excludeList, page, callBack) { var conditions = { departmentName : query, - departmentId : $rootScope.department.id, excludeIds : (function () { //excludeIds : �젣�쇅 �븷 由ъ뒪�듃 var excludeIds = []; angular.forEach(excludeList, function (exclude) { @@ -219,9 +368,9 @@ return deferred.promise; } - function getCompanyFieldList(query, excludeList, page, callBack) { + function getIssueCompanyFieldList(query, excludeList, page, callBack) { var conditions = { - companyName : query, + name : query, excludeIds : (function () { var excludeIds = []; @@ -238,7 +387,7 @@ CompanyField.find($resourceProvider.getContent( // �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎. - conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) { + conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 100 : 1000))).then(function (result) { if (result.data.message.status === "success") { if ($rootScope.isDefined(callBack)) { callBack(result); @@ -254,10 +403,23 @@ return deferred.promise; } - function getIssueDepartmentList(query, excludeList, page, callBack) { + function getIssueDepartmentList(issueTypeId, query, excludeList, page, callBack) { var conditions = { + //issueTypeId : $scope.vm.form.issueTypeId, + issueTypeId : Number(issueTypeId), departmentName : query, userId : $rootScope.user.id, + projectId : (function () { + var projectId = ""; + + if ($rootScope.isDefined($scope.vm.form)) { + angular.forEach($scope.vm.form.projects, function (project) { + projectId = project.id; + }); + } + + return projectId; + })(), excludeIds : (function () { var excludeIds = []; @@ -272,15 +434,23 @@ var deferred = $q.defer(); - - UserWorkspace.departmentFind($resourceProvider.getContent( // �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎. + //�봽濡쒖젥�듃�뿉 �냽�빐�엳�뒗 �떞�떦遺��꽌 李얘린 + UserWorkspace.findProjectDepartment($resourceProvider.getContent( // �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎. conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) { if (result.data.message.status === "success") { + const departments = result.data.data; + if(departments != null){ + var filterDepartments = departments.filter(function(item, idx){ + return departments.findIndex(function(item2, idx2){ + return item.departmentName === item2.departmentName + }) == idx; + }); + } + if ($rootScope.isDefined(callBack)) { callBack(result); } - - deferred.resolve(result.data.data); + deferred.resolve(filterDepartments); } else { SweetAlert.swal($filter("translate")("common.failedToProjectListLookUp"), result.data.message.message, "error"); // "�봽濡쒖젥�듃 紐⑸줉 議고쉶 �떎�뙣" @@ -290,9 +460,9 @@ return deferred.promise; } - function getIspFieldList(query, excludeList, page, callBack) { + function getIssueIspFieldList(query, excludeList, page, callBack) { var conditions = { - ispName : query, + name : query, excludeIds : (function () { var excludeIds = []; @@ -305,11 +475,9 @@ }; var deferred = $q.defer(); - - IspField.find($resourceProvider.getContent( // �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎. - conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) { + conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 100 : 1000))).then(function (result) { if (result.data.message.status === "success") { if ($rootScope.isDefined(callBack)) { callBack(result); @@ -325,9 +493,9 @@ return deferred.promise; } - function getHostingFieldList(query, excludeList, page, callBack) { + function getIssueHostingFieldList(query, excludeList, page, callBack) { var conditions = { - hostingName : query, + name : query, excludeIds : (function () { var excludeIds = []; @@ -358,6 +526,264 @@ return deferred.promise; } + + function getCompanyTypeCategory(typeCategory, query, excludeList, page, callBack) { + var conditions = { + typeCategory : typeCategory, + useValue : query, + excludeIds : (function () { + var excludeIds = []; + + angular.forEach(excludeList, function (exclude) { + excludeIds.push(exclude.id); + }); + + return excludeIds; + })() + }; + + var deferred = $q.defer(); + + if ($rootScope.isDefined(page) && page > 0) { + $rootScope.spinner = true; + } + + CompanyFieldCategory.find($resourceProvider.getContent( // �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎. + conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 100 : 1000))).then(function (result) { + if (result.data.message.status === "success") { + if ($rootScope.isDefined(callBack)) { + callBack(result); + } + deferred.resolve(result.data.data); + } + else { + SweetAlert.swal($filter("translate")("common.failedToCompanyCategoryListLookUp"), result.data.message.message, "error"); + } + $rootScope.spinner = false; + }); + + return deferred.promise; + } + + function getCompanyChildSector(parentSector, parentSectorId, typeCategory, query, excludeList, page, callBack) { + var conditions = { + parentId : (function () { // �뾽醫�(��遺꾨쪟) + var parentId = ""; + if (parentSector != null && parentSector !== "") { + parentId = parentSector; + }else { + parentId = parentSectorId; + } + return parentId; + })(), + typeCategory : typeCategory, + useValue : query, + excludeIds : (function () { + var excludeIds = []; + + angular.forEach(excludeList, function (exclude) { + excludeIds.push(exclude.id); + }); + + return excludeIds; + })() + }; + + var deferred = $q.defer(); + + if ($rootScope.isDefined(page) && page > 0) { + $rootScope.spinner = true; + } + + CompanyFieldCategory.find($resourceProvider.getContent( // �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎. + conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 100 : 1000))).then(function (result) { + if (result.data.message.status === "success") { + if ($rootScope.isDefined(callBack)) { + callBack(result); + } + deferred.resolve(result.data.data); + } + else { + SweetAlert.swal($filter("translate")("common.failedToCompanyCategoryListLookUp"), result.data.message.message, "error"); + } + $rootScope.spinner = false; + }); + + return deferred.promise; + } + + function getPartnerList(query, excludeList, page, callBack) { + var conditions = { + partnerName : query, + excludeIds : (function () { + var excludeIds = []; + + angular.forEach(excludeList, function (exclude) { + excludeIds.push(exclude.id); + }); + + return excludeIds; + })() + }; + + var deferred = $q.defer(); + + HostingField.getPartnerList($resourceProvider.getContent( // �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎. + conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) { + if (result.data.message.status === "success") { + if ($rootScope.isDefined(callBack)) { + callBack(result); + } + + deferred.resolve(result.data.content); + } + else { + SweetAlert.swal($filter("translate")("common.failedToProjectListLookUp"), result.data.message.message, "error"); // "�봽濡쒖젥�듃 紐⑸줉 議고쉶 �떎�뙣" + } + }); + + return deferred.promise; + } + + function getCustomFieldList(query, excludeList, page, callBack) { + var conditions = { + name : query, + excludeIds : (function () { + var excludeIds = []; + + angular.forEach(excludeList, function (exclude) { + excludeIds.push(exclude.id); + }); + + return excludeIds; + })() + }; + + var deferred = $q.defer(); + + CustomField.find($resourceProvider.getContent( // �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎. + conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) { + if (result.data.message.status === "success") { + + if ($rootScope.isDefined(callBack)) { + callBack(result); + } + + deferred.resolve(result.data.data); + } + else { + SweetAlert.swal($filter("translate")("issue.failedToIssueTypeListLookup"), result.data.message.message, "error"); // "�씠�뒋 �쑀�삎 紐⑸줉 議고쉶 �떎�뙣" + } + }); + + return deferred.promise; + } + + function getIssueTypeList(query, excludeList, page, callBack) { + var conditions = { + name : query, + excludeIds : (function () { + var excludeIds = []; + + angular.forEach(excludeList, function (exclude) { + excludeIds.push(exclude.id); + }); + + return excludeIds; + })() + }; + + var deferred = $q.defer(); + + IssueType.find($resourceProvider.getContent( // �럹�씠吏� �뾽�뜲�씠�듃媛� �븘�슂�븳 而댄룷�꼳�듃 �씪寃쎌슦, page �뾽�뜲�씠�듃媛� �엳�쓣 寃쎌슦 湲곕낯 10媛쒖뵫 媛��졇�삤怨� �븘�땺寃쎌슦 25媛쒖뵫 媛��졇�삩�떎. + conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) { + if (result.data.message.status === "success") { + + if ($rootScope.isDefined(callBack)) { + callBack(result); + } + + deferred.resolve(result.data.data); + } + else { + SweetAlert.swal($filter("translate")("issue.failedToIssueTypeListLookup"), result.data.message.message, "error"); // "�씠�뒋 �쑀�삎 紐⑸줉 議고쉶 �떎�뙣" + } + }); + + return deferred.promise; + } + + // �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �궗�슜�옄 �젙�쓽 �븘�뱶 + function getIssueTypeCustomFieldList(query, excludeList, projectId, issueTypeId, page, callBack) { + + if (projectId == null) return; + if (issueTypeId == null) return; + + var deferred = $q.defer(); + + IssueTypeCustomField.find($resourceProvider.getContent({ + name : query, + projectId : projectId, + issueTypeId : issueTypeId, + excludeIds : (function () { + var excludeIds = []; + + angular.forEach(excludeList, function (exclude) { + excludeIds.push(exclude.id); + }); + + return excludeIds; + })() + }, + $resourceProvider.getPageContent(0, 1000))).then(function (result) { + if (result.data.message.status === "success") { + if ($rootScope.isDefined(callBack)) { + callBack(result); + } + + var customFields = result.data.data; + var customFieldVos = []; + customFields.forEach(function (customField) { + customFieldVos.push(customField.customFieldVo); + }) + + deferred.resolve(customFieldVos); + } + else { + SweetAlert.swal($filter("translate")("issue.failedToUserDefinedFieldListAssociatedLookup"), result.data.message.message, "error"); // �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉 議고쉶 �떎�뙣 + } + + }); + + return deferred.promise; + } + + function getMailTargetAll(excludeList) { + var deferred = $q.defer(); + + var partners = $scope.vm.partners.slice(); + if (excludeList != null && excludeList.id.length > 0) { + var filterData = excludeList.id.filter(function(item, idx){ + return excludeList.id.findIndex(function(item2, idx2){ + return item === item2 + }) == idx; + }); + for (let i = partners.length - 1 ; i >= 0 ; i--) { + filterData.forEach(function (exclude) { + if (partners[i] != null && partners[i].id === exclude) { + partners.splice(i, 1); + if (partners[i] == null) { + return false; + } + } + }); + } + } + + deferred.resolve(partners); + + return deferred.promise; + } } ]); } -- Gitblit v1.8.0