From 2473c035d63bc0f27b329eba7dccda33e5837d62 Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 목, 25 11월 2021 15:11:44 +0900 Subject: [PATCH] Merge branch 'master' of http://192.168.0.25:9001/r/owl-kisa --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 8 + src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js | 58 +++++++ src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java | 1 src/main/webapp/bower_components/ng-image-gallery/src/js/directive.js | 2 src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js | 16 -- src/main/webapp/scripts/app/issue/issueDetail.controller.js | 87 +++++------ src/main/java/kr/wisestone/owl/service/impl/WorkflowServiceImpl.java | 9 - src/main/java/kr/wisestone/owl/service/impl/IssueStatusServiceImpl.java | 10 + src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js | 2 src/main/webapp/scripts/app/issueType/issueTypeAdd.controller.js | 35 ++++ src/main/webapp/views/issue/issueModifyStatus.html | 18 ++ src/main/java/kr/wisestone/owl/service/impl/WorkflowDepartmentServiceImpl.java | 9 + src/main/webapp/bower_components/ng-image-gallery/dist/ng-image-gallery.js | 2 src/main/webapp/i18n/ko/global.json | 1 src/main/webapp/views/issue/issueDetail.html | 20 -- src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js | 128 ++++++++++++----- 16 files changed, 272 insertions(+), 134 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java b/src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java index 8e6474f..30b0fcd 100644 --- a/src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java +++ b/src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java @@ -21,6 +21,7 @@ WorkflowDepartment getWorkflowDepartment(Long id); List<WorkflowDepartmentVo> find(WorkflowDepartmentCondition condition); + List<WorkflowDepartmentVo> find(Long workflowId, Long issueStatusId); void modify(Workflow workflow, List<IssueStatusVo> issueStatusVos); void remove(Long workflowId); } diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java index 5d2b1f4..c87e482 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -1783,6 +1783,14 @@ // �씠�뒋 �긽�깭 蹂�寃� this.modifyIssueStatus(issueForm); } + + // �떞�떦 遺��꽌 �닔�젙 + if (issueForm.getDepartmentIds().size() > 0) { + Issue issue = this.getIssue(issueForm.getId()); + Project project = this.projectService.getProject(issueForm.getProjectId()); + + this.issueDepartmentService.modifyIssueDepartment(issue, project.getWorkspace(), issueForm.getDepartmentIds()); + } } // �씠�뒋 Import �슜 �뿊�� �뀥�뵆由� �떎�슫濡쒕뱶 diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueStatusServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueStatusServiceImpl.java index 0b36fc8..789b9d4 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueStatusServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueStatusServiceImpl.java @@ -45,6 +45,9 @@ private WorkflowTransitionService workflowTransitionService; @Autowired + private WorkflowDepartmentService workflowDepartmentService; + + @Autowired private IssueTypeService issueTypeService; @Autowired @@ -545,12 +548,18 @@ if (count < 1) { IssueStatusVo issueStatusVo = new IssueStatusVo(workflowTransitionVo.getTargetStatusId(), workflowTransitionVo.getTargetStatusName()); issueStatusVos.add(issueStatusVo); + + List<WorkflowDepartmentVo> workflowDepartments = this.workflowDepartmentService.find(workflow.getId(), issueStatusVo.getId()); + issueStatusVo.setWorkflowDepartmentVos(workflowDepartments); } else { // �몢踰덉㎏ �씠�뒋遺��꽣 泥ル쾲吏� �씠�뒋�뿉�꽌 �씠�룞 媛��뒫�뻽�뜕 �긽�깭 以� �뾾�뒗 ���긽�쓣 李얜뒗�떎. for (IssueStatusVo issueStatusVo : issueStatusVos) { if (issueStatusVo.getId().equals(workflowTransitionVo.getTargetStatusId())) { tempIssueStatusVos.add(issueStatusVo); + + List<WorkflowDepartmentVo> workflowDepartments = this.workflowDepartmentService.find(workflow.getId(), issueStatusVo.getId()); + issueStatusVo.setWorkflowDepartmentVos(workflowDepartments); } } } @@ -566,5 +575,4 @@ resJsonData.put(Constants.RES_KEY_CONTENTS, issueStatusVos); } - } diff --git a/src/main/java/kr/wisestone/owl/service/impl/WorkflowDepartmentServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/WorkflowDepartmentServiceImpl.java index 517cd31..064df76 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/WorkflowDepartmentServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/WorkflowDepartmentServiceImpl.java @@ -66,6 +66,15 @@ } // �떞�떦 遺��꽌�젙蹂대�� 議고쉶�븳�떎. + public List<WorkflowDepartmentVo> find(Long workflowId, Long issueStatusId) { + WorkflowDepartmentCondition condition = new WorkflowDepartmentCondition(); + condition.setWorkflowId(workflowId); + condition.setIssueStatusId(issueStatusId); + + return find(condition); + } + + // �떞�떦 遺��꽌�젙蹂대�� 議고쉶�븳�떎. @Transactional(readOnly = true) @Override public List<WorkflowDepartmentVo> find(WorkflowDepartmentCondition condition) { diff --git a/src/main/java/kr/wisestone/owl/service/impl/WorkflowServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/WorkflowServiceImpl.java index be7a902..c69f4f1 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/WorkflowServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/WorkflowServiceImpl.java @@ -200,9 +200,7 @@ for (WorkflowVo workflowVo : workflowVos) { Workflow workflow = this.getWorkflow(workflowVo.getId()); - WorkflowDepartmentCondition condition = new WorkflowDepartmentCondition(); - condition.setWorkflowId(workflow.getId()); - List<WorkflowDepartmentVo> workflowDepartmentVos = this.workflowDepartmentService.find(condition); + List<WorkflowDepartmentVo> workflowDepartmentVos = this.workflowDepartmentService.find(workflow.getId(), null); if (workflowDepartmentVos != null && workflowDepartmentVos.size() > 0) { IssueStatusVo issueStatusVo = new IssueStatusVo(); issueStatusVo.setWorkflowDepartmentVos(workflowDepartmentVos); @@ -225,10 +223,7 @@ case "01" : // �뿰愿��맂 �씠�뒋 �긽�깭�� �쟾�씠�꽑 �젙蹂대�� 媛��졇�삩�떎. List<IssueStatusVo> issueStatusVos = this.issueStatusService.findByWorkflowId(workflowCondition.getId()); for (IssueStatusVo issueStatusVo : issueStatusVos) { - WorkflowDepartmentCondition condition = new WorkflowDepartmentCondition(); - condition.setWorkflowId(workflowVo.getId()); - condition.setIssueStatusId(issueStatusVo.getId()); - List<WorkflowDepartmentVo> workflowDepartmentVos = this.workflowDepartmentService.find(condition); + List<WorkflowDepartmentVo> workflowDepartmentVos = this.workflowDepartmentService.find(workflowVo.getId(), issueStatusVo.getId()); issueStatusVo.setWorkflowDepartmentVos(workflowDepartmentVos); } workflowVo.setIssueStatusVos(issueStatusVos); diff --git a/src/main/webapp/bower_components/ng-image-gallery/dist/ng-image-gallery.js b/src/main/webapp/bower_components/ng-image-gallery/dist/ng-image-gallery.js index 389210d..ac5111d 100644 --- a/src/main/webapp/bower_components/ng-image-gallery/dist/ng-image-gallery.js +++ b/src/main/webapp/bower_components/ng-image-gallery/dist/ng-image-gallery.js @@ -14,7 +14,7 @@ .provider('ngImageGalleryOpts', function(){ var defOpts = { thumbnails : true, - thumbSize : 80, + thumbSize : 60, inline : false, bubbles : true, bubbleSize : 20, diff --git a/src/main/webapp/bower_components/ng-image-gallery/src/js/directive.js b/src/main/webapp/bower_components/ng-image-gallery/src/js/directive.js index 389210d..ac5111d 100644 --- a/src/main/webapp/bower_components/ng-image-gallery/src/js/directive.js +++ b/src/main/webapp/bower_components/ng-image-gallery/src/js/directive.js @@ -14,7 +14,7 @@ .provider('ngImageGalleryOpts', function(){ var defOpts = { thumbnails : true, - thumbSize : 80, + thumbSize : 60, inline : false, bubbles : true, bubbleSize : 20, diff --git a/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js b/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js index 54617fc..3e2403e 100644 --- a/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js +++ b/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js @@ -219,54 +219,14 @@ makeTag += "<span class=\"titlename cursor text-center\" ng-click=\"event.changeDetailView(data.issueRelation)\">" + scope.data.title + "</span></a>"; break; - // �븯�쐞 �씠�뒋 �씠�룞(�젣紐�) - case "ISSUE_DOWN_MOVE" : - makeTag += "<span class=\"titlename cursor\" ng-click=\"event.changeDetailView(data.id)\">" + scope.data.title + "</span></a>"; - break; - // �뿰愿��씠�뒋 援щ텇 case "ISSUE_RELATION_TYPE": makeTag += "<span>" + scope.data.relationIssueTypeName + "</span>"; break; - // �뿰愿��씠�뒋 �궘�젣 + // �뿰愿��씠�뒋 �궘�젣 case "ISSUE_RELATION_DELETE": makeTag += '<img class="cursor" src="/assets/images/delete-icon.png" ng-click="event.removeRelationIssue(data.id)">'; - break; - - // �븯�쐞 �씠�뒋 �궘�젣 - case "ISSUE_DOWN_DELETE": - makeTag += '<img class="cursor" src="/assets/images/delete-icon.png" ng-click="event.removeDownIssue(data.id)">'; - break; - - // �씠由꾩쓣 �겢由��븯硫� �닔�젙 �뙘�뾽 �몴�떆 - case "COMMON_MODIFY" : - if (scope.data.modifyPermissionCheck) { - makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.modify(data.id)'>" + scope.data.name.replace(/</gi, '<') + "</span>"; - } - else { - makeTag += "<span class='titlename not-modify table-word-break-all'>" + scope.data.name + "</span>"; - } - break; - // �꽕�젙 踰꾪듉 �겢由��븯硫� �닔�젙 �뙘�뾽 �몴�떆 - case "BUTTON_MODIFY" : - makeTag += '<button class="btn btn-info" ng-if="data.modifyPermissionCheck" ng-click="event.modify(data.id)"><i class="os-icon os-icon-ui-46" uib-tooltip="�봽濡쒖젥�듃 �꽕�젙"></i></button>'; - break; - - // �궗�슜�옄 �젙�쓽 �븘�뱶 �샃�뀡 �몴�떆 - case "CUSTOM_FIELD_OPTION" : - switch (scope.data.customFieldType) { - case "INPUT" : - makeTag += "<span translate='common.stringField'>臾몄옄�뿴 �븘�뱶</span>"; - break; - case "MULTI_SELECT" : - makeTag += "<span translate='common.multipleSelectionField'>�떎以� �꽑�깮 �븘�뱶</span>"; - break; - case "SINGLE_SELECT" : - makeTag += "<span translate='common.singleSelectionField'>�떒�씪 �꽑�깮 �븘�뱶</span>"; - break; - } - break; // �뿰愿� �씠�뒋 �슦�꽑�닚�쐞 @@ -279,6 +239,7 @@ makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.severityVo.color + "\"," + "\"border-color\"" + " : \"" + scope.data.severityVo.color + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.severityVo.name + "'></span>"; break; + // �뿰愿� �씠�뒋 �벑濡앹옄 case "REL_REGISTER": scope.data.registerVos = [scope.data.issueRelation.registerVo]; makeTag += '<div owl-profile-over class="" table-user-image="data" target="registerVos"></div>'; @@ -286,6 +247,7 @@ break; + // �뿰愿� �씠�뒋 �떞�떦遺��꽌 case "REL_ISSUE_DEPARTMENT" : makeTag += "<ul class='ul-not-comma'>"; makeTag += "<div style='color: #000000'>"; @@ -306,14 +268,44 @@ } break; + // �뿰愿� �씠�뒋 �궗�슜�옄 �젙�쓽 �븘�뱶 + case "REL_ISSUE_CUSTOM_FIELD_VALUE_VIEW" : + var values = []; + + for (var count in scope.data.issueRelation.issueCustomFieldValueVos) { + var issueCustomFieldValueVo = scope.data.issueRelation.issueCustomFieldValueVos[count]; + // �뀒�씠釉� �꽕�젙�뿉�꽌 dName 遺�遺꾩뿉 �궗�슜�옄 �젙�쓽 �븘�뱶 id 瑜� �꽔怨� �빐�떦 媛믪쓣 異붿텧�븳�떎. + if (tableConfig.columnHint.id == issueCustomFieldValueVo.customFieldVo.id) { + values.push(issueCustomFieldValueVo.useValue); + } + } + angular.forEach(values, function (value) { + makeTag += '<span class="table-word-break-all">' + value + '<span><br>'; + }); + + break; + + // �븯�쐞 �씠�뒋 �씠�룞(�젣紐�) + case "ISSUE_DOWN_MOVE" : + makeTag += "<span class=\"titlename cursor\" ng-click=\"event.changeDetailView(data.id)\">" + scope.data.title + "</span></a>"; + break; + + // �븯�쐞 �씠�뒋 �궘�젣 + case "ISSUE_DOWN_DELETE": + makeTag += '<img class="cursor" src="/assets/images/delete-icon.png" ng-click="event.removeDownIssue(data.id)">'; + break; + + // �븯�쐞 �씠�뒋 �슦�꽑 �닚�쐞 case "DOWN_COMMON_PRIORITY" : makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.priorityVo.color + "\"," + "\"border-color\"" + " : \"" + scope.data.priorityVo.color + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.priorityVo.name + "'></span>"; break; + // �븯�쐞 �씠�뒋 以묒슂�룄 case "DOWN_COMMON_SEVERITY" : makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.severityVo.color + "\"," + "\"border-color\"" + " : \"" + scope.data.severityVo.color + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.severityVo.name + "'></span>"; break; + // �븯�쐞 �씠�뒋 �떞�떦遺��꽌 case "DOWN_ISSUE_DEPARTMENT" : makeTag += "<ul class='ul-not-comma'>"; makeTag += "<div style='color: #000000'>"; @@ -324,11 +316,13 @@ makeTag += "</ul>"; break; + // �븯�쐞 �씠�뒋 �벑濡앹옄 case "DOWN_REGISTER": scope.data.registerVos = [scope.data.registerVo]; makeTag += '<div owl-profile-over class="" table-user-image="data" target="registerVos"></div>'; break; + // �븯�쐞 �씠�뒋 湲곌컙 case "DOWN_ISSUE_DUE_DATE" : if (!$rootScope.isDefined(scope.data.startDate) && !$rootScope.isDefined(scope.data.completeDate)) { makeTag += "<span translate='common.noDate'>湲곌컙 �뾾�쓬</span>"; @@ -338,14 +332,64 @@ } break; + // �븯�쐞 �씠�뒋 �궗�슜�옄 �젙�쓽 �븘�뱶 + case "DOWN_ISSUE_CUSTOM_FIELD_VALUE_VIEW" : + var values = []; + + for (var count in scope.data.issueCustomFieldValueVos) { + var issueCustomFieldValueVo = scope.data.issueCustomFieldValueVos[count]; + // �뀒�씠釉� �꽕�젙�뿉�꽌 dName 遺�遺꾩뿉 �궗�슜�옄 �젙�쓽 �븘�뱶 id 瑜� �꽔怨� �빐�떦 媛믪쓣 異붿텧�븳�떎. + if (tableConfig.columnHint.id == issueCustomFieldValueVo.customFieldVo.id) { + values.push(issueCustomFieldValueVo.useValue); + } + } + angular.forEach(values, function (value) { + makeTag += '<span class="table-word-break-all">' + value + '<span><br>'; + }); + + break; + + // �씠由꾩쓣 �겢由��븯硫� �닔�젙 �뙘�뾽 �몴�떆 + case "COMMON_MODIFY" : + if (scope.data.modifyPermissionCheck) { + makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.modify(data.id)'>" + scope.data.name.replace(/</gi, '<') + "</span>"; + } + else { + makeTag += "<span class='titlename not-modify table-word-break-all'>" + scope.data.name + "</span>"; + } + break; + + // �꽕�젙 踰꾪듉 �겢由��븯硫� �닔�젙 �뙘�뾽 �몴�떆 + case "BUTTON_MODIFY" : + makeTag += '<button class="btn btn-info" ng-if="data.modifyPermissionCheck" ng-click="event.modify(data.id)"><i class="os-icon os-icon-ui-46" uib-tooltip="�봽濡쒖젥�듃 �꽕�젙"></i></button>'; + break; + + // �궗�슜�옄 �젙�쓽 �븘�뱶 �샃�뀡 �몴�떆 + case "CUSTOM_FIELD_OPTION" : + switch (scope.data.customFieldType) { + case "INPUT" : + makeTag += "<span translate='common.stringField'>臾몄옄�뿴 �븘�뱶</span>"; + break; + case "MULTI_SELECT" : + makeTag += "<span translate='common.multipleSelectionField'>�떎以� �꽑�깮 �븘�뱶</span>"; + break; + case "SINGLE_SELECT" : + makeTag += "<span translate='common.singleSelectionField'>�떒�씪 �꽑�깮 �븘�뱶</span>"; + break; + } + + break; + // �슦�꽑 �닚�쐞 case "COMMON_PRIORITY" : makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.priorityColor + "\"," + "\"border-color\"" + " : \"" + scope.data.priorityColor + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.priorityName + "'></span>"; break; + // 以묒슂�룄 case "COMMON_SEVERITY" : makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.severityColor + "\"," + "\"border-color\"" + " : \"" + scope.data.severityColor + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.severityName + "'></span>"; break; + // �떞�떦 遺��꽌 case "ISSUE_DEPARTMENT" : makeTag += "<ul class='ul-not-comma'>"; makeTag += "<div style='color: #000000'>"; @@ -356,10 +400,12 @@ makeTag += "</ul>"; break; + // �떞�떦�옄 case "ISSUE_USER" : makeTag += '<div owl-profile-over class="" table-user-image="data" target="userVos"></div>'; break; + // �벑濡앹옄 case "REGISTER" : scope.data.registerVos = [scope.data.registerVo]; makeTag += '<div owl-profile-over class="" table-user-image="data" target="registerVos"></div>'; diff --git a/src/main/webapp/i18n/ko/global.json b/src/main/webapp/i18n/ko/global.json index 3039281..aa6e320 100644 --- a/src/main/webapp/i18n/ko/global.json +++ b/src/main/webapp/i18n/ko/global.json @@ -251,6 +251,7 @@ "applyTemplate": "�뀥�뵆由� �쟻�슜�븯湲�", "issueContentIsWrittenApplyTheTemplate": "�씠�뒋 �궡�슜�씠 �옉�꽦�릺�뼱 �엳�뒿�땲�떎. �뀥�뵆由우쓣 �쟻�슜�븯寃좎뒿�땲源�? �뀥�뵆由우씠 �쟻�슜�릺硫� �씠誘� �옉�꽦�맂 �궡�슜�씠 �궗�씪吏묐땲�떎.", "failedIssueStatusCheck": "�씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭 議고쉶 �떎�뙣", + "failedIssueStatusWorkflowDepartmentCheck": "�씠�뒋 �긽�깭 �떞�떦 遺��꽌 議고쉶 �떎�뙣", "failedToChangeMultipleIssueStatus": "�떎以� �씠�뒋 �긽�깭 蹂�寃� �떎�뙣", "completedSavingIssueTable": "�씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 �셿猷�", "saveIssueTableSettingsInformation": "�씠�뒋 �뀒�씠釉� �꽕�젙 �젙蹂닿� ���옣�릺�뿀�뒿�땲�떎.", diff --git a/src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js b/src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js index eba9b44..7fad8db 100644 --- a/src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js +++ b/src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js @@ -128,25 +128,13 @@ // �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �젙蹂대�� 媛��졇�삩�떎. function getDownIssueTableConfigs() { var deferred = $q.defer(); + var content = { issueId : $rootScope.currentDetailIssueId, delValue : $scope.vm.issueDownTableConfigs.splice(6,1), issueTableConfigs : JSON.stringify($scope.vm.issueDownTableConfigs) }; - // angular.forEach($scope.vm.issueDownTableConfigs, function (delVaue) { - // if ($scope.vm.issueDownTableConfigs.indexOf(delVaue.name) === "") { - // $scope.vm.issueDownTableConfigs.splice(delVaue,1); - // } - // - // }) - - // for (var i = 0; i < $scope.vm.issueDownTableConfigs; i++) { - // if ($scope.vm.issueDownTableConfigs == "") { - // $scope.vm.issueDownTableConfigs.splice(i,1); - // i--; - // } - // } IssueTableConfig.downDetail($resourceProvider.getContent(content, $resourceProvider.getPageContent(0, 1000))).then(function (result) { if (result.data.message.status !== "success") { @@ -161,7 +149,7 @@ // �궗�슜�옄 �젙�쓽 �븘�뱶瑜� 議고쉶�븳 �썑 �몴�떆�븷 �씠�뒋 �뀒�씠釉� 而щ읆�쓣 以�鍮꾪븳�떎. $scope.fn.getCustomFields().then(function (result) { - var count = 8; + var count = 6; angular.forEach(result, function (customField) { $scope.vm.issueDownTableConfigs.push({ name : customField.name, diff --git a/src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js b/src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js index cd4a4b8..528f3a6 100644 --- a/src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js +++ b/src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js @@ -151,7 +151,7 @@ // �궗�슜�옄 �젙�쓽 �븘�뱶瑜� 議고쉶�븳 �썑 �몴�떆�븷 �씠�뒋 �뀒�씠釉� 而щ읆�쓣 以�鍮꾪븳�떎. $scope.fn.getCustomFields().then(function (result) { - var count = 8; + var count = 6; angular.forEach(result, function (customField) { $scope.vm.issueRelTableConfigs.push({ name : customField.name, diff --git a/src/main/webapp/scripts/app/issue/issueDetail.controller.js b/src/main/webapp/scripts/app/issue/issueDetail.controller.js index b827d70..3e01d52 100644 --- a/src/main/webapp/scripts/app/issue/issueDetail.controller.js +++ b/src/main/webapp/scripts/app/issue/issueDetail.controller.js @@ -205,10 +205,10 @@ } // �뀒�씠釉붿쓽 �뿰愿� �씠�뒋 而щ읆�쓣 留뚮뱾�뼱以��떎. - function setRelTableColumn(issueTableConfig) { + function setRelTableColumn(Rel_issueTableConfig) { // �뿰愿� �씠�뒋 而щ읆 - switch(issueTableConfig.key) { + switch(Rel_issueTableConfig.key) { // �뿰愿� �씠�뒋 援щ텇 case "RELATION_ISSUE_TYPE" : @@ -233,7 +233,7 @@ .setHName("common.priority") .setDName("priorityName") .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) + .setHWidth("bold " + Rel_issueTableConfig.width) .setDAlign("text-center") .setDRenderer("REL_COMMON_PRIORITY")); break; @@ -242,7 +242,7 @@ .setHName("common.importance") .setDName("severityName") .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) + .setHWidth("bold " + Rel_issueTableConfig.width) .setDAlign("text-center") .setDRenderer("REL_COMMON_SEVERITY")); break; @@ -250,7 +250,7 @@ $scope.vm.relTableConfigs.push($tableProvider.config() .setHName("common.assigneeTeam") .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) + .setHWidth("bold " + Rel_issueTableConfig.width) .setDAlign("text-center") .setDRenderer("REL_ISSUE_DEPARTMENT")); break; @@ -259,7 +259,7 @@ $scope.vm.relTableConfigs.push($tableProvider.config() .setHName("common.register") .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) + .setHWidth("bold " + Rel_issueTableConfig.width) .setDAlign("text-center") .setDRenderer("REL_REGISTER")); break; @@ -267,14 +267,14 @@ $scope.vm.relTableConfigs.push($tableProvider.config() .setHName("common.period") .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) + .setHWidth("bold " + Rel_issueTableConfig.width) .setDAlign("text-center") .setDRenderer("REL_ISSUE_DUE_DATE")); break; case "MODIFY_DATE" : // �뿰愿� �씠�뒋 理쒓렐 蹂�寃쎌씪 $scope.vm.relTableConfigs.push($tableProvider.config() .setHName("common.lastChangeDate") - .setHWidth("bold " + issueTableConfig.width) + .setHWidth("bold " + Rel_issueTableConfig.width) .setDAlign("text-center") .setDName("modifyDate")); break; @@ -289,19 +289,19 @@ } // �궗�슜�옄 �젙�쓽 �븘�뱶 而щ읆 - if (issueTableConfig.key.indexOf("CUSTOM_FIELD_") !== -1) { + if (Rel_issueTableConfig.key.indexOf("CUSTOM_FIELD_") !== -1) { // 留뚯빟 �씠�뒋 �뀒�씠釉� 而щ읆紐낆씠 �몴�떆�릺吏� �븡�쑝硫� �씠履쎌씠 臾몄젣 for (var count in $scope.vm.customFields) { var customField = $scope.vm.customFields[count]; - if (customField.id === Number(issueTableConfig.key.substring(13))) { - $scope.vm.tableConfigs.push($tableProvider.config() + if (customField.id === Number(Rel_issueTableConfig.key.substring(13))) { + $scope.vm.relTableConfigs.push($tableProvider.config() .setHName(customField.name) .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) + .setHWidth("bold " + Rel_issueTableConfig.width) .setDAlign("text-center") .setColumnHint(customField) - .setDRenderer("ISSUE_CUSTOM_FIELD_VALUE_VIEW")); + .setDRenderer("REL_ISSUE_CUSTOM_FIELD_VALUE_VIEW")); break; } } @@ -310,17 +310,17 @@ // �뀒�씠釉붿쓽 �븯�쐞 �씠�뒋 而щ읆�쓣 留뚮뱾�뼱以��떎. - function setDownTableColumn(issueTableConfig) { + function setDownTableColumn(Down_issueTableConfig) { // if (issueTableConfig == null) return; // �븯�쐞 �씠�뒋 而щ읆 - switch(issueTableConfig.key) { + switch(Down_issueTableConfig.key) { // �븯�쐞 �씠�뒋 �젣紐� case "DOWN_ISSUE_TITLE" : $scope.vm.downTableConfigs.push($tableProvider.config() .setHName("issue.downIssueTitle") .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) + .setHWidth("bold " + Down_issueTableConfig.width) .setDAlign("text-center") .setDRenderer("ISSUE_DOWN_MOVE")); break; @@ -329,7 +329,7 @@ .setHName("common.priority") .setDName("priorityName") .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) + .setHWidth("bold " + Down_issueTableConfig.width) .setDAlign("text-center") .setDRenderer("DOWN_COMMON_PRIORITY")); break; @@ -338,7 +338,7 @@ .setHName("common.importance") .setDName("severityName") .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) + .setHWidth("bold " + Down_issueTableConfig.width) .setDAlign("text-center") .setDRenderer("DOWN_COMMON_SEVERITY")); break; @@ -346,7 +346,7 @@ $scope.vm.downTableConfigs.push($tableProvider.config() .setHName("common.assigneeTeam") .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) + .setHWidth("bold " + Down_issueTableConfig.width) .setDAlign("text-center") .setDRenderer("DOWN_ISSUE_DEPARTMENT")); break; @@ -354,7 +354,7 @@ $scope.vm.downTableConfigs.push($tableProvider.config() .setHName("common.register") .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) + .setHWidth("bold " + Down_issueTableConfig.width) .setDAlign("text-center") .setDRenderer("DOWN_REGISTER")); break; @@ -362,33 +362,33 @@ $scope.vm.downTableConfigs.push($tableProvider.config() .setHName("common.period") .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) + .setHWidth("bold " + Down_issueTableConfig.width) .setDAlign("text-center") .setDRenderer("DOWN_ISSUE_DUE_DATE")); break; case "MODIFY_DATE" : // 理쒓렐 蹂�寃쎌씪 $scope.vm.downTableConfigs.push($tableProvider.config() .setHName("common.lastChangeDate") - .setHWidth("bold " + issueTableConfig.width) + .setHWidth("bold " + Down_issueTableConfig.width) .setDAlign("text-center") .setDName("modifyDate")); break; } // �궗�슜�옄 �젙�쓽 �븘�뱶 而щ읆 - if (issueTableConfig.key.indexOf("CUSTOM_FIELD_") === -1) { + if (Down_issueTableConfig.key.indexOf("CUSTOM_FIELD_") !== -1) { // 留뚯빟 �씠�뒋 �뀒�씠釉� 而щ읆紐낆씠 �몴�떆�릺吏� �븡�쑝硫� �씠履쎌씠 臾몄젣 for (var count in $scope.vm.customFields) { var customField = $scope.vm.customFields[count]; - if (customField.id === Number(issueTableConfig.key.substring(13))) { + if (customField.id === Number(Down_issueTableConfig.key.substring(13))) { $scope.vm.downTableConfigs.push($tableProvider.config() .setHName(customField.name) .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) + .setHWidth("bold " + Down_issueTableConfig.width) .setDAlign("text-center") .setColumnHint(customField) - .setDRenderer("ISSUE_CUSTOM_FIELD_VALUE_VIEW")); + .setDRenderer("DOWN_ISSUE_CUSTOM_FIELD_VALUE_VIEW")); break; } } @@ -422,11 +422,11 @@ .setHSort(false) .setDAlign("text-center")) - angular.forEach($scope.vm.relTableConfigs, function (issueTableConfig) { + angular.forEach($scope.vm.relTableConfigs, function (Rel_issueTableConfig) { // �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎. - if (issueTableConfig.display) { + if (Rel_issueTableConfig.display) { // �뀒�씠釉붿쓽 而щ읆�쓣 留뚮뱾�뼱以��떎. - $scope.fn.setRelTableColumn(issueTableConfig); + $scope.fn.setRelTableColumn(Rel_issueTableConfig); } }); } @@ -450,11 +450,11 @@ .setHSort(false) .setDAlign("text-center")) - angular.forEach($scope.vm.downTableConfigs, function (issueTableConfig) { + angular.forEach($scope.vm.downTableConfigs, function (Down_issueTableConfig) { // �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎. - if (issueTableConfig.display) { + if (Down_issueTableConfig.display) { // �뀒�씠釉붿쓽 而щ읆�쓣 留뚮뱾�뼱以��떎. - $scope.fn.setDownTableColumn(issueTableConfig); + $scope.fn.setDownTableColumn(Down_issueTableConfig); } }); } @@ -497,11 +497,11 @@ .setHWidth("width-60-p bold") .setHSort(false) .setDRenderer("ISSUE_RELATION_MOVE")) - angular.forEach($scope.vm.issueRelTableConfigs, function (issueTableConfig) { + angular.forEach($scope.vm.issueRelTableConfigs, function (Rel_issueTableConfig) { // �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎. - if (issueTableConfig.display) { + if (Rel_issueTableConfig.display) { // �뀒�씠釉붿쓽 而щ읆�쓣 留뚮뱾�뼱以��떎. - $scope.fn.setRelTableColumn(issueTableConfig); + $scope.fn.setRelTableColumn(Rel_issueTableConfig); } }); @@ -552,11 +552,11 @@ .setHWidth("width-60-p bold") .setHSort(false) .setDRenderer("ISSUE_DOWN_MOVE")) - angular.forEach($scope.vm.issueDownTableConfigs, function (issueTableConfig) { + angular.forEach($scope.vm.issueDownTableConfigs, function (Down_issueTableConfig) { // �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎. - if (issueTableConfig.display) { + if (Down_issueTableConfig.display) { // �뀒�씠釉붿쓽 而щ읆�쓣 留뚮뱾�뼱以��떎. - $scope.fn.setDownTableColumn(issueTableConfig); + $scope.fn.setDownTableColumn(Down_issueTableConfig); } }); $scope.vm.downTableConfigs.push($tableProvider.config() @@ -668,7 +668,8 @@ resolve : { parameter : function () { return { - issueIds : [$scope.vm.viewer.id] + issueIds : [$scope.vm.viewer.id], + projectId : $scope.vm.viewer.projectVo.id }; } } @@ -793,7 +794,6 @@ // �씠�뒋�뿉�꽌 �궗�슜�옄媛� �꽑�깮�븳 �궗�슜�옄 �젙�쓽 �븘�뱶 媛믪쓣 �엯�젰 �뤌�뿉 �뀑�똿�븳�떎. $scope.fn.setUseValueByIssueTypeCustomFields(result.data.data.issueCustomFieldValueVos); - // �뿰愿� �씪媛� $scope.vm.issueName = ""; $scope.vm.form.issues = []; @@ -811,13 +811,6 @@ angular.forEach(result.data.data.issueDownVos, function (issueDownVo){ $scope.vm.form.issuesDown.push(issueDownVo.issue); }); - - - // // wyu - // angular.forEach(result.data.data.issueRelationVos, function (issueRelationColum){ - // issueRelationColum.issueRelation = $scope.vm.issueRelation; - // $scope.vm.form.issues.push(issueRelationColum.issueRelation); - // }); $scope.vm.viewer.issueRelationVos = result.data.data.issueRelationVos; $scope.vm.viewer.issueDownVos = result.data.data.issueDownVos; diff --git a/src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js b/src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js index 2d705ae..8fa2199 100644 --- a/src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js +++ b/src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js @@ -8,25 +8,60 @@ ], function (app) { app.controller('issueModifyStatusController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$uibModalInstance', 'SweetAlert', '$timeout', '$stateParams', 'parameter', - 'Issue', 'IssueStatus', '$filter', - function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, SweetAlert, $timeout, $stateParams, parameter, Issue, IssueStatus, $filter) { + 'Issue', 'IssueStatus', '$filter', '$injector', '$controller', + function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, SweetAlert, $timeout, $stateParams, parameter, Issue, IssueStatus, $filter, $injector, $controller) { // �븿�닔 紐⑥쓬 $scope.fn = { cancel: cancel, // �뙘�뾽 李� �떕湲� formSubmit: formSubmit, // �뤌 �쟾�넚 formCheck: formCheck, // �뤌 泥댄겕 - findNextMultiIssueStatus: findNextMultiIssueStatus // �씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭瑜� 李얜뒗�떎. + findNextMultiIssueStatus: findNextMultiIssueStatus, // �씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭瑜� 李얜뒗�떎. + removeDepartment : removeDepartment, // �떞�떦遺��꽌 �궘�젣 }; // 蹂��닔 紐⑥쓬 $scope.vm = { issueStatusList: [], // 蹂�寃� 媛��뒫�븳 �긽�깭 紐⑸줉 form: { - issueStatusId: "", + departments: [], // �떞�떦 遺��꽌 �꽑�깮 紐⑸줉 + issueStatusId: undefined, comment: "" - } + }, + departmentName : "" }; + + angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector})); + + // �떞�떦遺��꽌 �궘�젣 + function removeDepartment(index) { + $scope.vm.form.departments.splice(index, 1); + } + + $scope.$watch("vm.form.issueStatusId", function (newValue) { + // �씠�뒋 �긽�깭蹂� �떞�떦遺��꽌 �몴�떆 + let selectIssueStatusId = $scope.vm.form.issueStatusId; + let issueStatusList = $scope.vm.issueStatusList; + $scope.vm.form.departments = []; + + if (issueStatusList != null && $scope.vm.issueStatusList.length > 0 && selectIssueStatusId !== "") { + for (let i = 0; i < issueStatusList.length; i++) { + if (issueStatusList[i].id.toString() === selectIssueStatusId) { + let workflowDepartments = issueStatusList[i].workflowDepartmentVos; + + workflowDepartments.forEach(function (workflowDepartment) { + $scope.vm.form.departments.push(workflowDepartment.departmentVo); + }); + break; + } + } + $scope.vm.issueStatusList.forEach(function (issueStatus) { + if (issueStatus.id === $scope.vm.form.issueStatusId) { + + } + }); + } + }); // �씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭瑜� 李얜뒗�떎. function findNextMultiIssueStatus() { @@ -38,6 +73,7 @@ if (result.data.message.status === "success") { $scope.vm.issueStatusList = result.data.data; + } else { SweetAlert.swal($filter("translate")("issue.failedIssueStatusCheck"), result.data.message.message, "error"); // �씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭 議고쉶 �떎�뙣 } @@ -62,7 +98,17 @@ var content = { ids: parameter.issueIds, issueStatusId: $scope.vm.form.issueStatusId, - comment: $scope.vm.form.comment + comment: $scope.vm.form.comment, + projectId : parameter.projectId, + departmentIds : (function () { + var departmentIds = []; + + angular.forEach($scope.vm.form.departments, function (department) { + departmentIds.push(department.id); + }); + + return departmentIds; + })(), }; Issue.modifyMultiIssueStatus($resourceProvider.getContent(content, diff --git a/src/main/webapp/scripts/app/issueType/issueTypeAdd.controller.js b/src/main/webapp/scripts/app/issueType/issueTypeAdd.controller.js index 22b91be..f9f3a04 100644 --- a/src/main/webapp/scripts/app/issueType/issueTypeAdd.controller.js +++ b/src/main/webapp/scripts/app/issueType/issueTypeAdd.controller.js @@ -25,8 +25,14 @@ workflows : [], // �썙�겕�뵆濡쒖슦 projects : [], // �봽濡쒖젥�듃 description : "", // �꽕紐� - color : "#febd35" // �깋�긽 + color : "#febd35", // �깋�긽 + companyFields : [], // �뾽泥댁젙蹂� + ispFields : [], // ISP �젙蹂� + hostingFields : [] // �샇�뒪�똿�젙蹂� }, + companyName : "", + ispId : "", + hostingId : "", projectName : "", workflowName : "", autoCompletePage : { @@ -140,6 +146,33 @@ return projectId; })(), + companyId : (function () { + var companyId = ""; + + if ($scope.vm.form.companyFields.length > 0) { + companyId = $scope.vm.form.companyFields[0].id; + } + + return companyId; + }), + ispId : (function () { + var ispId = ""; + + if ($scope.vm.form.ispFields.length > 0) { + ispId = $scope.vm.form.ispFields[0].id; + } + + return ispId; + }), + hostingId : (function () { + var hostingId = ""; + + if ($scope.vm.form.hostingFields.length > 0) { + hostingId = $scope.vm.form.hostingFields[0].id; + } + + return hostingId; + }), name : $rootScope.preventXss($scope.vm.form.name), description : $rootScope.preventXss($scope.vm.form.description), color : $scope.vm.form.color diff --git a/src/main/webapp/views/issue/issueDetail.html b/src/main/webapp/views/issue/issueDetail.html index 5b82040..f04369e 100644 --- a/src/main/webapp/views/issue/issueDetail.html +++ b/src/main/webapp/views/issue/issueDetail.html @@ -219,6 +219,12 @@ </div> </div> </div> + <div class="pdt0" style="position: relative; bottom: 1rem"> + <issue-detail-image-preview images="vm.images"></issue-detail-image-preview> + </div> + <div ng-show="vm.images.length < 1" class="detail-not-elements width-100"> + <span></span> + </div> </div> <!-- <div class=""> @@ -534,20 +540,6 @@ <div ng-show="vm.viewer.attachedFileVos.length < 1" class="detail-not-elements"> <span translate="common.noAttachedFile">泥⑤��맂 �뙆�씪�씠 �뾾�뒿�땲�떎.</span> </div> - </div> - - <div class="row"> - <div class="col-sm-12"> - <h6 class="todo-content-subheader mt-20"><span translate="issue.previewImage">�씠誘몄� 誘몃━ 蹂닿린</span> - </h6> - <div class="pdt10"> - <issue-detail-image-preview images="vm.images"></issue-detail-image-preview> - </div> - </div> - <div ng-show="vm.images.length < 1" class="detail-not-elements width-100"> - <span translate="common.noImage">泥⑤��맂 �씠誘몄�媛� �뾾�뒿�땲�떎.</span> - </div> - </div> <!-- �솢�룞 �궡�뿭 --> diff --git a/src/main/webapp/views/issue/issueModifyStatus.html b/src/main/webapp/views/issue/issueModifyStatus.html index 01c760e..1e97429 100644 --- a/src/main/webapp/views/issue/issueModifyStatus.html +++ b/src/main/webapp/views/issue/issueModifyStatus.html @@ -30,6 +30,24 @@ </div> </div> + <div class="form-group mgb5" ng-if="vm.form.issueStatusId !== undefined"> + <label class="issue-label"> <span translate="common.assigneeTeam">�떞�떦遺��꽌</span> </label> + <js-autocomplete-multi data-input-name="departments" + selected-model="vm.form.departments" + search="vm.departmentName" + source="fn.getUserDepartmentList(vm.departmentName, vm.form.departments)" + input-disabled="false" + translation-texts="{ count : 'common.userNum', empty : 'common.emptyUser' }" + extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : false, maxlength : 100, autoResize : true }"></js-autocomplete-multi> + + <div class="select3-selection__choicediv mt-10"> + <span class="select3-selection__choice" ng-repeat="department in vm.form.departments"> + <span>{{department.byName}}</span> <!--�궗�슜�옄媛� �냽�빐 �엳�뒗 遺��꽌 �씠由� 異쒕젰--> + <span class="select3-selection__choice__remove" ng-click="fn.removeDepartment($index)">횞</span> + </span> + </div> + </div> + <div class="form-group"> <label for="issueMultiStatusModifyForm2"><span translate="common.changeReason">蹂�寃� �궗�쑀</span> </label> <input class="form-control input-sm" -- Gitblit v1.8.0