OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2021-12-28 0f59a76b263ba6cd79380a729f38bfca92a907dd
Merge branch 'master' of http://192.168.0.25:9001/r/owl-kisa
8개 파일 변경됨
180 ■■■■■ 파일 변경됨
src/main/webapp/assets/styles/main.css 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/custom_components/summernote/summernote.js 15 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/i18n/ko/global.json 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/api/apiAuth.controller.js 38 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueList.controller.js 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueListNormal.html 117 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/assets/styles/main.css
@@ -5225,7 +5225,7 @@
}*/
.modal-open {
    overflow: auto;
    overflow: hidden;
}
.modal {
src/main/webapp/custom_components/summernote/summernote.js
@@ -2020,7 +2020,7 @@
        hideDialog: function ($dialog) {
            $dialog.modal('hide');
            $("body").addClass("modal-open");
            $('.modal:visible').length && $(document.body).addClass('modal-open');
        },
        createLayout: function ($note, options) {
@@ -7293,9 +7293,20 @@
}));
var count = 0; // 모달이 열릴 때 마다 count 해서  z-index값을 높여줌
$(document).on('show.bs.modal', '.modal', function () {
    var zIndex = 1040 + (10 * count);
    $(this).css('z-index', zIndex);
    setTimeout(function() {
        $('.modal-backdrop').not('.modal-stack').css('z-index', zIndex - 1).addClass('modal-stack');
    }, 0);
    count = count + 1
});
function closeOwlModal() {
    $('.owl_close_modal').modal('hide');
    $('body').addClass('modal-open');
    $('.modal:visible').length && $(document.body).addClass('modal-open');
}
//  크롬 브라우저 한글 오류 패치
src/main/webapp/i18n/ko/global.json
@@ -852,7 +852,7 @@
        "emptyUser": "선택할 수 있는 사용자가 없습니다.",
        "emptyProject": "선택할 수 있는 프로젝트가 없습니다.",
        "emptyDepartment": "선택할 수 있는 부서가 없습니다.",
        "emptyProjectDepartment": "선택할 수 있는 부서가 없습니다. <br> 워크플로우에서 담당부서를 설정하거나,<br>부서 관리에서 부서를 추가 해주세요",
        "emptyProjectDepartment": "선택할 수 있는 부서가 없습니다.",
        "noDepartment": "담당부서가 없습니다.",
        "emptyCompanyPartners": "선택할 수 있는 업체 정보가 없습니다.",
        "emptyCompany": "선택할 수 있는 업체가 없습니다.",
@@ -917,6 +917,7 @@
        "useIssueStatus" : "사용 가능한 이슈 상태",
        "successToApiTokenRemove" : "API 토큰 삭제 성공",
        "successToApiTokenCopy" : "API 토큰 복사 성공",
        "failedToApiTokenCopy" : "API 토큰 복사 실패",
        "ApiTokenCopy" : "토큰 복사",
        "successToApiTokenAdd" : "API 토큰 생성 성공",
        "successToApiIssueDefault" : "기본값 설정 완료",
src/main/webapp/scripts/app/api/apiAuth.controller.js
@@ -75,15 +75,37 @@
                    });
                }
                // navigator.clipboard 는 브라우저 보안이나 활성화 여부에 따라 사용이 안될때가 있음
                function copyToClipboard(textToCopy) {
                    // navigator clipboard api needs a secure context (https)
                    if (navigator.clipboard && window.isSecureContext) {
                        // navigator clipboard api method'
                        return navigator.clipboard.writeText(textToCopy);
                    } else {
                        // text area method
                        let textArea = document.createElement("textarea");
                        textArea.value = textToCopy;
                        // make the textarea out of viewport
                        textArea.style.position = "fixed";
                        textArea.style.left = "-999999px";
                        textArea.style.top = "-999999px";
                        document.body.appendChild(textArea);
                        textArea.focus();
                        textArea.select();
                        return new Promise((res, rej) => {
                            // here the magic happens
                            document.execCommand('copy') ? res() : rej();
                            textArea.remove();
                        });
                    }
                }
                function copyToken() {
                    var copyText = document.getElementById("apiApplicationForm2");
                    copyText.select();
                    copyText.setSelectionRange(0, 99999);
                    navigator.clipboard.writeText(copyText.value);
                    SweetAlert.swal($filter("translate")("api.successToApiTokenCopy")); // "api 토큰 생성 성공"
                    copyToClipboard($scope.vm.form.token)
                        .then(() =>
                            SweetAlert.swal($filter("translate")("api.successToApiTokenCopy"))
                        )
                        .catch(() => SweetAlert.error($filter("translate")("api.failedToApiTokenCopy")))
                }
                function find() {
src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js
@@ -115,8 +115,6 @@
                        else {
                            SweetAlert.error($filter("translate")("issue.failedToSaveIssueTableSetting"), result.data.message.message); // 이슈 테이블 설정 저장 실패
                        }
                        $rootScope.spinner = false;
                    });
                }
