| | |
| | | 'angular' |
| | | ], |
| | | function (app, angular) { |
| | | app.controller('issueDetailController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$tableProvider', '$state', '$uibModal', '$q', |
| | | app.controller('issueDetailController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$tableProvider', '$relProvider', '$downProvider', '$state', '$uibModal', '$q', |
| | | '$controller', '$injector', 'SweetAlert', '$timeout', 'Issue', 'IssueComment', 'IssueRelation', 'AttachedFile', 'Priority', 'Severity','IssueStatus', 'IssueTableConfig', '$filter', |
| | | function ($scope, $rootScope, $log, $resourceProvider, $tableProvider, $state, $uibModal, $q, $controller, $injector, SweetAlert, $timeout, Issue, IssueComment, IssueRelation, AttachedFile, Priority, Severity, IssueStatus, IssueTableConfig, $filter) { |
| | | function ($scope, $rootScope, $log, $resourceProvider, $tableProvider, $relProvider, $downProvider, $state, $uibModal, $q, $controller, $injector, SweetAlert, $timeout, Issue, IssueComment, IssueRelation, AttachedFile, Priority, Severity, IssueStatus, IssueTableConfig, $filter) { |
| | | |
| | | // IssueListController vm, fn 변수 상속. |
| | | |
| | |
| | | $scope.fn.updateActiveHistory = updateActiveHistory; // 활동 내역에서 전체 보기 탭을 눌렀을 때 댓글, 기록 정보를 업데이트 한다. |
| | | $scope.fn.getChangeIssueStatusList = getChangeIssueStatusList; // 이슈의 현재 상태에서 변경 가능한 이슈 샅태 목록 가져오기 |
| | | $scope.fn.modifyIssueStatus = modifyIssueStatus; // 이슈 상태 변경 |
| | | $scope.fn.modifyDownIssueStatus = modifyDownIssueStatus; //하위 이슈 상태 변경 |
| | | $scope.fn.modifyIssueUser = modifyIssueUser; // 이슈 담당자 변경 |
| | | $scope.fn.modifyIssueDepartment = modifyIssueDepartment; // 이슈 담당부서 변경 |
| | | $scope.fn.initReload = initReload; // 초기화 해야할 할목을 지정하여 다른 이슈를 클릭할 때 초기화해준다. |
| | |
| | | $scope.fn.versionView = versionView; // 버전 정보를 표시한다. |
| | | $scope.fn.reservation = reservation; // 예약 정보를 확인 및 변경 한다. |
| | | $scope.fn.getIssueListCallBack = getIssueListCallBack; |
| | | $scope.fn.getDownIssueListCallBack = getDownIssueListCallBack; |
| | | $scope.fn.addRelationIssue = addRelationIssue; // 연관 이슈 추가 |
| | | $scope.fn.addDownIssue = addDownIssue; // 하위 이슈 추가 |
| | | $scope.fn.addRelationIssueTableConfig = addRelationIssueTableConfig; // 연관 이슈 목록 테이블 설정 |
| | | $scope.fn.addDownIssueTableConfig = addDownIssueTableConfig; // 하위 이슈 목록 테이블 설정 |
| | | $scope.fn.getRelTableConfigs = getRelTableConfigs; |
| | | $scope.fn.getDownTableConfigs = getDownTableConfigs; |
| | | $scope.fn.setRelTableConfigs = setRelTableConfigs; |
| | | $scope.fn.setDownTableConfigs = setDownTableConfigs; |
| | | $scope.fn.containsPartner = containsPartner; |
| | | $scope.fn.onActivate = onActivate; |
| | | $scope.fn.issueBack = issueBack; |
| | | $scope.fn.goParentIssue = goParentIssue; |
| | | $scope.fn.removeRelationIssue = removeRelationIssue; |
| | | $scope.fn.removeDownIssue = removeDownIssue; |
| | | $scope.fn.changeDetailPageRowCount = changeDetailPageRowCount; // 페이지 변경 |
| | | $scope.fn.sendCommonMail = sendCommonMail; |
| | | $scope.fn.getSubPageContent = getSubPageContent; |
| | | |
| | | // 이슈 목록 컨트롤러 vm, fn 상속 중 |
| | | $scope.vm.viewer = {}; |
| | | $scope.vm.viewer = {}; // 현재 이슈 |
| | | $scope.vm.images = []; // 첨부된 파일 중 이미지 파일 |
| | | $scope.vm.activeTab = "ALL"; // 활동 내역 탭 |
| | | $scope.vm.activeTab = "RECODE"; // 활동 내역 탭 |
| | | // 이슈 상태 변경 표시 여부 |
| | | $scope.vm.editor = { |
| | | issueStatus : false |
| | |
| | | $scope.vm.form = { |
| | | issues : [], //연관 일감 |
| | | issuesDown : [], // 하위 일감 |
| | | issuesDownStatus : [], //하위 이슈 상태 |
| | | issueCompanyVos : [], |
| | | issueIspVos : [], |
| | | issueHostingVos : [] |
| | | }; |
| | | |
| | | $scope.vm.responseData = { |
| | | data : [] |
| | | }; |
| | | |
| | | $scope.vm.subPage = { |
| | | selectedRelPage : 0, |
| | | selectedRelPageRowCount : String(10), |
| | | selectedDownPage : 0, |
| | | selectedDownPageRowCount : String(10) |
| | | }; |
| | | |
| | | $scope.vm.issueNameDown = ""; // 선택된 하위 일감 이름 |
| | | $scope.vm.autoCompletePageDown = { |
| | |
| | | |
| | | $scope.vm.issueName = ""; // 선택된 연관 일감 이름 |
| | | $scope.vm.issueId = ""; // |
| | | $scope.vm.parentIssueId = ""; |
| | | $scope.vm.issueTypeId = ""; |
| | | $scope.vm.autoCompletePage = { |
| | | issue : { |
| | |
| | | }, |
| | | }; |
| | | |
| | | $scope.vm.inheritPartners = ""; |
| | | $scope.vm.downTotalCount = ""; |
| | | |
| | | $scope.vm.relResponseData = []; |
| | | $scope.vm.relTableConfigs = []; |
| | | // 테이블 이벤트 |
| | | $scope.relTableEvent = { |
| | | removeRelationIssue : removeRelationIssue, // 연관 일감 삭제 |
| | | //removeRelationIssue : removeRelationIssue, // 연관 일감 삭제 |
| | | changeDetailView : changeDetailView |
| | | }; |
| | | |
| | |
| | | $scope.vm.downTableConfigs = []; |
| | | // 테이블 이벤트 |
| | | $scope.downTableEvent = { |
| | | removeDownIssue : removeDownIssue, // 연관 일감 삭제 |
| | | //removeDownIssue : removeDownIssue, // 연관 일감 삭제 |
| | | changeDetailView : changeDetailView |
| | | }; |
| | | |
| | |
| | | // 이슈 번호를 저장한 후 이슈 목록으로 이동한다. |
| | | //$rootScope.$broadcast("makeIssueSearch",issue); |
| | | $scope.$parent.tableEvent.changeDetailView(issue.id); |
| | | |
| | | $scope.fn.onActivate(); |
| | | } |
| | | |
| | | // 뒤로가기 버튼 |
| | | function issueBack() { |
| | | var index = $scope.$parent.vm.issueIds.length -2; |
| | | if (index > -1) { |
| | | var preIssueId = $scope.$parent.vm.issueIds[index]; |
| | | $scope.$parent.vm.issueIds.splice(index + 1, 1); |
| | | $scope.$parent.tableEvent.changeDetailView(preIssueId, true); |
| | | } |
| | | } |
| | | |
| | | // 상위 이슈 클릭시 상위 이슈로 이동 |
| | | function goParentIssue() { |
| | | var parentIssueId = $scope.vm.parentIssueId; |
| | | $scope.$parent.tableEvent.changeDetailView(parentIssueId, true); |
| | | //하위이슈-> 상위이슈 -> 연관이슈에서 뒤로가기 버튼 클릭 시 하위이슈로 이동되는 문제로 마지막 배열값 제거 |
| | | $scope.$parent.vm.issueIds.pop(); |
| | | } |
| | | |
| | | // 페이지 변경 |
| | | function changeDetailPageRowCount() { |
| | | $scope.fn.getIssueDetail(0,0); |
| | | } |
| | | |
| | | function onActivate() { |
| | |
| | | |
| | | angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector})); |
| | | |
| | | // 이슈 목록 데이터 갱신 |
| | | $scope.$on("getIssueList", function () { |
| | | $scope.fn.getIssueDetail(); |
| | | }); |
| | | |
| | | |
| | | // 이슈 목록 데이터 갱신 |
| | | /*$scope.$on("getIssueList", function () { |
| | | $scope.fn.getIssueDetail(0,0); |
| | | });*/ |
| | | |
| | | // 하위 이슈 삭제 |
| | | function removeDownIssue(id) { |
| | | function removeDownIssue() { |
| | | var removeIds = []; |
| | | var removePermission = true; |
| | | |
| | | angular.forEach($scope.vm.viewer.issueDownVos, function (data) { |
| | | if (data.checked && data.modifyPermissionCheck) { |
| | | removeIds.push(data.id); |
| | | } |
| | | |
| | | if (data.checked && !data.modifyPermissionCheck) { |
| | | removePermission = false; |
| | | } |
| | | }); |
| | | |
| | | if (!removePermission) { |
| | | SweetAlert.swal({ |
| | | html : true, |
| | | title : $filter("translate")("common.deleteFailed"), // 삭제 실패 |
| | | text : $filter("translate")("project.notHaveDeletePermissionExistsProject"), // "삭제 권한이 없는 프로젝트가 존재합니다." |
| | | type : "error" |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | if (removeIds.length < 1) { |
| | | SweetAlert.swal({ |
| | | title : $filter("translate")("common.checkPurgingTargets"), // 삭제 대상 확인 |
| | | text : $filter("translate")("common.selectDestinationDeletion"), // 삭제 대상을 선택하세요. |
| | | type : "warning" |
| | | }); |
| | | return; |
| | | } |
| | | // 삭제 알림 |
| | | SweetAlert.swal({ |
| | | title : $filter("translate")("issue.downIssueRemove"), // 하위 이슈 삭제 |
| | | text : $filter("translate")("issue.wantToDeleteSelectIssue"), |
| | | text : $filter("translate")("issue.wantToDeleteSelectDownIssueInList"), |
| | | type : "warning", |
| | | showCancelButton : true, |
| | | confirmButtonColor : "#DD6B55", |
| | |
| | | $rootScope.spinner = true; |
| | | |
| | | var contents = { |
| | | id : id |
| | | ids : removeIds |
| | | }; |
| | | |
| | | Issue.modifyParentIssue($resourceProvider.getContent( |
| | |
| | | $resourceProvider.getPageContent(0, 10))).then(function (result) { |
| | | |
| | | if (result.data.message.status === "success") { |
| | | $scope.fn.getIssueDetail(); |
| | | $scope.fn.getIssueDetail(0,0); |
| | | } |
| | | else { |
| | | SweetAlert.error($filter("translate")("issue.failedToIssueDeleteIssueDown"), result.data.message.message); // "연관일감 삭제 실패" |
| | |
| | | } |
| | | |
| | | // 연관 이슈 삭제 |
| | | function removeRelationIssue(id) { |
| | | function removeRelationIssue() { |
| | | var removeIds = []; |
| | | var removePermission = true; |
| | | |
| | | angular.forEach($scope.vm.viewer.issueRelationVos, function (data) { |
| | | if (data.checked && data.modifyPermissionCheck) { |
| | | removeIds.push(data.id); |
| | | } |
| | | |
| | | if (data.checked && !data.modifyPermissionCheck) { |
| | | removePermission = false; |
| | | } |
| | | }); |
| | | |
| | | if (!removePermission) { |
| | | SweetAlert.swal({ |
| | | html : true, |
| | | title : $filter("translate")("common.deleteFailed"), // 삭제 실패 |
| | | text : $filter("translate")("issue.notHaveDeletePermissionExistsAnIssue"), // 삭제 권한이 없는 이슈가 존재합니다. |
| | | type : "error" |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | if (removeIds.length < 1) { |
| | | SweetAlert.swal({ |
| | | title : $filter("translate")("common.checkPurgingTargets"), // 삭제 대상 확인 |
| | | text : $filter("translate")("common.selectDestinationDeletion"), // 삭제 대상을 선택하세요. |
| | | type : "warning" |
| | | }); |
| | | return; |
| | | } |
| | | // 삭제 알림 |
| | | SweetAlert.swal({ |
| | | title : $filter("translate")("issue.relationIssueRemove"), // 연관 이슈 삭제 |
| | | text : $filter("translate")("issue.wantToDeleteSelectIssue"), |
| | | text : $filter("translate")("issue.wantToDeleteSelectRelIssueInList"), |
| | | type : "warning", |
| | | showCancelButton : true, |
| | | confirmButtonColor : "#DD6B55", |
| | |
| | | $rootScope.spinner = true; |
| | | |
| | | var contents = { |
| | | id : id |
| | | removeIds : removeIds |
| | | }; |
| | | |
| | | IssueRelation.delete($resourceProvider.getContent( |
| | |
| | | $resourceProvider.getPageContent(0, 10))).then(function (result) { |
| | | |
| | | if (result.data.message.status === "success") { |
| | | $scope.fn.getIssueDetail(); |
| | | $scope.fn.getIssueDetail(0,0); |
| | | } |
| | | else { |
| | | SweetAlert.error($filter("translate")("issue.failedToIssueDeleteIssueRelation"), result.data.message.message); // "연관일감 삭제 실패" |
| | |
| | | $scope.vm.autoCompletePage.issue.totalPage = result.data.page.totalPage; |
| | | } |
| | | |
| | | function getDownIssueListCallBack(result) { |
| | | $scope.vm.autoCompletePageDown.issue.totalPage = result.data.page.totalPage; |
| | | } |
| | | |
| | | // 테이블의 연관 이슈 컬럼을 만들어준다. |
| | | function setRelTableColumn(Rel_issueTableConfig) { |
| | | function setRelTableColumn(issueTableConfig) { |
| | | |
| | | // 연관 이슈 컬럼 |
| | | switch(Rel_issueTableConfig.key) { |
| | | |
| | | // 연관 이슈 구분 |
| | | case "RELATION_ISSUE_TYPE" : |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | switch(issueTableConfig.key) { |
| | | case "RELATION_ISSUE_TYPE" : // 연관 이슈 구분 |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setHName("issue.relationIssueType") |
| | | .setDName("relationIssueType") |
| | | .setDType("renderer") |
| | | .setHWidth("width-30 bold") |
| | | .setHSort(false) |
| | | .setDAlign("text-center") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDRenderer("ISSUE_RELATION_TYPE")) |
| | | /*.setHWidth("width-30 bold")*/ |
| | | /*.setHSort(false)*/ |
| | | break; |
| | | // 연관 이슈 제목 |
| | | case "RELATION_ISSUE_TITLE" : |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | case "RELATION_ISSUE_TITLE" : // 연관 이슈 제목 |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setHName("issue.relationIssueTitle") |
| | | .setDName("title") |
| | | .setDType("renderer") |
| | | .setHWidth("width-60 bold") |
| | | .setHSort(false) |
| | | .setDAlign("text-center") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDRenderer("ISSUE_RELATION_MOVE")) |
| | | /*.setHWidth("width-60 bold")*/ |
| | | /*.setHSort(true)*/ |
| | | break; |
| | | case "PRIORITY" : // 연관 이슈 우선순위 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | case "RELATION_PRIORITY" : // 연관 이슈 우선순위 |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setHName("common.priority") |
| | | .setDName("priorityName") |
| | | .setDName("priorityVo.id") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + Rel_issueTableConfig.width) |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("REL_COMMON_PRIORITY")); |
| | | break; |
| | | case "SEVERITY" : // 연관 이슈 중요도 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | case "RELATION_SEVERITY" : // 연관 이슈 중요도 |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setHName("common.importance") |
| | | .setDName("severityName") |
| | | .setDName("severityVo.id") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + Rel_issueTableConfig.width) |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("REL_COMMON_SEVERITY")); |
| | | break; |
| | | case "ASSIGNEE_TEAM" : // 연관 이슈 담당부서 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | case "RELATION_ASSIGNEE_TEAM" : // 연관 이슈 담당부서 |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setHName("common.assigneeTeam") |
| | | .setDName("departmentVos.departmentName") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + Rel_issueTableConfig.width) |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("REL_ISSUE_DEPARTMENT")); |
| | | break; |
| | | |
| | | case "REGISTER" : // 연관 이슈 등록자 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | case "RELATION_REGISTER" : // 연관 이슈 등록자 |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setHName("common.register") |
| | | .setDName("registerVo.id") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + Rel_issueTableConfig.width) |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("REL_REGISTER")); |
| | | break; |
| | | case "PERIOD" : // 연관 이슈 기간 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | case "RELATION_PERIOD" : // 연관 이슈 기간 |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setHName("common.period") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + Rel_issueTableConfig.width) |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("REL_ISSUE_DUE_DATE")); |
| | | break; |
| | | case "MODIFY_DATE" : // 연관 이슈 최근 변경일 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | case "RELATION_MODIFY_DATE" : // 연관 이슈 최근 변경일 |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setHName("common.lastChangeDate") |
| | | .setHWidth("bold " + Rel_issueTableConfig.width) |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDName("modifyDate")); |
| | | break; |
| | | case "REL_COMPANY" : // 업체 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("common.company") |
| | | .setDName("companyName") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("REL_USE_COMPANY")); |
| | | break; |
| | | case "REL_ISP" : // ISP |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("common.isp") |
| | | .setDName("ispName") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("REL_USE_ISP")); |
| | | break; |
| | | case "REL_HOSTING" : // HOSTING |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("common.hosting") |
| | | .setDName("hostingName") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("REL_USE_HOSTING")); |
| | | break; |
| | | } |
| | | |
| | | // 사용자 정의 필드 컬럼 |
| | | if (Rel_issueTableConfig.key.indexOf("CUSTOM_FIELD_") !== -1) { |
| | | if (issueTableConfig.key.indexOf("CUSTOM_FIELD_") !== -1) { |
| | | // 만약 이슈 테이블 컬럼명이 표시되지 않으면 이쪽이 문제 |
| | | for (var count in $scope.vm.customFields) { |
| | | var customField = $scope.vm.customFields[count]; |
| | | |
| | | if (customField.id === Number(Rel_issueTableConfig.key.substring(13))) { |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | if (customField.id === Number(issueTableConfig.key.substring(13))) { |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setHName(customField.name) |
| | | .setDName("relCustomFieldName" + [count]) |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + Rel_issueTableConfig.width) |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setColumnHint(customField) |
| | | .setDRenderer("REL_ISSUE_CUSTOM_FIELD_VALUE_VIEW")); |
| | |
| | | |
| | | |
| | | // 테이블의 하위 이슈 컬럼을 만들어준다. |
| | | function setDownTableColumn(Down_issueTableConfig) { |
| | | function setDownTableColumn(issueTableConfig) { |
| | | // if (issueTableConfig == null) return; |
| | | |
| | | // 하위 이슈 컬럼 |
| | | switch(Down_issueTableConfig.key) { |
| | | // 하위 이슈 제목 |
| | | case "DOWN_ISSUE_TITLE" : |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | switch(issueTableConfig.key) { |
| | | case "DOWN_ISSUE_TITLE" : // 하위 이슈 제목 |
| | | $scope.vm.downTableConfigs.push($downProvider.config() |
| | | .setHName("issue.downIssueTitle") |
| | | .setDName("title") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + Down_issueTableConfig.width) |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("ISSUE_DOWN_MOVE")); |
| | | break; |
| | | case "PRIORITY" : // 하위 이슈 우선순위 |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | .setHName("common.priority") |
| | | .setDName("priorityName") |
| | | |
| | | case "ISSUE_DOWN_STATUS_TYPE" : // 하위 이슈 상태 |
| | | $scope.vm.downTableConfigs.push($downProvider.config() |
| | | .setHName("issue.issueStatus") |
| | | .setDName("issueStatusVo.id") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + Down_issueTableConfig.width) |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("ISSUE_DOWN_STATUS_TYPE")); |
| | | break; |
| | | |
| | | case "DOWN_PRIORITY" : // 하위 이슈 우선순위 |
| | | $scope.vm.downTableConfigs.push($downProvider.config() |
| | | .setHName("common.priority") |
| | | .setDName("priorityVo.id") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("DOWN_COMMON_PRIORITY")); |
| | | break; |
| | | case "SEVERITY" : // 중요도 |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | case "DOWN_SEVERITY" : // 하위 이슈 중요도 |
| | | $scope.vm.downTableConfigs.push($downProvider.config() |
| | | .setHName("common.importance") |
| | | .setDName("severityName") |
| | | .setDName("severityVo.id") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + Down_issueTableConfig.width) |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("DOWN_COMMON_SEVERITY")); |
| | | break; |
| | | case "ASSIGNEE_TEAM" : // 담당부서 |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | case "DOWN_ASSIGNEE_TEAM" : // 하위 이슈 담당부서 |
| | | $scope.vm.downTableConfigs.push($downProvider.config() |
| | | .setHName("common.assigneeTeam") |
| | | .setDName("departmentVos.departmentName") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + Down_issueTableConfig.width) |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("DOWN_ISSUE_DEPARTMENT")); |
| | | break; |
| | | case "REGISTER" : // 등록자 |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | case "DOWN_REGISTER" : // 하위 이슈 등록자 |
| | | $scope.vm.downTableConfigs.push($downProvider.config() |
| | | .setHName("common.register") |
| | | .setDName("registerVo.id") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + Down_issueTableConfig.width) |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("DOWN_REGISTER")); |
| | | break; |
| | | case "PERIOD" : // 기간 |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | case "DOWN_PERIOD" : // 하위 이슈 기간 |
| | | $scope.vm.downTableConfigs.push($downProvider.config() |
| | | .setHName("common.period") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + Down_issueTableConfig.width) |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("DOWN_ISSUE_DUE_DATE")); |
| | | break; |
| | | case "MODIFY_DATE" : // 최근 변경일 |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | case "DOWN_MODIFY_DATE" : // 하위 이슈 최근 변경일 |
| | | $scope.vm.downTableConfigs.push($downProvider.config() |
| | | .setHName("common.lastChangeDate") |
| | | .setHWidth("bold " + Down_issueTableConfig.width) |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDName("modifyDate")); |
| | | break; |
| | | case "DOWN_COMPANY" : // 업체 |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | .setHName("common.company") |
| | | .setDName("companyName") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("DOWN_USE_COMPANY")); |
| | | break; |
| | | case "DOWN_ISP" : // ISP |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | .setHName("common.isp") |
| | | .setDName("ispName") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("DOWN_USE_ISP")); |
| | | break; |
| | | case "DOWN_HOSTING" : // HOSTING |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | .setHName("common.hosting") |
| | | .setDName("hostingName") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("DOWN_USE_HOSTING")); |
| | | break; |
| | | } |
| | | |
| | | // 사용자 정의 필드 컬럼 |
| | | if (Down_issueTableConfig.key.indexOf("CUSTOM_FIELD_") !== -1) { |
| | | if (issueTableConfig.key.indexOf("CUSTOM_FIELD_") !== -1) { |
| | | // 만약 이슈 테이블 컬럼명이 표시되지 않으면 이쪽이 문제 |
| | | for (var count in $scope.vm.customFields) { |
| | | var customField = $scope.vm.customFields[count]; |
| | | |
| | | if (customField.id === Number(Down_issueTableConfig.key.substring(13))) { |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | if (customField.id === Number(issueTableConfig.key.substring(13))) { |
| | | $scope.vm.downTableConfigs.push($downProvider.config() |
| | | .setHName(customField.name) |
| | | .setDName("downCustomFieldName" + [count]) |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + Down_issueTableConfig.width) |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setColumnHint(customField) |
| | | .setDRenderer("DOWN_ISSUE_CUSTOM_FIELD_VALUE_VIEW")); |
| | |
| | | // 연관 이슈 테이블 설정 |
| | | function makeRelTableConfigs() { |
| | | $scope.vm.relTableConfigs = []; |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setDType("checkbox") |
| | | .setHWidth("width-20-p") |
| | | .setDAlign("text-center")) |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setHName("issue.relationIssueType") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-30-p bold") |
| | | .setHWidth("width-60-p bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_RELATION_TYPE")) |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setHName("issue.relationIssueTitle") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-60-p bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_RELATION_MOVE")) |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.relationIssueDelete") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-20-p bold") |
| | | .setDRenderer("ISSUE_RELATION_DELETE") |
| | | .setHSort(false) |
| | | .setDAlign("text-center")) |
| | | |
| | | angular.forEach($scope.vm.relTableConfigs, function (Rel_issueTableConfig) { |
| | | /*if($scope.vm.viewer.modifyPermissionCheck) { |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setHName("issue.relationIssueDelete") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-40-p bold") |
| | | .setDRenderer("ISSUE_RELATION_DELETE") |
| | | .setHSort(false) |
| | | .setDAlign("text-center")) |
| | | }*/ |
| | | angular.forEach($scope.vm.relTableConfigs, function (issueTableConfig) { |
| | | // 표시 대상인 컬럼만 화면에 그려준다. |
| | | if (Rel_issueTableConfig.display) { |
| | | if (issueTableConfig.display) { |
| | | // 테이블의 컬럼을 만들어준다. |
| | | $scope.fn.setRelTableColumn(Rel_issueTableConfig); |
| | | $scope.fn.setRelTableColumn(issueTableConfig); |
| | | } |
| | | }); |
| | | } |
| | |
| | | // 하위 이슈 테이블 설정 |
| | | function makeDownTableConfigs() { |
| | | $scope.vm.downTableConfigs = []; |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | $scope.vm.downTableConfigs.push($downProvider.config() |
| | | .setDType("checkbox") |
| | | .setHWidth("width-20-p") |
| | | .setDAlign("text-center")) |
| | | $scope.vm.downTableConfigs.push($downProvider.config() |
| | | .setHName("issue.downIssueTitle") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-60-p bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_DOWN_MOVE")) |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.relationIssueDelete") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-20-p bold") |
| | | .setDRenderer("ISSUE_DOWN_DELETE") |
| | | .setHSort(false) |
| | | .setDAlign("text-center")) |
| | | /*if($scope.vm.viewer.modifyPermissionCheck){ |
| | | $scope.vm.downTableConfigs.push($downProvider.config() |
| | | .setHName("issue.relationIssueDelete") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-40-p bold") |
| | | .setDRenderer("ISSUE_DOWN_DELETE") |
| | | .setHSort(false) |
| | | .setDAlign("text-center")) |
| | | }*/ |
| | | |
| | | angular.forEach($scope.vm.downTableConfigs, function (Down_issueTableConfig) { |
| | | angular.forEach($scope.vm.downTableConfigs, function (issueTableConfig) { |
| | | // 표시 대상인 컬럼만 화면에 그려준다. |
| | | if (Down_issueTableConfig.display) { |
| | | if (issueTableConfig.display) { |
| | | // 테이블의 컬럼을 만들어준다. |
| | | $scope.fn.setDownTableColumn(Down_issueTableConfig); |
| | | $scope.fn.setDownTableColumn(issueTableConfig); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 연관 이슈 상세 조회 |
| | | function getRelTableConfigs() { |
| | | var content = { |
| | | issueId : $scope.vm.viewer.id, |
| | | issueTypeId : $rootScope.getCurrentIssueTypeId() |
| | | }; |
| | | // 연관 이슈 테이블 설정 |
| | | function setRelTableConfigs(issueTableConfigVo) { |
| | | if (issueTableConfigVo == null) { |
| | | makeRelTableConfigs(); |
| | | return; |
| | | } |
| | | var issueTableConfigs = issueTableConfigVo.issueTableConfigs; |
| | | |
| | | IssueTableConfig.relationDetail($resourceProvider.getContent( |
| | | content, |
| | | $resourceProvider.getPageContent(0, 0))).then(function (result) { |
| | | // 연관 이슈 목록 테이블 설정 값을 가져와서 적용한다. |
| | | if ($rootScope.isDefined(issueTableConfigs)) { |
| | | // 이슈 테이블 설정 정보를 저장 한다. |
| | | |
| | | if (result.data.message.status === "success") { |
| | | var issueTableConfigs = result.data.data; |
| | | $scope.vm.issueRelTableConfigs = []; |
| | | $scope.vm.issueRelTableConfigs = JSON.parse(issueTableConfigs); |
| | | $scope.vm.issueRelTableConfigs.sort(function (a, b) { |
| | | return parseInt(a.position) < parseInt(b.position) ? -1 : parseInt(a.position) > parseInt(b.position) ? 1 : 0; |
| | | }); |
| | | |
| | | // 연관 슈 목록 테이블 설정 값을 가져와서 적용한다. |
| | | if ($rootScope.isDefined(issueTableConfigs)) { |
| | | // 이슈 테이블 설정 정보를 저장 한다. |
| | | $scope.vm.relTableConfigs = []; |
| | | /* $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setHName("issue.relationIssueType") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-30-p bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_RELATION_TYPE")) |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setHName("issue.relationIssueTitle") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-60-p bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_RELATION_MOVE"))*/ |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setDType("checkbox") |
| | | .setHWidth("width-20-p") |
| | | .setDAlign("text-center")) |
| | | angular.forEach($scope.vm.issueRelTableConfigs, function (issueTableConfig) { |
| | | // 표시 대상인 컬럼만 화면에 그려준다. |
| | | if (issueTableConfig.display) { |
| | | // 테이블의 컬럼을 만들어준다. |
| | | $scope.fn.setRelTableColumn(issueTableConfig); |
| | | |
| | | $scope.vm.issueRelTableConfigs = []; |
| | | $scope.vm.issueRelTableConfigs = JSON.parse(issueTableConfigs); |
| | | $scope.vm.issueRelTableConfigs.sort(function (a, b) { |
| | | return a.position < b.position ? -1 : a.position > b.position ? 1 : 0; |
| | | }); |
| | | |
| | | $scope.vm.relTableConfigs = []; |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.relationIssueType") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-30-p bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_RELATION_TYPE")) |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.relationIssueTitle") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-60-p bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_RELATION_MOVE")) |
| | | angular.forEach($scope.vm.issueRelTableConfigs, function (Rel_issueTableConfig) { |
| | | // 표시 대상인 컬럼만 화면에 그려준다. |
| | | if (Rel_issueTableConfig.display) { |
| | | // 테이블의 컬럼을 만들어준다. |
| | | $scope.fn.setRelTableColumn(Rel_issueTableConfig); |
| | | |
| | | } |
| | | }); |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.relationIssueDelete") |
| | | .setDType("renderer") |
| | | .setHWidth("width-20-p bold") |
| | | .setDRenderer("ISSUE_RELATION_DELETE") |
| | | .setHSort(false) |
| | | .setDAlign("text-center")) |
| | | |
| | | } else { |
| | | makeRelTableConfigs(); |
| | | } |
| | | }); |
| | | /*if($scope.vm.viewer.modifyPermissionCheck) { |
| | | $scope.vm.relTableConfigs.push($relProvider.config() |
| | | .setHName("issue.relationIssueDelete") |
| | | .setDType("renderer") |
| | | .setHWidth("width-40-p bold") |
| | | .setDRenderer("ISSUE_RELATION_DELETE") |
| | | .setHSort(false) |
| | | .setDAlign("text-center")) |
| | | }*/ |
| | | } else { |
| | | makeRelTableConfigs(); |
| | | } |
| | | |
| | | } else { |
| | | SweetAlert.swal($filter("translate")("issue.errorRemovableIssueStatusList"), result.data.message.message, "error"); // "이동 가능한 이슈 상태 목록 조회 오류" |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 하위 이슈 상세 조회 |
| | | function getDownTableConfigs() { |
| | | var content = { |
| | | issueId : $scope.vm.viewer.id, |
| | | issueTypeId : $rootScope.getCurrentIssueTypeId() |
| | | }; |
| | | // 하위 이슈 상세 조회 결과 설정 |
| | | function setDownTableConfigs(issueTableConfigVo) { |
| | | if (issueTableConfigVo == null) return; |
| | | var issueTableConfigs = issueTableConfigVo.issueTableConfigs; |
| | | |
| | | IssueTableConfig.downDetail($resourceProvider.getContent( |
| | | content, |
| | | $resourceProvider.getPageContent(0, 0))).then(function (result) { |
| | | |
| | | if (result.data.message.status === "success") { |
| | | var issueTableConfigs = result.data.data; |
| | | |
| | | // 연관 슈 목록 테이블 설정 값을 가져와서 적용한다. |
| | | if ($rootScope.isDefined(issueTableConfigs)) { |
| | | // 이슈 테이블 설정 정보를 저장 한다. |
| | | $scope.vm.issueDownTableConfigs = []; |
| | | $scope.vm.issueDownTableConfigs = JSON.parse(issueTableConfigs); |
| | | $scope.vm.issueDownTableConfigs.sort(function (a, b) { |
| | | return a.position < b.position ? -1 : a.position > b.position ? 1 : 0; |
| | | }); |
| | | $scope.vm.downTableConfigs = []; |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.downIssueTitle") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-60-p bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_DOWN_MOVE")) |
| | | angular.forEach($scope.vm.issueDownTableConfigs, function (Down_issueTableConfig) { |
| | | // 표시 대상인 컬럼만 화면에 그려준다. |
| | | if (Down_issueTableConfig.display) { |
| | | // 테이블의 컬럼을 만들어준다. |
| | | $scope.fn.setDownTableColumn(Down_issueTableConfig); |
| | | } |
| | | }); |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.relationIssueDelete") |
| | | .setDType("renderer") |
| | | .setHWidth("width-20-p bold") |
| | | .setDRenderer("ISSUE_DOWN_DELETE") |
| | | .setHSort(false) |
| | | .setDAlign("text-center")) |
| | | |
| | | } else { |
| | | makeDownTableConfigs(); |
| | | // 연관 이슈 목록 테이블 설정 값을 가져와서 적용한다. |
| | | if ($rootScope.isDefined(issueTableConfigs)) { |
| | | // 이슈 테이블 설정 정보를 저장 한다. |
| | | $scope.vm.issueDownTableConfigs = []; |
| | | $scope.vm.issueDownTableConfigs = JSON.parse(issueTableConfigs); |
| | | $scope.vm.issueDownTableConfigs.sort(function (a, b) { |
| | | return parseInt(a.position) < parseInt(b.position) ? -1 : parseInt(a.position) > parseInt(b.position) ? 1 : 0; |
| | | }); |
| | | $scope.vm.downTableConfigs = []; |
| | | /* $scope.vm.downTableConfigs.push($downProvider.config() |
| | | .setHName("issue.downIssueTitle") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-60-p bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_DOWN_MOVE"))*/ |
| | | $scope.vm.downTableConfigs.push($downProvider.config() |
| | | .setDType("checkbox") |
| | | .setHWidth("width-20-p") |
| | | .setDAlign("text-center")) |
| | | angular.forEach($scope.vm.issueDownTableConfigs, function (issueTableConfig) { |
| | | // 표시 대상인 컬럼만 화면에 그려준다. |
| | | if (issueTableConfig.display) { |
| | | // 테이블의 컬럼을 만들어준다. |
| | | $scope.fn.setDownTableColumn(issueTableConfig); |
| | | } |
| | | |
| | | } |
| | | else { |
| | | SweetAlert.swal($filter("translate")("issue.errorRemovableIssueStatusList"), result.data.message.message, "error"); // "이동 가능한 이슈 상태 목록 조회 오류" |
| | | } |
| | | }); |
| | | }); |
| | | /*if($scope.vm.viewer.modifyPermissionCheck) { |
| | | $scope.vm.downTableConfigs.push($downProvider.config() |
| | | .setHName("issue.relationIssueDelete") |
| | | .setDType("renderer") |
| | | .setHWidth("width-40-p bold") |
| | | .setDRenderer("ISSUE_DOWN_DELETE") |
| | | .setHSort(false) |
| | | .setDAlign("text-center")) |
| | | }*/ |
| | | } else { |
| | | makeDownTableConfigs(); |
| | | } |
| | | } |
| | | |
| | | // 연관 이슈 추가 |
| | |
| | | $resourceProvider.getPageContent(0, 10))).then(function (result) { |
| | | |
| | | if (result.data.message.status === "success") { |
| | | $scope.fn.getIssueDetail(); |
| | | $scope.fn.getIssueDetail(0,0); |
| | | } |
| | | else { |
| | | SweetAlert.error($filter("translate")("issue.failedToIssueAddIssueRelation"), result.data.message.message); // "연관일감 생성 실패" |
| | |
| | | return; |
| | | } |
| | | |
| | | var contents = { |
| | | issueId : $rootScope.currentDetailIssueId, |
| | | id : $scope.vm.form.issuesDown[0].id, |
| | | parentIssueId : $rootScope.currentDetailIssueId |
| | | }; |
| | | let inheritYn = false; |
| | | if ($scope.vm.inheritPartners) { |
| | | SweetAlert.swal({ |
| | | title : $filter("translate")("issue.addDownIssue"), // 하위 이슈 추가 |
| | | text : $filter("translate")("issue.wantToInheritPartnersOfParentIssue"), // 상위이슈의 파트너 정보(업체/ISP/호스팅)를 적용시키겠습니까? |
| | | type : "warning", |
| | | showCancelButton : true, |
| | | confirmButtonColor : "#DD6B55", |
| | | confirmButtonText : $filter("translate")("common.ok"), // 네 |
| | | cancelButtonText : $filter("translate")("common.no"), // 아니오 |
| | | closeOnConfirm : false, |
| | | closeOnCancel : false |
| | | }, |
| | | function (isConfirm) { |
| | | if (isConfirm) { |
| | | inheritYn = true; |
| | | } |
| | | |
| | | Issue.modifyParentIssue($resourceProvider.getContent( |
| | | contents, |
| | | $resourceProvider.getPageContent(0, 10))).then(function (result) { |
| | | var ids = []; |
| | | if ($scope.vm.form.issuesDown[0].id != null) { |
| | | ids.push($scope.vm.form.issuesDown[0].id); |
| | | } |
| | | |
| | | if (result.data.message.status === "success") { |
| | | $scope.fn.getIssueDetail(); |
| | | } |
| | | else { |
| | | SweetAlert.error($filter("translate")("issue.failedToIssueAddIssueDown"), result.data.message.message); // "연관일감 생성 실패" |
| | | } |
| | | }); |
| | | var contents = { |
| | | issueId : $rootScope.currentDetailIssueId, |
| | | ids : ids, |
| | | parentIssueId : $rootScope.currentDetailIssueId, |
| | | inheritYn : inheritYn |
| | | }; |
| | | |
| | | Issue.modifyParentIssue($resourceProvider.getContent( |
| | | contents, |
| | | $resourceProvider.getPageContent(0, 10))).then(function (result) { |
| | | |
| | | if (result.data.message.status === "success") { |
| | | SweetAlert.close(); |
| | | $scope.fn.getIssueDetail(0,0); |
| | | } |
| | | else { |
| | | SweetAlert.error($filter("translate")("issue.failedToIssueAddIssueDown"), result.data.message.message); // "하위이슈 생성 실패" |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | } |
| | | |
| | | // 이슈명을 클릭하면 이슈 상세 정보를 조회한다. |
| | | // $rootScope.$on("getIssueDetail", function (event, args) { |
| | | // $scope.vm.viewer.id = args["id"]; |
| | | // $scope.fn.getIssueDetail(); |
| | | // }); |
| | | |
| | | // 이메일 보낸후 상세화면 갱신 |
| | | $rootScope.$on("getIssueDetail", function (event, args) { |
| | | $scope.fn.getIssueDetail(); |
| | | }); |
| | | // 이슈명을 클릭하면 이슈 상세 정보를 조회한다. |
| | | // $rootScope.$on("getIssueDetail", function (event, args) { |
| | | // $scope.vm.viewer.id = args["id"]; |
| | | // $scope.fn.getIssueDetail(); |
| | | // }); |
| | | |
| | | // 이슈명을 클릭하면 이슈 상세 정보를 조회한다. |
| | | // $scope.$on("getIssueDetail", function (event, args) { |
| | |
| | | // $scope.fn.getIssueDetail(); |
| | | // }); |
| | | |
| | | // 이메일 보낸후 상세화면 갱신 |
| | | // $rootScope.$on("getIssueDetail", function (event, args) { |
| | | // $scope.fn.getIssueDetail(); |
| | | // }); |
| | | |
| | | $scope.$on("getIssueDetail", function (event, args) { |
| | | $scope.fn.getIssueDetail(0,0); |
| | | }); |
| | | |
| | | $scope.$watch(function() { |
| | | return $rootScope.currentDetailIssueId; |
| | | }, function() { |
| | | if ($rootScope.currentDetailIssueId != null) { |
| | | $scope.vm.viewer.id = $rootScope.currentDetailIssueId; |
| | | $scope.fn.getIssueDetail(); |
| | | $scope.fn.getIssueDetail(0,0); |
| | | } |
| | | }, true); |
| | | |
| | |
| | | parameter : function () { |
| | | return { |
| | | issueIds : [$scope.vm.viewer.id], |
| | | projectId : $scope.vm.viewer.projectVo.id, |
| | | downIssuesStatus : $scope.vm.form.issuesDownStatus |
| | | }; |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | function modifyDownIssueStatus() { |
| | | var issueIds = []; |
| | | |
| | | angular.forEach($scope.vm.viewer.issueDownVos, function (data) { |
| | | if (data.checked) { |
| | | issueIds.push(data.id); |
| | | //$scope.vm.projectId = data.projectId; |
| | | } |
| | | }); |
| | | |
| | | if (issueIds.length < 1) { |
| | | SweetAlert.warning($filter("translate")("issue.selectionCheck"), $filter("translate")("issue.selectIssueToChangeStatus")); // 선택 대상 확인, 상태 변경할 이슈를 선택하세요. |
| | | return; |
| | | } |
| | | |
| | | $uibModal.open({ |
| | | templateUrl : 'views/issue/downIssueModifyStatus.html', |
| | | size : "md", |
| | | controller : 'downIssueModifyStatusController', |
| | | backdrop : 'static', |
| | | resolve : { |
| | | parameter : function () { |
| | | return { |
| | | issueTypeId : $scope.vm.viewer.issueTypeVo.id, |
| | | issueIds : [$scope.vm.viewer.id], |
| | | //downIssues : $scope.vm.viewer.issueDownVos, |
| | | downIssues : issueIds, |
| | | projectId : $scope.vm.viewer.projectVo.id |
| | | }; |
| | | } |
| | |
| | | resolve : { |
| | | parameter : function () { |
| | | return { |
| | | departmentVos : [$scope.vm.form.issues[0].departmentVos], |
| | | id : [$scope.vm.form.issues[0].id], |
| | | projectId : [$scope.vm.form.issues[0].projectVo.id], |
| | | project : [$scope.vm.form.issues[0].projectVo] |
| | | departmentVos : $scope.vm.form.issues[0].departmentVos, |
| | | id : $scope.vm.form.issues[0].id, |
| | | projectId : $scope.vm.form.issues[0].projectVo.id, |
| | | project : $scope.vm.form.issues[0].projectVo, |
| | | issueTypeId : $scope.vm.form.issues[0].issueTypeVo.id |
| | | }; |
| | | } |
| | | } |
| | |
| | | parameter : function () { |
| | | return { |
| | | issueTypeId : $scope.vm.viewer.issueTypeVo.id |
| | | |
| | | }; |
| | | } |
| | | } |
| | |
| | | return result; |
| | | |
| | | } |
| | | function getSubPageContent(relPage, relPageSize, downPage, downPageSize) { |
| | | return { |
| | | relPage: relPage, |
| | | relPageSize: relPageSize, |
| | | downPage: downPage, |
| | | downPageSize: downPageSize |
| | | }; |
| | | } |
| | | |
| | | // 이슈 상세 정보 조회 |
| | | function getIssueDetail() { |
| | | function getIssueDetail(selectedRelPage, selectedDownPage) { |
| | | $rootScope.spinner = true; |
| | | if (selectedRelPage < 0) { |
| | | selectedRelPage = 0; |
| | | } |
| | | if (selectedDownPage < 0) { |
| | | selectedDownPage = 0; |
| | | } |
| | | // 현재 페이지 정보 |
| | | var currentRelPage = 0; |
| | | var currentDownPage = 0; |
| | | |
| | | // 쿠키에 선택한 페이지 정보가 없으면 기본 페이지 정보 0 을 저장 |
| | | if (angular.isUndefined(selectedRelPage) || selectedRelPage === "") { |
| | | currentRelPage = $scope.vm.page.selectedRelPage; |
| | | } |
| | | else { |
| | | currentRelPage = selectedRelPage; |
| | | } |
| | | |
| | | if (angular.isUndefined(selectedDownPage) || selectedDownPage === "") { |
| | | currentDownPage = $scope.vm.page.selectedDownPage; |
| | | } |
| | | else { |
| | | currentDownPage = selectedDownPage; |
| | | } |
| | | |
| | | // 초기화 해야할 할목을 지정하여 다른 이슈를 클릭할 때 초기화해준다. |
| | | $scope.fn.initReload(); |
| | | // $scope.fn.getRelTableConfigs(); |
| | | // $scope.fn.getDownTableConfigs(); |
| | | |
| | | $scope.fn.getRelTableConfigs(); |
| | | $scope.fn.getDownTableConfigs(); |
| | | var pageContent = $scope.fn.getSubPageContent(currentRelPage, $scope.vm.subPage.selectedRelPageRowCount |
| | | , currentDownPage, $scope.vm.subPage.selectedDownPageRowCount); |
| | | |
| | | Issue.detail($resourceProvider.getContent( |
| | | {id : $scope.vm.viewer.id, deep : "02"}, |
| | | $resourceProvider.getPageContent(0, 1))).then(function (result) { |
| | | var content = $resourceProvider.getContent( |
| | | { |
| | | id : $scope.vm.viewer.id |
| | | , issueTypeId : (function () { |
| | | var id = ""; |
| | | if ($rootScope.allIssueList) { |
| | | id = -1; |
| | | } else { |
| | | id = $rootScope.getCurrentIssueTypeId(); |
| | | } |
| | | return id; |
| | | })() |
| | | , deep : "02", pageContent |
| | | }, null); |
| | | |
| | | Issue.detail(content).then(function (result) { |
| | | |
| | | if (result.data.message.status === "success") { |
| | | if (angular.isDefined(result.data.data)) { |
| | | |
| | | $scope.vm.subPage.selectedRelPage = currentRelPage + 1; |
| | | $scope.vm.subPage.selectedDownPage = currentDownPage + 1; |
| | | $scope.vm.responseData = result.data.data; |
| | | |
| | | $scope.vm.viewer = angular.copy(result.data.data); |
| | | // 이슈 이미지 미리 보기 만들기 |
| | | $scope.fn.makePreviewImages(result.data.data.attachedFileVos); |
| | | // 활동 이력 만들기 |
| | | $scope.fn.makeActiveHistory(); |
| | | |
| | | if ($rootScope.isDefined($scope.vm.viewer.parentIssueVo)) { |
| | | $scope.vm.parentIssueId = $scope.vm.viewer.parentIssueVo.id; |
| | | } |
| | | |
| | | $scope.vm.viewer.startDate = result.data.data.startDate == null ? "common.unspecified" : result.data.data.startDate; // 미지정 |
| | | $scope.vm.viewer.completeDate = result.data.data.completeDate == null ? "common.unspecified" : result.data.data.completeDate; // 미지정 |
| | | |
| | | $scope.vm.rangeDate = result.data.data.startDate + "~" + result.data.data.completeDate |
| | | |
| | | // 이슈 유형에 연결된 사용자 정의 필드 정보를 입력 폼에서 사용할 수 있게 가공한다. |
| | | $scope.fn.setFormByIssueTypeCustomFields(result.data.data.issueTypeCustomFieldVos); |
| | |
| | | $scope.vm.form.issues = []; |
| | | $scope.vm.form.issues.push(result.data.data); |
| | | $scope.vm.form.issuesDown = []; |
| | | $scope.vm.form.issuesDownStatus = [];// 하위이슈 상태 |
| | | $scope.vm.form.issuesDown.push(result.data.data); |
| | | |
| | | var issueTableConfigVos = result.data.data.issueTableConfigVos; |
| | | $scope.fn.setRelTableConfigs(issueTableConfigVos[0]); |
| | | $scope.fn.setDownTableConfigs(issueTableConfigVos[1]); |
| | | |
| | | // 연관 이슈 반복문 |
| | | if (result.data.data.issueRelationVos !== null) { |
| | | angular.forEach(result.data.data.issueRelationVos, function (issueRelationVo){ |
| | | issueRelationVo.relationIssueTypeName = $scope.vm.relationIssueTypes[issueRelationVo.relationIssueType].name; |
| | | $scope.vm.form.issues.push(issueRelationVo.issueRelation); |
| | | }); |
| | | result.data.data.issueRelationVos.sort(function (a, b) { //최근변경일 내림차순 |
| | | return a.modifyDate > b.modifyDate ? -1 : a.modifyDate < b.modifyDate ? 1 : 0; |
| | | }); |
| | | } |
| | | |
| | |
| | | angular.forEach(result.data.data.issueDownVos, function (issueDownVo){ |
| | | //$scope.vm.form.issuesDown.push(issueDownVo.issueDown); |
| | | $scope.vm.form.issuesDown.push(issueDownVo); |
| | | $scope.vm.form.issuesDownStatus.push(issueDownVo.issueStatusVo.issueStatusType); |
| | | }); |
| | | result.data.data.issueDownVos.sort(function (a, b) { //최근변경일 내림차순 |
| | | return a.modifyDate > b.modifyDate ? -1 : a.modifyDate < b.modifyDate ? 1 : 0; |
| | | }); |
| | | } |
| | | $scope.vm.viewer.issueRelationVos = result.data.data.issueRelationVos; |
| | | $scope.vm.viewer.issueDownVos = result.data.data.issueDownVos; |
| | | |
| | | if ($rootScope.workProject.id > -1 && result.data.data.projectVo !== null) { |
| | | $rootScope.changeLastProject(result.data.data.projectVo.id); |
| | | $rootScope.changeLastProject(result.data.data.projectVo.id, false, false); |
| | | } |
| | | |
| | | $scope.vm.inheritPartners = result.data.data.issueTypeVo.inheritPartners; |
| | | $scope.vm.downTotalCount = result.data.data.downTotalCount; |
| | | } |
| | | } |
| | | else { |
| | | SweetAlert.swal($filter("translate")("issue.errorIssueDetails"), result.data.message.message, "error"); // 이슈 상세 정보 조회 오류 |
| | | } |
| | | $rootScope.spinner = false; |
| | | }); |
| | | } |
| | | |
| | | // =================================================================================== |
| | | |
| | | // 이슈 이미지 미리 보기 만들기 |
| | | function makePreviewImages(attachedFileVos) { |
| | |
| | | |
| | | // 활동 이력 만들기 |
| | | function makeActiveHistory() { |
| | | $scope.vm.viewer.activeHistory = $scope.vm.viewer.issueCommentVos.concat($scope.vm.viewer.issueHistoryVos); |
| | | $scope.vm.viewer.activeHistory.sort(function (a, b) { |
| | | $scope.vm.viewer.activeParentHistory = []; |
| | | $scope.vm.viewer.activeHistory = []; |
| | | $scope.vm.viewer.activeParentMailHistory = []; |
| | | $scope.vm.viewer.activeAllMailAndReplyHistory = []; //상위+하위 메일,댓글 히스토리 |
| | | var oriMailHistory = []; |
| | | var oriCommentHistory = []; |
| | | |
| | | if ($scope.vm.viewer.issueHistoryVos != null && $scope.vm.viewer.issueHistoryVos.length > 0) { |
| | | // 상위이슈 메일 히스토리 |
| | | for (var i=0; i<$scope.vm.viewer.issueHistoryVos.length; i++) { |
| | | if ($scope.vm.viewer.issueHistoryVos[i].issueHistoryType === "SEND") { |
| | | oriMailHistory.push($scope.vm.viewer.issueHistoryVos[i]); |
| | | } |
| | | } |
| | | //$scope.vm.viewer.activeParentMailHistory = angular.copy(oriMailHistory); |
| | | } |
| | | |
| | | // 상위이슈 댓글 히스토리 |
| | | if ($scope.vm.viewer.issueCommentVos != null && $scope.vm.viewer.issueCommentVos.length > 0) { |
| | | for (var i=0; i<$scope.vm.viewer.issueCommentVos.length; i++) { |
| | | oriCommentHistory.push($scope.vm.viewer.issueCommentVos[i]); |
| | | } |
| | | } |
| | | |
| | | $scope.vm.viewer.activeAllMailAndReplyHistory = oriMailHistory.concat(oriCommentHistory); |
| | | |
| | | // 하위이슈 히스토리 |
| | | if ($scope.vm.viewer.issueDownVos != null && $scope.vm.viewer.issueDownVos.length > 0) { |
| | | $scope.vm.viewer.activeDownHistory = []; //하위이슈 히스토리만 |
| | | $scope.vm.viewer.downComment = []; //하위이슈 댓글만 |
| | | $scope.vm.viewer.activeDownAllHistory = []; //하위이슈 히스토리+댓글 |
| | | $scope.vm.viewer.activeDownMailAndReplyHistory = []; //하위 메일+댓글 히스토리 |
| | | var downTitle = ""; |
| | | var oriDownHistory = []; |
| | | var oriDownCommentHistory = []; |
| | | var oriDownMailHistory = []; |
| | | |
| | | // 하위이슈 히스토리 |
| | | for (var i=0; i<$scope.vm.viewer.issueDownVos.length; i++){ |
| | | oriDownHistory.push($scope.vm.viewer.issueDownVos[i].issueHistoryVos); |
| | | |
| | | // 하위이슈 메일 기록 |
| | | for (var j=0; j<$scope.vm.viewer.issueDownVos[i].issueHistoryVos.length; j++) { |
| | | if($scope.vm.viewer.issueDownVos[i].issueHistoryVos[j].issueHistoryType === "SEND") { |
| | | oriDownMailHistory.push($scope.vm.viewer.issueDownVos[i].issueHistoryVos[j]); |
| | | } |
| | | } |
| | | // 하위이슈 댓글 기록 |
| | | for (var k=0; k<$scope.vm.viewer.issueDownVos[i].issueCommentVos.length; k++) { |
| | | oriDownCommentHistory.push($scope.vm.viewer.issueDownVos[i].issueCommentVos[k]); |
| | | } |
| | | } |
| | | // 하위이슈 메일+댓글 저장 |
| | | $scope.vm.viewer.activeDownMailAndReplyHistory = oriDownCommentHistory.concat(oriDownMailHistory); |
| | | for (var i=0; i<$scope.vm.viewer.activeDownMailAndReplyHistory.length; i++){ |
| | | downTitle = "<div class='dot' style='margin-bottom: -8px'>*하위이슈 : "+$scope.vm.viewer.activeDownMailAndReplyHistory[i].title+"</div>"; |
| | | $scope.vm.viewer.activeDownMailAndReplyHistory[i].desc = downTitle + $scope.vm.viewer.activeDownMailAndReplyHistory[i].description; |
| | | } |
| | | |
| | | $scope.vm.viewer.activeDownMailAndReplyHistory.sort(function (a, b) { //"MAIL_AND_REPLY_DOWN" 내림차순 |
| | | return a.registerDate > b.registerDate ? -1 : a.registerDate < b.registerDate ? 1 : 0; |
| | | }); |
| | | |
| | | for (var i=0; i<oriDownHistory.length; i++){ |
| | | if ($scope.vm.viewer.activeDownHistory === "") { |
| | | $scope.vm.viewer.activeDownHistory = oriDownHistory[i]; |
| | | } else { |
| | | $scope.vm.viewer.activeDownHistory = $scope.vm.viewer.activeDownHistory.concat(oriDownHistory[i]); |
| | | } |
| | | } |
| | | |
| | | for (var i=0; i<$scope.vm.viewer.activeDownHistory.length; i++){ |
| | | downTitle = "<div class='dot' style='margin-bottom: -8px'>*하위이슈 : "+$scope.vm.viewer.activeDownHistory[i].title+"</div>"; |
| | | $scope.vm.viewer.activeDownHistory[i].desc = downTitle + $scope.vm.viewer.activeDownHistory[i].description; |
| | | } |
| | | $scope.vm.viewer.activeDownHistory.sort(function (a, b) { //내림차순 |
| | | return a.registerDate > b.registerDate ? -1 : a.registerDate < b.registerDate ? 1 : 0; |
| | | }); |
| | | |
| | | // 하위이슈 댓글 히스토리 |
| | | for (var i=0; i<oriDownCommentHistory.length; i++) { |
| | | if ($scope.vm.viewer.downComment === "") { |
| | | $scope.vm.viewer.downComment = oriDownCommentHistory[i]; |
| | | } else { |
| | | $scope.vm.viewer.downComment = $scope.vm.viewer.downComment.concat(oriDownCommentHistory[i]); |
| | | } |
| | | } |
| | | $scope.vm.viewer.issueDownVos.sort(function (a, b) { //내림차순 |
| | | return a.registerDate > b.registerDate ? -1 : a.registerDate < b.registerDate ? 1 : 0; |
| | | }); |
| | | |
| | | $scope.vm.viewer.activeDownAllHistory = $scope.vm.viewer.downComment.concat($scope.vm.viewer.activeDownHistory); |
| | | |
| | | $scope.vm.viewer.activeDownAllHistory.sort(function (a, b) { //"RECODE_DOWN" 내림차순 |
| | | return a.registerDate > b.registerDate ? -1 : a.registerDate < b.registerDate ? 1 : 0; |
| | | }); |
| | | |
| | | $scope.vm.viewer.activeParentHistory = $scope.vm.viewer.issueCommentVos.concat($scope.vm.viewer.issueHistoryVos); |
| | | $scope.vm.viewer.activeHistory = $scope.vm.viewer.activeParentHistory.concat($scope.vm.viewer.activeDownAllHistory); |
| | | $scope.vm.viewer.activeAllMailAndReplyHistory = $scope.vm.viewer.activeAllMailAndReplyHistory.concat($scope.vm.viewer.activeDownMailAndReplyHistory); |
| | | |
| | | }else { |
| | | $scope.vm.viewer.activeParentHistory = $scope.vm.viewer.issueCommentVos.concat($scope.vm.viewer.issueHistoryVos); |
| | | $scope.vm.viewer.activeHistory = $scope.vm.viewer.issueCommentVos.concat($scope.vm.viewer.issueHistoryVos); |
| | | } |
| | | |
| | | $scope.vm.viewer.activeHistory.sort(function (a, b) { //"ALL" 내림차순 |
| | | return a.registerDate > b.registerDate ? -1 : a.registerDate < b.registerDate ? 1 : 0; |
| | | }); |
| | | |
| | | $scope.vm.viewer.activeParentHistory.sort(function (a, b) { //"RECODE" 내림차순 |
| | | return a.registerDate > b.registerDate ? -1 : a.registerDate < b.registerDate ? 1 : 0; |
| | | }); |
| | | |
| | | $scope.vm.viewer.activeAllMailAndReplyHistory.sort(function (a, b) { //"MAIL_AND_REPLY" 내림차순 |
| | | return a.registerDate > b.registerDate ? -1 : a.registerDate < b.registerDate ? 1 : 0; |
| | | }); |
| | | } |
| | |
| | | $timeout(function () { |
| | | SweetAlert.success($filter("translate")("common.deleteSucceeded"), result.data.message.message); // 삭제 성공 |
| | | }, 100); |
| | | |
| | | $scope.fn.getCommentList(); |
| | | } |
| | | else { |
| | |
| | | |
| | | if (result.data.message.status === "success") { |
| | | $scope.vm.viewer.issueCommentVos = result.data.data; |
| | | $scope.fn.updateActiveHistory(); |
| | | } |
| | | else { |
| | | SweetAlert.swal({ |
| | |
| | | }); |
| | | } |
| | | |
| | | function getParametersAll() { |
| | | var params = $scope.fn.getParameters(null, $scope.vm.viewer.issueCompanyVos); |
| | | params = $scope.fn.getParameters(params, $scope.vm.viewer.issueIspVos); |
| | | params = $scope.fn.getParameters(params, $scope.vm.viewer.issueHostingVos); |
| | | // 일반 메일 발송 (사용자 직접 작성) |
| | | function sendCommonMail() { |
| | | $uibModal.open({ |
| | | templateUrl : 'views/issue/issueCommonSendMail.html', |
| | | size : "md", |
| | | controller : 'issueCommonSendMailController', |
| | | backdrop : 'static', |
| | | resolve : { |
| | | parameter : { |
| | | issueId : $scope.vm.viewer.id, |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | if (params != null && params.length > 0) { |
| | | for (let i = 0; i < params.length; i++) { |
| | | params[i].id = i; |
| | | function getParametersAll() { |
| | | var params = []; |
| | | if ($scope.vm.viewer.issueCompanyVos != null && $scope.vm.viewer.issueCompanyVos.length > 0) { |
| | | var issueCompany = $scope.fn.getParameters(params, $scope.vm.viewer.issueCompanyVos); |
| | | if (issueCompany != null && issueCompany.length > 0) { |
| | | angular.forEach(issueCompany, function (data) { |
| | | params.push(data); |
| | | }); |
| | | } |
| | | } |
| | | return params; |
| | | if ($scope.vm.viewer.issueIspVos != null && $scope.vm.viewer.issueIspVos.length > 0) { |
| | | var issueIsp = $scope.fn.getParameters(params, $scope.vm.viewer.issueIspVos) |
| | | if (issueIsp != null && issueIsp.length > 0) { |
| | | angular.forEach(issueIsp, function (data) { |
| | | params.push(data); |
| | | }); |
| | | } |
| | | } |
| | | if ($scope.vm.viewer.issueHostingVos != null && $scope.vm.viewer.issueHostingVos.length > 0) { |
| | | var issueHosting = $scope.fn.getParameters(params, $scope.vm.viewer.issueHostingVos); |
| | | if (issueHosting != null && issueHosting.length > 0) { |
| | | angular.forEach(issueHosting, function (data) { |
| | | params.push(data); |
| | | }); |
| | | } |
| | | } |
| | | |
| | | if (params != null && params.length > 0) { |
| | | var filterData = params.filter(function(item, idx){ |
| | | return params.findIndex(function(item2, idx2){ |
| | | return item.email === item2.email |
| | | }) == idx; |
| | | }); |
| | | for (let i = 0; i < filterData.length; i++) { |
| | | filterData[i].id = i; |
| | | } |
| | | } |
| | | return filterData; |
| | | } |
| | | |
| | | function getParameters(sourceArr, partnerVos) { |