| | |
| | | <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>--> |
| | | |
| | | <!-- 이슈 타입 --> |
| | | <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"> |
| | | <!-- 좌측 --> |
| | |
| | | </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"> |
| | | <input type="checkbox" ng-model="vm.hideIssue"> 완료 이슈 숨기기 |
| | | <button type="button" ng-click="fn.getPageList(0)">새로고침</button> |
| | | </div> |
| | | <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" |
| | |
| | | </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> |
| | |
| | | </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> |