OWL ITS + 탐지시스템(인터넷 진흥원)
jhjang
2021-12-07 a8b47ed588d009da58f103221b16bbe2a578ec39
src/main/webapp/scripts/app/api/apiSetting.controller.js
@@ -7,8 +7,12 @@
        'app', 'angular'
    ],
    function (app, angular) {
        app.controller('apiSettingController', ['$scope', '$rootScope', '$log', '$resourceProvider','$uibModal', 'SweetAlert', '$timeout', '$filter', '$injector', '$controller', 'Api', 'Priority', 'Severity', 'IssueType', 'IssueTypeCustomField',
            function ($scope, $rootScope, $log, $resourceProvider, $uibModal, SweetAlert, $timeout, $filter, $injector, $controller, Api, Priority, Severity, IssueType, IssueTypeCustomField) {
        app.controller('apiSettingController', ['$scope', '$rootScope', '$log', '$resourceProvider','$uibModal', 'SweetAlert',
            '$timeout', '$filter', '$injector', '$controller', 'Api', 'Priority', 'Severity', 'IssueType', 'IssueTypeCustomField',
            'IssueStatus',
            function ($scope, $rootScope, $log, $resourceProvider, $uibModal, SweetAlert,
                      $timeout, $filter, $injector, $controller, Api, Priority, Severity, IssueType, IssueTypeCustomField,
                      IssueStatus) {
                $scope.fn = {
                    changeTab : changeTab,
@@ -29,14 +33,25 @@
                    getOverlapList : getOverlapList,
                    onChangeIssueTypeOverlap : onChangeIssueTypeOverlap,
                    getIssueTypeCustomFields : getIssueTypeCustomFields,
                    getCurrentIssueTypeVo : getCurrentIssueTypeVo
                    getCurrentIssueTypeVo : getCurrentIssueTypeVo,
                    loadSpec : loadSpec,
                    getIssueStatuses : getIssueStatuses,
                    onChangeIssueTypeSpec : onChangeIssueTypeSpec,
                    createRequestModifyJson : createRequestModifyJson,
                    createRequestAddJson : createRequestAddJson,
                    createCustomFields : createCustomFields,
                    getProjectList : getProjectList
                };
                $scope.vm = {
                    tab : "API_COL_SETTING",
                    issueTypes : [],
                    issueStatuses : [],
                    severities : [],
                    priorities : [],
                    projects : [],
                    sampleJsonAdd : "",
                    sampleJsonModify : "",
                    // projects : [],
                    form : {
                        issueCustomFields : [],
@@ -63,10 +78,15 @@
                    },
                    issueTypeId : "",
                    issueTypeName : "",
                    customFieldName : "",
                };
                angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
                    issueStatusId : "",
                    issueStatusName : "",
                    customFieldName : "",
                    projectId : "",
                    projectName : "",
                };
                function initForm() {
                    $scope.vm.form.issueApiDefault.title = "";
@@ -119,7 +139,11 @@
                            $scope.vm.issueTypes = result.data.data;
                            if ($scope.vm.issueTypes != null && $scope.vm.issueTypes.length > 0) {
                                $scope.vm.issueTypeId = $scope.vm.issueTypes[0].id.toString();
                                $scope.fn.onChangeIssueType();
                                if ($scope.vm.tab === "API_COL_SETTING") {
                                    $scope.fn.onChangeIssueType();
                                } else if ($scope.vm.tab === "API_SPEC_SETTING") {
                                    $scope.fn.onChangeIssueTypeSpec();
                                }
                            }
                        }
                        else {
@@ -272,21 +296,24 @@
                    $scope.vm.form.issueCustomFields = [];
                    var issueTypeVo = $scope.fn.getCurrentIssueTypeVo();
                    if (issueTypeVo.projectVo == null) return;
                    if (issueTypeVo == null) return;
                    IssueTypeCustomField.find($resourceProvider.getContent({
                            projectId : issueTypeVo.projectVo.id,
                            projectId : $scope.vm.projectId,
                            IssueTypeId : issueTypeVo.id },
                        $resourceProvider.getPageContent(0, 1000))).then(function (result) {
                        $scope.vm.form.issueCustomFields = [];
                        if (result.data.message.status === "success") {
                            $scope.vm.form.issueCustomFields = [];
                            angular.forEach(result.data.data, function (issueTypeCustomField) {
                                $scope.vm.form.issueCustomFields.push(issueTypeCustomField);
                            });
                            $scope.$broadcast("getIssueTypeListComplete", $scope.vm.form.issueCustomFields);
                        }
                        else {
                            SweetAlert.swal($filter("translate")("issue.failedToUserDefinedFieldListAssociatedLookup"), result.data.message.message, "error"); // 이슈 유형에 연결된 사용자 정의 필드 목록 조회 실패
                        }
@@ -317,6 +344,16 @@
                    $scope.fn.getOverlapList();
                });
                $rootScope.$on("changeSpecSettingTab", function (event, args){
                    $scope.fn.loadSpec();
                });
                $scope.$on("getIssueTypeListComplete", function (event, args) {
                    if ($scope.vm.tab === "API_SPEC_SETTING") {
                        $scope.fn.createRequestAddJson();
                        $scope.fn.createRequestModifyJson();
                    }
                });
                function changeTab(tab) {
                    $scope.vm.tab = tab;
@@ -325,15 +362,100 @@
                        $rootScope.$broadcast("changeColumnSettingTab");
                    } else if (tab === "API_OVERLAP_SETTING") {
                        $rootScope.$broadcast("changeOverlapSettingTab");
                    } else if (tab === "API_SPEC_SETTING") {
                        $rootScope.$broadcast("changeSpecSettingTab");
                    }
                }
                function getIssueStatuses() {
                    var condition = {
                        issueTypeId : $scope.vm.issueTypeId
                    }
                    IssueStatus.findIssueStatusesByIssueType($resourceProvider.getContent(condition,
                        $resourceProvider.getPageContent(0, 1000))).then(function (result) {
                        if (result.data.message.status === "success") {
                            $scope.vm.issueStatuses = result.data.data;
                            if ($scope.vm.issueStatuses != null && $scope.vm.issueStatuses.length > 0) {
                                $scope.vm.issueStatusId = $scope.vm.issueStatuses[0].id.toString();
                            }
                        }
                        else {
                            SweetAlert.swal($filter("translate")("issue.failedToCriticalListLookup"), result.data.message.message, "error"); // 중요도 목록 조회 실패
                        }
                    });
                }
                function onChangeIssueTypeSpec() {
                    $scope.fn.getIssueTypeCustomFields();
                }
                // 요청 데이터 만들기( 추가)
                function createRequestAddJson() {
                    var customFields = $scope.fn.createCustomFields();
                    var jsonData = {
                            token: "||발급받은 토큰}||",
                            title: "||이슈 제목||",
                            issueTypeId: $scope.vm.issueTypeId,
                            apiType: "add",
                            customFields : customFields
                        };
                    $scope.vm.sampleJsonAdd = JSON.stringify(jsonData,undefined, 4);
                }
                function createCustomFields() {
                    var customFields = [];
                    $scope.vm.form.issueCustomFields.forEach(function (issueCustomField){
                        customFields.push({
                            customFieldId: issueCustomField.customFieldVo.id,
                            useValue: "||입력값||"
                        })
                    });
                    return customFields;
                }
                // 요청 데이터 만들기(수정)
                function createRequestModifyJson() {
                    var customFields = $scope.fn.createCustomFields();
                    var jsonData = {
                        token: "||발급받은 토큰||",
                        title: "||이슈 제목||",
                        issueTypeId: $scope.vm.issueTypeId,
                        apiType: "modify",
                        issueStatusId: $scope.vm.issueStatusId,
                        customFields : customFields
                    };
                    $scope.vm.sampleJsonModify = JSON.stringify(jsonData, undefined, 2);
                }
                function getProjectList() {
                    if ($rootScope.projects != null) {
                        $scope.vm.projects = [];
                        $rootScope.projects.forEach(function (project){
                            if (project.id > -1) {
                                $scope.vm.projects.push(project);
                            }
                        });
                        $scope.vm.projectId = $scope.vm.projects[0].id.toString();
                    }
                }
                function loadSpec() {
                    $scope.fn.getIssueStatuses();
                    $scope.fn.getIssueTypeCustomFields();
                }
                function start() {
                    $scope.fn.initForm();
                    $scope.fn.getProjectList();
                    $scope.fn.getSeverities();
                    $scope.fn.getPriorities();
                    $scope.fn.getIssueTypes();
                }
                $scope.fn.start();