| | |
| | | </div> |
| | | |
| | | <div class="modal-body"> |
| | | <form role="form" name="issueAddForm"> |
| | | <form role="form" name="issueModifyForm"> |
| | | <div class="form-group mb10"> |
| | | <label for="issueAddForm1" class="issue-label"><span translate="issue.issueTitle">이슈 제목</span> <code |
| | | <label for="issueModifyForm1" class="issue-label"><span translate="issue.issueTitle">이슈 제목</span> <code |
| | | class="highlighter-rouge">*</code></label> |
| | | <input id="issueAddForm1" |
| | | <input id="issueModifyForm1" |
| | | 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="issueModifyForm.title.$touched && issueModifyForm.title.$error.required" |
| | | translate="issue.requireIssueTitle">이슈 제목을 입력하세요. |
| | | </small> |
| | | </div> |
| | |
| | | <div class="row"> |
| | | <div class="col-md-4"> |
| | | <div class="form-group mb10"> |
| | | <label for="issueAddForm4" class="issue-label"> <span |
| | | <label for="issueModifyForm4" class="issue-label"> <span |
| | | translate="issue.issueType">이슈 타입</span> |
| | | <code class="highlighter-rouge">*</code></label> |
| | | <select id="issueAddForm4" |
| | | <select id="issueModifyForm4" |
| | | 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="issueModifyForm2" class="issue-label"> |
| | | <span translate="common.priority">우선 순위</span> |
| | | <code class="highlighter-rouge">*</code> |
| | | </label> |
| | | <select id="issueAddForm2" |
| | | <select id="issueModifyForm2" |
| | | 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="issueModifyForm3" class="issue-label"> <span |
| | | translate="common.importance">중요도</span> <code |
| | | class="highlighter-rouge">*</code></label> |
| | | <select id="issueAddForm3" |
| | | <select id="issueModifyForm3" |
| | | 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="issueModifyForm5" class="issue-label"> <span translate="common.period">기간</span></label> |
| | | <input id="issueModifyForm5" |
| | | tabindex="-1" |
| | | type="text" |
| | | readonly |
| | |
| | | <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 class="form-group mgb5" ng-if="vm.form.issueCustomFields.length < 1"> |
| | | <label class="issue-label" translate="issue.notIssueTypeCustomFields">이슈 타입에 연결된 사용자 정의 |
| | | 필드가 없습니다.</label> |
| | | </div> |
| | |
| | | |
| | | <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> |
| | | <label class="issue-label">{{issueCustomField.customFieldVo.name}} <code ng-if="issueCustomField.customFieldVo.requiredData == 'Y'" class="highlighter-rouge">*</code> </label> |
| | | |
| | | <div ng-switch on="issueCustomField.customFieldVo.customFieldType"> |
| | | <!-- 기본 입력 --> |
| | | <div ng-switch-when="INPUT"> |
| | | <input type="text" class="form-control input-sm" |
| | | name="input" |
| | | name="inputValue" |
| | | ng-model="issueCustomField.useValues" |
| | | maxlength="100" |
| | | autocomplete="off" |
| | | kr-input |
| | | 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="issueAddForm.input.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자정의필드는 필수 입력 값 입니다. |
| | | </small> |
| | | <!-- <small class="help-block form-text text-danger"--> |
| | | <!-- ng-show="issueCustomField.customFieldVo.requiredData == 'Y'"--> |
| | | <!-- ng-if="issueModifyForm.inputValue.$error.required"--> |
| | | <!-- translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자정의필드는 필수 입력 값 입니다.--> |
| | | <!-- </small>--> |
| | | </div> |
| | | |
| | | <div ng-switch-when="NUMBER"> |
| | | <input type="text" class="form-control input-sm" |
| | | name="number" |
| | | name="numberType" |
| | | ng-model="issueCustomField.useValues" |
| | | maxlength="100" |
| | | autocomplete="off" |
| | | kr-input |
| | | ng-pattern="/^[0-9]*$/" |
| | | placeholder="숫자만 입력 가능합니다." |
| | | 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="issueAddForm.number.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다. |
| | | </small> |
| | | <!-- <small class="help-block form-text text-danger"--> |
| | | <!-- ng-show="issueCustomField.customFieldVo.requiredData == 'Y'"--> |
| | | <!-- ng-if="issueModifyForm.numberType.$error.required"--> |
| | | <!-- translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다.--> |
| | | <!-- </small>--> |
| | | <div ng-if="issueModifyForm.numberType.$error.pattern" class="help-block form-text text-danger" |
| | | translate="common.invalidNumberFormat">숫자만 입력 가능합니다. |
| | | </div> |
| | | </div> |
| | | |
| | | <div ng-switch-when="DATETIME"> |
| | |
| | | autocomplete="off" |
| | | kr-input |
| | | 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="issueAddForm.dateTime.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다. |
| | | </small> |
| | | <!-- <small class="help-block form-text text-danger"--> |
| | | <!-- ng-show="issueCustomField.customFieldVo.requiredData == 'Y'"--> |
| | | <!-- ng-if="issueModifyForm.dateTime.$error.required"--> |
| | | <!-- translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다.--> |
| | | <!-- </small>--> |
| | | </div> |
| | | |
| | | <div ng-switch-when="IP_ADDRESS"> |
| | |
| | | maxlength="100" |
| | | autocomplete="off" |
| | | 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 주소 형식만 입력 가능합니다." |
| | | 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="issueAddForm.ipAddress.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다. |
| | | </small> |
| | | <!-- <small class="help-block form-text text-danger"--> |
| | | <!-- ng-show="issueCustomField.customFieldVo.requiredData == 'Y'"--> |
| | | <!-- ng-if="issueModifyForm.ipAddress.$error.required"--> |
| | | <!-- translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다.--> |
| | | <!-- </small>--> |
| | | <div ng-if="issueModifyForm.ipAddress.$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" |
| | | maxlength="30" |
| | | ng-model="issueCustomField.useValues" |
| | | kr-input |
| | | ng-pattern="/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/" |
| | | placeholder="이메일 형식만 입력 가능합니다." |
| | | 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="issueModifyForm.ipAddress.$error.required"--> |
| | | <!-- translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다.--> |
| | | <!-- </small>--> |
| | | <div ng-if="issueModifyForm.email.$error.pattern" class="help-block form-text text-danger" |
| | | translate="common.invalidEmailFormat">이메일 형식이 맞지 않습니다. |
| | | </div> |
| | | </div> |
| | | |
| | | <div ng-switch-when="SITE"> |
| | |
| | | maxlength="100" |
| | | autocomplete="off" |
| | | kr-input |
| | | ng-pattern="/(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/" |
| | | placeholder="홈페이지 주소 형식만 입력 가능합니다." |
| | | 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="issueAddForm.site.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다. |
| | | </small> |
| | | <!-- <small class="help-block form-text text-danger"--> |
| | | <!-- ng-show="issueCustomField.customFieldVo.requiredData == 'Y'"--> |
| | | <!-- ng-if="issueModifyForm.site.$error.required"--> |
| | | <!-- translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다.--> |
| | | <!-- </small>--> |
| | | <div ng-if="issueModifyForm.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="issueCustomField.useValues" |
| | | maxlength="100" |
| | | maxlength="30" |
| | | autocomplete="off" |
| | | kr-input |
| | | ng-pattern="/^\d{2,3}-\d{3,4}-\d{4}$/" |
| | | placeholder="연락처 형식만 입력 가능합니다." |
| | | 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="issueAddForm.tel.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다. |
| | | </small> |
| | | <!-- <small class="help-block form-text text-danger"--> |
| | | <!-- ng-show="issueCustomField.customFieldVo.requiredData == 'Y'"--> |
| | | <!-- ng-if="issueModifyForm.tel.$error.required"--> |
| | | <!-- translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다.--> |
| | | <!-- </small>--> |
| | | <div ng-if="issueModifyForm.tel.$error.pattern" class="help-block form-text text-danger" |
| | | translate="common.invalidTelFormat">전화번호 형식이 맞지 않습니다. |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- 단일 셀렉트 --> |
| | |
| | | {{customFieldValueVo.value}} |
| | | </option> |
| | | </select> |
| | | <small class="help-block form-text text-danger" |
| | | ng-show="issueCustomField.customFieldVo.requiredData == 'Y'" |
| | | ng-if="issueAddForm.singleSelect.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다. |
| | | </small> |
| | | <!-- <small class="help-block form-text text-danger"--> |
| | | <!-- ng-show="issueCustomField.customFieldVo.requiredData == 'Y'"--> |
| | | <!-- ng-if="issueModifyForm.singleSelect.$error.required"--> |
| | | <!-- translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다.--> |
| | | <!-- </small>--> |
| | | </div> |
| | | |
| | | <!-- 멀티 셀렉트 --> |
| | |
| | | <input class="form-control input-sm issue-select-label" |
| | | type="hidden" name="multiSelect" ng-model="issueCustomField.useValues[0]" |
| | | 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="issueAddForm.multiSelect.$error.required" |
| | | translate="issue.pleaseEnterIssueTypeCustomFields">해당 사용자 정의 필드는 필수 입력 값 입니다. |
| | | </small> |
| | | <!-- <small class="help-block form-text text-danger"--> |
| | | <!-- ng-show="issueCustomField.customFieldVo.requiredData == 'Y'"--> |
| | | <!-- ng-if="issueModifyForm.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="issueModifyForm.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="issueModifyForm.companyEmail.$error.pattern" class="help-block form-text text-danger" |
| | | translate="users.invalidEmailFormat">이메일 형식이 맞지 않습니다. |
| | | </div> |
| | | </div> |
| | |
| | | autocomplete="off" |
| | | ng-maxlength="200" |
| | | ng-model="vm.companyUrl" |
| | | ng-pattern="/(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/" |
| | | maxlength="200"> |
| | | <div ng-show="issueModifyForm.companyUrl.$error.pattern" class="help-block form-text text-danger" |
| | | translate="common.invalidUrlFormat">url 형식이 맞지 않습니다. |
| | | </div> |
| | | </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="issueModifyForm.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="issueModifyForm.ispEmail.$error.pattern" class="help-block form-text text-danger" |
| | | translate="users.invalidEmailFormat">이메일 형식이 맞지 않습니다. |
| | | </div> |
| | | </div> |
| | |
| | | autocomplete="off" |
| | | ng-maxlength="200" |
| | | ng-model="vm.ispUrl" |
| | | ng-pattern="/(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/" |
| | | maxlength="200"> |
| | | <div ng-show="issueModifyForm.ispUrl.$error.pattern" class="help-block form-text text-danger" |
| | | translate="common.invalidUrlFormat">url 형식이 맞지 않습니다. |
| | | </div> |
| | | </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="issueModifyForm.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="issueModifyForm.hostingEmail.$error.pattern" class="help-block form-text text-danger" |
| | | translate="users.invalidEmailFormat">이메일 형식이 맞지 않습니다. |
| | | </div> |
| | | </div> |
| | |
| | | autocomplete="off" |
| | | ng-maxlength="200" |
| | | ng-model="vm.hostingUrl" |
| | | ng-pattern="/(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/" |
| | | maxlength="200"> |
| | | <div ng-show="issueModifyForm.hostingUrl.$error.pattern" class="help-block form-text text-danger" |
| | | translate="common.invalidUrlFormat">url 형식이 맞지 않습니다. |
| | | </div> |
| | | </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(issueModifyForm.$invalid) || $root.spinner) ? null : fn.formSubmit()" |
| | | ng-disabled="fn.formCheck(issueModifyForm.$invalid)" |
| | | ng-click="fn.formSubmit()"><span translate="common.save">저장</span> |
| | | </button> |
| | | </div> |