From 71a5ce92795fb1a4fbff5fceab8135ec98a691e5 Mon Sep 17 00:00:00 2001 From: 박지현 <jhpark@maprex.co.kr> Date: 월, 07 3월 2022 18:07:52 +0900 Subject: [PATCH] 이슈 목록 조회 방식 - 전체이슈 보기 / 상위 이슈만 보기 / 하위 이슈만 보기로 수정 --- src/main/webapp/views/issue/issueListNormal.html | 206 ++++++++++++++++++++++++++++++--------------------- 1 files changed, 121 insertions(+), 85 deletions(-) diff --git a/src/main/webapp/views/issue/issueListNormal.html b/src/main/webapp/views/issue/issueListNormal.html index fd0fa64..964d140 100644 --- a/src/main/webapp/views/issue/issueListNormal.html +++ b/src/main/webapp/views/issue/issueListNormal.html @@ -36,16 +36,22 @@ </p> <!-- �봽濡쒖젥�듃 --> - <issue-search-array-view-element lists="vm.projects" - type="'project'"></issue-search-array-view-element> +<!-- <issue-search-array-view-element lists="vm.projects"--> +<!-- type="'project'"></issue-search-array-view-element>--> <!-- �씠�뒋 ���엯 --> - <issue-search-field-key-view-element lists="vm.issueTypes" - keys="vm.search.issueTypeIds"></issue-search-field-key-view-element> +<!-- <issue-search-field-key-view-element lists="vm.issueTypes"--> +<!-- keys="vm.search.issueTypeIds"></issue-search-field-key-view-element>--> <!-- �씠�뒋 �긽�깭 --> <issue-search-field-key-view-element lists="vm.issueStatuses" keys="vm.search.issueStatusIds"></issue-search-field-key-view-element> + + <!-- �씠�뒋 踰덊샇 --> + <p ng-if="$root.isDefined(vm.search.issueNumber)"> + {{vm.search.issueNumber}} + <span ng-click="vm.search.issueNumber = ''">횞</span> + </p> <!-- �씠�뒋 �궡�슜 --> <p ng-if="$root.isDefined(vm.search.description)"> @@ -81,11 +87,21 @@ <span ng-click="vm.search.completeDateRange = ''">횞</span> </p> + <!-- 湲곌컙 --> + <p ng-if="$root.isDefined(vm.search.dateRange)"> + {{vm.search.dateRange}} + <span ng-click="vm.search.dateRange = ''">횞</span> + </p> + <!-- �벑濡앹씪 --> <p ng-if="$root.isDefined(vm.search.registerDateRange)"> {{vm.search.registerDateRange}} <span ng-click="vm.search.registerDateRange = ''">횞</span> </p> + + <!-- �떞�떦遺��꽌 --> + <issue-search-array-view-element lists="vm.departments" + type="'department'"></issue-search-array-view-element> <!-- �뀓�뒪�듃 �엯�젰 �븘�뱶 --> <issue-search-custom-field-view-element @@ -114,52 +130,16 @@ ng-model="vm.search.title"> </div> </div> - - <div class="col-lg-3"> - <div class="form-group"> - <label> <span translate="common.project">�봽濡쒖젥�듃</span></label> - <js-autocomplete-multi data-input-name="projects" - selected-model="vm.projects" - search="vm.projectName" - input-disabled="false" - translation-texts="{ empty : 'common.emptyProject', selectList : 'common.' }" - source="fn.getProjectList(vm.projectName, vm.projects, null, null, ['01', '02', '03'])" - extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '', type : '', maxlength : 100}"></js-autocomplete-multi> - </div> - </div> - - <div class="col-lg-3"> - <div class="form-group"> - <label> <span translate="issue.issueType">�씠�뒋 ���엯</span></label> - <ng-dropdown-multiselect class="multiSelect cursor" - data-input-name="issueStatuses" - selected-model="vm.search.issueTypeIds" - options="::vm.issueTypes"></ng-dropdown-multiselect> - </div> - </div> - - <div class="col-lg-3"> - <div class="form-group"> - <label> <span translate="issue.issueStatus">�씠�뒋 �긽�깭</span></label> - <ng-dropdown-multiselect class="multiSelect cursor" - data-input-name="issueStatuses" - selected-model="vm.search.issueStatusIds" - options="::vm.issueStatuses"></ng-dropdown-multiselect> - </div> - </div> - </div> - - <div class="row"> <div class="col-lg-3"> <div class="form-group"> <label> <span translate="issue.issueNumber">�씠�뒋 踰덊샇</span></label> <input type="text" - name="name" + name="issueNumber" class="form-control input-sm" autocomplete="off" kr-input maxlength="20" - ng-model="vm.search.combinationIssueNumber"> + ng-model="vm.search.issueNumber"> </div> </div> @@ -175,7 +155,41 @@ ng-model="vm.search.description"> </div> </div> +<!-- <div class="col-lg-3">--> +<!-- <div class="form-group">--> +<!-- <label> <span translate="common.project">�봽濡쒖젥�듃</span></label>--> +<!-- <js-autocomplete-multi data-input-name="projects"--> +<!-- selected-model="vm.projects"--> +<!-- search="vm.projectName"--> +<!-- input-disabled="false"--> +<!-- translation-texts="{ empty : 'common.emptyProject', selectList : 'common.' }"--> +<!-- source="fn.getProjectList(vm.projectName, vm.projects, null, null, ['01', '02', '03'])"--> +<!-- extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '', type : '', maxlength : 100}"></js-autocomplete-multi>--> +<!-- </div>--> +<!-- </div>--> +<!-- <div class="col-lg-3">--> +<!-- <div class="form-group">--> +<!-- <label> <span translate="issue.issueType">�씠�뒋 ���엯</span></label>--> +<!-- <ng-dropdown-multiselect class="multiSelect cursor"--> +<!-- data-input-name="issueStatuses"--> +<!-- selected-model="vm.search.issueTypeIds"--> +<!-- options="::vm.issueTypes"></ng-dropdown-multiselect>--> +<!-- </div>--> +<!-- </div>--> + + <div class="col-lg-3"> + <div class="form-group"> + <label> <span translate="issue.issueStatus">�씠�뒋 �긽�깭</span></label> + <ng-dropdown-multiselect class="multiSelect cursor" + data-input-name="issueStatuses" + selected-model="vm.search.issueStatusIds" + options="::vm.issueStatuses"></ng-dropdown-multiselect> + </div> + </div> + </div> + + <div class="row"> <div class="col-lg-3"> <div class="form-group"> <label> <span translate="common.priority">�슦�꽑 �닚�쐞</span></label> @@ -195,9 +209,7 @@ options="::vm.severities"></ng-dropdown-multiselect> </div> </div> - </div> - <div class="row"> <div class="col-lg-3"> <div class="form-group"> <label> <span translate="common.register">�벑濡앹옄</span></label> @@ -214,17 +226,22 @@ <div class="col-lg-3"> <div class="form-group"> - <label> <span translate="common.registrationDate">�벑濡앹씪</span></label> - <input type="text" - readonly - class="form-control input-sm input-readonly" - ng-model="vm.search.registerDateRange" - modal-form-auto-scroll - date-format="YY-MM-DD" - parent-el="'#createdWidget'" - date-range-picker> + <label> <span translate="common.assigneeTeam">�떞�떦遺��꽌</span></label> + <js-autocomplete-multi data-input-name="departments" + selected-model="vm.departments" + search="vm.departmentName" + input-disabled="false" + source="fn.getUserDepartmentList(vm.departmentName, vm.departments)" + translation-texts="{ count : 'common.userNum', empty : 'common.emptyProjectDepartment' }" + extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'department', maxlength : 100 }"> + </js-autocomplete-multi> </div> </div> + + </div> + + + <div class="row"> <div class="col-lg-3"> <div class="form-group"> @@ -255,17 +272,32 @@ <div class="col-lg-3"> <div class="form-group"> - <label> <span translate="common.assigneeTeam">�떞�떦遺��꽌</span></label> - <js-autocomplete-multi data-input-name="departments" - selected-model="vm.departments" - search="vm.departmentName" - input-disabled="false" - source="fn.getUserDepartmentList(vm.departmentName, vm.departments)" - translation-texts="{ count : 'common.userNum', empty : 'common.emptyProjectDepartment' }" - extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'department', maxlength : 100 }"> - </js-autocomplete-multi> + <label> <span translate="common.dateRange">湲곌컙</span></label> + <input type="text" + readonly + class="form-control input-sm input-readonly" + ng-model="vm.search.dateRange" + modal-form-auto-scroll + date-format="YY-MM-DD" + parent-el="'#createdWidget'" + date-range-picker> </div> </div> + + <div class="col-lg-3"> + <div class="form-group"> + <label> <span translate="common.registrationDate">�벑濡앹씪</span></label> + <input type="text" + readonly + class="form-control input-sm input-readonly" + ng-model="vm.search.registerDateRange" + modal-form-auto-scroll + date-format="YY-MM-DD" + parent-el="'#createdWidget'" + date-range-picker> + </div> + </div> + <div class="col-lg-3" ng-repeat="customField in vm.customFields"> <label>{{::customField.name}}</label> @@ -275,30 +307,31 @@ <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" + name="item_{{$index}}" 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" + <div ng-if="issueSearchForm['item_'+ $index].$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" + <input class="form-control input-sm input-readonly" + name="item_{{$index}}" ng-model="customField.useValues" - maxlength="100" - range-type="singleDate" - date-range-picker> + placeholder="{{'issue.clickToSelectDate' | translate}}" + modal-form-auto-scroll + range-type="multiDate" + date-range-picker + autocomplete="off"> <div class="row"> <div class="col-xs-12"> <div id="createdWidget" class="bootstrap-datepicker "></div> @@ -309,13 +342,13 @@ <div ng-switch-when="IP_ADDRESS"> <input type="text" class="form-control input-sm" - name="ipAdress" + name="item_{{$index}}" 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" + <div ng-if="issueSearchForm['item_'+ $index].$error.pattern" class="help-block form-text text-danger" translate="common.invalidipAdressFormat">IP二쇱냼 �삎�떇�씠 留욎� �븡�뒿�땲�떎. </div> </div> @@ -323,13 +356,13 @@ <div ng-switch-when="EMAIL"> <input type="email" class="form-control input-sm" - name="email" + name="item_{{$index}}" 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" + <div ng-if="issueSearchForm['item_'+ $index].$error.pattern" class="help-block form-text text-danger" translate="common.invalidEmailFormat">�씠硫붿씪 �삎�떇�씠 留욎� �븡�뒿�땲�떎. </div> </div> @@ -337,26 +370,26 @@ <div ng-switch-when="SITE"> <input type="text" class="form-control input-sm" - name="site" + name="item_{{$index}}" ng-model="customField.useValues" kr-input - ng-pattern="/((http|https):\/\/)?(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/" + ng-pattern="/(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/" placeholder="�솃�럹�씠吏� 二쇱냼 �삎�떇留� �엯�젰 媛��뒫�빀�땲�떎." autocomplete="off"> - <div ng-show="issueSearchForm.site.$error.pattern" class="help-block form-text text-danger" + <div ng-if="issueSearchForm['item_'+ $index].$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" + name="item_{{$index}}" 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" + <div ng-if="issueSearchForm['item_'+ $index].$error.pattern" class="help-block form-text text-danger" translate="common.invalidTelFormat">�쟾�솕踰덊샇 �삎�떇�씠 留욎� �븡�뒿�땲�떎. </div> </div> @@ -420,14 +453,17 @@ <!-- �슦痢� --> <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='slider round'></span> - </label> - <span class="issue-detail-label" style="position: relative; left: 5.8rem; bottom: 5px"><span style="color: #0a7cf8">�뾾</span> �셿猷� �씠�뒋 �닲湲곌린</span> + <span class="issue-detail-label" style="position: relative; left: 5.8rem; bottom: 7px"><span style="color: #0a7cf8">�뾾</span> �셿猷� �씠�뒋 �닲湲곌린</span> <label class='switch' style="left: 6.3rem"><input type='checkbox' ng-model='vm.hideCompleteIssue' ng-click='fn.getPageList(0)'> <span class='slider round'></span> </label> + <label style="position: relative; left: 8rem; bottom: 9px"> + <select class="form-control form-control-sm" ng-if="vm.listMode === 0" ng-model="vm.hideDownIssue" ng-change="fn.getPageList(0)" ng-init="0" style="width:160px"> + <option value="0">�쟾泥� �씠�뒋 蹂닿린</option> + <option value="1">�긽�쐞 �씠�뒋留� 蹂닿린</option> + <option value="2">�븯�쐞 �씠�뒋留� 蹂닿린</option> + </select> + </label> <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"> -- Gitblit v1.8.0