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