/** * Created by wisestone on 2019-02-07. */ 'use strict'; define([ 'app', 'angular' ], function (app, angular) { app.controller('issueAddTableConfigController', ['$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, // 사용자 정의 필드 목록을 가져온다. getIssueAddTableConfigs : getIssueAddTableConfigs // 이슈 목록 테이블 설정 정보를 가져온다. }; // 변수 모음 $scope.vm = { allIssue : parameter.allIssue, issueTableConfigs : [{ name : $filter("translate")("issue.issueTitle"), // 이슈 제목 key : "ISSUE_TITLE", width : "width-140-p", position : 0, display : true, checkboxShow : false }, { name : $filter("translate")("common.priority"), // 우선순위 key : "PRIORITY", width : "width-80-p", position : 1, display : true, checkboxShow : true }, { name : $filter("translate")("common.importance"), // 중요도 key : "SEVERITY", width : "width-80-p", position : 2, display : true, checkboxShow : true }, { name : $filter("translate")("issue.issueType"), // 이슈 타입 key : "ISSUE_TYPE", width : "width-140-p", position : 3, display : true, checkboxShow : true }, { name : $filter("translate")("common.assigneeTeam"), // 담당부서 key : "ASSIGNEE_TEAM", width : "width-100-p", position : 4, display : true, checkboxShow : true }, { name : $filter("translate")("common.countDownIssue"), // 하위이슈 카운트 key : "COUNT_DOWN_ISSUE", width : "width-100-p", position : 5, display : false, checkboxShow : true }, { name : $filter("translate")("common.register"), // 등록자 key : "REGISTER", width : "width-100-p", position : 6, display : false, checkboxShow : true }, { name : $filter("translate")("common.period"), // 기간 key : "PERIOD", width : "width-140-p", position : 7, display : false, checkboxShow : true }, { name : $filter("translate")("common.lastChangeDate"), // 최근 변경일 key : "MODIFY_DATE", width : "width-100-p", position : 8, display : false, checkboxShow : true }, { name : $filter("translate")("common.registerDate"), // 등록일 key : "REGISTER_DATE", width : "width-80-p", position : 9, 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.issueTableConfigs) }; IssueTableConfig.add($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("getIssueTableConfigs", {}); } else { SweetAlert.error($filter("translate")("issue.failedToSaveIssueTableSetting"), result.data.message.message); // 이슈 테이블 설정 저장 실패 } $rootScope.spinner = false; }); } // 팝업 창 닫기 function cancel() { $rootScope.$broadcast("closeLayer"); // 팝업이 열리고 나서 js-multi, js-single 등에서 body 이벤트가 날아가는 현상 수정 $uibModalInstance.dismiss('cancel'); $(document).unbind("keydown"); // 단축키 이벤트 제거 } // 이슈유형 별 파트너 목록 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 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; } var content = { //delValue : $scope.vm.issueTableConfigs.splice(12,1), issueTableConfigs : JSON.stringify($scope.vm.issueTableConfigs), issueTypeId : (function () { var id = ""; if ($rootScope.allIssueList) { id = -1; } else { id = $rootScope.getCurrentIssueTypeId(); } return id; })() }; // 이슈 목록 테이블 설정 정보를 가져온다. function getIssueAddTableConfigs() { var deferred = $q.defer(); IssueTableConfig.detail($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); // 이슈 테이블 컬럼 조회 실패 } // for (var i = 0; i < result.data.name; i++) { // if (result.data.name === '') { // result.splice(i,1); // i--; // } // } deferred.resolve(result.data.data); }); return deferred.promise; } // 파트너를 조회한 후 표시할 이슈 테이블 컬럼을 준비한다. $scope.fn.getUsePartner().then(function (result) { let count = 10; angular.forEach(result, function (partner) { $scope.vm.issueTableConfigs.push({ name : partner.name, key : (function () { var key = ""; if (partner.name === "업체") { key = "COMPANY"; } else if(partner.name === "ISP") { key = "ISP"; } else { key = "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.issueTableConfigs.push({ name : customField.name, key : "CUSTOM_FIELD_" + customField.id, width : "width-100-p", display : false, checkboxShow : true, position : count }); count++; }); // 이슈 목록 테이블 설정 정보를 가져온다. $scope.fn.getIssueAddTableConfigs().then(function (issueTableConfigs) { if ($rootScope.isDefined(issueTableConfigs)) { $rootScope.spinner = true; var saveTableConfigs = JSON.parse(issueTableConfigs); angular.forEach(saveTableConfigs, function (saveTableConfig) { for (var count in $scope.vm.issueTableConfigs) { var issueTableConfig = $scope.vm.issueTableConfigs[count]; if (issueTableConfig.key === saveTableConfig.key) { issueTableConfig.display = saveTableConfig.display; issueTableConfig.width = saveTableConfig.width; issueTableConfig.position = parseInt(saveTableConfig.position); break; } } }); $rootScope.spinner = false; } }); }) }); }]); });