src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js
@@ -116,8 +116,6 @@
                        else {
                            SweetAlert.error($filter("translate")("issue.failedToSaveIssueTableSetting"), result.data.message.message); // 이슈 테이블 설정 저장 실패
                        }
                        $rootScope.spinner = false;
                    });
                }
src/main/webapp/scripts/app/issue/issueList.controller.js
@@ -609,6 +609,7 @@
                    }
                    return conditions;
                }
                function getTreeList() {
src/main/webapp/views/issue/issueListNormal.html
@@ -36,12 +36,12 @@
                                                </p>
                                                <!--    프로젝트    -->
                                                <issue-search-array-view-element lists="vm.projects"
                                                                                 type="'project'"></issue-search-array-view-element>
<!--                                                <issue-search-array-view-element lists="vm.projects"-->
<!--                                                                                 type="'project'"></issue-search-array-view-element>-->
                                                <!--    이슈 타입   -->
                                                <issue-search-field-key-view-element lists="vm.issueTypes"
                                                                                     keys="vm.search.issueTypeIds"></issue-search-field-key-view-element>
<!--                                                <issue-search-field-key-view-element lists="vm.issueTypes"-->
<!--                                                                                     keys="vm.search.issueTypeIds"></issue-search-field-key-view-element>-->
                                                <!--    이슈 상태   -->
                                                <issue-search-field-key-view-element lists="vm.issueStatuses"
@@ -124,42 +124,6 @@
                                                               ng-model="vm.search.title">
                                                    </div>
                                                </div>
                                                <div class="col-lg-3">
                                                    <div class="form-group">
                                                        <label> <span translate="common.project">프로젝트</span></label>
                                                        <js-autocomplete-multi data-input-name="projects"
                                                                               selected-model="vm.projects"
                                                                               search="vm.projectName"
                                                                               input-disabled="false"
                                                                               translation-texts="{ empty : 'common.emptyProject', selectList : 'common.' }"
                                                                               source="fn.getProjectList(vm.projectName, vm.projects, null, null, ['01', '02', '03'])"
                                                                               extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '', type : '', maxlength : 100}"></js-autocomplete-multi>
                                                    </div>
                                                </div>
                                                <div class="col-lg-3">
                                                    <div class="form-group">
                                                        <label> <span translate="issue.issueType">이슈 타입</span></label>
                                                        <ng-dropdown-multiselect class="multiSelect cursor"
                                                                                 data-input-name="issueStatuses"
                                                                                 selected-model="vm.search.issueTypeIds"
                                                                                 options="::vm.issueTypes"></ng-dropdown-multiselect>
                                                    </div>
                                                </div>
                                                <div class="col-lg-3">
                                                    <div class="form-group">
                                                        <label> <span translate="issue.issueStatus">이슈 상태</span></label>
                                                        <ng-dropdown-multiselect class="multiSelect cursor"
                                                                                 data-input-name="issueStatuses"
                                                                                 selected-model="vm.search.issueStatusIds"
                                                                                 options="::vm.issueStatuses"></ng-dropdown-multiselect>
                                                    </div>
                                                </div>
                                            </div>
                                            <div class="row">
                                                <div class="col-lg-3">
                                                    <div class="form-group">
                                                        <label> <span translate="issue.issueNumber">이슈 번호</span></label>
@@ -185,7 +149,41 @@
                                                               ng-model="vm.search.description">
                                                    </div>
                                                </div>
