| | |
| | | </div> |
| | | |
| | | <div class="modal-body"> |
| | | <form role="form" name="issueAddForm"> |
| | | <form role="form" name="issueAddRelationForm"> |
| | | <div class="form-group mb10"> |
| | | <label for="issueAddForm1" class="issue-label"><span translate="issue.issueTitle">이슈 제목</span> <code |
| | | <label for="issueAddRelationForm1" class="issue-label"><span translate="issue.issueTitle">이슈 제목</span> <code |
| | | class="highlighter-rouge">*</code></label> |
| | | <input id="issueAddForm1" |
| | | <input id="issueAddRelationForm1" |
| | | class="form-control input-sm" |
| | | ng-model="vm.form.title" |
| | | name="title" |
| | |
| | | autofocus |
| | | owl-auto-focus> |
| | | <small class="help-block form-text text-danger" |
| | | ng-if="issueAddForm.title.$touched && issueAddForm.title.$error.required" |
| | | ng-if="issueAddRelationForm.title.$touched && issueAddRelationForm.title.$error.required" |
| | | translate="issue.requireIssueTitle">이슈 제목을 입력하세요. |
| | | </small> |
| | | </div> |
| | | |
| | | <div class="form-group mb10"> |
| | | <label class="issue-label"><span class="highlighter-rouge">연관 이슈 구분</span></label> |
| | | <select id="relationIssueType" |
| | | name="relationIssueType" |
| | | class="form-control input-sm" |
| | | ng-options="option.name for option in vm.relationIssueTypes track by option.id" |
| | | ng-model="vm.relationIssueType" |
| | | required> |
| | | </select> |
| | | |
| | | </div> |
| | | |
| | | <div class="row"> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mb10"> |
| | |
| | | source="fn.getProjectList(vm.projectName, vm.form.projects, vm.autoCompletePage.project.page, fn.getProjectListCallBack)" |
| | | page="vm.autoCompletePage.project.page" |
| | | total-page="vm.autoCompletePage.project.totalPage" |
| | | input-disabled="false" |
| | | translation-texts="{ empty : 'common.emptyProject' }" |
| | | extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '', |
| | | type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single> |
| | |
| | | <div class="row"> |
| | | <div class="col-md-4"> |
| | | <div class="form-group mb10"> |
| | | <label for="issueAddForm4" class="issue-label"> <span |
| | | <label for="issueAddRelationForm4" class="issue-label"> <span |
| | | translate="issue.issueType">이슈 타입</span> |
| | | <code class="highlighter-rouge">*</code></label> |
| | | <select id="issueAddForm4" |
| | | <select id="issueAddRelationForm4" |
| | | name="issueType" |
| | | class="form-control input-sm issue-select-label" |
| | | ng-model="vm.form.issueTypeId" |
| | |
| | | </div> |
| | | <div class="col-md-4"> |
| | | <div class="form-group mb10"> |
| | | <label for="issueAddForm2" class="issue-label"> |
| | | <label for="issueAddRelationForm2" class="issue-label"> |
| | | <span translate="common.priority">우선 순위</span> |
| | | <code class="highlighter-rouge">*</code> |
| | | </label> |
| | | <select id="issueAddForm2" |
| | | <select id="issueAddRelationForm2" |
| | | name="priority" |
| | | class="form-control input-sm issue-select-label" |
| | | ng-model="vm.form.priorityId" |
| | |
| | | </div> |
| | | <div class="col-md-4"> |
| | | <div class="form-group mb10"> |
| | | <label for="issueAddForm3" class="issue-label"> <span |
| | | <label for="issueAddRelationForm3" class="issue-label"> <span |
| | | translate="common.importance">중요도</span> <code |
| | | class="highlighter-rouge">*</code></label> |
| | | <select id="issueAddForm3" |
| | | <select id="issueAddRelationForm3" |
| | | name="severity" |
| | | class="form-control input-sm issue-select-label" |
| | | ng-model="vm.form.severityId" |
| | |
| | | |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mb10"> |
| | | <label for="issueAddForm5" class="issue-label"> <span translate="common.period">기간</span></label> |
| | | <input id="issueAddForm5" |
| | | <label for="issueAddRelationForm5" class="issue-label"> <span translate="common.period">기간</span></label> |
| | | <input id="issueAddRelationForm5" |
| | | tabindex="-1" |
| | | type="text" |
| | | readonly |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-lg-8"> |
| | | <div class="col-lg-12"> |
| | | <div class="row"> |
| | | <div class="col-md-12"> |
| | | <div class="form-group mgb5" ng-show="vm.form.issueCustomFields.length < 1"> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-md-6" ng-repeat="issueCustomField in vm.form.issueCustomFields"> |
| | | <div class="col-md-4" ng-repeat="issueCustomField in vm.form.issueCustomFields"> |
| | | <div class="form-group mgb5"> |
| | | <label class="issue-label">{{issueCustomField.customFieldVo.name}}</label> |
| | | |
| | |
| | | <!-- 기본 입력 --> |
| | | <div ng-switch-when="INPUT"> |
| | | <input type="text" class="form-control input-sm" |
| | | name="input" |
| | | ng-model="issueCustomField.useValues" |
| | | maxlength="100" |
| | | autocomplete="off" |
| | | kr-input |
| | | ng-required="issueCustomField.fieldOption == '01'"> |
| | | ng-required="issueCustomField.fieldOption == '01' || issueCustomField.customFieldVo.requiredData == 'Y'"> |
| | | <small class="help-block form-text text-danger" |
| | | ng-show="issueCustomField.customFieldVo.requiredData == 'Y'" |
| | | ng-if="issueAddRelationForm.input.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자정의필드는 필수 입력 값 입니다. |
| | | </small> |
| | | </div> |
| | | |
| | | <div ng-switch-when="NUMBER"> |
| | | <input type="text" class="form-control input-sm" |
| | | name="number" |
| | | ng-model="issueCustomField.useValues" |
| | | maxlength="100" |
| | | autocomplete="off" |
| | | kr-input |
| | | ng-required="issueCustomField.fieldOption == '01'"> |
| | | ng-required="issueCustomField.fieldOption == '01' || issueCustomField.customFieldVo.requiredData == 'Y'"> |
| | | <small class="help-block form-text text-danger" |
| | | ng-show="issueCustomField.customFieldVo.requiredData == 'Y'" |
| | | ng-if="issueAddRelationForm.number.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다. |
| | | </small> |
| | | </div> |
| | | |
| | | <div ng-switch-when="DATETIME"> |
| | | <input type="text" class="form-control input-sm" |
| | | name="dateTime" |
| | | ng-model="issueCustomField.useValues" |
| | | maxlength="100" |
| | | autocomplete="off" |
| | | kr-input |
| | | ng-required="issueCustomField.fieldOption == '01'"> |
| | | ng-required="issueCustomField.fieldOption == '01' || issueCustomField.customFieldVo.requiredData == 'Y'"> |
| | | <small class="help-block form-text text-danger" |
| | | ng-show="issueCustomField.customFieldVo.requiredData == 'Y'" |
| | | ng-if="issueAddRelationForm.dateTime.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다. |
| | | </small> |
| | | </div> |
| | | |
| | | <div ng-switch-when="IP_ADDRESS"> |
| | | <input type="text" class="form-control input-sm" |
| | | name="ipAddress" |
| | | ng-model="issueCustomField.useValues" |
| | | maxlength="100" |
| | | autocomplete="off" |
| | | kr-input |
| | | ng-required="issueCustomField.fieldOption == '01'"> |
| | | ng-required="issueCustomField.fieldOption == '01' || issueCustomField.customFieldVo.requiredData == 'Y'"> |
| | | <small class="help-block form-text text-danger" |
| | | ng-show="issueCustomField.customFieldVo.requiredData == 'Y'" |
| | | ng-if="issueAddRelationForm.ipAddress.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다. |
| | | </small> |
| | | </div> |
| | | |
| | | <div ng-switch-when="SITE"> |
| | | <input type="text" class="form-control input-sm" |
| | | name="site" |
| | | ng-model="issueCustomField.useValues" |
| | | maxlength="100" |
| | | autocomplete="off" |
| | | kr-input |
| | | ng-required="issueCustomField.fieldOption == '01'"> |
| | | ng-required="issueCustomField.fieldOption == '01' || issueCustomField.customFieldVo.requiredData == 'Y'"> |
| | | <small class="help-block form-text text-danger" |
| | | ng-show="issueCustomField.customFieldVo.requiredData == 'Y'" |
| | | ng-if="issueAddRelationForm.site.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다. |
| | | </small> |
| | | </div> |
| | | |
| | | <div ng-switch-when="TEL"> |
| | | <input type="text" class="form-control input-sm" |
| | | name="tel" |
| | | ng-model="issueCustomField.useValues" |
| | | maxlength="100" |
| | | autocomplete="off" |
| | | kr-input |
| | | ng-required="issueCustomField.fieldOption == '01'"> |
| | | ng-required="issueCustomField.fieldOption == '01' || issueCustomField.customFieldVo.requiredData == 'Y'"> |
| | | <small class="help-block form-text text-danger" |
| | | ng-show="issueCustomField.customFieldVo.requiredData == 'Y'" |
| | | ng-if="issueAddRelationForm.tel.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다. |
| | | </small> |
| | | </div> |
| | | |
| | | <!-- 단일 셀렉트 --> |
| | | <div ng-switch-when="SINGLE_SELECT"> |
| | | <select class="form-control input-sm issue-select-label" |
| | | ng-required="issueCustomField.fieldOption == '01'" |
| | | name="singleSelect" |
| | | ng-required="issueCustomField.fieldOption == '01' || issueCustomField.customFieldVo.requiredData == 'Y'" |
| | | ng-model="issueCustomField.useValues"> |
| | | <option value="" value="" translate="common.choose">선택하세요.</option> |
| | | <option ng-repeat="customFieldValueVo in issueCustomField.customFieldVo.customFieldValueVos" |
| | |
| | | {{customFieldValueVo.value}} |
| | | </option> |
| | | </select> |
| | | <small class="help-block form-text text-danger" |
| | | ng-show="issueCustomField.customFieldVo.requiredData == 'Y'" |
| | | ng-if="issueAddRelationForm.singleSelect.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다. |
| | | </small> |
| | | </div> |
| | | |
| | | <!-- 멀티 셀렉트 --> |
| | | <div ng-switch-when="MULTI_SELECT"> |
| | | <ng-dropdown-multiselect class="multiSelect cursor" |
| | | name="multiSelect" |
| | | ng-required="issueCustomField.customFieldVo.requiredData == 'Y'" |
| | | data-input-name="" |
| | | modal-form-auto-scroll |
| | | selected-model="issueCustomField.useValues" |
| | | extra-settings="{ 'idProp' : 'value', 'externalIdProp' : 'value', 'displayProp' : 'value', 'stringTypeOption' : 'true', stopRemoveBodyEvent : true }" |
| | | options="issueCustomField.customFieldVo.customFieldValueVos"></ng-dropdown-multiselect> |
| | | <small class="help-block form-text text-danger" |
| | | ng-show="issueCustomField.customFieldVo.requiredData == 'Y'" |
| | | ng-if="issueAddRelationForm.multiSelect.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다. |
| | | </small> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | autocomplete="off" |
| | | ng-model="vm.companyTel" |
| | | maxlength="20"> |
| | | <div ng-show="issueAddForm.companyTel.$error.pattern" class="help-block form-text text-danger" |
| | | <div ng-show="issueAddRelationForm.companyTel.$error.pattern" class="help-block form-text text-danger" |
| | | translate="companyField.invalidTelFormat">전화번호 형식이 맞지 않습니다. xxx-xxx-xxxx 형식으로 입력하세요. |
| | | </div> |
| | | </div> |
| | |
| | | ng-model="vm.companyEmail" |
| | | kr-input |
| | | ng-pattern="/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/"> |
| | | <div ng-show="issueAddForm.companyEmail.$error.pattern" class="help-block form-text text-danger" |
| | | <div ng-show="issueAddRelationForm.companyEmail.$error.pattern" class="help-block form-text text-danger" |
| | | translate="users.invalidEmailFormat">이메일 형식이 맞지 않습니다. |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mgb5"> |
| | | <label for="companyFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label> |
| | | <input id="companyFieldUrlAddForm" |
| | | name="companyUrl" |
| | | type="text" |
| | | class="form-control" |
| | | kr-input |
| | | autocomplete="off" |
| | | ng-maxlength="200" |
| | | ng-model="vm.companyUrl" |
| | | maxlength="200"> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | |
| | | autocomplete="off" |
| | | ng-model="vm.ispTel" |
| | | maxlength="20"> |
| | | <div ng-show="issueAddForm.ispTel.$error.pattern" class="help-block form-text text-danger" |
| | | <div ng-show="issueAddRelationForm.ispTel.$error.pattern" class="help-block form-text text-danger" |
| | | translate="companyField.invalidTelFormat">전화번호 형식이 맞지 않습니다. xxx-xxx-xxxx 형식으로 입력하세요. |
| | | </div> |
| | | </div> |
| | |
| | | ng-model="vm.ispEmail" |
| | | kr-input |
| | | ng-pattern="/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/"> |
| | | <div ng-show="issueAddForm.ispEmail.$error.pattern" class="help-block form-text text-danger" |
| | | <div ng-show="issueAddRelationForm.ispEmail.$error.pattern" class="help-block form-text text-danger" |
| | | translate="users.invalidEmailFormat">이메일 형식이 맞지 않습니다. |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mgb5"> |
| | | <label for="ispFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label> |
| | | <input id="ispFieldUrlAddForm" |
| | | name="ispUrl" |
| | | type="text" |
| | | class="form-control" |
| | | kr-input |
| | | autocomplete="off" |
| | | ng-maxlength="200" |
| | | ng-model="vm.ispUrl" |
| | | maxlength="200"> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | |
| | | autocomplete="off" |
| | | ng-model="vm.hostingTel" |
| | | maxlength="20"> |
| | | <div ng-show="issueAddForm.hostingTel.$error.pattern" class="help-block form-text text-danger" |
| | | <div ng-show="issueAddRelationForm.hostingTel.$error.pattern" class="help-block form-text text-danger" |
| | | translate="companyField.invalidTelFormat">전화번호 형식이 맞지 않습니다. xxx-xxx-xxxx 형식으로 입력하세요. |
| | | </div> |
| | | </div> |
| | |
| | | ng-model="vm.hostingEmail" |
| | | kr-input |
| | | ng-pattern="/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/"> |
| | | <div ng-show="issueAddForm.hostingEmail.$error.pattern" class="help-block form-text text-danger" |
| | | <div ng-show="issueAddRelationForm.hostingEmail.$error.pattern" class="help-block form-text text-danger" |
| | | translate="users.invalidEmailFormat">이메일 형식이 맞지 않습니다. |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mgb5"> |
| | | <label for="hostingFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label> |
| | | <input id="hostingFieldUrlAddForm" |
| | | name="hostingUrl" |
| | | type="text" |
| | | class="form-control" |
| | | kr-input |
| | | autocomplete="off" |
| | | ng-maxlength="200" |
| | | ng-model="vm.hostingUrl" |
| | | maxlength="200"> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | |
| | | translate="common.cancel">취소</span></button> |
| | | <button type="button" class="btn btn-md btn-primary bold" |
| | | js-short-cut |
| | | js-short-cut-action="(fn.formCheck(issueAddForm.$invalid) || $root.spinner) ? null : fn.formSubmit()" |
| | | ng-disabled="fn.formCheck(issueAddForm.$invalid)" |
| | | js-short-cut-action="(fn.formCheck(issueAddRelationForm.$invalid) || $root.spinner) ? null : fn.formSubmit()" |
| | | ng-disabled="fn.formCheck(issueAddRelationForm.$invalid)" |
| | | ng-click="fn.formSubmit()"><span translate="common.save">저장</span> |
| | | </button> |
| | | </div> |