From 6587fd584cb672bbb8a4539cdc1c5714efb8b48f Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 화, 14 12월 2021 17:54:12 +0900 Subject: [PATCH] Merge branch 'master' of http://192.168.0.25:9001/r/owl-kisa --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 16 ++- src/main/webapp/views/api/apiMonitor.html | 45 +++++++--- src/main/webapp/scripts/config.js | 6 src/main/webapp/scripts/app/api/apiMonitor.controller.js | 27 ++++++ src/main/webapp/views/issue/issueListNormal.html | 92 ++++++++++++++++++++++- src/main/java/kr/wisestone/owl/util/CommonUtil.java | 15 +++ src/main/webapp/scripts/app/project/projectList.controller.js | 2 src/main/webapp/scripts/components/utils/issueSearchFieldKeyViewElement.directive.js | 2 8 files changed, 174 insertions(+), 31 deletions(-) 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 324bb9e..aff1d15 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -915,15 +915,19 @@ public void findApiIssue(ApiMonitorCondition apiMonitorCondition, Map<String, Object> resJsonData) { IssueTypeCondition issueTypeCondition = new IssueTypeCondition(); + issueTypeCondition.setIsApi(Issue.IS_API_YES); List<IssueTypeVo> issueTypes = this.issueTypeService.findIssueType(issueTypeCondition); - // 媛믪씠 �뾾�쓣 寃쎌슦 珥덇린媛� �엯�젰 - if (StringUtils.isEmpty(apiMonitorCondition.getSearchPeriod())) { - apiMonitorCondition.setSearchPeriod(DateUtil.LAST_SEVEN_DAYS); - } - // 寃��깋 �씪�옄瑜� 援ы븳�떎. - List<Date> searchDates = CommonUtil.findSearchPeriod(apiMonitorCondition.getSearchPeriod()); + List<Date> searchDates = Lists.newArrayList(); + if (apiMonitorCondition.getSearchPeriod().equals(DateUtil.CUSTOM_INPUT)) { + Date startDate = DateUtil.convertStrToDate(apiMonitorCondition.getSearchStartDate(), "yyyy-MM-dd"); + Date endDate = DateUtil.addDays(DateUtil.convertStrToDate(apiMonitorCondition.getSearchEndDate(), "yyyy-MM-dd"), 1); + + searchDates = CommonUtil.findSearchPeriod(startDate, endDate); + } else { + searchDates = CommonUtil.findSearchPeriod(apiMonitorCondition.getSearchPeriod()); + } // �궇吏쒓� 寃��깋�릺吏� �븡�븯�쑝硫� �삤瑜� if (searchDates.size() < 1) { diff --git a/src/main/java/kr/wisestone/owl/util/CommonUtil.java b/src/main/java/kr/wisestone/owl/util/CommonUtil.java index 5659bfd..afcb056 100644 --- a/src/main/java/kr/wisestone/owl/util/CommonUtil.java +++ b/src/main/java/kr/wisestone/owl/util/CommonUtil.java @@ -40,6 +40,7 @@ import java.security.MessageDigest; import java.security.spec.KeySpec; import java.text.DecimalFormat; +import java.text.SimpleDateFormat; import java.util.*; public class CommonUtil { @@ -761,6 +762,20 @@ return stringBuilder.toString(); } + public static List<Date> findSearchPeriod(Date startDate, Date endDate) { + Calendar cal = Calendar.getInstance(); + cal.setTime(endDate); + List<Date> days = Lists.newArrayList(); + + // �씠踰덈떖 �궇吏� 由ъ뒪�듃 媛��졇�삤湲� + while (cal.getTime().after(startDate)){ + days.add(cal.getTime()); + cal.add(Calendar.DATE, -1); + } + + return days; + } + // 寃��깋 �씪�옄瑜� 援ы븳�떎. public static List<Date> findSearchPeriod(String searchPeriod) { List<Date> searchDates = Lists.newArrayList(); diff --git a/src/main/webapp/scripts/app/api/apiMonitor.controller.js b/src/main/webapp/scripts/app/api/apiMonitor.controller.js index abfbe73..5a52bb8 100644 --- a/src/main/webapp/scripts/app/api/apiMonitor.controller.js +++ b/src/main/webapp/scripts/app/api/apiMonitor.controller.js @@ -17,7 +17,8 @@ $scope.vm = { search : { - searchPeriod : "LAST_SEVEN_DAYS" + searchPeriod : "LAST_SEVEN_DAYS", + startEndDateRange : "" // �씠�뒋 湲곕줉 議고쉶 �궇吏� }, apiMonitorVos : [], issueTypeVos : [], @@ -35,8 +36,24 @@ } }; + // 吏곸젒 �엯�젰�뿉�꽌 �궇吏� �꽑�깮�떆 �씠�뒋 湲곕줉 �젙蹂� 議고쉶 + $scope.$watch("vm.search.startEndDateRange", function (newValue) { + if ($rootScope.isDefined(newValue)) { + $scope.fn.drawChart(); + } + }); + + // �궗�슜�옄 �닔 + function changeSearchPeriod() { - drawChart(); + switch ($scope.vm.search.searchPeriod) { + case "CUSTOM_INPUT" : + $scope.vm.search.startEndDateRange = ""; + break; + default : + $scope.vm.search.startEndDateRange = ""; + $scope.fn.drawChart(); + } } $scope.fn.drawChart(); @@ -49,6 +66,12 @@ searchEndDate : "" }; + if ($rootScope.isDefined($scope.vm.search.startEndDateRange)) { + var startEndDateRange = $scope.vm.search.startEndDateRange.split("~"); + content.searchStartDate = startEndDateRange[0].trim(); + content.searchEndDate = startEndDateRange[1].trim(); + } + Api.findHistory($resourceProvider.getContent(content, $resourceProvider.getPageContent(0, 0))).then(function (result) { diff --git a/src/main/webapp/scripts/app/project/projectList.controller.js b/src/main/webapp/scripts/app/project/projectList.controller.js index 874af29..8735a34 100644 --- a/src/main/webapp/scripts/app/project/projectList.controller.js +++ b/src/main/webapp/scripts/app/project/projectList.controller.js @@ -362,7 +362,7 @@ function changeLastProject(projectId) { $rootScope.changeLastProject(projectId) - $state.go("issues.list") + $state.go("dashboards.dashboard") } $scope.fn.makeTableConfigs(); diff --git a/src/main/webapp/scripts/components/utils/issueSearchFieldKeyViewElement.directive.js b/src/main/webapp/scripts/components/utils/issueSearchFieldKeyViewElement.directive.js index 92ee0a0..2c16648 100644 --- a/src/main/webapp/scripts/components/utils/issueSearchFieldKeyViewElement.directive.js +++ b/src/main/webapp/scripts/components/utils/issueSearchFieldKeyViewElement.directive.js @@ -52,7 +52,7 @@ } } - makeTag += "<span ng-click='fn.remove(" + key.fieldKey + ")'>횞</span>"; + // makeTag += "<span ng-click='fn.remove(" + key.fieldKey + ")'>횞</span>"; makeTag += "</p>"; }); diff --git a/src/main/webapp/scripts/config.js b/src/main/webapp/scripts/config.js index 6f6abd8..e2ad463 100644 --- a/src/main/webapp/scripts/config.js +++ b/src/main/webapp/scripts/config.js @@ -351,12 +351,12 @@ $rootScope.$broadcast("changedLastProject", {id: el.id}); $state.go("issues.list"); } - /*if (reload) { + if (reload) { $state.go('dashboards.dashboard'); - }*/ + } } }); - //$state.go($state.current, {}, {reload: reload}); + // $state.go($state.current, {}, {reload: reload}); } }); } diff --git a/src/main/webapp/views/api/apiMonitor.html b/src/main/webapp/views/api/apiMonitor.html index 3db8e70..8dca8b6 100644 --- a/src/main/webapp/views/api/apiMonitor.html +++ b/src/main/webapp/views/api/apiMonitor.html @@ -12,23 +12,40 @@ </h6> <div class="element-box"> - <select class="form-control form-control-sm rounded width-30 d-inline-block mb-10" ng-model="vm.search.searchPeriod" ng-change="fn.changeSearchPeriod()"> - <option value="LAST_SEVEN_DAYS" translate="common.last7Days">理쒓렐 7�씪</option> - <option value="THIS_WEEK" translate="common.thisWeek">�씠踰� 二�</option> - <option value="LAST_WEEK" translate="common.lastWeek">吏��궃 二�</option> - <option value="THIS_MONTH" translate="common.thisMonth">�씠踰� �떖</option> - <option value="LAST_MONTH" translate="common.lastMonth">吏��궃 �떖(1�씪~留먯씪)</option> - <option value="LAST_THIRTY_DAYS" translate="common.last30Days">理쒓렐 30�씪</option> - <option value="CUSTOM_INPUT" translate="common.directInput">吏곸젒�엯�젰</option> - </select> + <div> + <select class="form-control form-control-sm rounded width-30 d-inline-block mb-10" ng-model="vm.search.searchPeriod" ng-change="fn.changeSearchPeriod()"> + <option value="LAST_SEVEN_DAYS" translate="common.last7Days">理쒓렐 7�씪</option> + <option value="THIS_WEEK" translate="common.thisWeek">�씠踰� 二�</option> + <option value="LAST_WEEK" translate="common.lastWeek">吏��궃 二�</option> + <option value="THIS_MONTH" translate="common.thisMonth">�씠踰� �떖</option> + <option value="LAST_MONTH" translate="common.lastMonth">吏��궃 �떖(1�씪~留먯씪)</option> + <option value="LAST_THIRTY_DAYS" translate="common.last30Days">理쒓렐 30�씪</option> + <option value="CUSTOM_INPUT" translate="common.directInput">吏곸젒�엯�젰</option> + </select> + <input type="text" + ng-show="vm.search.searchPeriod == 'CUSTOM_INPUT'" + class="form-control form-control-sm rounded col-md-4 d-inline-block input-readonly" + ng-model="vm.search.startEndDateRange" + modal-form-auto-scroll + parent-el="'#createdWidget'" + range-type="date" + onfocus="this.blur()" + style="height: 32px !important; padding: 0.25rem 0.5rem; font-size: 0.8rem; line-height: 1.5;" + date-range-picker> + <div class="row"> + <div class="col-xs-12"> + <div id="createdWidget" class="bootstrap-datepicker"></div> + </div> + </div> - <div class="no-cont1" - ng-if="vm.chartData.columns.length < 1" - translate="common.noRecord"> - 湲곕줉�씠 �뾾�뒿�땲�떎. + <div class="no-cont1" + ng-if="vm.chartData.columns.length < 1" + translate="common.noRecord"> + 湲곕줉�씠 �뾾�뒿�땲�떎. + </div> + </div> - <div ng-if="vm.chartData.columns.length > 0"> <google-chart columns="vm.chartData.columns" diff --git a/src/main/webapp/views/issue/issueListNormal.html b/src/main/webapp/views/issue/issueListNormal.html index 0b97f35..a903afe 100644 --- a/src/main/webapp/views/issue/issueListNormal.html +++ b/src/main/webapp/views/issue/issueListNormal.html @@ -5,7 +5,7 @@ <div class="element-box"> <div class="row" > <div class="col-sm-12"> - <div class="searchdiv"> + <div class="searchdiv" ng-if="!$root.isMainSearch"> <form name="issueSearchForm" role="form" ng-enter="fn.getPageList(0)"> <div class="row"> <div class="col-sm-6"> @@ -272,9 +272,93 @@ <div ng-switch on="customField.customFieldType"> <div ng-switch-when="INPUT"> - <input type="text" class="form-control input-sm" + <input type="text" + class="form-control input-sm" ng-model="customField.useValues" maxlength="100"> + </div> + <div ng-switch-when="NUMBER"> + <input type="text" + class="form-control input-sm" + name="numberType" + ng-model="customField.useValues" + kr-input + placeholder="�닽�옄留� �엯�젰 媛��뒫�빀�땲�떎." + ng-pattern="/^[0-9]*$/" + autocomplete="off"> + <div ng-show="issueSearchForm.numberType.$error.pattern" class="help-block form-text text-danger" + translate="common.invalidNumberFormat">�닽�옄留� �엯�젰 媛��뒫�빀�땲�떎. + </div> + </div> + + <!-- todo : �궇吏� 寃��깋 臾몄젣 --> + <div ng-switch-when="DATETIME"> + <input type="text" class="form-control input-sm" + name="dateTime" + ng-model="customField.useValues" + maxlength="100" + range-type="singleDate" + date-range-picker> + <div class="row"> + <div class="col-xs-12"> + <div id="createdWidget" class="bootstrap-datepicker "></div> + </div> + </div> + </div> + + <div ng-switch-when="IP_ADDRESS"> + <input type="text" + class="form-control input-sm" + name="ipAdress" + ng-model="customField.useValues" + kr-input + ng-pattern="/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/" + placeholder="IP 二쇱냼 �삎�떇留� �엯�젰 媛��뒫�빀�땲�떎." + autocomplete="off"> + <div ng-show="issueSearchForm.ipAdress.$error.pattern" class="help-block form-text text-danger" + translate="common.invalidipAdressFormat">IP二쇱냼 �삎�떇�씠 留욎� �븡�뒿�땲�떎. + </div> + </div> + + <div ng-switch-when="EMAIL"> + <input type="email" + class="form-control input-sm" + name="email" + ng-model="customField.useValues" + kr-input + ng-pattern="/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/" + placeholder="�씠硫붿씪 �삎�떇留� �엯�젰 媛��뒫�빀�땲�떎." + autocomplete="off"> + <div ng-show="issueSearchForm.email.$error.pattern" class="help-block form-text text-danger" + translate="common.invalidEmailFormat">�씠硫붿씪 �삎�떇�씠 留욎� �븡�뒿�땲�떎. + </div> + </div> + + <div ng-switch-when="SITE"> + <input type="text" + class="form-control input-sm" + name="site" + ng-model="customField.useValues" + kr-input + ng-pattern="/((http|https):\/\/)?(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/" + placeholder="�솃�럹�씠吏� 二쇱냼 �삎�떇留� �엯�젰 媛��뒫�빀�땲�떎." + autocomplete="off"> + <div ng-show="issueSearchForm.site.$error.pattern" class="help-block form-text text-danger" + translate="common.invalidSiteFormat">�솃�럹�씠吏� 二쇱냼 �삎�떇�씠 留욎� �븡�뒿�땲�떎.(http://濡� �떆�옉�븯�뀛�빞�빀�땲�떎) + </div> + </div> + <div ng-switch-when="TEL"> + <input type="text" + class="form-control input-sm" + name="tel" + ng-model="customField.useValues" + kr-input + ng-pattern="/^\d{2,3}-\d{3,4}-\d{4}$/" + placeholder="�뿰�씫泥� �삎�떇留� �엯�젰 媛��뒫�빀�땲�떎." + autocomplete="off"> + <div ng-show="issueSearchForm.tel.$error.pattern" class="help-block form-text text-danger" + translate="common.invalidTelFormat">�쟾�솕踰덊샇 �삎�떇�씠 留욎� �븡�뒿�땲�떎. + </div> </div> <div ng-switch-default> @@ -336,8 +420,8 @@ <!-- �슦痢� --> <div class="col-5" > - <span class="issue-detail-label" ng-if="vm.listMode === 0" style="position: relative; left: 2.8rem; bottom: 5px"><span style="color: #0a7cf8">�뾾</span> �븯�쐞 �씠�뒋 �닲湲곌린</span> - <label class='switch' ng-if="vm.listMode === 0" style="left: 3.3rem"><input type='checkbox' ng-model='vm.hideDownIssue' ng-click='fn.getPageList(0)'> + <span class="issue-detail-label" style="position: relative; left: 2.8rem; bottom: 5px"><span style="color: #0a7cf8">�뾾</span> �븯�쐞 �씠�뒋 �닲湲곌린</span> + <label class='switch' style="left: 3.3rem"><input type='checkbox' ng-model='vm.hideDownIssue' ng-click='fn.getPageList(0)'> <span class='slider round'></span> </label> <span class="issue-detail-label" style="position: relative; left: 5.8rem; bottom: 5px"><span style="color: #0a7cf8">�뾾</span> �셿猷� �씠�뒋 �닲湲곌린</span> -- Gitblit v1.8.0