/**
|
* 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
|
}]
|
};
|
|
|
// 폼 전송
|
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 = 9;
|
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;
|
}
|
});
|
})
|
});
|
|
}]);
|
});
|