OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2022-02-18 612b5a21417f3c8dcaed84c1c0691dc883088f61
이슈 컬럼 정렬 진행
6개 파일 변경됨
56 ■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java 8 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/IssueCustomFieldValueVo.java 12 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/issue-template.xml 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/custom_components/js-table/js-table.html 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js 27 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueList.controller.js 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -2848,8 +2848,16 @@
        for (IssueVo issueVo : issueVos) {
            for (Map<String, Object> issueCustomFieldValue : issueCustomFieldValues) {
                int count = 0;
                Map<String, Object> useValues = new HashMap<>();
                if (issueVo.getId().equals(MapUtil.getLong(issueCustomFieldValue, "issueId"))) {
                    IssueCustomFieldValueVo issueCustomFieldValueVo = new IssueCustomFieldValueVo();
                    useValues.put("useValue"+count, MapUtil.getString(issueCustomFieldValue, "useValue"));
                    useValues.put("customFieldId", MapUtil.getLong(issueCustomFieldValue, "customFieldId"));
                    issueCustomFieldValueVo.setUseValues(useValues);
                    issueCustomFieldValueVo.setUseValue(MapUtil.getString(issueCustomFieldValue, "useValue"));
                    CustomFieldVo customFieldVo = new CustomFieldVo();
src/main/java/kr/wisestone/owl/vo/IssueCustomFieldValueVo.java
@@ -1,5 +1,7 @@
package kr.wisestone.owl.vo;
import java.util.Map;
/**
 * Created by wisestone on 2018-06-01.
 */
@@ -7,6 +9,8 @@
    private Long id;
    private String useValue;
    private CustomFieldVo customFieldVo;
    private Map<String, Object> useValues;
    public IssueCustomFieldValueVo(){}
@@ -33,4 +37,12 @@
    public void setCustomFieldVo(CustomFieldVo customFieldVo) {
        this.customFieldVo = customFieldVo;
    }
    public Map<String, Object> getUseValues() {
        return useValues;
    }
    public void setUseValues(Map<String, Object> useValues) {
        this.useValues = useValues;
    }
}
src/main/resources/mybatis/query-template/issue-template.xml
@@ -36,6 +36,7 @@
        ic.name AS companyName,
        ii.name AS ispName,
        ih.name AS hostingName,
        d.department_name AS departmentName,
        GROUP_CONCAT(issue_custom.use_value) AS useValue,
        IFNULL(temp_attached_file.attachedFileCount, 0) as attachedFileCount,
        IFNULL(temp_issue_comment.issueCommentCount, 0) as issueCommentCount
src/main/webapp/custom_components/js-table/js-table.html
@@ -4,7 +4,7 @@
    <tr ng-if="hideHeader != true">
        <th bindonce ng-repeat="tableConfig in tableConfigs"
            bo-class="[tableConfig.hAlign, tableConfig.hWidth, tableConfig.dVisible]"
            ng-click="$root.$tableProvider.setOrderByColumn(tableConfig.dName)"
            ng-click="!tableConfig.dName.contains('useValue') ? $root.$tableProvider.setOrderByColumn(tableConfig.dName) : $root.$tableProvider.setOrderByColumn(tableConfig.dName)"
            bo-style="{ 'cursor' : tableConfig.dName != '' ? 'pointer' : '' }"
            rowspan="{{tableConfig.rowSpan}}"
            colspan="{{tableConfig.colSpan}}"
src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js
@@ -439,6 +439,7 @@
                                            break;
                                        // 이슈 제목
                                        case "ISSUE_TITLE" :
                                            scope.data.title = scope.data.title.replace(/</gi, '&lt;');
                                            makeTag += '<div class="tags text-left">';
                                            makeTag += '<i class="fa fa-star move-star" ng-show="$root.currentDetailIssueId == data.id">&nbsp;</i>';
                                            makeTag += '<span class="number-tag">' + scope.data.projectKey + ' - ' + scope.data.issueNumber + '</span>';
@@ -449,7 +450,7 @@
                                                makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"#EF8D9A" + "\"," + "\"border-color\"" + " : \"#EF8D9A" + "\", \"color\": \"#FFFFFF\" }'>" + "<span>API</span>" + "</span>";
                                            }
                                            makeTag += '</div>';
                                            makeTag += '<div class="titlename cursor text-left" ng-click="event.changeDetailView(data.id)">' + scope.data.title.replace(/</gi, '&lt;') + '</div>';
                                            makeTag += '<div class="titlename cursor text-left" ng-click="event.changeDetailView(data.id)" translate="' + scope.data.title + '">' + '</div>';
                                            makeTag += '<div class="extra-infodiv text-left">';
                                            makeTag += '<span class="extra-info">';
                                            makeTag += '<i class="os-icon os-icon-mail-12"></i>';
@@ -482,7 +483,8 @@
                                            makeTag += "<ul ng-click=\"event.changeDetailView(data.id)\"  class='ul-not-comma cursor'>";
                                                makeTag += "<div style='color: #000000'>";
                                                angular.forEach(scope.data.departmentVos, function (departments) {
                                                    makeTag += "<li>" + departments.departmentName + "</li>";
                                                    scope.data.departmentName = departments.departmentName;
                                                    makeTag += "<li translate='" + scope.data.departmentName + "'>" + "</li>";
                                                });
                                                makeTag += "</div>";
                                            makeTag += "</ul>";
@@ -712,17 +714,34 @@
                                        case "ISSUE_CUSTOM_FIELD_VALUE_VIEW" :
                                            var values = [];
                                            let valueMap = new Map();
                                            //scope.data.useValue = "";
                                            for (var count in scope.data.issueCustomFieldValueVos) {
                                                var issueCustomFieldValueVo = scope.data.issueCustomFieldValueVos[count];
                                                valueMap.set("useValue"+count, issueCustomFieldValueVo.useValue);
                                                $window[scope.data.useValue+count] = valueMap.get("useValue"+count);
                                                //window["scope.data.useValue"+count] = scope.data.useValue+count;
                                                //console.log(scope.data.useValue+count);
                                                /*window[scope.data.useValue+count] = valueMap.get("useValue"+count);
                                                console.log("window" + window[scope.data.useValue+count]);
                                                console.log("map" + valueMap.get("useValue"+count));*/
                                                scope.data.useValue = valueMap.get("useValue"+count);
                                                makeTag += '<span ng-click="event.changeDetailView(data.id)" class="table-word-break-all cursor">' + scope.data.useValue+count + '<span>';
                                                //  테이블 설정에서 dName 부분에 사용자 정의 필드 id 를 넣고 해당 값을 추출한다.
                                                if (tableConfig.columnHint.id === issueCustomFieldValueVo.customFieldVo.id) {
                                                    values.push(issueCustomFieldValueVo.useValue);
                                                }
                                            }
                                            angular.forEach(values, function (value) {
                                                makeTag += '<span ng-click="event.changeDetailView(data.id)" class="table-word-break-all cursor">' + value + '<span><br>';
                                            angular.forEach(values, function (useValue) {
                                                scope.data.useValue = useValue;
                                                makeTag += '<span ng-click="event.changeDetailView(data.id)" class="table-word-break-all cursor">' + scope.data.useValue + '<span>';
                                            });
                                            break;
src/main/webapp/scripts/app/issue/issueList.controller.js
@@ -446,20 +446,22 @@
                    //  사용자 정의 필드 컬럼
                    if (issueTableConfig.key.indexOf("CUSTOM_FIELD_") !== -1) {
                        let cnt = -1;
                        //  만약 이슈 테이블 컬럼명이 표시되지 않으면 이쪽이 문제
                        for (var count in $scope.vm.customFields) {
                            var customField = $scope.vm.customFields[count];
                            if (customField.id === Number(issueTableConfig.key.substring(13))) {
                                cnt ++;
                                $scope.vm.tableConfigs.push($tableProvider.config()
                                    .setHName(customField.name)
                                    .setDType("renderer")
                                    .setDName("useValue" + count.toString()) /* todo 체크*/
                                    .setDName("useValue"+cnt) /* todo 체크*/
                                    .setHWidth("bold " + issueTableConfig.width)
                                    .setDAlign("text-center")
                                    .setColumnHint(customField)
                                    .setDRenderer("ISSUE_CUSTOM_FIELD_VALUE_VIEW"));
                                break;
                            }
                        }
                    }