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, 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, 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>'; 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, 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, 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() @@ -793,7 +793,6 @@ // 이슈에서 사용자가 선택한 사용자 정의 필드 값을 입력 폼에 셋팅한다. $scope.fn.setUseValueByIssueTypeCustomFields(result.data.data.issueCustomFieldValueVos); // 연관 일감 $scope.vm.issueName = ""; $scope.vm.form.issues = []; @@ -811,13 +810,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; 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 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> <!-- 활동 내역 -->