이슈 상세 연관,하위 테이블 표시 설정 - [프론트]
| | |
| | | ISSUE_STATUS, |
| | | ISSUE_TYPE, |
| | | PERIOD, |
| | | ASSIGNEE, |
| | | // ASSIGNEE, |
| | | ASSIGNEE_TEAM, |
| | | CUSTOM_FIELD, |
| | | TITLE, |
| | | DESCRIPTION |
| | |
| | | private IssueRepository issueRepository; |
| | | |
| | | @Autowired |
| | | private IssueTableConfigService issueTableConfigService; |
| | | |
| | | @Autowired |
| | | private ProjectService projectService; |
| | | |
| | | @Autowired |
| | |
| | | this.setIssueIspField(issue, issueVo); //ISP 정보 세팅 |
| | | this.setIssueHostingField(issue, issueVo); //HOSTING 정보 세팅 |
| | | this.setParentIssue(issue,issueVo); //상위 이슈 정보 세팅 |
| | | |
| | | } |
| | | |
| | | |
| | | // 상위일감 정보 추가 |
| | | private void setParentIssue(Issue issue, IssueVo issueVo) { |
| | | if(issue.getParentIssue() != null){ |
| | |
| | | private void detailMultipleCode(Map<String, Object> resJsonData, Long issueId, int issueTableType) { |
| | | // 해당 업무 공간에서 사용자의 이슈 검색 조건을 조회한다. |
| | | IssueTableConfig issueTableConfig = this.findByUserIdAndWorkspaceIdAndIssueIdAndIssueTableType(issueId, issueTableType); |
| | | IssueTableConfig saveIssueTableType = this.findByIssueIdAndIssueTableType(issueId,issueTableType); |
| | | |
| | | if (issueTableConfig != null) { |
| | | resJsonData.put(Constants.RES_KEY_CONTENTS, saveIssueTableType.getIssueTableConfigs()); |
| | | resJsonData.put(Constants.RES_KEY_CONTENTS, issueTableConfig.getIssueTableConfigs()); |
| | | } |
| | | else { |
| | | resJsonData.put(Constants.RES_KEY_CONTENTS, ""); |
| | |
| | | public void detailIssueTableConfig(Map<String, Object> resJsonData) { |
| | | issueId = (long) -1; |
| | | issueTableType = 1; |
| | | this.detailMultipleCode(resJsonData, issueId, issueTableType); |
| | | // 해당 업무 공간에서 사용자의 이슈 검색 조건을 조회한다. |
| | | IssueTableConfig issueTableConfig = this.findByUserIdAndWorkspaceIdAndIssueIdAndIssueTableType(issueId, issueTableType); |
| | | |
| | | if (issueTableConfig != null) { |
| | | resJsonData.put(Constants.RES_KEY_CONTENTS, issueTableConfig.getIssueTableConfigs()); |
| | | } |
| | | else { |
| | | resJsonData.put(Constants.RES_KEY_CONTENTS, ""); |
| | | } |
| | | } |
| | | // 저장된 연관 이슈 테이블 설정 조회 |
| | | @Override |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | package kr.wisestone.owl.vo; |
| | | |
| | | import com.google.common.collect.Lists; |
| | | import kr.wisestone.owl.domain.IssueTableConfig; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | |
| | | private List<IssueCompanyVo> issueCompanyVos; |
| | | private List<IssueIspVo> issueIspVos; |
| | | private List<IssueHostingVo> issueHostingVos; |
| | | |
| | | private IssueTableConfig issueRelTableConfig; |
| | | private IssueTableConfig issueDownTableConfig; |
| | | |
| | | public IssueVo(){} |
| | | |
| | |
| | | public void setParentIssueVo(IssueVo parentIssueVo) { |
| | | this.parentIssueVo = parentIssueVo; |
| | | } |
| | | |
| | | public IssueTableConfig getIssueRelTableConfig() { |
| | | return issueRelTableConfig; |
| | | } |
| | | |
| | | public void setIssueRelTableConfig(IssueTableConfig issueRelTableConfig) { |
| | | this.issueRelTableConfig = issueRelTableConfig; |
| | | } |
| | | |
| | | public IssueTableConfig getIssueDownTableConfig() { |
| | | return issueDownTableConfig; |
| | | } |
| | | |
| | | public void setIssueDownTableConfig(IssueTableConfig issueDownTableConfig) { |
| | | this.issueDownTableConfig = issueDownTableConfig; |
| | | } |
| | | } |
| | |
| | | @ResponseBody |
| | | Map<String, Object> detail() { |
| | | Map<String, Object> resJsonData = new HashMap<>(); |
| | | |
| | | this.issueTableConfigService.detailIssueTableConfig(resJsonData); |
| | | |
| | | return this.setSuccessMessage(resJsonData); |
| | |
| | | @RequestMapping(value = "/issueTableConfig/relationDetail", produces = MediaType.APPLICATION_JSON_VALUE) |
| | | public |
| | | @ResponseBody |
| | | Map<String, Object> relationDetail(@RequestBody Map<String, Object> params) { |
| | | Map<String, Object> relationDetail(@RequestBody Map<String, Map<String, Object>> params) { |
| | | Map<String, Object> resJsonData = new HashMap<>(); |
| | | this.issueTableConfigService.detailRelationIssueTableConfig(params,resJsonData); |
| | | this.issueTableConfigService.detailRelationIssueTableConfig(params.get(Constants.REQ_KEY_CONTENT), resJsonData); |
| | | |
| | | return this.setSuccessMessage(resJsonData); |
| | | } |
| | |
| | | @RequestMapping(value = "/issueTableConfig/downDetail", produces = MediaType.APPLICATION_JSON_VALUE) |
| | | public |
| | | @ResponseBody |
| | | Map<String, Object> downDetail(@RequestBody Map<String, Object> params) { |
| | | Map<String, Object> downDetail(@RequestBody Map<String, Map<String, Object>> params) { |
| | | Map<String, Object> resJsonData = new HashMap<>(); |
| | | this.issueTableConfigService.detailDownIssueTableConfig(params,resJsonData); |
| | | this.issueTableConfigService.detailDownIssueTableConfig(params.get(Constants.REQ_KEY_CONTENT),resJsonData); |
| | | |
| | | return this.setSuccessMessage(resJsonData); |
| | | } |
| | |
| | | makeTag += '<div owl-profile-over class="" table-user-image="data" target="userVos"></div>'; |
| | | break; |
| | | |
| | | // case "ISSUE_DEPARTMENT" : |
| | | // scope.data.registsrVos = [scope.data.registerVo]; |
| | | // makeTag += '<div owl-profile-over class="" table-user-image="data" target="departmentVos"></div>'; |
| | | // break; |
| | | |
| | | case "REGISTER" : |
| | | scope.data.registsrVos = [scope.data.registerVo]; |
| | | makeTag += '<div owl-profile-over class="" table-user-image="data" target="registsrVos"></div>'; |
| | |
| | | formSubmit : formSubmit, // 폼 전송 |
| | | formCheck : formCheck, // 폼 체크 |
| | | getCustomFields : getCustomFields, // 사용자 정의 필드 목록을 가져온다. |
| | | getIssueTableConfigs : getIssueTableConfigs // 이슈 목록 테이블 설정 정보를 가져온다. |
| | | getDownIssueTableConfigs : getDownIssueTableConfigs // 이슈 목록 테이블 설정 정보를 가져온다. |
| | | }; |
| | | |
| | | // 변수 모음 |
| | |
| | | position : 4, |
| | | display : true |
| | | }, { |
| | | name : $filter("translate")("common.assignee"), // 담당자 |
| | | key : "ASSIGNEE", |
| | | name : $filter("translate")("common.assigneeTeam"), // 담당부서 |
| | | key : "ASSIGNEE_TEAM", |
| | | width : "width-100-p", |
| | | position : 5, |
| | | display : true |
| | |
| | | if (result.data.message.status === "success") { |
| | | SweetAlert.success($filter("translate")("issue.completedSavingIssueTable"), $filter("translate")("issue.saveIssueTableSettingsInformation")); // "이슈 테이블 설정 저장 완료", "이슈 테이블 설정 정보가 저장되었습니다." |
| | | // 변경된 이슈 테이블 정보를 이슈 목록 테이블에 갱신한다. |
| | | $rootScope.$broadcast("getIssueTableConfigs", {}); |
| | | $rootScope.$broadcast("getDownIssueTableConfigs", {}); |
| | | swal.close(); |
| | | $scope.fn.cancel(); |
| | | } |
| | | else { |
| | | SweetAlert.error($filter("translate")("issue.failedToSaveIssueTableSetting"), result.data.message.message); // 이슈 테이블 설정 저장 실패 |
| | |
| | | } |
| | | |
| | | // 이슈 목록 테이블 설정 정보를 가져온다. |
| | | function getIssueTableConfigs() { |
| | | function getDownIssueTableConfigs() { |
| | | var deferred = $q.defer(); |
| | | var content = { |
| | | issueId : $rootScope.currentDetailIssueId, |
| | |
| | | }); |
| | | |
| | | // 이슈 목록 테이블 설정 정보를 가져온다. |
| | | $scope.fn.getIssueTableConfigs().then(function (issueTableConfigs) { |
| | | $scope.fn.getDownIssueTableConfigs().then(function (issueTableConfigs) { |
| | | if ($rootScope.isDefined(issueTableConfigs)) { |
| | | $rootScope.spinner = true; |
| | | |
| | |
| | | formSubmit : formSubmit, // 폼 전송 |
| | | formCheck : formCheck, // 폼 체크 |
| | | getCustomFields : getCustomFields, // 사용자 정의 필드 목록을 가져온다. |
| | | getIssueTableConfigs : getIssueTableConfigs // 이슈 목록 테이블 설정 정보를 가져온다. |
| | | getRelIssueTableConfigs : getRelIssueTableConfigs // 이슈 목록 테이블 설정 정보를 가져온다. |
| | | }; |
| | | |
| | | // 변수 모음 |
| | | $scope.vm = { |
| | | issueId: "", |
| | | issueTableConfigs : [{ |
| | | name : $filter("translate")("common.priority"), // 우선순위 |
| | | key : "PRIORITY", |
| | | name : $filter("translate")("issue.relationIssueType"), // |
| | | key : "RELATION_ISSUE_TYPE", |
| | | width : "width-100-p", |
| | | position : 1, |
| | | display : true |
| | | }, { |
| | | name : $filter("translate")("issue.relationIssueTitle"), // |
| | | key : "RELATION_ISSUE_TITLE", |
| | | width : "width-80-p", |
| | | position : 2, |
| | | display : true |
| | | },{ |
| | | name : $filter("translate")("common.priority"), // 우선순위 |
| | | key : "PRIORITY", |
| | | width : "width-80-p", |
| | | position : 3, |
| | | display : true |
| | | }, { |
| | | name : $filter("translate")("common.importance"), // 중요도 |
| | | key : "SEVERITY", |
| | | width : "width-80-p", |
| | | position : 2, |
| | | position : 4, |
| | | display : true |
| | | }, { |
| | | name : $filter("translate")("issue.issueType"), // 이슈 타입 |
| | | key : "ISSUE_TYPE", |
| | | width : "width-140-p", |
| | | position : 3, |
| | | position : 5, |
| | | display : true |
| | | }, { |
| | | name : $filter("translate")("common.assignee"), // 담당자 |
| | | key : "ASSIGNEE", |
| | | name : $filter("translate")("common.assigneeTeam"), // 담당부서 |
| | | key : "ASSIGNEE_TEAM", |
| | | width : "width-100-p", |
| | | position : 4, |
| | | position : 6, |
| | | display : true |
| | | }, { |
| | | name : $filter("translate")("common.register"), // 등록자 |
| | | key : "REGISTER", |
| | | width : "width-100-p", |
| | | position : 5, |
| | | position : 7, |
| | | display : false |
| | | }, { |
| | | name : $filter("translate")("common.period"), // 기간 |
| | | key : "PERIOD", |
| | | width : "width-140-p", |
| | | position : 6, |
| | | position : 8, |
| | | display : false |
| | | }, { |
| | | name : $filter("translate")("common.lastChangeDate"), // 최근 변경일 |
| | | key : "MODIFY_DATE", |
| | | width : "width-100-p", |
| | | position : 7, |
| | | position : 9, |
| | | display : false |
| | | }, { |
| | | }] |
| | |
| | | if (result.data.message.status === "success") { |
| | | SweetAlert.success($filter("translate")("issue.completedSavingIssueTable"), $filter("translate")("issue.saveIssueTableSettingsInformation")); // "이슈 테이블 설정 저장 완료", "이슈 테이블 설정 정보가 저장되었습니다." |
| | | // 변경된 이슈 테이블 정보를 이슈 목록 테이블에 갱신한다. |
| | | $rootScope.$broadcast("getIssueTableConfigs", {}); |
| | | $rootScope.$broadcast("getRelIssueTableConfigs", {}); |
| | | swal.close(); |
| | | $scope.fn.cancel(); |
| | | } |
| | | else { |
| | | SweetAlert.error($filter("translate")("issue.failedToSaveIssueTableSetting"), result.data.message.message); // 이슈 테이블 설정 저장 실패 |
| | |
| | | } |
| | | |
| | | // 이슈 목록 테이블 설정 정보를 가져온다. |
| | | function getIssueTableConfigs() { |
| | | function getRelIssueTableConfigs() { |
| | | var deferred = $q.defer(); |
| | | |
| | | var content = { |
| | |
| | | |
| | | // 사용자 정의 필드를 조회한 후 표시할 이슈 테이블 컬럼을 준비한다. |
| | | $scope.fn.getCustomFields().then(function (result) { |
| | | var count = 7; |
| | | var count = 8; |
| | | angular.forEach(result, function (customField) { |
| | | $scope.vm.issueTableConfigs.push({ |
| | | name : customField.name, |
| | |
| | | }); |
| | | |
| | | // 이슈 목록 테이블 설정 정보를 가져온다. |
| | | $scope.fn.getIssueTableConfigs().then(function (issueTableConfigs) { |
| | | $scope.fn.getRelIssueTableConfigs().then(function (issueTableConfigs) { |
| | | if ($rootScope.isDefined(issueTableConfigs)) { |
| | | $rootScope.spinner = true; |
| | | |
| | |
| | | // 변수 모음 |
| | | $scope.vm = { |
| | | issueTableConfigs : [{ |
| | | name : $filter("translate")("issue.relationIssueType"), // 연관 이슈 구분 |
| | | key : "RELATION_ISSUE_TYPE", |
| | | width : "width-100-p", |
| | | position : 1, |
| | | display : true |
| | | }, { |
| | | name : $filter("translate")("issue.relationIssueTitle"), // 연관 이슈 제목 |
| | | key : "RELATION_ISSUE_TITLE", |
| | | width : "width-80-p", |
| | | position : 2, |
| | | display : true |
| | | }, { |
| | | name : $filter("translate")("common.importance"), // 우선순위 |
| | | key : "PRIORITY", |
| | | width : "width-80-p", |
| | | position : 3, |
| | | position : 1, |
| | | display : true |
| | | }, { |
| | | name : $filter("translate")("common.importance"), // 중요도 |
| | | key : "SEVERITY", |
| | | width : "width-80-p", |
| | | position : 4, |
| | | position : 2, |
| | | display : true |
| | | }, { |
| | | name : $filter("translate")("issue.issueType"), // 이슈 타입 |
| | | key : "ISSUE_TYPE", |
| | | width : "width-140-p", |
| | | position : 5, |
| | | position : 3, |
| | | display : true |
| | | }, { |
| | | name : $filter("translate")("common.assignee"), // 담당자 |
| | | key : "ASSIGNEE", |
| | | name : $filter("translate")("common.assigneeTeam"), // 담당부서 |
| | | key : "ASSIGNEE_TEAM", |
| | | width : "width-100-p", |
| | | position : 6, |
| | | position : 4, |
| | | display : true |
| | | }, { |
| | | name : $filter("translate")("common.register"), // 등록자 |
| | | key : "REGISTER", |
| | | width : "width-100-p", |
| | | position : 7, |
| | | display : false |
| | | position : 5, |
| | | display : true |
| | | }, { |
| | | name : $filter("translate")("common.period"), // 기간 |
| | | key : "PERIOD", |
| | | width : "width-140-p", |
| | | position : 8, |
| | | display : false |
| | | position : 6, |
| | | display : true |
| | | }, { |
| | | name : $filter("translate")("common.lastChangeDate"), // 최근 변경일 |
| | | key : "MODIFY_DATE", |
| | | width : "width-100-p", |
| | | position : 9, |
| | | display : false |
| | | position : 7, |
| | | display : true |
| | | }, { |
| | | }] |
| | | }; |
| | |
| | | |
| | | if (result.data.message.status === "success") { |
| | | SweetAlert.success($filter("translate")("issue.completedSavingIssueTable"), $filter("translate")("issue.saveIssueTableSettingsInformation")); // "이슈 테이블 설정 저장 완료", "이슈 테이블 설정 정보가 저장되었습니다." |
| | | |
| | | // 변경된 이슈 테이블 정보를 이슈 목록 테이블에 갱신한다. |
| | | $rootScope.$broadcast("getIssueTableConfigs", {}); |
| | | swal.close(); |
| | | $scope.fn.cancel(); |
| | | } |
| | | else { |
| | | SweetAlert.error($filter("translate")("issue.failedToSaveIssueTableSetting"), result.data.message.message); // 이슈 테이블 설정 저장 실패 |
| | |
| | | |
| | | // 사용자 정의 필드를 조회한 후 표시할 이슈 테이블 컬럼을 준비한다. |
| | | $scope.fn.getCustomFields().then(function (result) { |
| | | var count = 9; |
| | | var count = 7; |
| | | angular.forEach(result, function (customField) { |
| | | $scope.vm.issueTableConfigs.push({ |
| | | name : customField.name, |
| | |
| | | 'angular' |
| | | ], |
| | | function (app, angular) { |
| | | app.controller('issueDetailController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$tableProvider', '$state', '$uibModal', 'SweetAlert', '$timeout', 'Issue', 'IssueComment', 'IssueRelation', 'AttachedFile', 'IssueStatus', '$filter', |
| | | function ($scope, $rootScope, $log, $resourceProvider, $tableProvider, $state, $uibModal, SweetAlert, $timeout, Issue, IssueComment, IssueRelation, AttachedFile, IssueStatus, $filter) { |
| | | app.controller('issueDetailController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$tableProvider', '$state', '$uibModal', 'SweetAlert', '$timeout', 'Issue', 'IssueComment', 'IssueRelation', 'AttachedFile', 'IssueStatus', 'IssueTableConfig', '$filter', |
| | | function ($scope, $rootScope, $log, $resourceProvider, $tableProvider, $state, $uibModal, SweetAlert, $timeout, Issue, IssueComment, IssueRelation, AttachedFile, IssueStatus, IssueTableConfig, $filter) { |
| | | |
| | | // IssueListController vm, fn 변수 상속. |
| | | |
| | | $scope.fn.getIssueDetail = getIssueDetail; // 이슈 상세 정보 가져오기 |
| | | $scope.fn.setRelTableColumn = setRelTableColumn; |
| | | $scope.fn.setTableColumnDown = setTableColumnDown; |
| | | $scope.fn.addComment = addComment; // 댓글 등록 |
| | | $scope.fn.removeComment = removeComment; // 댓글 삭제 |
| | | $scope.fn.getCommentList = getCommentList; // 댓글 목록 가져오기 |
| | |
| | | $scope.fn.addDownIssue = addDownIssue; // 하위 이슈 추가 |
| | | $scope.fn.addRelationIssueTableConfig = addRelationIssueTableConfig; // 연관 이슈 목록 테이블 설정 |
| | | $scope.fn.addDownIssueTableConfig = addDownIssueTableConfig; // 하위 이슈 목록 테이블 설정 |
| | | $scope.fn.getRelTableConfigs = getRelTableConfigs; |
| | | |
| | | // 이슈 목록 컨트롤러 vm, fn 상속 중 |
| | | $scope.vm.viewer = {}; |
| | |
| | | $scope.vm.autoCompletePage.issue.totalPage = result.data.page.totalPage; |
| | | } |
| | | |
| | | // 테이블의 연관 이슈 컬럼을 만들어준다. |
| | | function setRelTableColumn(issueTableConfig) { |
| | | |
| | | // 연관 이슈 컬럼 |
| | | switch(issueTableConfig.key) { |
| | | case "RELATION_ISSUE_TYPE" : |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.relationIssueType") |
| | | .setDType("renderer") |
| | | .setHWidth("width-30 bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_RELATION_TYPE")) |
| | | break; |
| | | case "RELATION_ISSUE_TITLE" : |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.relationIssueTitle") |
| | | .setDType("renderer") |
| | | .setHWidth("width-60 bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_RELATION_MOVE")) |
| | | break; |
| | | case "PRIORITY" : // 우선순위 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("common.priority") |
| | | .setDName("priorityName") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("COMMON_PRIORITY")); |
| | | break; |
| | | case "SEVERITY" : // 중요도 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("common.importance") |
| | | .setDName("severityName") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("COMMON_SEVERITY")); |
| | | break; |
| | | case "ISSUE_TYPE" : // 이슈 타입 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.issueType") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDName("issueTypeName")); |
| | | break; |
| | | case "ASSIGNEE_TEAM" : // 담당부서 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("common.assigneeTeam") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("ISSUE_DEPARTMENT")); |
| | | break; |
| | | case "REGISTER" : // 등록자 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("common.register") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("REGISTER")); |
| | | break; |
| | | case "PERIOD" : // 기간 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("common.period") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("ISSUE_DUE_DATE")); |
| | | break; |
| | | case "MODIFY_DATE" : // 최근 변경일 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("common.lastChangeDate") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDName("modifyDate")); |
| | | break; |
| | | } |
| | | |
| | | // 사용자 정의 필드 컬럼 |
| | | if (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.relTableConfigs.push($tableProvider.config() |
| | | .setHName(customField.name) |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setColumnHint(customField) |
| | | .setDRenderer("ISSUE_CUSTOM_FIELD_VALUE_VIEW")); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 하위 이슈 테이블 설정 |
| | | function makeTableConfigsDown() { |
| | | $scope.vm.downTableConfigs = []; |
| | |
| | | .setDRenderer("ISSUE_DOWN_DELETE") |
| | | .setHSort(false) |
| | | .setDAlign("text-center")) |
| | | angular.forEach($scope.vm.relTableConfigs, function (issueTableConfig) { |
| | | // 표시 대상인 컬럼만 화면에 그려준다. |
| | | if (issueTableConfig.display) { |
| | | // 테이블의 컬럼을 만들어준다. |
| | | $scope.fn.setTableColumnDown(issueTableConfig); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 테이블의 컬럼을 만들어준다. |
| | | function setTableColumnDown(issueTableConfig) { |
| | | if (issueTableConfig == null) return; |
| | | |
| | | // 일반 컬럼 |
| | | switch(issueTableConfig.key) { |
| | | case "PRIORITY" : // 우선순위 |
| | | $scope.vm.tableConfigs.push($tableProvider.config() |
| | | .setHName("common.priority") |
| | | .setDName("priorityName") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("COMMON_PRIORITY")); |
| | | break; |
| | | case "SEVERITY" : // 중요도 |
| | | $scope.vm.tableConfigs.push($tableProvider.config() |
| | | .setHName("common.importance") |
| | | .setDName("severityName") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("COMMON_SEVERITY")); |
| | | break; |
| | | case "ISSUE_TYPE" : // 이슈 타입 |
| | | $scope.vm.tableConfigs.push($tableProvider.config() |
| | | .setHName("issue.issueType") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDName("issueTypeName")); |
| | | break; |
| | | case "ASSIGNEE_TEAM" : // 담당부서 |
| | | $scope.vm.tableConfigs.push($tableProvider.config() |
| | | .setHName("common.assigneeTeam") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("ISSUE_DEPARTMENT")); |
| | | break; |
| | | case "REGISTER" : // 등록자 |
| | | $scope.vm.tableConfigs.push($tableProvider.config() |
| | | .setHName("common.register") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("REGISTER")); |
| | | break; |
| | | case "PERIOD" : // 기간 |
| | | $scope.vm.tableConfigs.push($tableProvider.config() |
| | | .setHName("common.period") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("ISSUE_DUE_DATE")); |
| | | break; |
| | | case "MODIFY_DATE" : // 최근 변경일 |
| | | $scope.vm.tableConfigs.push($tableProvider.config() |
| | | .setHName("common.lastChangeDate") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDName("modifyDate")); |
| | | break; |
| | | } |
| | | |
| | | // 사용자 정의 필드 컬럼 |
| | | if (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() |
| | | .setHName(customField.name) |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setColumnHint(customField) |
| | | .setDRenderer("ISSUE_CUSTOM_FIELD_VALUE_VIEW")); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 연관 이슈 테이블 설정 |
| | |
| | | .setHWidth("width-60 bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_RELATION_MOVE")) |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.relationIssueDelete") |
| | | .setDType("renderer") |
| | | .setHWidth("width-10 bold") |
| | | .setDRenderer("ISSUE_RELATION_DELETE") |
| | | .setHSort(false) |
| | | .setDAlign("text-center")) |
| | | |
| | | angular.forEach($scope.vm.issueTableConfigs, function (issueTableConfig) { |
| | | // 표시 대상인 컬럼만 화면에 그려준다. |
| | | if (issueTableConfig.display) { |
| | | // 테이블의 컬럼을 만들어준다. |
| | | $scope.fn.setRelTableColumn(issueTableConfig); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 연관 일감 목록 가져오기 |
| | | // function getRelationIssueList() { |
| | | // var contents = { |
| | | // issueId : $rootScope.currentDetailIssueId, |
| | | // }; |
| | | // |
| | | // IssueRelation.find($resourceProvider.getContent( |
| | | // contents, |
| | | // $resourceProvider.getPageContent(0, 10))).then(function (result) { |
| | | // |
| | | // if (result.data.message.status === "success") { |
| | | // $scope.vm.relResponseData = result.data; |
| | | // } |
| | | // else { |
| | | // SweetAlert.error($filter("translate")("issue.failedToIssueAddIssueRelation"), result.data.message.message); // "연관일감 생성 실패" |
| | | // } |
| | | // }); |
| | | // } |
| | | |
| | | |
| | | |
| | | function getRelTableConfigs() { |
| | | var content = { |
| | | issueId : $scope.vm.viewer.id |
| | | }; |
| | | |
| | | IssueTableConfig.relationDetail($resourceProvider.getContent( |
| | | content, |
| | | $resourceProvider.getPageContent(0, 0))).then(function (result) { |
| | | |
| | | if (result.data.message.status === "success") { |
| | | var issueTableConfigs = result.data.data; |
| | | |
| | | // 연관 슈 목록 테이블 설정 값을 가져와서 적용한다. |
| | | if ($rootScope.isDefined(issueTableConfigs)) { |
| | | // 이슈 테이블 설정 정보를 저장 한다. |
| | | $scope.vm.issueRelTableConfigs = []; |
| | | $scope.vm.issueRelTableConfigs = JSON.parse(issueTableConfigs); |
| | | $scope.vm.issueRelTableConfigs.sort(function (a, b) { |
| | | return a.position < b.position ? -1 : a.position > b.position ? 1 : 0; |
| | | }); |
| | | |
| | | angular.forEach($scope.vm.issueRelTableConfigs, function (issueTableConfig) { |
| | | // 표시 대상인 컬럼만 화면에 그려준다. |
| | | if (issueTableConfig.display) { |
| | | // 테이블의 컬럼을 만들어준다. |
| | | $scope.fn.setRelTableColumn(issueTableConfig); |
| | | } |
| | | }); |
| | | |
| | | } else { |
| | | makeTableConfigs(); |
| | | } |
| | | |
| | | } |
| | | else { |
| | | SweetAlert.swal($filter("translate")("issue.errorRemovableIssueStatusList"), result.data.message.message, "error"); // "이동 가능한 이슈 상태 목록 조회 오류" |
| | | } |
| | | }); |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | // 하위 이슈 추가 |
| | | function addDownIssue() { |
| | |
| | | // 초기화 해야할 할목을 지정하여 다른 이슈를 클릭할 때 초기화해준다. |
| | | $scope.fn.initReload(); |
| | | |
| | | $scope.fn.getRelTableConfigs(); |
| | | |
| | | Issue.detail($resourceProvider.getContent( |
| | | {id : $scope.vm.viewer.id, deep : "02"}, |
| | | $resourceProvider.getPageContent(0, 1))).then(function (result) { |
| | |
| | | $scope.vm.form.issuesDown = []; |
| | | $scope.vm.form.issuesDown.push(result.data.data); |
| | | |
| | | makeTableConfigs(); |
| | | // makeTableConfigs(); |
| | | // $scope.vm.relTableConfigs = result.data.relTableConfigs; |
| | | |
| | | angular.forEach(result.data.data.issueRelationVos, function (issueRelationVo){ |
| | | issueRelationVo.relationIssueTypeName = $scope.vm.relationIssueTypes[issueRelationVo.relationIssueType].name; |
| | | $scope.vm.form.issues.push(issueRelationVo.issueRelation); |
| | | }); |
| | | |
| | | makeTableConfigsDown(); |
| | | // makeTableConfigsDown(); |
| | | // $scope.vm.downTableConfigs = result.data.downTableConfigs; |
| | | angular.forEach(result.data.data.issueDownVos, function (issueDownVo){ |
| | | $scope.vm.form.issuesDown.push(issueDownVo.issue); |
| | | }); |
| | |
| | | priorities : [], // 우선 순위 |
| | | severities : [], // 중요도 |
| | | users : [], // 담당자 |
| | | departments : [], // 담당부서 |
| | | registers : [], // 등록자 |
| | | customFields : [], // 사용자 정의 필드 |
| | | issueTableConfigs : [], // 이슈 테이블 설정 |
| | |
| | | search : $scope.vm.search, |
| | | projects : $scope.vm.projects, |
| | | users : $scope.vm.users, |
| | | departments : $scope.vm.departments, |
| | | registers : $scope.vm.registers, |
| | | parentIssueId : $scope.vm.parentIssueId |
| | | }) |
| | |
| | | var issueListSearchObject = JSON.parse(result.data.data); |
| | | // 이슈 번호만 적용한다. - 삭제시 처리방법때문에 다른 속성은 적용 보류 |
| | | $scope.vm.search = issueListSearchObject.search; |
| | | /*$scope.vm.users = issueListSearchObject.users; |
| | | $scope.vm.users = issueListSearchObject.users; |
| | | $scope.vm.departments = issueListSearchObject.departments; |
| | | $scope.vm.projects = issueListSearchObject.projects; |
| | | $scope.vm.registers = issueListSearchObject.registers;*/ |
| | | $scope.vm.registers = issueListSearchObject.registers; |
| | | |
| | | $scope.fn.getPageList(0, true); |
| | | } else { |
| | |
| | | .setDAlign("text-center") |
| | | .setDName("issueTypeName")); |
| | | break; |
| | | case "ASSIGNEETEAM" : // 담당부서 |
| | | case "ASSIGNEE_TEAM" : // 담당부서 |
| | | $scope.vm.tableConfigs.push($tableProvider.config() |
| | | .setHName("common.assigneeTeam") |
| | | .setDType("renderer") |
| | | .setHWidth("bold " + issueTableConfig.width) |
| | | .setDAlign("text-center") |
| | | .setDRenderer("ISSUE_USER")); |
| | | .setDRenderer("ISSUE_DEPARTMENT")); |
| | | break; |
| | | case "REGISTER" : // 등록자 |
| | | $scope.vm.tableConfigs.push($tableProvider.config() |
| | |
| | | }); |
| | | |
| | | return userIds; |
| | | })(), |
| | | departmentIds : (function () { |
| | | var departmentIds = []; |
| | | |
| | | angular.forEach($scope.vm.departments, function (department) { |
| | | departmentIds.push(department.id); |
| | | }); |
| | | |
| | | return departmentIds; |
| | | })(), |
| | | registerIds : (function () { |
| | | var registerIds = []; |
| | |
| | | display : true |
| | | }, { |
| | | name : $filter("translate")("common.assigneeTeam"), // 담당부서 |
| | | key : "ASSIGNEETEAM", |
| | | key : "ASSIGNEE_TEAM", |
| | | width : "width-140-p", |
| | | position : 4, |
| | | display : true |
| | |
| | | input-disabled="false" |
| | | source="fn.getUserDepartmentList(vm.departmentName, vm.departments)" |
| | | translation-texts="{ count : 'common.userNum', empty : 'common.emptyDepartment' }" |
| | | extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'user', maxlength : 100 }"> |
| | | extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'department', maxlength : 100 }"> |
| | | </js-autocomplete-multi> |
| | | </div> |
| | | </div> |