From 7042c385c3579479367f0e710d1b92f4e3878a42 Mon Sep 17 00:00:00 2001 From: jhjang <jhjang@maprex.co.kr> Date: 금, 03 12월 2021 17:40:53 +0900 Subject: [PATCH] - 버전 1.0으로 재정의(인터넷진흥원용 버전) - api 설정에 이슈타입 id, 사용자정의 필드 표시 하도록 수정 --- src/main/webapp/scripts/app/api/apiSetting.controller.js | 54 ++++++++++++++++- src/main/resources/system_prod.properties | 4 src/main/resources/mybatis/query-template/issueType-template.xml | 3 pom.xml | 2 src/main/webapp/index.html | 10 +- src/main/webapp/scripts/main.js | 2 src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java | 10 +++ src/main/webapp/views/api/apiSettingColumn.html | 36 +++++------ 8 files changed, 87 insertions(+), 34 deletions(-) diff --git a/pom.xml b/pom.xml index e76a386..569ef29 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ <groupId>kr.wisestone.owl</groupId> <artifactId>kr.wisestone.owl.its</artifactId> - <version>4.0.34.RELEASE</version> + <version>1.0.0.RELEASE</version> <packaging>war</packaging> <properties> diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java index 1e14323..a9ce5db 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java @@ -12,6 +12,7 @@ import kr.wisestone.owl.repository.IssueTypeRepository; import kr.wisestone.owl.service.*; import kr.wisestone.owl.util.ConvertUtil; +import kr.wisestone.owl.util.MapUtil; import kr.wisestone.owl.vo.*; import kr.wisestone.owl.web.condition.IssueTypeCondition; import kr.wisestone.owl.web.form.IssueTypeForm; @@ -175,6 +176,15 @@ condition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); List<Map<String, Object>> results = this.issueTypeMapper.find(condition); + for (Map<String, Object> result : results) { + Long projectId = MapUtil.getLong(result, "projectId"); + if (projectId != null) { + Project project = this.projectService.getProject(projectId); + ProjectVo projectVo = ConvertUtil.copyProperties(project, ProjectVo.class); + result.put("projectVo", projectVo); + } + } + Long totalCount = this.issueTypeMapper.count(condition); int totalPage = (int) Math.ceil((totalCount - 1) / pageable.getPageSize()) + 1; List<IssueTypeVo> issueTypeVos = ConvertUtil.convertListToListClass(results, IssueTypeVo.class); diff --git a/src/main/resources/mybatis/query-template/issueType-template.xml b/src/main/resources/mybatis/query-template/issueType-template.xml index fef510b..4aacf92 100644 --- a/src/main/resources/mybatis/query-template/issueType-template.xml +++ b/src/main/resources/mybatis/query-template/issueType-template.xml @@ -8,7 +8,8 @@ DISTINCT it.id as id, it.name as name, it.description as description, - it.color as color + it.color as color, + it.project_id as projectId FROM issue_type it INNER JOIN workspace ws on it.workspace_id = ws.id diff --git a/src/main/resources/system_prod.properties b/src/main/resources/system_prod.properties index 139801f..951aeed 100644 --- a/src/main/resources/system_prod.properties +++ b/src/main/resources/system_prod.properties @@ -38,7 +38,7 @@ mail.password= # email \uC124\uC815 -email.host=mail.g2works.kra +email.host=mail.g2works.kr email.port=587 email.userName=wyu@maprex.co.kr email.password=1234 @@ -46,7 +46,7 @@ email.smtp.auth=true email.smtp.starttle.enable=true email.debug=true -email.sendUrl=http://localhost:8081 +email.sendUrl=http://maprex.iptime.org:8180 # \uD68C\uACC4 \uB2F4\uB2F9\uC790 \uACB0\uC81C \uCDE8\uC18C \uC54C\uB9BC - \uD68C\uACC4 \uB2F4\uB2F9\uC790\uB294 \uAF2D \uC2DC\uC2A4\uD15C\uC5D0 \uAC00\uC785 \uB418\uC5B4 \uC788\uC5B4\uC57C \uD55C\uB2E4. payment.cancel.manager.email=jslee1@wisestone.kr diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html index 37c0a9b..cdf13fd 100644 --- a/src/main/webapp/index.html +++ b/src/main/webapp/index.html @@ -12,16 +12,16 @@ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <!-- 遊뉗씠 �씫�뒗 �꽕紐� --> - <meta name="description" content="�씠�뒋 愿�由� �떆�뒪�뀥 - �쎒 湲곕컲�쓽 �씠�뒋 愿�由� �떆�뒪�뀥 v4.0.34"> + <meta name="description" content="�씠�뒋 愿�由� �떆�뒪�뀥 - �깘吏� 愿�由�"> <meta property="og:type" content="website"> - <meta property="og:title" content="OWL ITS - ���씠利덉뒪�넠"> - <meta property="og:description" content="�씠�뒋 愿�由� �떆�뒪�뀥 - �쎒 湲곕컲�쓽 �씠�뒋 愿�由� �떆�뒪�뀥 v4.0.34"> + <meta property="og:title" content="OWL ITS"> + <meta property="og:description" content="�씠�뒋 愿�由� �떆�뒪�뀥 - �깘吏� 愿�由�"> <meta property="og:image" content="https://owlsolution.io/assets/images/main.png"> <meta property="og:url" content="https://owlsolution.io"> <meta name="google-site-verification" content="yhmSp9Zsw5oecXjp43Ndu0w9rBA3FNpnNZ8bQFA_iDA"/> <meta name="viewport" content="user-scalable=no,initial-scale=1,maximum-scale=1"> - <title>OWL ITS v4.0.34</title> + <title>OWL ITS</title> <link type="text/css" rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.css"> <link type="text/css" rel="stylesheet" href="bower_components/jquery-ui/themes/base/jquery-ui.css"> @@ -40,7 +40,7 @@ <link type="text/css" rel="stylesheet" href="custom_components/js-autocomplete-single/js-autocomplete-single.css"> <link type="text/css" rel="stylesheet" href="custom_components/js-autocomplete-multi/js-autocomplete-multi.css"> <link type="text/css" rel="stylesheet" href="custom_components/js-html-diff/js-html-diff.css"> - <link type="text/css" rel="stylesheet" href="assets/styles/main.css?version=4.0.34"> + <link type="text/css" rel="stylesheet" href="assets/styles/main.css?version=1.0.0"> <link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/css?family=Rubik:300,400,500"> <!-- google font --> diff --git a/src/main/webapp/scripts/app/api/apiSetting.controller.js b/src/main/webapp/scripts/app/api/apiSetting.controller.js index 31a58c5..d24baf8 100644 --- a/src/main/webapp/scripts/app/api/apiSetting.controller.js +++ b/src/main/webapp/scripts/app/api/apiSetting.controller.js @@ -7,8 +7,8 @@ 'app', 'angular' ], function (app, angular) { - app.controller('apiSettingController', ['$scope', '$rootScope', '$log', '$resourceProvider','$uibModal', 'SweetAlert', '$timeout', '$filter', '$injector', '$controller', 'Api', 'Priority', 'Severity', 'IssueType', - function ($scope, $rootScope, $log, $resourceProvider, $uibModal, SweetAlert, $timeout, $filter, $injector, $controller, Api, Priority, Severity, IssueType) { + 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) { $scope.fn = { changeTab : changeTab, @@ -27,7 +27,9 @@ formSubmitOverlap : formSubmitOverlap, removeCustomField : removeCustomField, getOverlapList : getOverlapList, - onChangeIssueTypeOverlap : onChangeIssueTypeOverlap + onChangeIssueTypeOverlap : onChangeIssueTypeOverlap, + getIssueTypeCustomFields : getIssueTypeCustomFields, + getCurrentIssueTypeVo : getCurrentIssueTypeVo }; $scope.vm = { @@ -37,6 +39,7 @@ priorities : [], // projects : [], form : { + issueCustomFields : [], issueApiDefault : { title : "", description : "", @@ -61,7 +64,6 @@ issueTypeId : "", issueTypeName : "", customFieldName : "", - issueTypeData : null // �씠�뒋 �쑀�삎 媛앹껜 }; angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector})); @@ -124,6 +126,18 @@ }); } + function getCurrentIssueTypeVo() { + var issueTypeId = $scope.vm.issueTypeId; + + var issueTypeVo = null; + $scope.vm.issueTypes.forEach(function (issueType) { + if (issueType.id == issueTypeId) { + issueTypeVo = issueType; + } + }); + return issueTypeVo; + } + function onChangeIssueTypeOverlap() { $scope.fn.getOverlapList(); } @@ -137,11 +151,14 @@ Api.findApiDefault($resourceProvider.getContent( conditions, $resourceProvider.getPageContent(0, 1000))).then(function (result) { $scope.fn.initForm(); + $scope.fn.getIssueTypeCustomFields(); + if (result.data.message.status === "success") { if (angular.isDefined(result.data.data)) { $scope.vm.form.issueApiDefault = result.data.data; $scope.vm.form.issueApiDefault.priorityId = result.data.data.priorityId != null ? result.data.data.priorityId.toString() : ""; $scope.vm.form.issueApiDefault.severityId = result.data.data.severityId != null ? result.data.data.severityId.toString() : ""; + // if (angular.isDefined(result.data.data.projectVo)) { // $scope.vm.projects = []; @@ -247,6 +264,34 @@ }); } + // �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �궗�슜�옄 �젙�쓽 �븘�뱶 + function getIssueTypeCustomFields() { + + $scope.vm.form.issueCustomFields = []; + + var issueTypeVo = $scope.fn.getCurrentIssueTypeVo(); + if (issueTypeVo.projectVo == null) return; + + IssueTypeCustomField.find($resourceProvider.getContent({ + projectId : issueTypeVo.projectVo.id, + IssueTypeId : issueTypeVo.id }, + $resourceProvider.getPageContent(0, 1000))).then(function (result) { + + if (result.data.message.status === "success") { + + $scope.vm.form.issueCustomFields = []; + angular.forEach(result.data.data, function (issueTypeCustomField) { + $scope.vm.form.issueCustomFields.push(issueTypeCustomField); + }); + } + else { + SweetAlert.swal($filter("translate")("issue.failedToUserDefinedFieldListAssociatedLookup"), result.data.message.message, "error"); // �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉 議고쉶 �떎�뙣 + } + + }); + } + + // 以묒슂�룄 紐⑸줉 function getSeverities() { Severity.find($resourceProvider.getContent({}, @@ -286,6 +331,7 @@ $scope.fn.getSeverities(); $scope.fn.getPriorities(); $scope.fn.getIssueTypes(); + } $scope.fn.start(); diff --git a/src/main/webapp/scripts/main.js b/src/main/webapp/scripts/main.js index 597c614..23c6296 100644 --- a/src/main/webapp/scripts/main.js +++ b/src/main/webapp/scripts/main.js @@ -4,7 +4,7 @@ 'use strict'; require.config({ - urlArgs : "bust=v4.0.34", + urlArgs : "bust=v1.0.0", paths : { 'jquery' : '../bower_components/jquery/dist/jquery', 'jquery-ui' : '../bower_components/jquery-ui/jquery-ui', diff --git a/src/main/webapp/views/api/apiSettingColumn.html b/src/main/webapp/views/api/apiSettingColumn.html index b89e0fa..0217992 100644 --- a/src/main/webapp/views/api/apiSettingColumn.html +++ b/src/main/webapp/views/api/apiSettingColumn.html @@ -15,7 +15,7 @@ <option ng-repeat="issueType in vm.issueTypes" ng-style="{ 'color' : issueType.color, 'font-weight': 600 }" value="{{issueType.id}}" - translate="{{issueType.name}}"> + translate="{{issueType.name}}(id:{{issueType.id}})"> </option> </select> </div> @@ -27,25 +27,6 @@ <div class="element-box"> <form role="form" name="apiSettingColumnForm"> <div class="form-group mb10"> - <label for="customFieldSelectForm" class="issue-label"> - <span translate="issue.issueType">�씠�뒋 �쑀�삎</span> - </label> - <select id="customFieldSelectForm" - name="issueType" - class="form-control input-sm issue-select-label" - ng-model="vm.issueTypeId" - ng-style="{ 'color' : fn.getOptionColor(vm.issueTypes, vm.issueTypeId) }" - ng-change="fn.onChangeIssueType()" - required> - <option ng-repeat="issueType in vm.issueTypes" - ng-style="{ 'color' : issueType.color, 'font-weight': 600 }" - value="{{issueType.id}}" - translate="{{issueType.name}}"> - </option> - </select> - </div> - - <div class="form-group mb10"> <label for="issueTitle" class="issue-label"><span translate="issue.issueTitle">�씪媛� �젣紐�</span> </label> @@ -121,6 +102,21 @@ </div> </div> + <div class="col-lg-8"> + <!-- �궗�슜�옄 �젙�쓽 �븘�뱶 --> + <div class="row"> + <label for="issue-priority" class="issue-label"> + <span translate="common.detectingInfo">�깘吏� �젙蹂�</span> + </label> + </div> + <div class="row"> + + <div class="col-md-4" ng-repeat="issueCustomField in vm.form.issueCustomFields"> + <label class="issue-detail-label">�씠由�: {{::issueCustomField.customFieldVo.name}}</label> + <span class="issue-detail-word-break">ID: {{::issueCustomField.customFieldVo.id}}</span> + </div> + </div> + </div> </div> <div class="form-group mb10"> -- Gitblit v1.8.0