이슈 상세 연관,하위 테이블 표시 설정 - [프론트]
| | |
| | | padding: 15px; |
| | | text-align: center; |
| | | border: 1px solid #ddd; |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | // 이슈 목록에서 기간 표시 |
| | | case "ISSUE_DUE_DATE" : |
| | | if (!$rootScope.isDefined(scope.data.startDate) && !$rootScope.isDefined(scope.data.completeDate)) { |
| | | makeTag += "<span></span>"; |
| | | makeTag += "<span translate='common.noDate'>기간 없음</span>"; |
| | | } |
| | | else { |
| | | makeTag += "<span>" + scope.data.startDate + " ~ " + scope.data.completeDate + "</span>"; |
| | |
| | | makeTag += '</div>'; |
| | | break; |
| | | |
| | | case "ISSUE_DETAIL_MOVE" : |
| | | makeTag += "<a ui-sref='issues.detail({ id : " + scope.data.id + " })'><span>" + scope.data.title + "</span></a>"; |
| | | break; |
| | | /* case "ISSUE_DETAIL_MOVE" : |
| | | makeTag += "<a class='text-center' ui-sref='issues.detail({ id : " + scope.data.id + " })'><span>" + scope.data.title + "</span></a>"; |
| | | break;*/ |
| | | |
| | | |
| | | // 연관 이슈 이동 |
| | | // 연관 이슈 이동(제목) |
| | | case "ISSUE_RELATION_MOVE" : |
| | | makeTag += "<span class=\"titlename cursor\" ng-click=\"event.changeDetailView(data.issueRelation)\">" + scope.data.title + "</span></a>"; |
| | | makeTag += "<span class=\"titlename cursor text-center\" ng-click=\"event.changeDetailView(data.issueRelation)\">" + scope.data.title + "</span></a>"; |
| | | break; |
| | | |
| | | // 연관 이슈 이동 |
| | | // 연관 이슈 우선순위 |
| | | case "REL_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 "REL_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 "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; |
| | |
| | | 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 += "<span>" + scope.data.departmentVos.departmentName + "</span>"; |
| | | case "REL_REGISTER": |
| | | scope.data.registerVos = [scope.data.issueRelation.registerVo]; |
| | | makeTag += '<div owl-profile-over class="" table-user-image="data" target="registerVos"></div>'; |
| | | break; |
| | | |
| | | case "ISSUE_DEPARTMENT" : |
| | | makeTag += "<ul class='ul-not-comma'>"; |
| | | makeTag += "<div style='color: #000000'>"; |
| | | angular.forEach(scope.data.departmentVos, function (departments) { |
| | | makeTag += "<li>" + departments.departmentName + "</li>"; |
| | | }); |
| | | makeTag += "</div>"; |
| | | makeTag += "</ul>"; |
| | | break; |
| | | |
| | | // angular.forEach(scope.data.departmentVos, function (departments) { |
| | | // makeTag += "<span>" + departments.departmentName + "</span>" |
| | | // }); |
| | | // break; |
| | | |
| | | case "ISSUE_USER" : |
| | | makeTag += '<div owl-profile-over class="" table-user-image="data" target="userVos"></div>'; |
| | | break; |
| | | |
| | | case "REGISTER" : |
| | | scope.data.registsrVos = [scope.data.registerVo]; |
| | | makeTag += '<div owl-profile-over class="" table-user-image="data" target="registsrVos"></div>'; |
| | | scope.data.registerVos = [scope.data.registerVo]; |
| | | makeTag += '<div owl-profile-over class="" table-user-image="data" target="registerVos"></div>'; |
| | | break; |
| | | |
| | | case "WORKFLOW_NAME": |
| | |
| | | body.stop-scrolling { |
| | | height: 100%; |
| | | overflow: hidden; } |
| | | |
| | | } |
| | | /*overflow: hidden;*/ |
| | | .sweet-overlay { |
| | | background-color: black; |
| | | /* IE8 */ |
| | |
| | | "changeDate": "변경일", |
| | | "lastChangeDate": "최근 변경일", |
| | | "registrationDate": "등록일", |
| | | "noDate": "기간 없음", |
| | | "fullView": "전체보기", |
| | | "comments": "댓글", |
| | | "record": "기록", |
| | |
| | | // 업체정보 결과 값 Event 처리(set) |
| | | $scope.$on("companyFieldEvent", function (event, result) { |
| | | $scope.vm.companyId = result[0].id; |
| | | $scope.vm.companyName = result[0].id; |
| | | $scope.vm.companyName = result[0].name; |
| | | $scope.vm.companyManager = result[0].manager; |
| | | $scope.vm.companyTel = result[0].tel; |
| | | $scope.vm.companyEmail = result[0].email; |
| | |
| | | key : "PRIORITY", |
| | | width : "width-80-p", |
| | | position : 1, |
| | | display : true |
| | | display : false |
| | | }, { |
| | | name : $filter("translate")("common.importance"), // 중요도 |
| | | key : "SEVERITY", |
| | | width : "width-80-p", |
| | | position : 2, |
| | | display : true |
| | | display : false |
| | | }, { |
| | | name : $filter("translate")("issue.issueType"), // 이슈 타입 |
| | | key : "ISSUE_TYPE", |
| | | width : "width-140-p", |
| | | position : 3, |
| | | display : true |
| | | display : false |
| | | }, { |
| | | name : $filter("translate")("common.assigneeTeam"), // 담당부서 |
| | | key : "ASSIGNEE_TEAM", |
| | | width : "width-100-p", |
| | | position : 4, |
| | | display : true |
| | | display : false |
| | | }, { |
| | | name : $filter("translate")("common.register"), // 등록자 |
| | | key : "REGISTER", |
| | |
| | | var deferred = $q.defer(); |
| | | var content = { |
| | | issueId : $rootScope.currentDetailIssueId, |
| | | delValue : $scope.vm.issueDownTableConfigs.splice(7,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") { |
| | |
| | | key : "PRIORITY", |
| | | width : "width-100-p", |
| | | position : 1, |
| | | display : true |
| | | display : false |
| | | }, { |
| | | name : $filter("translate")("common.importance"), // 중요도 |
| | | key : "SEVERITY", |
| | | width : "width-100-p", |
| | | position : 2, |
| | | display : true |
| | | display : false |
| | | }, { |
| | | name : $filter("translate")("issue.issueType"), // 이슈 타입 |
| | | key : "ISSUE_TYPE", |
| | | width : "width-100-p", |
| | | position : 3, |
| | | display : true |
| | | display : false |
| | | }, { |
| | | name : $filter("translate")("common.assigneeTeam"), // 담당부서 |
| | | key : "ASSIGNEE_TEAM", |
| | | width : "width-50-p", |
| | | position : 4, |
| | | display : true |
| | | display : false |
| | | }, { |
| | | name : $filter("translate")("common.register"), // 등록자 |
| | | key : "REGISTER", |
| | | width : "width-50-p", |
| | | position : 5, |
| | | display : true |
| | | display : false |
| | | }, { |
| | | name : $filter("translate")("common.period"), // 기간 |
| | | key : "PERIOD", |
| | | width : "width-100-p", |
| | | position : 6, |
| | | display : true |
| | | display : false |
| | | }, { |
| | | name : $filter("translate")("common.lastChangeDate"), // 최근 변경일 |
| | | key : "MODIFY_DATE", |
| | | width : "width-100-p", |
| | | position : 7, |
| | | display : true |
| | | display : false |
| | | }, { |
| | | }] |
| | | }; |
| | |
| | | return deferred.promise; |
| | | } |
| | | |
| | | |
| | | |
| | | // 이슈 목록 테이블 설정 정보를 가져온다. |
| | | function getRelIssueTableConfigs() { |
| | | var deferred = $q.defer(); |
| | | |
| | | var content = { |
| | | issueId : $rootScope.currentDetailIssueId, |
| | | delValue : $scope.vm.issueRelTableConfigs.splice(7,1), |
| | | issueTableConfigs : JSON.stringify($scope.vm.issueRelTableConfigs) |
| | | }; |
| | | |
| | |
| | | |
| | | // 사용자 정의 필드를 조회한 후 표시할 이슈 테이블 컬럼을 준비한다. |
| | | $scope.fn.getCustomFields().then(function (result) { |
| | | var count = 9; |
| | | var count = 8; |
| | | angular.forEach(result, function (customField) { |
| | | $scope.vm.issueRelTableConfigs.push({ |
| | | name : customField.name, |
| | |
| | | if ($rootScope.isDefined(issueTableConfigs)) { |
| | | $rootScope.spinner = true; |
| | | |
| | | // var saveTableConfigs = JSON.parse(issueTableConfigs); |
| | | var saveTableConfigs = JSON.parse(issueTableConfigs); |
| | | |
| | | angular.forEach(saveTableConfigs, function (saveTableConfig) { |
| | |
| | | key : "REGISTER", |
| | | width : "width-100-p", |
| | | position : 5, |
| | | display : true |
| | | display : false |
| | | }, { |
| | | name : $filter("translate")("common.period"), // 기간 |
| | | key : "PERIOD", |
| | | width : "width-140-p", |
| | | position : 6, |
| | | display : true |
| | | display : false |
| | | }, { |
| | | name : $filter("translate")("common.lastChangeDate"), // 최근 변경일 |
| | | key : "MODIFY_DATE", |
| | | width : "width-100-p", |
| | | position : 7, |
| | | display : true |
| | | display : false |
| | | }, { |
| | | }] |
| | | }; |
| | |
| | | return deferred.promise; |
| | | } |
| | | |
| | | var content = { |
| | | delValue : $scope.vm.issueTableConfigs.splice(7,1), |
| | | issueTableConfigs : JSON.stringify($scope.vm.issueTableConfigs) |
| | | }; |
| | | // 이슈 목록 테이블 설정 정보를 가져온다. |
| | | function getIssueAddTableConfigs() { |
| | | var deferred = $q.defer(); |
| | | |
| | | IssueTableConfig.detail($resourceProvider.getContent({}, |
| | | IssueTableConfig.detail($resourceProvider.getContent(content, |
| | | $resourceProvider.getPageContent(0, 1000))).then(function (result) { |
| | | if (result.data.message.status !== "success") { |
| | | SweetAlert.error($filter("translate")("issue.failedToIssueTableColumnLookup"), result.data.message.message); // 이슈 테이블 컬럼 조회 실패 |
| | | } |
| | | |
| | | // for (var i = 0; i < result.data.name; i++) { |
| | | // if (result.data.name === '') { |
| | | // result.splice(i,1); |
| | | // i--; |
| | | // } |
| | | // } |
| | | |
| | | deferred.resolve(result.data.data); |
| | | }); |
| | | |
| | |
| | | 'angular' |
| | | ], |
| | | function (app, angular) { |
| | | app.controller('issueDetailController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$tableProvider', '$state', '$uibModal', '$q','SweetAlert', '$timeout', 'Issue', 'IssueComment', 'IssueRelation', 'AttachedFile', 'IssueStatus', 'IssueTableConfig', '$filter', |
| | | function ($scope, $rootScope, $log, $resourceProvider, $tableProvider, $state, $uibModal, $q, SweetAlert, $timeout, Issue, IssueComment, IssueRelation, AttachedFile, IssueStatus, IssueTableConfig, $filter) { |
| | | app.controller('issueDetailController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$tableProvider', '$state', '$uibModal', '$q', |
| | | '$controller', '$injector', 'SweetAlert', '$timeout', 'Issue', 'IssueComment', 'IssueRelation', 'AttachedFile', 'Priority', 'Severity','IssueStatus', 'IssueTableConfig', '$filter', |
| | | function ($scope, $rootScope, $log, $resourceProvider, $tableProvider, $state, $uibModal, $q, $controller, $injector, SweetAlert, $timeout, Issue, IssueComment, IssueRelation, AttachedFile, Priority, Severity, IssueStatus, IssueTableConfig, $filter) { |
| | | |
| | | // IssueListController vm, fn 변수 상속. |
| | | |
| | |
| | | // $rootScope.$broadcast("makeIssueSearch", issue); |
| | | $scope.$parent.tableEvent.changeDetailView(issue.id); |
| | | } |
| | | |
| | | angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector})); |
| | | |
| | | // 하위 이슈 삭제 |
| | | function removeDownIssue(id) { |
| | |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_RELATION_MOVE")) |
| | | break; |
| | | case "PRIORITY" : // 우선순위 |
| | | 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")); |
| | | .setDRenderer("REL_COMMON_PRIORITY")); |
| | | break; |
| | | case "SEVERITY" : // 중요도 |
| | | 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")); |
| | | .setDRenderer("REL_COMMON_SEVERITY")); |
| | | break; |
| | | case "ISSUE_TYPE" : // 이슈 타입 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | |
| | | .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")); |
| | | .setDRenderer("REL_REGISTER")); |
| | | break; |
| | | case "PERIOD" : // 기간 |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.relationIssueType") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-30-p bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_RELATION_TYPE")) |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.relationIssueTitle") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-60-p bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_RELATION_MOVE")) |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.relationIssueDelete") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-20-p bold") |
| | | .setDRenderer("ISSUE_RELATION_DELETE") |
| | | .setHSort(false) |
| | |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.downIssueTitle") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-60-p bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_DOWN_MOVE")) |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.relationIssueDelete") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-20-p bold") |
| | | .setDRenderer("ISSUE_DOWN_DELETE") |
| | | .setHSort(false) |
| | |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.relationIssueType") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-30-p bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_RELATION_TYPE")) |
| | | $scope.vm.relTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.relationIssueTitle") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-60-p bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_RELATION_MOVE")) |
| | |
| | | $scope.vm.downTableConfigs.push($tableProvider.config() |
| | | .setHName("issue.downIssueTitle") |
| | | .setDType("renderer") |
| | | .setDAlign("text-center") |
| | | .setHWidth("width-60-p bold") |
| | | .setHSort(false) |
| | | .setDRenderer("ISSUE_DOWN_MOVE")) |
| | |
| | | $scope.fn.getRelTableConfigs(); |
| | | $scope.fn.getDownTableConfigs(); |
| | | |
| | | Issue.detail($resourceProvider.getContent( |
| | | Issue.detail($resourceProvider.getContent( |
| | | {id : $scope.vm.viewer.id, deep : "02"}, |
| | | $resourceProvider.getPageContent(0, 1))).then(function (result) { |
| | | |
| | |
| | | $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); |
| | | }); |
| | | |
| | | // // 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; |
| | |
| | | id : parameter.id, |
| | | title : $rootScope.preventXss($scope.vm.form.title), // 제목 |
| | | description : $rootScope.preventXss($scope.vm.form.description), // 내용 |
| | | companyName : $scope.vm.companyName, |
| | | companyManager : $scope.vm.companyManager, |
| | | companyTel : $scope.vm.companyTel, |
| | | companyEmail :$scope.vm.companyEmail, |
| | | companyMemo : $scope.vm.companyMemo, |
| | | ispName : $scope.vm.ispName, |
| | | ispCode : $scope.vm.ispCode, |
| | | ispManager : $scope.vm.ispManager, |
| | |
| | | <div class="col-md-4"> |
| | | <div class="form-group"> |
| | | <h6 class="info_font" translate="common.detectingInfo">탐지정보</h6> |
| | | <div class=""> |
| | | <label class="issue-detail-label"><span translate="common.diffuserURL">유포자URL</span> </label> |
| | | <label class="issue-detail-label offset-2"><span translate="common.country">국가</span></label> |
| | | <div class=""> |
| | | <span>200.11.13.123</span> |
| | | <span class="country">US</span> |
| | | </div> |
| | | <!-- <span ng-if="vm.viewer.userVos.length < 1" translate="common.noAssignee">담당자가 없습니다.</span>--> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 사용자 정의 필드 --> |
| | | <div class="row"> |
| | | <div class="col-md-2" ng-repeat="issueCustomField in vm.viewer.issueCustomFields"> |
| | | <label class="issue-detail-label">{{::issueCustomField.customFieldVo.name}}</label> |
| | | |
| | | <div ng-switch on="issueCustomField.customFieldVo.customFieldType"> |
| | | <!-- 기본 입력 --> |
| | | <div ng-switch-when="INPUT"> |
| | | <!-- 읽기 모드 --> |
| | | <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span> |
| | | <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span> |
| | | </div> |
| | | |
| | | <!-- 단일 셀렉트 --> |
| | | <div ng-switch-when="SINGLE_SELECT"> |
| | | <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span> |
| | | <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span> |
| | | </div> |
| | | |
| | | <!-- 멀티 셀렉트 --> |
| | | <div ng-switch-when="MULTI_SELECT"> |
| | | <span class="issue-detail-word-break" |
| | | ng-repeat="useValue in issueCustomField.useValues">{{::useValue.value}}, </span> |
| | | <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- <div class=""> |
| | | <label class="issue-detail-label"><span>{{vm.viewer.issueCustomFieldValueVos[0].useValue}}</span> </label> |
| | | <div class=""> |
| | | <span>{{vm.viewer.issueCustomFieldValueVos[0].customFieldVo.name}}</span> |
| | | </div> |
| | | <span ng-if="vm.viewer.userVos.length < 1" translate="common.noAssignee">담당자가 없습니다.</span> |
| | | </div>--> |
| | | <hr> |
| | | <!-- <span class="tag">{{vm.viewer.projectVo.projectKey}}-{{vm.viewer.issueNumber}} / {{vm.viewer.projectVo.name}}</span>--> |
| | | <div class="row"> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- 사용자 정의 필드 --> |
| | | <!-- <div class="row">--> |
| | | <!-- <div class="col-md-4" ng-repeat="issueCustomField in vm.viewer.issueCustomFields">--> |
| | | <!-- <label class="issue-detail-label">{{::issueCustomField.customFieldVo.name}}</label>--> |
| | | |
| | | <!-- <div ng-switch on="issueCustomField.customFieldVo.customFieldType">--> |
| | | <!-- <!– 기본 입력 –>--> |
| | | <!-- <div ng-switch-when="INPUT" class="form-group">--> |
| | | <!-- <!– 읽기 모드 –>--> |
| | | <!-- <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span>--> |
| | | <!-- <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>--> |
| | | <!-- </div>--> |
| | | |
| | | <!-- <!– 단일 셀렉트 –>--> |
| | | <!-- <div ng-switch-when="SINGLE_SELECT" class="form-group">--> |
| | | <!-- <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span>--> |
| | | <!-- <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>--> |
| | | <!-- </div>--> |
| | | |
| | | <!-- <!– 멀티 셀렉트 –>--> |
| | | <!-- <div ng-switch-when="MULTI_SELECT" class="form-group">--> |
| | | <!-- <span class="issue-detail-word-break"--> |
| | | <!-- ng-repeat="useValue in issueCustomField.useValues">{{::useValue.value}}, </span>--> |
| | | <!-- <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | |
| | | <div class="row mt-30"> |
| | | <div class="col-md-10"> |