<!--                                                <div class="col-lg-3">-->
<!--                                                    <div class="form-group">-->
<!--                                                        <label> <span translate="common.project">프로젝트</span></label>-->
<!--                                                        <js-autocomplete-multi data-input-name="projects"-->
<!--                                                                               selected-model="vm.projects"-->
<!--                                                                               search="vm.projectName"-->
<!--                                                                               input-disabled="false"-->
<!--                                                                               translation-texts="{ empty : 'common.emptyProject', selectList : 'common.' }"-->
<!--                                                                               source="fn.getProjectList(vm.projectName, vm.projects, null, null, ['01', '02', '03'])"-->
<!--                                                                               extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '', type : '', maxlength : 100}"></js-autocomplete-multi>-->
<!--                                                    </div>-->
<!--                                                </div>-->
<!--                                                <div class="col-lg-3">-->
<!--                                                    <div class="form-group">-->
<!--                                                        <label> <span translate="issue.issueType">이슈 타입</span></label>-->
<!--                                                        <ng-dropdown-multiselect class="multiSelect cursor"-->
<!--                                                                                 data-input-name="issueStatuses"-->
<!--                                                                                 selected-model="vm.search.issueTypeIds"-->
<!--                                                                                 options="::vm.issueTypes"></ng-dropdown-multiselect>-->
<!--                                                    </div>-->
<!--                                                </div>-->
                                                <div class="col-lg-3">
                                                    <div class="form-group">
                                                        <label> <span translate="issue.issueStatus">이슈 상태</span></label>
                                                        <ng-dropdown-multiselect class="multiSelect cursor"
                                                                                 data-input-name="issueStatuses"
                                                                                 selected-model="vm.search.issueStatusIds"
                                                                                 options="::vm.issueStatuses"></ng-dropdown-multiselect>
                                                    </div>
                                                </div>
                                            </div>
                                            <div class="row">
                                                <div class="col-lg-3">
                                                    <div class="form-group">
                                                        <label> <span translate="common.priority">우선 순위</span></label>
@@ -205,9 +203,7 @@
                                                                                 options="::vm.severities"></ng-dropdown-multiselect>
                                                    </div>
                                                </div>
                                            </div>
                                            <div class="row">
                                                <div class="col-lg-3">
                                                    <div class="form-group">
                                                        <label> <span translate="common.register">등록자</span></label>
@@ -224,17 +220,22 @@
                                                <div class="col-lg-3">
                                                    <div class="form-group">
                                                        <label> <span translate="common.registrationDate">등록일</span></label>
                                                        <input type="text"
                                                               readonly
                                                               class="form-control input-sm input-readonly"
                                                               ng-model="vm.search.registerDateRange"
                                                               modal-form-auto-scroll
                                                               date-format="YY-MM-DD"
                                                               parent-el="'#createdWidget'"
                                                               date-range-picker>
                                                        <label> <span translate="common.assigneeTeam">담당부서</span></label>
                                                        <js-autocomplete-multi data-input-name="departments"
                                                                               selected-model="vm.departments"
                                                                               search="vm.departmentName"
                                                                               input-disabled="false"
                                                                               source="fn.getUserDepartmentList(vm.departmentName, vm.departments)"
                                                                               translation-texts="{ count : 'common.userNum', empty : 'common.emptyProjectDepartment' }"
                                                                               extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'department', maxlength : 100 }">
                                                        </js-autocomplete-multi>
                                                    </div>
                                                </div>
                                            </div>
                                            <div class="row">
                                                <div class="col-lg-3">
                                                    <div class="form-group">
@@ -263,19 +264,7 @@
                                                    </div>
                                                </div>
                                                <div class="col-lg-3">
                                                    <div class="form-group">
                                                        <label> <span translate="common.assigneeTeam">담당부서</span></label>
                                                        <js-autocomplete-multi data-input-name="departments"
                                                                               selected-model="vm.departments"
                                                                               search="vm.departmentName"
                                                                               input-disabled="false"
                                                                               source="fn.getUserDepartmentList(vm.departmentName, vm.departments)"
                                                                               translation-texts="{ count : 'common.userNum', empty : 'common.emptyProjectDepartment' }"
                                                                               extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'department', maxlength : 100 }">
                                                        </js-autocomplete-multi>
                                                    </div>
                                                </div>
                                                <div class="col-lg-3" ng-repeat="customField in vm.customFields">
                                                    <label>{{::customField.name}}</label>