441 lines
19 KiB
HTML
441 lines
19 KiB
HTML
<div class="edit-ticket-dates">
|
|
<div class="ticket-date__form_invalid"
|
|
ng-if="(dateForm.scheduledStartDate.$invalid && dateForm.scheduledStartDate.$dirty)||
|
|
(dateForm.scheduledEndDate.$invalid && dateForm.scheduledEndDate.$dirty) ||
|
|
(dateForm.actualStartDate.$invalid && dateForm.actualStartDate.$dirty) ||
|
|
(dateForm.actualEndDate.$invalid && dateForm.actualEndDate.$dirty) ||
|
|
(dateForm.deploymentStartDate.$invalid && dateForm.deploymentStartDate.$dirty) ||
|
|
(dateForm.deploymentEndDate.$invalid && dateForm.deploymentEndDate.$dirty) ||
|
|
(dateForm.targetDate.$invalid && dateForm.targetDate.$dirty)">
|
|
<i class="icon-exclamation_triangle"></i>
|
|
<span ng-if="dateForm.scheduledStartDate.$invalid && dateForm.scheduledStartDate.$dirty">{{'create.ticket.invalid.scheduled-start-date'|i18n}}</span>
|
|
<span ng-if="dateForm.scheduledEndDate.$invalid && dateForm.scheduledEndDate.$dirty">{{'create.ticket.invalid.scheduled-end-date'|i18n}}</span>
|
|
<span ng-if="dateForm.actualStartDate.$invalid && dateForm.actualStartDate.$dirty">{{'create.ticket.invalid.actual-start-date'|i18n}}</span>
|
|
<span ng-if="dateForm.actualEndDate.$invalid && dateForm.actualEndDate.$dirty">{{'create.ticket.invalid.actual-end-date'|i18n}}</span>
|
|
<span ng-if="dateForm.deploymentStartDate.$invalid && dateForm.deploymentStartDate.$dirty">{{'create.ticket.invalid.deployment-start-date'|i18n}}</span>
|
|
<span ng-if="dateForm.deploymentEndDate.$invalid && dateForm.deploymentEndDate.$dirty">{{'create.ticket.invalid.deployment-end-date'|i18n}}</span>
|
|
<span ng-if="dateForm.targetDate.$invalid && dateForm.targetDate.$dirty">{{'create.ticket.invalid.target-date'|i18n}}</span>
|
|
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-5">
|
|
<div class="row">
|
|
<div class="row release-__dates_header">
|
|
<div class="col-xs-11 ticket__name" id="scheduledStart" class="label__text" ng-class="{'required__label' : (isFieldRequired('scheduledStartDate') && !makeScheduleDatesOptional)}"
|
|
data-required="{{'common.label.required.bracketed' | i18n}}">
|
|
{{ 'create.ticket.scheduled.date' | i18n }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-6" >
|
|
<div class="release-edit__date">
|
|
<label>
|
|
<input type="text"
|
|
potentially-required-field
|
|
field-name="scheduledStartDate"
|
|
placeholder="{{'create.change.wizard.dates.startDate' | i18n}}"
|
|
entity="ticket"
|
|
class="form-control"
|
|
name="scheduledStartDate"
|
|
title="{{'common.label.date' | i18n}}"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="ticket.scheduledStartDate"
|
|
is-open="ticket.scheduledStartDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="ticket.scheduledStartDatePicker.open = true"
|
|
ng-enter="ticket.scheduledStartDatePicker.open = true"
|
|
datepicker-options="datePickerOptions"
|
|
ng-disabled="!ticket.accessMappings.scheduleddateEditAllowed"
|
|
ng-change="updateDateTime('scheduled')"
|
|
ng-if="!isFieldRequired('scheduledStartDate') || makeScheduleDatesOptional"
|
|
aria-label="{{'common.aria.labels.scheduleStart' | i18n}} {{'common.aria.labels.dateField' | i18n}}"
|
|
/>
|
|
<i class="icon-calendar release-edit__date-icon"></i>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4 col-sm-6" >
|
|
<div class="release-edit__date">
|
|
<label>
|
|
<input type="text"
|
|
potentially-required-field
|
|
field-name="scheduledEndDate"
|
|
placeholder="{{'create.change.wizard.dates.endDate' | i18n}}"
|
|
entity="ticket"
|
|
class="form-control"
|
|
name="scheduledEndDate"
|
|
title="{{'common.label.date' | i18n}}"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="ticket.scheduledEndDate"
|
|
min-date="ticket.scheduledStartDate"
|
|
init-date="ticket.tempScheduledInit"
|
|
is-open="ticket.scheduledEndDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="ticket.scheduledEndDatePicker.open = true"
|
|
ng-enter="ticket.scheduledEndDatePicker.open = true"
|
|
datepicker-options="datePickerOptions"
|
|
ng-disabled="!ticket.accessMappings.scheduleddateEditAllowed"
|
|
ng-change="updateDateTime('scheduled')"
|
|
ng-if="!isFieldRequired('scheduledEndDate') || makeScheduleDatesOptional"
|
|
aria-label="{{'common.aria.labels.scheduleEnd' | i18n}} {{'common.aria.labels.dateField' | i18n}}"
|
|
/>
|
|
<i class="icon-calendar release-edit__date-icon"></i>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-6" >
|
|
<div class="release-edit__time">
|
|
<label>
|
|
<div class="dropdown timepicker">
|
|
<div class="dropdown-toggle">
|
|
<input class="form-control custom-field__time-input create-change-wizard__time_disabled"
|
|
type="text" value="{{ ticket.scheduledStartDate | date: 'shortTime' }}"
|
|
ng-disabled="validator.scheduledStartTimeDisabled(ticket, true, ignoreAccessMapping)"
|
|
title="{{'common.label.time' | i18n}}" aria-labelledby="scheduledStart"
|
|
placeholder="{{'create.change.wizard.dates.selectTime' | i18n}}" readonly="readonly"/>
|
|
<i class="icon-clock_o release-edit__time-icon"></i>
|
|
</div>
|
|
<div class="dropdown-menu" prevent-click-event ng-if="ticket.scheduledStartDate">
|
|
<timepicker ng-model="ticket.scheduledStartDate"
|
|
ng-change="updateDateTime('scheduled')"
|
|
show-meridian="showMeridian"
|
|
default-hours="12"
|
|
default-minutes="0">
|
|
</timepicker>
|
|
</div>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6" >
|
|
<div class="release-edit__time">
|
|
<label>
|
|
<div class="dropdown timepicker">
|
|
<div class="dropdown-toggle">
|
|
<input class="form-control custom-field__time-input create-change-wizard__time_disabled"
|
|
type="text" value="{{ ticket.scheduledEndDate | date: 'shortTime' }}"
|
|
ng-disabled="validator.scheduledEndTimeDisabled(ticket, true, ignoreAccessMapping)"
|
|
title="{{'common.label.time' | i18n}}" aria-labelledby="scheduledEndDate"
|
|
placeholder="{{'create.change.wizard.dates.selectTime' | i18n}}" readonly="readonly"/>
|
|
<i class="icon-clock_o release-edit__time-icon"></i>
|
|
</div>
|
|
<div class="dropdown-menu" prevent-click-event ng-if="ticket.scheduledEndDate">
|
|
<timepicker ng-model="ticket.scheduledEndDate"
|
|
ng-change="updateDateTime('scheduled')"
|
|
show-meridian="showMeridian"
|
|
default-hours="12"
|
|
default-minutes="0">
|
|
</timepicker>
|
|
</div>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-5" >
|
|
<div class="row">
|
|
<div class="row release-__dates_header">
|
|
<div id="actualStart" class="col-xs-11 ticket__name" ng-class="{'required__label' : (isFieldRequired('actualStartDate') && !makeActualDatesOptional)}"
|
|
data-required="{{'common.label.required.bracketed' | i18n}}">
|
|
{{ 'create.ticket.actual.date' | i18n }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-6" >
|
|
<div class="release-edit__date">
|
|
<label>
|
|
<input type="text"
|
|
potentially-required-field
|
|
field-name="actualStartDate"
|
|
placeholder="{{'create.change.wizard.dates.startDate' | i18n}}"
|
|
entity="ticket"
|
|
class="form-control"
|
|
name="actualStartDate"
|
|
title="{{'common.label.date' | i18n}}"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="ticket.actualStartDate"
|
|
is-open="ticket.actualStartDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="ticket.actualStartDatePicker.open = true"
|
|
ng-enter="ticket.actualStartDatePicker.open = true"
|
|
datepicker-options="datePickerOptions"
|
|
ng-disabled="validator.actualStartDateDisabled(ticket, true, ignoreAccessMapping)"
|
|
ng-change="updateDateTime('actual')"
|
|
ng-if="!isFieldRequired('actualStartDate') || makeActualDatesOptional"
|
|
aria-label="{{'common.aria.labels.actualStart' | i18n}} {{'common.aria.labels.dateField' | i18n}}"
|
|
/>
|
|
<i class="icon-calendar release-edit__date-icon"></i>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6" >
|
|
<div class="release-edit__date">
|
|
<label>
|
|
<input type="text"
|
|
potentially-required-field
|
|
field-name="actualEndDate"
|
|
placeholder="{{'create.change.wizard.dates.endDate' | i18n}}"
|
|
entity="ticket"
|
|
class="form-control"
|
|
name="actualEndDate"
|
|
title="{{'common.label.date' | i18n}}"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="ticket.actualEndDate"
|
|
min-date="ticket.actualStartDate"
|
|
init-date="ticket.tempActualInit"
|
|
is-open="ticket.actualEndDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="ticket.actualEndDatePicker.open = true"
|
|
ng-enter="ticket.actualEndDatePicker.open = true"
|
|
datepicker-options="datePickerOptions"
|
|
ng-disabled="validator.actualEndDateDisabled(ticket, true, ignoreAccessMapping)"
|
|
ng-change="updateDateTime('actual')"
|
|
ng-if="!isFieldRequired('actualEndDate') || makeActualDatesOptional"
|
|
aria-label="{{'common.aria.labels.actualEnd' | i18n}} {{'common.aria.labels.dateField' | i18n}}"
|
|
/>
|
|
<i class="icon-calendar release-edit__date-icon"></i>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-6" >
|
|
<div class="release-edit__time">
|
|
<label>
|
|
<div class="dropdown timepicker">
|
|
<div class="dropdown-toggle">
|
|
<input class="form-control custom-field__time-input create-change-wizard__time_disabled"
|
|
type="text" value="{{ ticket.actualStartDate | date: 'shortTime' }}"
|
|
ng-disabled="validator.actualStartTimeDisabled(ticket, true, ignoreAccessMapping)"
|
|
title="{{'common.label.time' | i18n}}" aria-labelledby="actualStartDate"
|
|
placeholder="{{'create.change.wizard.dates.selectTime' | i18n}}" readonly="readonly"/>
|
|
<i class="icon-clock_o release-edit__time-icon"></i>
|
|
</div>
|
|
<div class="dropdown-menu" prevent-click-event ng-if="ticket.actualStartDate">
|
|
<timepicker ng-model="ticket.actualStartDate"
|
|
ng-change="updateDateTime('actual')"
|
|
show-meridian="showMeridian"
|
|
default-hours="12"
|
|
default-minutes="0">
|
|
</timepicker>
|
|
</div>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6" >
|
|
<div class="release-edit__time">
|
|
<label>
|
|
<div class="dropdown timepicker">
|
|
<div class="dropdown-toggle">
|
|
<input class="form-control custom-field__time-input create-change-wizard__time_disabled"
|
|
type="text" value="{{ ticket.actualEndDate | date: 'shortTime' }}"
|
|
ng-disabled="validator.actualEndTimeDisabled(ticket, true, ignoreAccessMapping)"
|
|
title="{{'common.label.time' | i18n}}" aria-labelledby="actualEndDate"
|
|
placeholder="{{'create.change.wizard.dates.selectTime' | i18n}}" readonly="readonly"/>
|
|
<i class="icon-clock_o release-edit__time-icon"></i>
|
|
</div>
|
|
<div class="dropdown-menu" prevent-click-event ng-if="ticket.actualEndDate">
|
|
<timepicker ng-model="ticket.actualEndDate"
|
|
ng-change="updateDateTime('actual')"
|
|
show-meridian="showMeridian"
|
|
default-hours="12"
|
|
default-minutes="0">
|
|
</timepicker>
|
|
</div>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-5" >
|
|
<div class="row">
|
|
<div class="row release-__dates_header">
|
|
<div class="col-xs-11 ticket__name" ng-class="{'required__label' : (isFieldRequired('actualStartDate') && !makeActualDatesOptional)}"
|
|
data-required="{{'common.label.required.bracketed' | i18n}}">
|
|
{{ 'create.ticket.deployment.date' | i18n }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-6" >
|
|
<div class="release-edit__date">
|
|
<label>
|
|
<input type="text"
|
|
potentially-required-field
|
|
field-name="deploymentStartDate"
|
|
placeholder="{{'create.change.wizard.dates.startDate' | i18n}}"
|
|
entity="ticket"
|
|
class="form-control"
|
|
name="deploymentStartDate"
|
|
title="{{'common.label.date' | i18n}}"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="ticket.deploymentStartDate"
|
|
is-open="ticket.deploymentStartDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="ticket.deploymentStartDatePicker.open = true"
|
|
ng-enter="ticket.deploymentStartDatePicker.open = true"
|
|
datepicker-options="datePickerOptions"
|
|
ng-disabled="!ticket.accessMappings.deploymentDateEditAllowed"
|
|
ng-change="updateDateTime('deployment')"
|
|
aria-label="{{'common.aria.labels.deploymentStartDate' | i18n}} {{'common.aria.labels.dateField' | i18n}}"
|
|
/>
|
|
<i class="icon-calendar release-edit__date-icon"></i>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6" >
|
|
<div class="release-edit__date">
|
|
<label>
|
|
<input type="text"
|
|
potentially-required-field
|
|
field-name="deploymentEndDate"
|
|
placeholder="{{'create.change.wizard.dates.endDate' | i18n}}"
|
|
entity="ticket"
|
|
class="form-control"
|
|
name="deploymentEndDate"
|
|
title="{{'common.label.date' | i18n}}"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="ticket.deploymentEndDate"
|
|
min-date="ticket.deploymentStartDate"
|
|
init-date="ticket.tempDeploymentInit"
|
|
is-open="ticket.deploymentEndDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="ticket.deploymentEndDatePicker.open = true"
|
|
ng-enter="ticket.deploymentEndDatePicker.open = true"
|
|
datepicker-options="datePickerOptions"
|
|
ng-disabled="!ticket.accessMappings.deploymentDateEditAllowed"
|
|
ng-change="updateDateTime('deployment')"
|
|
aria-label="{{'common.aria.labels.deploymentEndDate' | i18n}} {{'common.aria.labels.dateField' | i18n}}"
|
|
/>
|
|
<i class="icon-calendar release-edit__date-icon"></i>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-6" >
|
|
<div class="release-edit__time">
|
|
<label>
|
|
<div class="dropdown timepicker">
|
|
<div class="dropdown-toggle">
|
|
<input class="form-control custom-field__time-input create-change-wizard__time_disabled"
|
|
type="text" value="{{ ticket.deploymentStartDate | date: 'shortTime' }}"
|
|
ng-disabled="validator.deploymentStartTimeDisabled(ticket, true, ignoreAccessMapping)"
|
|
title="{{'common.label.time' | i18n}}" aria-labelledby="deploymentStartDate"
|
|
placeholder="{{'create.change.wizard.dates.selectTime' | i18n}}" readonly="readonly"/>
|
|
<i class="icon-clock_o release-edit__time-icon"></i>
|
|
</div>
|
|
<div class="dropdown-menu" prevent-click-event ng-if="ticket.deploymentStartDate">
|
|
<timepicker ng-model="ticket.deploymentStartDate"
|
|
ng-change="updateDateTime('deployment')"
|
|
show-meridian="showMeridian"
|
|
default-hours="12"
|
|
default-minutes="0">
|
|
</timepicker>
|
|
</div>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6" >
|
|
<div class="release-edit__time">
|
|
<label>
|
|
<div class="dropdown timepicker">
|
|
<div class="dropdown-toggle">
|
|
<input class="form-control custom-field__time-input create-change-wizard__time_disabled"
|
|
type="text" value="{{ ticket.deploymentEndDate | date: 'shortTime' }}"
|
|
ng-disabled="validator.deploymentEndTimeDisabled(ticket, true, ignoreAccessMapping)"
|
|
title="{{'common.label.time' | i18n}}" aria-labelledby="deploymentEndDate"
|
|
placeholder="{{'create.change.wizard.dates.selectTime' | i18n}}" readonly="readonly"/>
|
|
<i class="icon-clock_o release-edit__time-icon"></i>
|
|
</div>
|
|
<div class="dropdown-menu" prevent-click-event ng-if="ticket.deploymentEndDate">
|
|
<timepicker ng-model="ticket.deploymentEndDate"
|
|
ng-change="updateDateTime('deployment')"
|
|
show-meridian="showMeridian"
|
|
default-hours="12"
|
|
default-minutes="0">
|
|
</timepicker>
|
|
</div>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-5" >
|
|
<div class="row">
|
|
<div class="row release-__dates_header">
|
|
<div class="col-xs-11 ticket__name">
|
|
{{'create.ticket.target.date' | i18n}}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-xs-12" >
|
|
<div class="release-edit__date">
|
|
<label>
|
|
<input type="text"
|
|
class="form-control"
|
|
name="targetDate"
|
|
placeholder="{{'create.change.wizard.dates.startDate' | i18n}}"
|
|
title="{{'common.label.date' | i18n}}"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="ticket.targetDate"
|
|
min-date="currentDate"
|
|
init-date="currentDate"
|
|
is-open="ticket.targetDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="ticket.targetDatePicker.open = true"
|
|
ng-enter="ticket.targetDatePicker.open = true"
|
|
datepicker-options="datePickerOptions"
|
|
ng-disabled="validator.targetDateDisabled(ticket, true, ignoreAccessMapping)"
|
|
ng-change="updateTargetDate()"
|
|
aria-label="{{'common.aria.labels.targetDate' | i18n}} {{'common.aria.labels.dateField' | i18n}}"
|
|
/>
|
|
<i class="icon-calendar release-edit__date-icon"></i>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-xs-12" >
|
|
<div class="release-edit__time">
|
|
<label>
|
|
<div class="dropdown timepicker">
|
|
<div class="dropdown-toggle">
|
|
<input class="form-control custom-field__time-input create-change-wizard__time_disabled"
|
|
type="text" value="{{ ticket.targetDate | date: 'shortTime' }}"
|
|
ng-disabled="validator.targetTimeDisabled(ticket, true, ignoreAccessMapping)"
|
|
title="{{'common.label.time' | i18n}}" aria-labelledby="targetDate"
|
|
placeholder="{{'create.change.wizard.dates.selectTime' | i18n}}" readonly="readonly"/>
|
|
<i class="icon-clock_o release-edit__time-icon"></i>
|
|
</div>
|
|
<div class="dropdown-menu" prevent-click-event ng-if="ticket.targetDate">
|
|
<timepicker ng-model="ticket.targetDate"
|
|
ng-change="updateDateTime('targetDate')"
|
|
show-meridian="showMeridian"
|
|
default-hours="12"
|
|
default-minutes="0">
|
|
</timepicker>
|
|
</div>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div> |