From da08346c769258b6102cb4fe5348dc164ea2f3f7 Mon Sep 17 00:00:00 2001 From: jhjang <jhjang@maprex.co.kr> Date: 일, 12 12월 2021 17:40:31 +0900 Subject: [PATCH] - 연관 이슈 추가 안되는 오류 수정 - 연관 이슈 추가 후 목록 안뜨는 문제 수정 - 이슈 목록 트리 구조 보기 기능 추가 --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 51 ++++-- src/main/webapp/custom_components/js-tree/treeColumnGenerator.directive.js | 85 ++++++--- src/main/webapp/custom_components/js-tree/js-tree.html | 34 ++-- src/main/webapp/views/issue/issueListNormal.html | 4 src/main/webapp/scripts/app/issue/issueDetail.controller.js | 5 src/main/resources/migration/V1_14__Alter_Table.sql | 16 ++ src/main/webapp/assets/styles/main.css | 13 + src/main/resources/migration/V1_13__Alter_Table.sql | 21 -- src/main/webapp/scripts/app/issue/issueAddRelation.controller.js | 6 src/main/java/kr/wisestone/owl/service/IssueService.java | 2 src/main/webapp/scripts/app/issue/issueList.controller.js | 135 ++++++---------- src/main/webapp/custom_components/js-tree/tree.provider.js | 75 --------- src/main/webapp/views/common/header.html | 21 ++ 13 files changed, 216 insertions(+), 252 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/service/IssueService.java b/src/main/java/kr/wisestone/owl/service/IssueService.java index 3e033b8..d3ae7fb 100644 --- a/src/main/java/kr/wisestone/owl/service/IssueService.java +++ b/src/main/java/kr/wisestone/owl/service/IssueService.java @@ -100,5 +100,5 @@ void findApiIssue(ApiMonitorCondition apiMonitorCondition, Map<String, Object> resJsonData); - void setCountDownIssues(List<Map<String, Object>> results, List<IssueVo> issueVos); + void setCountDownIssues(List<IssueVo> issueVos); } 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 142f491..7f68b4e 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -1,7 +1,6 @@ package kr.wisestone.owl.service.impl; import com.google.common.collect.Lists; -import com.sun.org.apache.bcel.internal.generic.NEW; import kr.wisestone.owl.common.ExcelConditionCheck; import kr.wisestone.owl.common.IssueCustomFieldValueFormComparator; import kr.wisestone.owl.config.CommonConfiguration; @@ -781,11 +780,11 @@ // Map �뿉 �엳�뒗 �뜲�씠�꽣瑜� IssueVo �뜲�씠�꽣濡� 蹂��솚�븳�떎. this.setMapToIssueVo(results, issueVos, issueCondition, user); -// if (issueCondition.getTree()) { - this.setDownIssues(issueVos); + if (issueCondition.getTree()) { + this.setDownIssues(user, issueVos); this.setRelationIssues(issueVos); -// } - this.setCountDownIssues(results, issueVos); + } + this.setCountDownIssues(issueVos); this.SetWorkflowDepartment(issueVos); //�썙�겕�뵆濡쒖슦�뿉 �꽕�젙�븳 �떞�떦遺��꽌 媛��졇�삤湲� @@ -799,13 +798,35 @@ } - // �븯�쐞 �씠�뒋 �꽭�똿 - private void setDownIssues(List<IssueVo> issueVos) { + // �븯�쐞 �씠�뒋 �꽭�똿(�옱洹�) + private void setDownIssues(User user, List<IssueVo> issueVos) { for(IssueVo issueVo : issueVos) { List<Issue> downIssues = this.issueRepository.findByParentIssueId(issueVo.getId()); + List<IssueVo> downIssueVos = Lists.newArrayList(); + IssueCondition issueCondition = new IssueCondition(); + issueCondition.addIssueIds(String.valueOf(issueVo.getId())); + for(Issue downIssue : downIssues){ - issueVo.addIssueDownVo(ConvertUtil.copyProperties(downIssue, IssueVo.class)); + IssueVo addIssueVo = ConvertUtil.copyProperties(downIssue, IssueVo.class); + addIssueVo.setIssueTypeId(downIssue.getIssueType().getId()); + downIssueVos.add(addIssueVo); + } + issueVo.setIssueDownVos(downIssueVos); + if (downIssueVos.size() > 0) { + this.setDownIssues(user, downIssueVos); + } + + // �씠�뒋 �궗�슜�옄 �젙蹂� 異붽� + //this.setIssueUserList(issueVos, issueCondition); + this.setIssueDepartmentList(issueVos, issueCondition, user); + // �벑濡앹옄 �젙蹂� 異붽� + this.setRegister(issueVos); // �떞�떦�옄 �젙蹂� �뀑�똿 + + // �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂� 異붽� + this.setIssueCustomFieldValue(issueVos, issueCondition); + + this.SetWorkflowDepartment(issueVos); //�썙�겕�뵆濡쒖슦�뿉 �꽕�젙�븳 �떞�떦遺��꽌 媛��졇�삤湲� } } @@ -821,9 +842,9 @@ @Override @Transactional(readOnly = true) - public void setCountDownIssues(List<Map<String, Object>> results, List<IssueVo> issueVos) { - for (Map<String, Object> result : results){ - List<Issue> downIssues = this.issueRepository.findByParentIssueId((Long) result.get("id")); //�븯�쐞�씠�뒋 媛��졇�삤湲� + public void setCountDownIssues(List<IssueVo> issueVos) { + for (IssueVo issueVo : issueVos){ + List<Issue> downIssues = this.issueRepository.findByParentIssueId(issueVo.getId()); //�븯�쐞�씠�뒋 媛��졇�삤湲� if(downIssues != null && downIssues.size() > 0){ //�긽�쐞�씠�뒋 媛�吏�怨� �엳�뒗 �븷�뱾�씠 �엳�쑝硫� int downIssueAllCount = 0;// �븯�쐞�씠�뒋 �쟾泥� 移댁슫�듃 int downIssueCount = 0;// �븯�쐞�씠�뒋 誘몄셿猷� 移댁슫�듃 @@ -842,12 +863,8 @@ downIssueCount ++; } - for(IssueVo issueVo : issueVos){ - if(issueVo.getId().equals(parentIssueVo.getId())){ - issueVo.setDownIssueCount(downIssueCount); - issueVo.setDownIssueAllCount(parentIssueVo.getDownIssueAllCount()); - } - } + issueVo.setDownIssueCount(downIssueCount); + issueVo.setDownIssueAllCount(parentIssueVo.getDownIssueAllCount()); } } } diff --git a/src/main/resources/migration/V1_13__Alter_Table.sql b/src/main/resources/migration/V1_13__Alter_Table.sql index cbe5106..36a476b 100644 --- a/src/main/resources/migration/V1_13__Alter_Table.sql +++ b/src/main/resources/migration/V1_13__Alter_Table.sql @@ -15,24 +15,3 @@ -- �뾽泥댁쓽 url 而щ읆 INDEX 異붽� ALTER TABLE `company_field` ADD INDEX `urlIndex`(`url`); - -ALTER TABLE `company_field` ADD COLUMN `isp_id` bigint(20) DEFAULT NULL; -ALTER TABLE `company_field` ADD COLUMN `hosting_id` bigint(20) DEFAULT NULL; - -ALTER TABLE `company_field` ADD INDEX `ispIdIndex`(`isp_id`); -ALTER TABLE `company_field` ADD INDEX `hostingIdIndex`(`hosting_id`); - -CREATE TABLE `email_template`( - `id` BIGINT(11) AUTO_INCREMENT, - `title` VARCHAR (255) NOT NULL, - `template` mediumtext NOT NULL, - `register_id` BIGINT(20) NOT NULL, - `register_date` TIMESTAMP NULL, - `modify_id` BIGINT(20) NOT NULL, - `modify_date` TIMESTAMP NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - - - - diff --git a/src/main/resources/migration/V1_14__Alter_Table.sql b/src/main/resources/migration/V1_14__Alter_Table.sql new file mode 100644 index 0000000..60751c8 --- /dev/null +++ b/src/main/resources/migration/V1_14__Alter_Table.sql @@ -0,0 +1,16 @@ +ALTER TABLE `company_field` ADD COLUMN `isp_id` bigint(20) DEFAULT NULL; +ALTER TABLE `company_field` ADD COLUMN `hosting_id` bigint(20) DEFAULT NULL; + +ALTER TABLE `company_field` ADD INDEX `ispIdIndex`(`isp_id`); +ALTER TABLE `company_field` ADD INDEX `hostingIdIndex`(`hosting_id`); + +CREATE TABLE `email_template`( + `id` BIGINT(11) AUTO_INCREMENT, + `title` VARCHAR (255) NOT NULL, + `template` mediumtext NOT NULL, + `register_id` BIGINT(20) NOT NULL, + `register_date` TIMESTAMP NULL, + `modify_id` BIGINT(20) NOT NULL, + `modify_date` TIMESTAMP NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/src/main/webapp/assets/styles/main.css b/src/main/webapp/assets/styles/main.css index 31220e4..85568ee 100644 --- a/src/main/webapp/assets/styles/main.css +++ b/src/main/webapp/assets/styles/main.css @@ -30493,4 +30493,15 @@ margin: 0 auto; } -/* 媛꾪듃李⑦듃 end */ +/* �씠�뒋 �듃由� */ +/** + * Framework starts from here ... + * ------------------------------ + */ + +.tree, +.tree ul { + list-style:none; +} + + diff --git a/src/main/webapp/custom_components/js-tree/js-tree.html b/src/main/webapp/custom_components/js-tree/js-tree.html index d3c2950..433040f 100644 --- a/src/main/webapp/custom_components/js-tree/js-tree.html +++ b/src/main/webapp/custom_components/js-tree/js-tree.html @@ -1,16 +1,18 @@ -<ul> - <li ng-repeat="row in fn.getResponseData()"> - <span>{{row.title}}</span> - <ul> - <li ng-repeat="downRow in row.issueDownVos"> - - - <span>{{downRow.title}}</span> - </li> - </ul> - </li> - - <li ng-if="fn.getResponseData().length == 0"> - <span translate="common.noData">�뜲�씠�꽣媛� �뾾�뒿�땲�떎.</span> - </li> -</ul> \ No newline at end of file +<div> + <ul class="ml-1 pl-1 tree"> + <li ng-repeat="row in fn.getResponseData()"> + <ul class=""> + <li> + <div class="input-group"> + <div tree-column-generator="row" class="d-block p-2 mt-2 bg-success text-white" > + </div> + <span class="badge badge-primary mt-3 ml-2 mb-1 cursor" ng-repeat="relIssue in row.issueRelationIssueVos" ng-click="event.changeDetailView(relIssue.id)">{{relIssue.title}}</span> + </div> + <ul class="" ng-if="row.issueDownVos != null && row.issueDownVos.length > 0" ng-repeat="issueDownVo in row.issueDownVos"> + <li><div tree-column-generator="issueDownVo" class="d-block p-2 bg-info text-white"></div></li> + </ul> + </li> + </ul> + </li> + </ul> +</div> \ No newline at end of file diff --git a/src/main/webapp/custom_components/js-tree/tree.provider.js b/src/main/webapp/custom_components/js-tree/tree.provider.js index 544308a..0e3afee 100644 --- a/src/main/webapp/custom_components/js-tree/tree.provider.js +++ b/src/main/webapp/custom_components/js-tree/tree.provider.js @@ -9,50 +9,23 @@ config : function () { var tableConfig = { hName : "", // �뿤�뜑 �씠由� - hWidth : "", // 移쇰읆 湲몄씠 hChecked : false, // 泥댄겕 諛뺤뒪 �꽑�깮 �뿬遺� - hAlign : "text-center", // �뿤�뜑 �젙�젹 湲곗� - hSort : true, // �젙�젹 媛��뒫 �뿬遺� dName : "", // �뜲�씠�꽣 �씠由� - dAlign : "text-left", // �뜲�씠�꽣 �젙�젹 湲곗� - dRenderer : "", // �젋�뜑�윭 �뿬遺� dVisible : "", // bootstrap 諛섏쓳�삎 而щ읆 �몴�떆 �뿬遺� dType : "none", // �깭洹� ���엯 dDateFormat : "", // �궇吏� �삎�떇 - rowSpan : 0, // rowspan �쓣 吏��썝�븳�떎. - colSpan : 0, // colspan �쓣 吏��썝�븳�떎. subHead : false, // 留뚯빟 rowspan, colspan �쓣 �궗�슜�븯寃� �릺硫� true 濡� �뀑�똿. columnHint : "", // 而щ읆 �젙蹂대�� 異붿텧�븯湲� �쐞�븳 �엺�듃 �젙蹂대�� 以��떎 - tableColumnGenerator �쓽 �궗�슜�옄 �젙�쓽 �븘�뱶 遺�遺꾩뿉�꽌 �궗�슜 setHName : function (hName) { this.hName = hName; return this; }, - setHWidth : function (hWidth) { - this.hWidth = hWidth; - return this; - }, setHChecked : function (hChecked) { this.hChecked = hChecked; return this; }, - setHAlign : function (hAlign) { - this.hAlign = hAlign; - return this; - }, - setHSort : function (hSort) { - this.hSort = hSort; - return this; - }, setDName : function (dName) { this.dName = dName; - return this; - }, - setDAlign : function (dAlign) { - this.dAlign = dAlign; - return this; - }, - setDRenderer : function (dRenderer) { - this.dRenderer = dRenderer; return this; }, setDVisible : function (dVisible) { @@ -67,14 +40,6 @@ this.dDateFormat = dDateFormat; return this; }, - setRowSpan : function (dRowSpan) { - this.rowSpan = dRowSpan; - return this; - }, - setColSpan : function (dColSpan) { - this.colSpan = dColSpan; - return this; - }, setSubHead : function (dSubHead) { this.subHead = dSubHead; return this; @@ -86,46 +51,6 @@ }; return tableConfig; - }, - toggleChecked : function (checkStatus, datas) { - // �쟾泥� �꽑�깮 泥댄겕 諛뺤뒪瑜� �겢由��뻽�쓣 寃쎌슦 - angular.forEach(datas, function (data) { - if (angular.isDefined(data.defaultYn)) { - if (!data.defaultYn) { - data.checked = checkStatus; - } - } - else { - data.checked = checkStatus; - } - }); - }, - radioChecked : function (target, datas) { - // �빐�떦 row 媛� �씪�뵒�삤 踰꾪듉�씪 寃쎌슦 - angular.forEach(datas, function (data) { - if (target.id == data.id) { - data.checked = true; - } - else { - data.checked = false; - } - }); - }, - rowChecked : function (tableConfig, target, datas) { - // 媛� row �쓽 泥댄겕諛뺤뒪/�씪�뵒�삤 踰꾪듉�쓣 �겢由��뻽�쓣 寃쎌슦 - if (tableConfig[0].dType == "checkbox") { - target.checked = !target.checked; - - for (var data in datas) { - if (!data.checked) { - this.hChecked = false; - break; - } - } - } - else if (tableConfig[0].dType == "radio") { - this.radioChecked(target, datas); - } }, orderByColumn : "", // table order By column name reverse : true, diff --git a/src/main/webapp/custom_components/js-tree/treeColumnGenerator.directive.js b/src/main/webapp/custom_components/js-tree/treeColumnGenerator.directive.js index c6854fe..9d9c9cc 100644 --- a/src/main/webapp/custom_components/js-tree/treeColumnGenerator.directive.js +++ b/src/main/webapp/custom_components/js-tree/treeColumnGenerator.directive.js @@ -11,51 +11,76 @@ return function (scope, element, attrs) { scope.data = scope[attrs["treeColumnGenerator"]]; + var myData = scope.data; var makeTag = ""; - var treeStartToken = "�뵒"; scope.tableConfigs.forEach(function (tableConfig, index) { + var txt = ""; + makeTag = '<span class="' + tableConfig.dVisible + '">'; - if (tableConfig.colSpan > 0) { - return; - } - - makeTag = '<li class="' + tableConfig.dAlign + ' ' + tableConfig.dVisible + '">'; - - if (tableConfig.dType === "checkbox") { - // 泥댄겕 諛뺤뒪�씪�븣 - if (scope.data.defaultYn) { - makeTag += '<input type="checkbox" ng-checked="data.checked == true ? true : false" disabled ng-click="$root.$tableProvider.rowChecked(tableConfigs, data, fn.getResponseData())">'; + var viewData = myData[tableConfig.dName]; + if (tableConfig.dType === "CUSTOM_FIELD") { + var issueCustomFieldValueVos = myData.issueCustomFieldValueVos; + if (issueCustomFieldValueVos != null) { + for (let i = 0; i < issueCustomFieldValueVos.length; i++) { + if (issueCustomFieldValueVos[i].customFieldVo.id === tableConfig.dName) { + if (index > 0) { makeTag += ","; } + txt += issueCustomFieldValueVos[i].useValue; + break; + } + } } - else { - makeTag += '<input type="checkbox" ng-checked="data.checked == true ? true : false" ng-click="$root.$tableProvider.rowChecked(tableConfigs, data, fn.getResponseData())">'; - } + makeTag += "<span class='cursor issue-tree-item' translate='" + txt + "'></span>"; - tableConfig.hChecked = false; - } - else if (tableConfig.dType === "radio") { - // �씪�뵒�삤 踰꾪듉�씪�븣 - makeTag += '<input type="radio" ng-checked="data.checked == true ? true : false" ng-click="$root.$tableProvider.rowChecked(tableConfigs, data, fn.getResponseData())">'; - } - else if (tableConfig.dType === "date") { - makeTag += $filter('date')(scope.data[tableConfig.dName], $tableProvider.getDateFormat(tableConfig.dDateFormat, scope.data[tableConfig.dName])); - } - else { - if (angular.isDefined(scope.data[tableConfig.dName]) && scope.data[tableConfig.dName] != null) { - makeTag += '<span>' + scope.data[tableConfig.dName] + '</span>'; + } else { + if (tableConfig.dName === "assigneeTeam") { + var departmentVos = myData.departmentVos; + if (departmentVos != null) { + if (index > 0) { makeTag += ","; } + for (let i = 0; i < departmentVos.length; i++) { + if (i > 0) { + txt += ","; + } + txt += departmentVos[i].departmentName; + } + } + makeTag += "<span class='cursor issue-tree-item' translate='" + txt + "'></span>"; + } else if (tableConfig.dName === "register") { + if (index > 0) { makeTag += ","; } + makeTag += "<span class='cursor issue-tree-item' translate='" + myData.registerVo.name + "'></span>"; } - else { - makeTag += '<span></span>'; + else if (tableConfig.dName === "period") { + if (index > 0) { makeTag += ","; } + if (!$rootScope.isDefined(myData.startDate) && !$rootScope.isDefined(myData.completeDate)) { + makeTag += "<span translate='common.noDate'>湲곌컙 �뾾�쓬</span>"; + } + else { + makeTag += '<span class="cursor" ng-click="event.changeDetailView(data.id)">' + myData.startDate + ' ~ ' + myData.completeDate + '</span>'; + } + + } + else if (tableConfig.dName === "countDownIssue") { + if (index > 0) { makeTag += ","; } + makeTag += makeTag += "<span class='cursor issue-tree-item' translate='(" + myData.downIssueCount + "/" + myData.downIssueAllCount + ")'></span>"; + } else { + viewData = viewData != null ? viewData : ""; + + if (viewData !== "") { + if (index > 0) { makeTag += ","; } + makeTag += "<span ng-click=\"event.changeDetailView(data.id)\" class='cursor issue-tree-item' translate='" + viewData + "'></span>"; + } else { + // makeTag += "<span>" + tableConfig.dName + " NOT FOUND</span> "; // �뵒踰꾧퉭�떆 �궗�슜 + makeTag += "<span></span> "; + } } } - makeTag += '</li>'; + makeTag += '</span>'; var linkFn = $compile(makeTag); var content = linkFn(scope); element.append(content); - }); } } diff --git a/src/main/webapp/scripts/app/issue/issueAddRelation.controller.js b/src/main/webapp/scripts/app/issue/issueAddRelation.controller.js index fd7d3cd..0109b26 100644 --- a/src/main/webapp/scripts/app/issue/issueAddRelation.controller.js +++ b/src/main/webapp/scripts/app/issue/issueAddRelation.controller.js @@ -656,7 +656,6 @@ id : parameter.id }); - $rootScope.$broadcast("getIssueList"); } else { SweetAlert.error($filter("translate")("issue.failedIssueModify"), result.data.message.message); // �씠�뒋 �닔�젙 �떎�뙣 @@ -688,7 +687,10 @@ $resourceProvider.getPageContent(0, 10))).then(function (result) { if (result.data.message.status === "success") { - $scope.fn.getIssueDetail(); + // �씠�뒋 �긽�꽭 �솕硫� �슂泥� + $rootScope.$broadcast("getIssueDetail", { + id : parameter.id + }); } else { SweetAlert.error($filter("translate")("issue.failedToIssueAddIssueRelation"), result.data.message.message); // "�뿰愿��씪媛� �깮�꽦 �떎�뙣" diff --git a/src/main/webapp/scripts/app/issue/issueDetail.controller.js b/src/main/webapp/scripts/app/issue/issueDetail.controller.js index 647750a..7e8ffa1 100644 --- a/src/main/webapp/scripts/app/issue/issueDetail.controller.js +++ b/src/main/webapp/scripts/app/issue/issueDetail.controller.js @@ -497,7 +497,10 @@ // �뿰愿� �씠�뒋 �뀒�씠釉� �꽕�젙 function setRelTableConfigs(issueTableConfigVo) { - if (issueTableConfigVo == null) makeRelTableConfigs(); return; + if (issueTableConfigVo == null) { + makeRelTableConfigs(); + return; + } var issueTableConfigs = issueTableConfigVo.issueTableConfigs; // �뿰愿� �뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 媛믪쓣 媛��졇���꽌 �쟻�슜�븳�떎. diff --git a/src/main/webapp/scripts/app/issue/issueList.controller.js b/src/main/webapp/scripts/app/issue/issueList.controller.js index 265a815..a680cc3 100644 --- a/src/main/webapp/scripts/app/issue/issueList.controller.js +++ b/src/main/webapp/scripts/app/issue/issueList.controller.js @@ -41,7 +41,8 @@ getIssueTableConfigs : getIssueTableConfigs, // �궗�슜�옄 �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 媛믪쓣 媛��졇���꽌 �쟻�슜�븳�떎. startExecute : startExecute, // 而⑦듃濡� 濡쒕뵫�떆 泥섏쓬�쑝濡� �떆�옉�릺�뒗 �븿�닔 getResponseData : getResponseData, // 而⑦듃濡� 濡쒕뵫�떆 泥섏쓬�쑝濡� �떆�옉�릺�뒗 �븿�닔 - onClickListMode : onClickListMode // 由ъ뒪�듃 紐⑤뱶 蹂�寃쎌떆 �떎�뻾�릺�뒗 �븿�닔 + onClickListMode : onClickListMode, // 由ъ뒪�듃 紐⑤뱶 蹂�寃쎌떆 �떎�뻾�릺�뒗 �븿�닔 + setDefaultTableConfig : setDefaultTableConfig // 湲곕낯 �뀒�씠釉� �꽕�젙 �꽭�똿 }; // 蹂��닔 @@ -87,6 +88,7 @@ registers : [], // �벑濡앹옄 customFields : [], // �궗�슜�옄 �젙�쓽 �븘�뱶 issueTableConfigs : [], // �씠�뒋 �뀒�씠釉� �꽕�젙 + issueTreeConfigs : [], // �씠�뒋 �뀒�씠釉� �꽕�젙 parentIssueId : "", hideIssue : false, listMode : 0, // 紐⑸줉 紐⑤뱶 0:湲곕낯 由ъ뒪�듃 1:�듃由ш뎄議� 由ъ뒪�듃 @@ -201,6 +203,7 @@ // �씠�뒋 �뀒�씠釉� �꽕�젙 function makeTableConfigs() { $scope.vm.tableConfigs = []; + $scope.vm.treeConfigs = []; $scope.vm.tableConfigs.push($tableProvider.config() .setDType("checkbox") @@ -244,81 +247,44 @@ // �듃由� 而щ읆�쓣 留뚮뱾�뼱以��떎. function setTreeColumn(issueTableConfig) { - // �씪諛� 而щ읆 switch(issueTableConfig.key) { case "ISSUE_TITLE" : // �씠�뒋 �젣紐� $scope.vm.treeConfigs.push($treeProvider.config() - .setHName("issue.issueTitle") - .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) - .setDAlign("text-center") - .setDRenderer("ISSUE_TITLE")); + .setDName("title")); break; case "PRIORITY" : // �슦�꽑�닚�쐞 $scope.vm.treeConfigs.push($treeProvider.config() - .setHName("common.priority") - .setDName("priorityName") - .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) - .setDAlign("text-center") - .setDRenderer("COMMON_PRIORITY")); + .setDName("priorityName")); break; case "SEVERITY" : // 以묒슂�룄 $scope.vm.treeConfigs.push($treeProvider.config() - .setHName("common.importance") - .setDName("severityName") - .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) - .setDAlign("text-center") - .setDRenderer("COMMON_SEVERITY")); + .setDName("severityName")); break; case "ISSUE_TYPE" : // �씠�뒋 ���엯 $scope.vm.treeConfigs.push($treeProvider.config() - .setHName("issue.issueType") - .setHWidth("bold " + issueTableConfig.width) - .setDAlign("text-center") .setDName("issueTypeName")); break; case "ASSIGNEE_TEAM" : // �떞�떦遺��꽌 $scope.vm.treeConfigs.push($treeProvider.config() - .setHName("common.assigneeTeam") - .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) - .setDAlign("text-center") - .setDRenderer("ISSUE_DEPARTMENT")); + .setDName("assigneeTeam")); break; case "REGISTER" : // �벑濡앹옄 $scope.vm.treeConfigs.push($treeProvider.config() - .setHName("common.register") - .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) - .setDAlign("text-center") - .setDRenderer("REGISTER")); + .setDName("register")); break; case "PERIOD" : // 湲곌컙 $scope.vm.treeConfigs.push($treeProvider.config() - .setHName("common.period") - .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) - .setDAlign("text-center") - .setDRenderer("ISSUE_DUE_DATE")); + .setDName("period")); break; case "MODIFY_DATE" : // 理쒓렐 蹂�寃쎌씪 $scope.vm.treeConfigs.push($treeProvider.config() - .setHName("common.lastChangeDate") - .setHWidth("bold " + issueTableConfig.width) - .setDAlign("text-center") .setDName("modifyDate")); break; case "COUNT_DOWN_ISSUE" : // �븯�쐞 �씠�뒋 媛쒖닔 $scope.vm.treeConfigs.push($treeProvider.config() - .setHName("common.countDownIssue") - .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) - .setDAlign("text-center") - .setDRenderer("DOWN_ISSUE_COUNT")); + .setDName("countDownIssue")); break; } @@ -330,12 +296,9 @@ if (customField.id === Number(issueTableConfig.key.substring(13))) { $scope.vm.treeConfigs.push($treeProvider.config() - .setHName(customField.name) - .setDType("renderer") - .setHWidth("bold " + issueTableConfig.width) - .setDAlign("text-center") - .setColumnHint(customField) - .setDRenderer("ISSUE_CUSTOM_FIELD_VALUE_VIEW")); + .setDType("CUSTOM_FIELD") + .setDName(customField.id) + .setColumnHint(customField)); break; } } @@ -599,6 +562,7 @@ // �씠�뒋 紐⑸줉�쓣 議고쉶�븳�떎. function getPageList(selectedPage, detail = false) { + $rootScope.spinner = true; // �봽濡쒓렇�옒�뒪 諛� if (selectedPage < 0) { selectedPage = 0; } @@ -666,6 +630,7 @@ else { SweetAlert.error($filter("translate")("issue.failedIssueLookup"), result.data.message.message); // �씠�뒋 議고쉶 �떎�뙣 } + $rootScope.spinner = false; // �봽濡쒓렇�옒�뒪 諛� }); } @@ -1178,6 +1143,41 @@ } } + function setDefaultTableConfig() { + // 理쒖큹 �뾽臾� 怨듦컙�뿉 �뱾�뼱�솕�쓣 寃쎌슦 + $scope.vm.issueTableConfigs = [{ + name : $filter("translate")("issue.issueTitle"), // �씠�뒋 �젣紐� + key : "ISSUE_TITLE", + width : "width-140-p", + position : 1, + display : true + }, { + name : $filter("translate")("common.priority"), // �슦�꽑�닚�쐞 + key : "PRIORITY", + width : "width-80-p", + position : 2, + display : true + }, { + name : $filter("translate")("common.importance"), // 以묒슂�룄 + key : "SEVERITY", + width : "width-80-p", + position : 3, + display : true + }, { + name : $filter("translate")("issue.issueType"), // �씠�뒋 ���엯 + key : "ISSUE_TYPE", + width : "width-140-p", + position : 4, + display : true + }, { + name : $filter("translate")("common.assigneeTeam"), // �떞�떦遺��꽌 + key : "ASSIGNEE_TEAM", + width : "width-140-p", + position : 5, + display : true + }]; + } + // 理쒖큹 �떎�뻾 function startExecute() { // �뙆�씪誘명꽣 �씫湲� @@ -1214,38 +1214,7 @@ }); } else { - // 理쒖큹 �뾽臾� 怨듦컙�뿉 �뱾�뼱�솕�쓣 寃쎌슦 - $scope.vm.issueTableConfigs = [{ - name : $filter("translate")("issue.issueTitle"), // �씠�뒋 �젣紐� - key : "ISSUE_TITLE", - width : "width-140-p", - position : 1, - display : true - }, { - name : $filter("translate")("common.priority"), // �슦�꽑�닚�쐞 - key : "PRIORITY", - width : "width-80-p", - position : 2, - display : true - }, { - name : $filter("translate")("common.importance"), // 以묒슂�룄 - key : "SEVERITY", - width : "width-80-p", - position : 3, - display : true - }, { - name : $filter("translate")("issue.issueType"), // �씠�뒋 ���엯 - key : "ISSUE_TYPE", - width : "width-140-p", - position : 4, - display : true - }, { - name : $filter("translate")("common.assigneeTeam"), // �떞�떦遺��꽌 - key : "ASSIGNEE_TEAM", - width : "width-140-p", - position : 5, - display : true - }]; + $scope.fn.setDefaultTableConfig(); } // �씠�뒋 �뀒�씠釉� �꽕�젙 diff --git a/src/main/webapp/views/common/header.html b/src/main/webapp/views/common/header.html index 9383080..adab7ca 100644 --- a/src/main/webapp/views/common/header.html +++ b/src/main/webapp/views/common/header.html @@ -1,7 +1,7 @@ <link href="/assets/font/dripicons/webfont.css" rel="stylesheet"> <div class="top-bar color-scheme-light" owl-profile-over> <div class="top-menu-controls row"> - <div class="top-left col-lg-8"> + <div class="top-left col-lg-7"> <h3> <span class="badge badge-primary vertical-middle">PROJECT</span> {{$root.workProject.name}} </h3> @@ -25,9 +25,24 @@ </select> </div> - <div class="top-right col-lg-4"> + <div class="top-right col-lg-5"> + <div class="input-group"> + <input class="form-control" + type="text" + tabindex="-1" + maxlength="300" + kr-input + owl-auto-focus + ng-model="vm.searchAll.keyWord" + placeholder="{{'issue.pleaseEnterIssueKeyWord' | translate}}"> + <div class="input-group-prepend ml-10"> + <button class="btn btn-navy" ng-click="fn.searchAll(0)"> <span translate="common.search">寃��깋</span></button> + </div> + </div> + + <!-- �쟾泥� �봽濡쒖젥�듃 �씪�븣 �씠�뒋 留뚮뱾湲� 踰꾪듉 �닲源� --> - <button class="btn btn-xlg btn-primary btn-rounded mr-10" ng-if="$root.workProject.id > -1" ng-click="fn.addIssue()" tabindex="-1"> + <button class="btn btn-xlg btn-primary btn-rounded mr-10 ml-3" ng-if="$root.workProject.id > -1" ng-click="fn.addIssue()" tabindex="-1"> <i class="os-icon os-icon-plus"></i> <span translate="issue.createIssue">�씠�뒋 留뚮뱾湲�</span> </button> diff --git a/src/main/webapp/views/issue/issueListNormal.html b/src/main/webapp/views/issue/issueListNormal.html index 2c18f42..e81993d 100644 --- a/src/main/webapp/views/issue/issueListNormal.html +++ b/src/main/webapp/views/issue/issueListNormal.html @@ -343,7 +343,7 @@ <form class="form-inline justify-content-sm-end pull-right" method="post" action="/issue/downloadExcel" name="issueListForm" > <!--span class="badge-tip" function-tool-tip data-placement="top" data-toggle="tooltip" data-original-title="�뿊�� �떎�슫濡쒕뱶, �씪愿� 蹂�寃� �벑 �떎�뼇�븳 湲곕뒫�쓣 �젣怨듯빀�땲�떎.">?</span--> <input type="hidden" name="conditions"> - <div class="btn-group"> + <div class="btn-group" ng-if="vm.listMode === 0"> <button aria-expanded="false" aria-haspopup="true" tabindex="-1" class="btn btn-secondary dropdown-toggle" @@ -370,7 +370,7 @@ event="tableEvent" detail-view="vm.detailView"></js-table> <js-tree ng-if="vm.listMode === 1" - data="vm.responseData.data" table-configs="vm.tableConfigs" + data="vm.responseData.data" table-configs="vm.treeConfigs" event="tableEvent" detail-view="vm.detailView"></js-tree> </div> <div class="controls-below-table text-center"> -- Gitblit v1.8.0