/** * Created by wisestone on 2019-02-07. */ 'use strict'; define([ 'app', 'angular' ], function (app, angular) { app.controller('issueAddRelationTableConfigController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$uibModalInstance', 'SweetAlert', '$timeout', 'IssueTableConfig', 'Issue', 'IssueTypeCustomField', '$q', '$filter', 'parameter', function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, SweetAlert, $timeout, IssueTableConfig, Issue, IssueTypeCustomField, $q, $filter, parameter) { // 함수 모음 $scope.fn = { cancel : cancel, // 팝업 창 닫기 formSubmit : formSubmit, // 폼 전송 formCheck : formCheck, // 폼 체크 getUsePartner : getUsePartner, getCustomFields : getCustomFields, // 사용자 정의 필드 목록을 가져온다. getRelIssueTableConfigs : getRelIssueTableConfigs // 이슈 목록 테이블 설정 정보를 가져온다. }; // 변수 모음 $scope.vm = { issueTypeId: "", issueRelTableConfigs : [{ name : $filter("translate")("issue.relationIssueType"), // 연관 이슈 구분 key : "RELATION_ISSUE_TYPE", width : "width-60-p", position : 0, display : true, checkboxShow : false }, { name : $filter("translate")("issue.relationIssueTitle"), // 연관 이슈 제목 key : "RELATION_ISSUE_TITLE", width : "width-60-p", position : 0, display : true, checkboxShow : false }, { name : $filter("translate")("common.priority"), // 우선순위 key : "RELATION_PRIORITY", width : "width-50-p", position : 1, display : false, checkboxShow : true }, { name : $filter("translate")("common.importance"), // 중요도 key : "RELATION_SEVERITY", width : "width-50-p", position : 2, display : false, checkboxShow : true }, { name : $filter("translate")("common.assigneeTeam"), // 담당부서 key : "RELATION_ASSIGNEE_TEAM", width : "width-50-p", position : 3, display : false, checkboxShow : true }, { name : $filter("translate")("common.register"), // 등록자 key : "RELATION_REGISTER", width : "width-50-p", position : 4, display : false, checkboxShow : true }, { name : $filter("translate")("common.period"), // 기간 key : "RELATION_PERIOD", width : "width-100-p", position : 5, display : false, checkboxShow : true }, { name : $filter("translate")("common.lastChangeDate"), // 최근 변경일 key : "RELATION_MODIFY_DATE", width : "width-100-p", position : 6, display : false, checkboxShow : true }, { }] }; // 폼 전송 function formCheck(formInvalid) { if (formInvalid) { return true; } return false; } // 폼 전송 function formSubmit() { $rootScope.spinner = true; var content = { issueTypeId : (function () { var id = ""; if ($rootScope.allIssueList) { id = -1; } else { id = $rootScope.getCurrentIssueTypeId(); } return id; })(), issueTableConfigs : JSON.stringify($scope.vm.issueRelTableConfigs) }; IssueTableConfig.relationAdd($resourceProvider.getContent(content, $resourceProvider.getPageContent(0, 0))).then(function (result) { if (result.data.message.status === "success") { SweetAlert.success($filter("translate")("issue.completedSavingIssueTable"), $filter("translate")("issue.saveIssueTableSettingsInformation")); // "이슈 테이블 설정 저장 완료", "이슈 테이블 설정 정보가 저장되었습니다." swal.close(); $scope.fn.cancel(); // 변경된 이슈 테이블 정보를 이슈 목록 테이블에 갱신한다. $rootScope.$broadcast("getIssueDetail", { id : $rootScope.currentDetailIssueId}); } else { SweetAlert.error($filter("translate")("issue.failedToSaveIssueTableSetting"), result.data.message.message); // 이슈 테이블 설정 저장 실패 } }); } // 이슈유형 별 파트너 목록 function getUsePartner() { var deferred = $q.defer(); $scope.vm.partners = []; Issue.findPartners($resourceProvider.getContent({issueTypeId : $rootScope.getCurrentIssueTypeId()}, $resourceProvider.getPageContent(0, 1))).then(function (result) { if (result.data.message.status === "success") { $scope.vm.partnerVos = result.data.data; } else { SweetAlert.swal($filter("translate")("issue.failedToPartnerListLookup"), result.data.message.message, "error"); // 파트너 목록 조회 실패 } deferred.resolve(result.data.data); }); return deferred.promise; } // 팝업 창 닫기 function cancel() { $rootScope.$broadcast("closeLayer"); // 팝업이 열리고 나서 js-multi, js-single 등에서 body 이벤트가 날아가는 현상 수정 $uibModalInstance.dismiss('cancel'); $(document).unbind("keydown"); // 단축키 이벤트 제거 } // 사용자 정의 필드 목록을 가져온다. function getCustomFields() { var deferred = $q.defer(); IssueTypeCustomField.findByIssueType($resourceProvider.getContent({issueTypeId : $rootScope.getCurrentIssueTypeId()}, $resourceProvider.getPageContent(0, 1000))).then(function (result) { if (result.data.message.status !== "success") { SweetAlert.error($filter("translate")("issue.failedToUserDefinedFieldListLookup"), result.data.message.message); // 사용자 정의 필드 목록 조회 실패 } deferred.resolve(result.data.data); }); return deferred.promise; } // 이슈 목록 테이블 설정 정보를 가져온다. function getRelIssueTableConfigs() { var deferred = $q.defer(); var content = { issueId : $rootScope.currentDetailIssueId, issueTypeId : (function () { var id = ""; if ($rootScope.allIssueList) { id = -1; } else { id = $rootScope.getCurrentIssueTypeId(); } return id; })(), delValue : $scope.vm.issueRelTableConfigs.splice(8,1), issueTableConfigs : JSON.stringify($scope.vm.issueRelTableConfigs) }; IssueTableConfig.relationDetail($resourceProvider.getContent(content, $resourceProvider.getPageContent(0, 1000))).then(function (result) { if (result.data.message.status !== "success") { SweetAlert.error($filter("translate")("issue.failedToIssueTableColumnLookup"), result.data.message.message); // 이슈 테이블 컬럼 조회 실패 } deferred.resolve(result.data.data); }); return deferred.promise; } // 파트너를 조회한 후 표시할 이슈 테이블 컬럼을 준비한다. $scope.fn.getUsePartner().then(function (result) { var count = 7; angular.forEach(result, function (partner) { $scope.vm.issueRelTableConfigs.push({ name : partner.name, key : (function () { var key = ""; if (partner.name === "업체") { key = "REL_COMPANY"; } else if(partner.name === "ISP") { key = "REL_ISP"; } else { key = "REL_HOSTING"; } return key; })(), width : "width-100-p", display : false, checkboxShow : true, position : count }); count++; }); // 사용자 정의 필드를 조회한 후 표시할 이슈 테이블 컬럼을 준비한다. $scope.fn.getCustomFields().then(function (result) { angular.forEach(result, function (customField) { $scope.vm.issueRelTableConfigs.push({ name : customField.name, key : "CUSTOM_FIELD_" + customField.id, width : "width-100-p", display : false, checkboxShow : true, position : count }); count++; }); // 이슈 목록 테이블 설정 정보를 가져온다. $scope.fn.getRelIssueTableConfigs().then(function (issueTableConfigs) { if ($rootScope.isDefined(issueTableConfigs)) { $rootScope.spinner = true; // var saveTableConfigs = JSON.parse(issueTableConfigs); var saveTableConfigs = JSON.parse(issueTableConfigs); angular.forEach(saveTableConfigs, function (saveTableConfig) { for (var count in $scope.vm.issueRelTableConfigs) { var issueTableConfig = $scope.vm.issueRelTableConfigs[count]; if (issueTableConfig.key === saveTableConfig.key) { issueTableConfig.display = saveTableConfig.display; issueTableConfig.width = saveTableConfig.width; issueTableConfig.position = saveTableConfig.position; break; } } }); $rootScope.spinner = false; } }); }); }); }]); });