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 | 729 +++++++++++++++++++++++++++++++++---------------------- 1 files changed, 432 insertions(+), 297 deletions(-) diff --git a/src/main/webapp/views/issue/issueListNormal.html b/src/main/webapp/views/issue/issueListNormal.html index 7e16daa..964d140 100644 --- a/src/main/webapp/views/issue/issueListNormal.html +++ b/src/main/webapp/views/issue/issueListNormal.html @@ -3,316 +3,429 @@ <div class="col-sm-12" > <div class="element-wrapper" ng-if="!vm.detailView"> <div class="element-box"> - <div class="row" > - <div class="col-sm-12"> - <div class="searchdiv"> - <form name="issueSearchForm" role="form" ng-enter="fn.getPageList(0)"> - <div class="row"> - <div class="col-sm-6"> - <div class="input-group"> - <input class="form-control" - type="text" - tabindex="-1" - maxlength="300" - kr-input - owl-auto-focus - ng-model="vm.search.keyWord" - placeholder="{{'issue.pleaseEnterIssueKeyWord' | translate}}"> - <div class="input-group-prepend ml-10"> - <button class="btn btn-navy" ng-click="fn.getPageList(0)"> <span translate="common.search">寃��깋</span></button> + <div class="row" > + <div class="col-sm-12"> + <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"> + <div class="input-group"> + <input class="form-control" + type="text" + tabindex="-1" + maxlength="300" + kr-input + owl-auto-focus + ng-model="vm.search.keyWord" + placeholder="{{'issue.pleaseEnterIssueKeyWord' | translate}}"> + <div class="input-group-prepend ml-10"> + <button class="btn btn-navy" ng-click="fn.getPageList(0)"> <span translate="common.search">寃��깋</span></button> + </div> </div> </div> </div> - </div> - <div class="row"> - <div class="col-sm-12"> - <div class="tabfilter"> - <div translate="common.selectedSearchCriteria">�꽑�깮�븳 寃��깋 議곌굔</div> - <!-- �씠�뒋 �젣紐� --> - <p ng-if="$root.isDefined(vm.search.title)"> - {{vm.search.title}} - <span ng-click="vm.search.title = ''">횞</span> - </p> + <div class="row"> + <div class="col-sm-12"> + <div class="tabfilter"> + <div translate="common.selectedSearchCriteria">�꽑�깮�븳 寃��깋 議곌굔</div> + <!-- �씠�뒋 �젣紐� --> + <p ng-if="$root.isDefined(vm.search.title)"> + {{vm.search.title}} + <span ng-click="vm.search.title = ''">횞</span> + </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>--> - <p ng-if="$root.isDefined(vm.projectName)"> - {{vm.projectName}} - <span ng-click="vm.projectName = ''">횞</span> - </p> - <!-- �씠�뒋 ���엯 --> - <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> + <!-- �씠�뒋 �긽�깭 --> + <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.description)"> - {{vm.search.description}} - <span ng-click="vm.search.description = ''">횞</span> - </p> + <!-- �씠�뒋 踰덊샇 --> + <p ng-if="$root.isDefined(vm.search.issueNumber)"> + {{vm.search.issueNumber}} + <span ng-click="vm.search.issueNumber = ''">횞</span> + </p> - <!-- �슦�꽑 �닚�쐞 --> - <issue-search-field-key-view-element lists="vm.priorities" - keys="vm.search.priorityIds"></issue-search-field-key-view-element> + <!-- �씠�뒋 �궡�슜 --> + <p ng-if="$root.isDefined(vm.search.description)"> + {{vm.search.description}} + <span ng-click="vm.search.description = ''">횞</span> + </p> - <!-- 以묒슂�룄 --> - <issue-search-field-key-view-element lists="vm.severities" - keys="vm.search.severityIds"></issue-search-field-key-view-element> + <!-- �슦�꽑 �닚�쐞 --> + <issue-search-field-key-view-element lists="vm.priorities" + keys="vm.search.priorityIds"></issue-search-field-key-view-element> - <!-- �떞�떦�옄 --> - <issue-search-array-view-element lists="vm.users" - type="'user'"></issue-search-array-view-element> + <!-- 以묒슂�룄 --> + <issue-search-field-key-view-element lists="vm.severities" + keys="vm.search.severityIds"></issue-search-field-key-view-element> - <!-- �벑濡앹옄 --> - <issue-search-array-view-element lists="vm.registers" - type="'user'"></issue-search-array-view-element> + <!-- �떞�떦�옄 --> + <issue-search-array-view-element lists="vm.users" + type="'user'"></issue-search-array-view-element> - <!-- �떆�옉�씪 --> - <p ng-if="$root.isDefined(vm.search.startDateRange)"> - {{vm.search.startDateRange}} - <span ng-click="vm.search.startDateRange = ''">횞</span> - </p> + <!-- �벑濡앹옄 --> + <issue-search-array-view-element lists="vm.registers" + type="'user'"></issue-search-array-view-element> - <!-- 醫낅즺�씪 --> - <p ng-if="$root.isDefined(vm.search.completeDateRange)"> - {{vm.search.completeDateRange}} - <span ng-click="vm.search.completeDateRange = ''">횞</span> - </p> + <!-- �떆�옉�씪 --> + <p ng-if="$root.isDefined(vm.search.startDateRange)"> + {{vm.search.startDateRange}} + <span ng-click="vm.search.startDateRange = ''">횞</span> + </p> - <!-- �벑濡앹씪 --> - <p ng-if="$root.isDefined(vm.search.registerDateRange)"> - {{vm.search.registerDateRange}} - <span ng-click="vm.search.registerDateRange = ''">횞</span> - </p> + <!-- 醫낅즺�씪 --> + <p ng-if="$root.isDefined(vm.search.completeDateRange)"> + {{vm.search.completeDateRange}} + <span ng-click="vm.search.completeDateRange = ''">횞</span> + </p> - <!-- �뀓�뒪�듃 �엯�젰 �븘�뱶 --> - <issue-search-custom-field-view-element - custom-fields="vm.customFields"></issue-search-custom-field-view-element> + <!-- 湲곌컙 --> + <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 + custom-fields="vm.customFields"></issue-search-custom-field-view-element> + </div> </div> </div> - </div> - <div class=""> - <label class="issue-search-label" ng-class="{ 'icon-reverse' : vm.searchView }" - ng-click="vm.searchView = !vm.searchView"> - <span translate="common.detailedSearch">�긽�꽭寃��깋</span> - </label> - <div ng-if="vm.searchView"> - <div class="row"> - <div class="col-lg-3"> - <div class="form-group"> - <label> <span translate="issue.issueTitle">�씠�뒋 �젣紐�</span></label> - <input type="text" - name="title" - class="form-control input-sm" - kr-input - maxlength="20" - autocomplete="off" - 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" - class="form-control input-sm" - autocomplete="off" - kr-input - maxlength="20" - ng-model="vm.search.combinationIssueNumber"> - </div> - </div> - - <div class="col-lg-3"> - <div class="form-group"> - <label> <span translate="issue.issueContent">�씠�뒋 �궡�슜</span></label> - <input type="text" - name="description" - class="form-control input-sm" - kr-input - maxlength="20" - autocomplete="off" - ng-model="vm.search.description"> - </div> - </div> - - <div class="col-lg-3"> - <div class="form-group"> - <label> <span translate="common.priority">�슦�꽑 �닚�쐞</span></label> - <ng-dropdown-multiselect class="multiSelect cursor" - data-input-name="priorities" - selected-model="vm.search.priorityIds" - options="::vm.priorities"></ng-dropdown-multiselect> - </div> - </div> - - <div class="col-lg-3"> - <div class="form-group"> - <label> <span translate="common.importance">以묒슂�룄</span></label> - <ng-dropdown-multiselect class="multiSelect cursor" - data-input-name="severities" - selected-model="vm.search.severityIds" - 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> - <js-autocomplete-multi data-input-name="registers" - selected-model="vm.registers" - search="vm.registerName" - input-disabled="false" - source="fn.getUserList(vm.registerName, vm.registers)" - translation-texts="{ count : 'common.userNum', empty : 'common.emptyUser' }" - extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'user', maxlength : 100 }"> - </js-autocomplete-multi> - </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"> - <div class="form-group"> - <label> <span translate="common.startDate">�떆�옉�씪</span></label> - <input type="text" - readonly - class="form-control input-sm input-readonly" - ng-model="vm.search.startDateRange" - 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.endDate">醫낅즺�씪</span></label> - <input type="text" - readonly - class="form-control input-sm input-readonly" - ng-model="vm.search.completeDateRange" - 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.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 class="col-lg-3" ng-repeat="customField in vm.customFields"> - <label>{{::customField.name}}</label> - - <div ng-switch on="customField.customFieldType"> - <div ng-switch-when="INPUT"> - <input type="text" class="form-control input-sm" - ng-model="customField.useValues" - maxlength="100"> + <div class=""> + <label class="issue-search-label" ng-class="{ 'icon-reverse' : vm.searchView }" + ng-click="vm.searchView = !vm.searchView"> + <span translate="common.detailedSearch">�긽�꽭寃��깋</span> + </label> + <div ng-if="vm.searchView"> + <div class="row"> + <div class="col-lg-3"> + <div class="form-group"> + <label> <span translate="issue.issueTitle">�씠�뒋 �젣紐�</span></label> + <input type="text" + name="title" + class="form-control input-sm" + kr-input + maxlength="20" + autocomplete="off" + ng-model="vm.search.title"> </div> + </div> + <div class="col-lg-3"> + <div class="form-group"> + <label> <span translate="issue.issueNumber">�씠�뒋 踰덊샇</span></label> + <input type="text" + name="issueNumber" + class="form-control input-sm" + autocomplete="off" + kr-input + maxlength="20" + ng-model="vm.search.issueNumber"> + </div> + </div> - <div ng-switch-default> + <div class="col-lg-3"> + <div class="form-group"> + <label> <span translate="issue.issueContent">�씠�뒋 �궡�슜</span></label> + <input type="text" + name="description" + class="form-control input-sm" + kr-input + maxlength="20" + autocomplete="off" + 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="customField.name" - selected-model="customField.useValues" - extra-settings="{ 'idProp' : 'value', 'externalIdProp' : 'value', 'displayProp' : 'value', 'stringTypeOption' : 'true', 'stopRemoveBodyEvent' : 'true' }" - options="::customField.customFieldValueVos"></ng-dropdown-multiselect> + data-input-name="issueStatuses" + selected-model="vm.search.issueStatusIds" + options="::vm.issueStatuses"></ng-dropdown-multiselect> </div> </div> </div> - </div> + <div class="row"> + <div class="col-lg-3"> + <div class="form-group"> + <label> <span translate="common.priority">�슦�꽑 �닚�쐞</span></label> + <ng-dropdown-multiselect class="multiSelect cursor" + data-input-name="priorities" + selected-model="vm.search.priorityIds" + options="::vm.priorities"></ng-dropdown-multiselect> + </div> + </div> - <div class="row"> - <div class="col-sm-12"> - <div class="form-buttons-w text-center mb-20"> - <button class="btn btn-xlg btn-navy" ng-click="fn.getPageList(0)"> - <i class="os-icon os-icon-ui-37"></i> - <span translate="common.search">寃��깋</span> - </button> - <button class="btn btn-xlg btn-white" ng-click="fn.initSearch()"> - <i class="os-icon os-icon-grid-18"></i> - <span translate="common.reset">珥덇린�솕</span> - </button> + <div class="col-lg-3"> + <div class="form-group"> + <label> <span translate="common.importance">以묒슂�룄</span></label> + <ng-dropdown-multiselect class="multiSelect cursor" + data-input-name="severities" + selected-model="vm.search.severityIds" + options="::vm.severities"></ng-dropdown-multiselect> + </div> + </div> + + <div class="col-lg-3"> + <div class="form-group"> + <label> <span translate="common.register">�벑濡앹옄</span></label> + <js-autocomplete-multi data-input-name="registers" + selected-model="vm.registers" + search="vm.registerName" + input-disabled="false" + source="fn.getUserList(vm.registerName, vm.registers)" + translation-texts="{ count : 'common.userNum', empty : 'common.emptyUser' }" + extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'user', maxlength : 100 }"> + </js-autocomplete-multi> + </div> + </div> + + <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> + </div> + </div> + + </div> + + + <div class="row"> + + <div class="col-lg-3"> + <div class="form-group"> + <label> <span translate="common.startDate">�떆�옉�씪</span></label> + <input type="text" + readonly + class="form-control input-sm input-readonly" + ng-model="vm.search.startDateRange" + 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.endDate">醫낅즺�씪</span></label> + <input type="text" + readonly + class="form-control input-sm input-readonly" + ng-model="vm.search.completeDateRange" + 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.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> + + <div ng-switch on="customField.customFieldType"> + <div ng-switch-when="INPUT"> + <input type="text" + class="form-control input-sm" + ng-model="customField.useValues" + > + </div> + <div ng-switch-when="NUMBER"> + <input type="text" + class="form-control input-sm" + name="item_{{$index}}" + ng-model="customField.useValues" + kr-input + placeholder="�닽�옄留� �엯�젰 媛��뒫�빀�땲�떎." + ng-pattern="/^[0-9]*$/" + autocomplete="off"> + <div ng-if="issueSearchForm['item_'+ $index].$error.pattern" class="help-block form-text text-danger" + translate="common.invalidNumberFormat">�닽�옄留� �엯�젰 媛��뒫�빀�땲�떎. + </div> + </div> + + <div ng-switch-when="DATETIME"> + <input class="form-control input-sm input-readonly" + name="item_{{$index}}" + ng-model="customField.useValues" + 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> + </div> + </div> + </div> + + <div ng-switch-when="IP_ADDRESS"> + <input type="text" + class="form-control input-sm" + 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-if="issueSearchForm['item_'+ $index].$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="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-if="issueSearchForm['item_'+ $index].$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="item_{{$index}}" + ng-model="customField.useValues" + kr-input + ng-pattern="/(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/" + placeholder="�솃�럹�씠吏� 二쇱냼 �삎�떇留� �엯�젰 媛��뒫�빀�땲�떎." + autocomplete="off"> + <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="item_{{$index}}" + ng-model="customField.useValues" + kr-input + ng-pattern="/^\d{2,3}-\d{3,4}-\d{4}$/" + placeholder="�뿰�씫泥� �삎�떇留� �엯�젰 媛��뒫�빀�땲�떎." + autocomplete="off"> + <div ng-if="issueSearchForm['item_'+ $index].$error.pattern" class="help-block form-text text-danger" + translate="common.invalidTelFormat">�쟾�솕踰덊샇 �삎�떇�씠 留욎� �븡�뒿�땲�떎. + </div> + </div> + + <div ng-switch-default> + <ng-dropdown-multiselect class="multiSelect cursor" + data-input-name="customField.name" + selected-model="customField.useValues" + extra-settings="{ 'idProp' : 'value', 'externalIdProp' : 'value', 'displayProp' : 'value', 'stringTypeOption' : 'true', 'stopRemoveBodyEvent' : 'true' }" + options="::customField.customFieldValueVos"></ng-dropdown-multiselect> + </div> + </div> + </div> + + </div> + + <div class="row"> + <div class="col-sm-12"> + <div class="form-buttons-w text-center mb-20"> + <button class="btn btn-xlg btn-navy" ng-click="fn.getPageList(0)"> + <i class="os-icon os-icon-ui-37"></i> + <span translate="common.search">寃��깋</span> + </button> + <button class="btn btn-xlg btn-white" ng-click="fn.initSearch()"> + <i class="os-icon os-icon-grid-18"></i> + <span translate="common.reset">珥덇린�솕</span> + </button> + </div> </div> </div> </div> </div> - </div> - </form> + </form> + </div> </div> </div> - </div> <div class="controls-above-table mt-30"> <div class="row"> <!-- 醫뚯륫 --> @@ -330,14 +443,31 @@ </select> {{vm.page.selectedPage}}-{{vm.responseData.page.totalPage}} / {{vm.responseData.page.totalCount | number}}<span translate="common.few">嫄�</span> </label> + <div class="btn-group ml-2" role="group" aria-label="list-group"> + <button class="btn" ng-class="{'btn-info': vm.listMode === 0, 'btn-light': vm.listMode !== 0}" ng-click="fn.onClickListMode(0)">List</button> + <button class="btn" ng-class="{'btn-info': vm.listMode === 1, 'btn-light': vm.listMode !== 1}" ng-click="fn.onClickListMode(1)">Tree</button> + </div> </div> </div> + + <!-- �슦痢� --> - <div class="col-5 " > + <div class="col-5" > + <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"> - <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" @@ -345,12 +475,12 @@ </button> <div aria-labelledby="dropdownMenuButton2" class="dropdown-menu left-menu" x-placement="bottom-start" > - <a class="dropdown-item cursor" form-submit="issueListForm" make-search-conditions="fn.makeSearchConditions()"> <span translate="common.downloadExcel">�뿊�� �떎�슫濡쒕뱶</span></a> + <a class="dropdown-item cursor" form-submit="issueListForm" make-search-conditions="fn.makeSearchConditions()"> <span translate="common.allDownloadExcel">�뿊�� �떎�슫濡쒕뱶</span></a> <a class="dropdown-item cursor" ng-click="fn.importExcel()"> <span translate="common.importExcel">Excel Import</span></a> <a class="dropdown-item cursor" ng-click="fn.modifyMultiIssueStatus()"> <span translate="common.updateIssueStatus">�씠�뒋 �긽�깭 蹂�寃�</span></a> <a class="dropdown-item cursor" ng-click="fn.addIssueTableConfig()"> <span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></a> - <a class="dropdown-item cursor" ng-click="fn.removes()"> <span translate="common.delete">�궘�젣</span></a> + <a class="dropdown-item cursor" ng-click="fn.removes()"> <span translate="common.selectDelete">�궘�젣</span></a> </div> </div> </form> @@ -358,26 +488,31 @@ </div> </div> - <div class="table-responsive"> - <js-table data="vm.responseData.data" table-configs="vm.tableConfigs" + <div class="table-responsive" > + <js-table ng-if="vm.listMode === 0" + data="vm.responseData.data" table-configs="vm.tableConfigs" event="tableEvent" detail-view="vm.detailView"></js-table> + + <js-tree ng-if="vm.listMode === 1" + data="vm.responseData.data" table-configs="vm.treeConfigs" + event="tableEvent" detail-view="vm.detailView"></js-tree> </div> - <div class="controls-below-table text-center"> - <ul uib-pagination - boundary-links-numbes="true" - items-per-page="vm.page.selectedPageRowCount" - total-items="vm.responseData.page.totalCount" - ng-model="vm.page.selectedPage" - max-size="10" - ng-click="fn.getPageList(vm.page.selectedPage - 1)" - class="pagination pagination-sm" - previous-text="<" - next-text=">" - first-text="" - last-text=""> - </ul> + <div class="controls-below-table text-center"> + <ul uib-pagination + boundary-links-numbes="true" + items-per-page="vm.page.selectedPageRowCount" + total-items="vm.responseData.page.totalCount" + ng-model="vm.page.selectedPage" + max-size="10" + ng-click="fn.getPageList(vm.page.selectedPage - 1)" + class="pagination pagination-sm" + previous-text="<" + next-text=">" + first-text="" + last-text=""> + </ul> + </div> </div> - </div> </div> </div> </div> -- Gitblit v1.8.0