608 lines
48 KiB
HTML
608 lines
48 KiB
HTML
<div class="create-change-wizard__active-content">
|
|
<form class="create-change-wizard__dates-form" name="{{tabIds.wizard.dates}}">
|
|
<table class="create-change-wizard__dates-content">
|
|
<tr>
|
|
<td class="dates-column">
|
|
<div class="create-change-wizard__dates_container">
|
|
<div class="row create-change-wizard__dates_header">
|
|
<div class="col-xs-1">
|
|
<i class="create-change-wizard__scheduled_header_marker"></i>
|
|
</div>
|
|
<div class="col-xs-11 ticket__name" ng-class="{'required' : isFieldRequired('scheduledStartDate') || isFieldRequired('scheduledEndDate')}"
|
|
potentially-required-field
|
|
field-name="scheduledStartDate"
|
|
entity="draftTicket"
|
|
potentially-required-field
|
|
field-name="scheduledEndDate"
|
|
entity="draftTicket">
|
|
{{'create.change.wizard.dates.scheduled' | i18n}}
|
|
</div>
|
|
</div>
|
|
<div class="row ticket-date__form_invalid" ng-if="dates.scheduledStartDate.$invalid || dates.scheduledEndDate.$invalid">
|
|
<div class="col-xs-1">
|
|
</div>
|
|
<div class="col-xs-11">
|
|
<i class="icon-exclamation_triangle"
|
|
ng-if="(dates.scheduledStartDate.$invalid && dates.scheduledStartDate.$dirty) || (dates.scheduledEndDate.$invalid && dates.scheduledEndDate.$dirty)"></i>
|
|
<span ng-if="dates.scheduledStartDate.$invalid && dates.scheduledStartDate.$dirty">{{'create.ticket.invalid.scheduled-start-date'|i18n}}</span>
|
|
<span ng-if="dates.scheduledEndDate.$invalid && dates.scheduledEndDate.$dirty">{{'create.ticket.invalid.scheduled-end-date'|i18n}}</span>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-xs-1">
|
|
</div>
|
|
<div class="col-xs-5">
|
|
<div class="create-change-wizard__date">
|
|
<label>
|
|
<input type="text"
|
|
required
|
|
title="{{'common.label.date' | i18n}}"
|
|
class="form-control"
|
|
name="scheduledStartDate"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="context.scheduledStartDate"
|
|
placeholder="{{'create.change.wizard.dates.startDate' | i18n}}"
|
|
is-open="context.scheduledStartDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="openDatePicker(context.scheduledStartDatePicker, $event)"
|
|
ng-enter="openDatePicker(context.scheduledStartDatePicker)"
|
|
datepicker-options="datePickerOptions"
|
|
aria-label="{{'create.ticket.scheduled.start.date' | i18n}}"
|
|
ng-disabled="validator.scheduledStartDateDisabled(context, editMode) || !isFieldEditable('scheduledStartDate')"
|
|
ng-change="updateDateTime('scheduled')"
|
|
ng-if="isFieldRequired('scheduledStartDate')" auto-focus />
|
|
<input type="text"
|
|
potentially-required-field
|
|
field-name="scheduledStartDate"
|
|
entity="context"
|
|
title="{{'common.label.date' | i18n}}"
|
|
class="form-control"
|
|
name="scheduledStartDate"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="context.scheduledStartDate"
|
|
placeholder="{{'create.change.wizard.dates.startDate' | i18n}}"
|
|
is-open="context.scheduledStartDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="openDatePicker(context.scheduledStartDatePicker, $event)"
|
|
ng-enter="openDatePicker(context.scheduledStartDatePicker)"
|
|
datepicker-options="datePickerOptions"
|
|
aria-label="{{'create.ticket.scheduled.start.date' | i18n}}"
|
|
ng-disabled="validator.scheduledStartDateDisabled(context, editMode) || !isFieldEditable('scheduledStartDate')"
|
|
ng-change="updateDateTime('scheduled')"
|
|
ng-if="!isFieldRequired('scheduledStartDate')" auto-focus />
|
|
<i class="icon-calendar create-change-wizard__date-icon"></i>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-xs-5">
|
|
<div class="create-change-wizard__date">
|
|
<label>
|
|
<input type="text"
|
|
required
|
|
title="{{'common.label.date' | i18n}}"
|
|
class="form-control"
|
|
name="scheduledEndDate"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="context.scheduledEndDate"
|
|
min-date="context.scheduledStartDate"
|
|
init-date="context.scheduledStartDate"
|
|
placeholder="{{'create.change.wizard.dates.endDate' | i18n}}"
|
|
is-open="context.scheduledEndDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="openDatePicker(context.scheduledEndDatePicker, $event)"
|
|
ng-enter="openDatePicker(context.scheduledEndDatePicker)"
|
|
datepicker-options="datePickerOptions"
|
|
aria-label="{{'create.ticket.scheduled.end.date' | i18n}}"
|
|
ng-disabled="validator.scheduledEndDateDisabled(context, editMode) || !isFieldEditable('scheduledEndDate')"
|
|
ng-change="updateDateTime('scheduled')"
|
|
ng-if="isFieldRequired('scheduledEndDate')"/>
|
|
<input type="text"
|
|
potentially-required-field
|
|
field-name="scheduledEndDate"
|
|
entity="context"
|
|
title="{{'common.label.date' | i18n}}"
|
|
class="form-control"
|
|
name="scheduledEndDate"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="context.scheduledEndDate"
|
|
min-date="context.scheduledStartDate"
|
|
init-date="context.scheduledStartDate"
|
|
placeholder="{{'create.change.wizard.dates.endDate' | i18n}}"
|
|
is-open="context.scheduledEndDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="openDatePicker(context.scheduledEndDatePicker, $event)"
|
|
ng-enter="openDatePicker(context.scheduledEndDatePicker)"
|
|
datepicker-options="datePickerOptions"
|
|
aria-label="{{'create.ticket.scheduled.end.date' | i18n}}"
|
|
ng-disabled="validator.scheduledEndDateDisabled(context, editMode) || !isFieldEditable('scheduledEndDate')"
|
|
ng-change="updateDateTime('scheduled')"
|
|
ng-if="!isFieldRequired('scheduledEndDate')"/>
|
|
<i class="icon-calendar create-change-wizard__date-icon"></i>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-xs-1">
|
|
</div>
|
|
<div class="col-xs-5">
|
|
<div class="create-change-wizard__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="{{ context.scheduledStartDate | date: 'shortTime' }}"
|
|
ng-disabled="validator.scheduledStartTimeDisabled(context, editMode) || !isFieldEditable('scheduledStartDate')"
|
|
title="{{'common.label.time' | i18n}}" aria-label="scheduled start time"
|
|
placeholder="{{'create.change.wizard.dates.selectTime' | i18n}}" readonly="readonly"/>
|
|
<i class="icon-clock_o create-change-wizard__time-icon"></i>
|
|
</div>
|
|
<div class="dropdown-menu" prevent-click-event ng-if="context.scheduledStartDate"
|
|
ng-hide="validator.scheduledStartTimeDisabled(context, editMode)">
|
|
<timepicker ng-model="context.scheduledStartDate"
|
|
ng-change="updateDateTime('scheduled')"
|
|
show-meridian="showMeridian"
|
|
default-hours="12"
|
|
default-minutes="0">
|
|
</timepicker>
|
|
</div>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-xs-5">
|
|
<div class="create-change-wizard__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="{{ context.scheduledEndDate | date: 'shortTime' }}"
|
|
ng-disabled="validator.scheduledEndTimeDisabled(context, editMode) || !isFieldEditable('scheduledEndDate')"
|
|
title="{{'common.label.time' | i18n}}" aria-label="scheduled end time"
|
|
placeholder="{{'create.change.wizard.dates.selectTime' | i18n}}" readonly="readonly"/>
|
|
<i class="icon-clock_o create-change-wizard__time-icon"></i>
|
|
</div>
|
|
<div class="dropdown-menu" prevent-click-event ng-if="context.scheduledEndDate"
|
|
ng-hide="validator.scheduledEndTimeDisabled(context, editMode)">
|
|
<timepicker ng-model="context.scheduledEndDate"
|
|
ng-change="updateDateTime('scheduled')"
|
|
show-meridian="showMeridian"
|
|
default-hours="12"
|
|
default-minutes="0">
|
|
</timepicker>
|
|
</div>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row create-change-wizard__dates_header">
|
|
<div class="col-xs-1">
|
|
<i class="create-change-wizard__actual_header_marker"></i>
|
|
</div>
|
|
<div class="col-xs-11 ticket__name" ng-class="{'required' : isFieldRequired('actualStartDate') || isFieldRequired('actualEndDate')}"
|
|
potentially-required-field
|
|
field-name="actualStartDate"
|
|
entity="draftTicket"
|
|
potentially-required-field
|
|
field-name="actualEndDate"
|
|
entity="draftTicket">
|
|
{{'create.change.wizard.dates.actual' | i18n}}
|
|
</div>
|
|
</div>
|
|
<div class="row ticket-date__form_invalid" ng-if="dates.actualStartDate.$invalid || dates.actualEndDate.$invalid">
|
|
<div class="col-xs-1">
|
|
</div>
|
|
<div class="col-xs-11">
|
|
<i class="icon-exclamation_triangle"
|
|
ng-if="(dates.actualStartDate.$invalid && dates.actualStartDate.$dirty) || (dates.actualEndDate.$invalid && dates.actualEndDate.$dirty)"></i>
|
|
<span ng-if="dates.actualStartDate.$invalid && dates.actualStartDate.$dirty">{{'create.ticket.invalid.actual-start-date'|i18n}}</span>
|
|
<span ng-if="dates.actualEndDate.$invalid && dates.actualEndDate.$dirty">{{'create.ticket.invalid.actual-end-date'|i18n}}</span>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-xs-1">
|
|
</div>
|
|
<div class="col-xs-5">
|
|
<div class="create-change-wizard__date">
|
|
<label>
|
|
<input type="text"
|
|
required
|
|
title="{{'common.label.date' | i18n}}"
|
|
class="form-control"
|
|
name="actualStartDate"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="context.actualStartDate"
|
|
placeholder="{{'create.change.wizard.dates.startDate' | i18n}}"
|
|
is-open="context.actualStartDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="openDatePicker(context.actualStartDatePicker, $event)"
|
|
ng-enter="openDatePicker(context.actualStartDatePicker)"
|
|
datepicker-options="datePickerOptions"
|
|
aria-label="{{'create.ticket.actual.start.date' | i18n}}"
|
|
ng-disabled="validator.actualStartDateDisabled(context, editMode) || !isFieldEditable('actualStartDate')"
|
|
ng-change="updateDateTime('actual')"
|
|
ng-if="isFieldRequired('actualStartDate')"/>
|
|
<input type="text"
|
|
potentially-required-field
|
|
field-name="actualStartDate"
|
|
entity="context"
|
|
title="{{'common.label.date' | i18n}}"
|
|
class="form-control"
|
|
name="actualStartDate"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="context.actualStartDate"
|
|
placeholder="{{'create.change.wizard.dates.startDate' | i18n}}"
|
|
is-open="context.actualStartDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="openDatePicker(context.actualStartDatePicker, $event)"
|
|
ng-enter="openDatePicker(context.actualStartDatePicker)"
|
|
datepicker-options="datePickerOptions"
|
|
aria-label="{{'create.ticket.actual.start.date' | i18n}}"
|
|
ng-disabled="validator.actualStartDateDisabled(context, editMode) || !isFieldEditable('actualStartDate')"
|
|
ng-change="updateDateTime('actual')"
|
|
ng-if="!isFieldRequired('actualStartDate')"/>
|
|
<i class="icon-calendar create-change-wizard__date-icon"></i>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-xs-5">
|
|
<div class="create-change-wizard__date">
|
|
<label>
|
|
<input type="text"
|
|
required
|
|
title="{{'common.label.date' | i18n}}"
|
|
class="form-control"
|
|
name="actualEndDate"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="context.actualEndDate"
|
|
min-date="context.actualStartDate"
|
|
init-date="context.actualStartDate"
|
|
placeholder="{{'create.change.wizard.dates.endDate' | i18n}}"
|
|
is-open="context.actualEndDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="openDatePicker(context.actualEndDatePicker, $event)"
|
|
ng-enter="openDatePicker(context.actualEndDatePicker)"
|
|
datepicker-options="datePickerOptions"
|
|
aria-label="{{'create.ticket.actual.end.date' | i18n}}"
|
|
ng-disabled="validator.actualEndDateDisabled(context, editMode) || !isFieldEditable('actualEndDate')"
|
|
ng-change="updateDateTime('actual')"
|
|
ng-if="isFieldRequired('actualEndDate')"/>
|
|
<input type="text"
|
|
potentially-required-field
|
|
field-name="actualEndDate"
|
|
entity="context"
|
|
title="{{'common.label.date' | i18n}}"
|
|
class="form-control"
|
|
name="actualEndDate"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="context.actualEndDate"
|
|
min-date="context.actualStartDate"
|
|
init-date="context.actualStartDate"
|
|
placeholder="{{'create.change.wizard.dates.endDate' | i18n}}"
|
|
is-open="context.actualEndDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="openDatePicker(context.actualEndDatePicker, $event)"
|
|
ng-enter="openDatePicker(context.actualEndDatePicker)"
|
|
datepicker-options="datePickerOptions"
|
|
aria-label="{{'create.ticket.actual.end.date' | i18n}}"
|
|
ng-disabled="validator.actualEndDateDisabled(context, editMode) || !isFieldEditable('actualEndDate')"
|
|
ng-change="updateDateTime('actual')"
|
|
ng-if="!isFieldRequired('actualEndDate')"/>
|
|
<i class="icon-calendar create-change-wizard__date-icon"></i>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-xs-1">
|
|
</div>
|
|
<div class="col-xs-5">
|
|
<div class="create-change-wizard__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="{{ context.actualStartDate | date: 'shortTime' }}"
|
|
placeholder="{{'create.change.wizard.dates.selectTime' | i18n}}"
|
|
ng-disabled="validator.actualStartTimeDisabled(context, editMode) || !isFieldEditable('actualStartDate')"
|
|
title="{{'common.label.time' | i18n}}" aria-label="actual start time" readonly="readonly"/>
|
|
<i class="icon-clock_o create-change-wizard__time-icon"></i>
|
|
</div>
|
|
<div class="dropdown-menu" prevent-click-event ng-if="context.actualStartDate"
|
|
ng-hide="validator.actualStartTimeDisabled(context, editMode)">
|
|
<timepicker ng-model="context.actualStartDate"
|
|
ng-change="updateDateTime('actual')"
|
|
show-meridian="showMeridian"
|
|
default-hours="12"
|
|
default-minutes="0">
|
|
</timepicker>
|
|
</div>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-xs-5">
|
|
<div class="create-change-wizard__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="{{ context.actualEndDate | date: 'shortTime' }}"
|
|
placeholder="{{'create.change.wizard.dates.selectTime' | i18n}}"
|
|
ng-disabled="validator.actualEndTimeDisabled(context, editMode) || !isFieldEditable('actualEndDate')"
|
|
title="{{'common.label.time' | i18n}}" aria-label="actual end time" readonly="readonly"/>
|
|
<i class="icon-clock_o create-change-wizard__time-icon"></i>
|
|
</div>
|
|
<div class="dropdown-menu" prevent-click-event ng-if="context.actualEndDate"
|
|
ng-hide="validator.actualEndTimeDisabled(context, editMode)">
|
|
<timepicker ng-model="context.actualEndDate"
|
|
ng-change="updateDateTime('actual')"
|
|
show-meridian="showMeridian"
|
|
default-hours="12"
|
|
default-minutes="0">
|
|
</timepicker>
|
|
</div>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row create-change-wizard__dates_header" ng-if="!useTargetDateCheckboxVisible()">
|
|
<div class="col-xs-1">
|
|
<i class="create-change-wizard__target_header_marker"></i>
|
|
</div>
|
|
<div class="col-xs-11 ticket__name">
|
|
{{'create.change.wizard.dates.target.header' | i18n}}
|
|
</div>
|
|
</div>
|
|
<div class="row create-change-wizard__target_header_content" ng-if="useTargetDateCheckboxVisible()">
|
|
<div ng-class="{'dropdown-item_selected': context.useTargetDate, 'dropdown-item': !context.useTargetDate}"
|
|
ng-click="useTargetDateDisabled() || toggleUseTargetDate()"
|
|
ng-enter="useTargetDateDisabled() || toggleUseTargetDate()"
|
|
ng-disabled="useTargetDateDisabled() || !isFieldEditable('targetDate')"
|
|
aria-checked="{{!!context.useTargetDate}}"
|
|
title="{{'create.change.wizard.dates.target' | i18n}}"
|
|
tabindex="0"
|
|
role="menuitemcheckbox">
|
|
{{'create.change.wizard.dates.target' | i18n}}
|
|
</div>
|
|
</div>
|
|
<div class="row ticket-date__form_invalid" ng-if="targetDateErrorMessageVisible()">
|
|
<div class="col-xs-1">
|
|
</div>
|
|
<div class="col-xs-11">
|
|
<i class="icon-exclamation_triangle"></i>
|
|
<span ng-if="dates.targetDate.$invalid">{{'create.ticket.invalid.target-date'|i18n}}</span>
|
|
</div>
|
|
</div>
|
|
<div class="row" ng-show="targetDateFieldVisible()">
|
|
<div class="col-xs-1">
|
|
<i class="create-change-wizard__target_header_marker" ng-if="useTargetDateCheckboxVisible()"></i>
|
|
</div>
|
|
<div class="col-xs-5">
|
|
<div class="create-change-wizard__date">
|
|
<label>
|
|
<input type="text"
|
|
title="{{'common.label.date' | i18n}}"
|
|
class="form-control"
|
|
name="targetDate"
|
|
datepicker-popup="mediumDate"
|
|
ng-model="context.targetDate"
|
|
min-date="currentDate"
|
|
init-date="currentDate"
|
|
placeholder="{{'create.change.wizard.dates.selectDate' | i18n}}"
|
|
is-open="context.targetDatePicker.open"
|
|
show-button-bar="false"
|
|
ng-click="openDatePicker(context.targetDatePicker, $event)"
|
|
ng-enter="openDatePicker(context.targetDatePicker)"
|
|
datepicker-options="datePickerOptions"
|
|
aria-label="{{'create.ticket.target.date' | i18n}}"
|
|
ng-disabled="validator.targetDateDisabled(context, editMode) || !isFieldEditable('targetDate')"
|
|
ng-change="updateTargetDateTime()"/>
|
|
<i class="icon-calendar create-change-wizard__date-icon"></i>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-xs-5">
|
|
<div class="create-change-wizard__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="{{ context.targetDate | date: 'shortTime' }}"
|
|
placeholder="{{'create.change.wizard.dates.selectTime' | i18n}}"
|
|
ng-disabled="validator.targetTimeDisabled(context, editMode) || !isFieldEditable('targetDate')"
|
|
title="{{'common.label.time' | i18n}}" aria-label="target time" readonly="readonly"/>
|
|
<i class="icon-clock_o create-change-wizard__time-icon"></i>
|
|
</div>
|
|
<div class="dropdown-menu" prevent-click-event ng-if="context.targetDate"
|
|
ng-hide="validator.targetTimeDisabled(context, editMode)">
|
|
<timepicker ng-model="context.targetDate"
|
|
ng-change="updateTargetDateTime()"
|
|
show-meridian="showMeridian"
|
|
default-hours="12"
|
|
default-minutes="0">
|
|
</timepicker>
|
|
</div>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="change__edit-update-collisions" ng-show="!editMode && collisionStates.shouldRefreshCollisions">
|
|
<span>{{'create.change.wizard.dates.update.collisions' | i18n}}</span>
|
|
<button ng-click="editDatesView()" ng-enter="editDatesView()" class="btn_secondary" tabindex="0">
|
|
{{'collision.update.schedule' | i18n }}
|
|
</button>
|
|
</div>
|
|
|
|
<div class="change__edit-update-collisions" ng-show="editMode && collisionStates.saveDatesAndUpdate">
|
|
<button ng-click="saveDates()" ng-enter="saveDates()" class="btn_secondary">
|
|
{{'edit.dates.save.schedule' | i18n}}
|
|
</button>
|
|
</div>
|
|
|
|
<div class="row create-ticket__section-separator"></div>
|
|
<div loading-spinner if="state.loadingCollisions" centered="true" overlay="true"></div>
|
|
<div ng-if="collisionsCopy.changeList.length > 0">
|
|
<div class="row create-change-wizard__target_header">
|
|
<label class="label_control-wrap">
|
|
<div class="col-xs-1">
|
|
<div class="create-change-wizard__dates_collisions">{{collisionsCopy.changeList.length}}</div>
|
|
</div>
|
|
<div class="col-xs-11" ng-show="!editMode">
|
|
<h6>{{collisionsCopy.totalUnaddressedCount === 1 ? 'create.change.wizard.dates.collisions.singular' : 'create.change.wizard.dates.collisions.plural' | i18n:(collisionsCopy.totalUnaddressedCount)}}</h6>
|
|
|
|
</div>
|
|
<div class="col-xs-11" ng-show="editMode">
|
|
<h6>{{collisionsCopy.totalUnaddressedCount === 1 ? 'edit.dates.collisions.singular' : 'edit.dates.collisions.plural' | i18n:(collisionsCopy.totalUnaddressedCount)}}</h6>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
<div class="row" ng-show="!collisionStates.editCollisionStatus || (collisionStates.editCollisionStatus && disableCollisionManagement)">
|
|
<div class="create-change-wizard__dates-change-header col-sm-12">
|
|
<label>
|
|
<div class="col-sm-11 create-change-wizard__dates-change-icon">
|
|
{{'create.change.wizard.dates.changeRequestId' | i18n}}
|
|
</div>
|
|
<div class="col-sm-1 create-change-wizard__dates-change-icon"><i class="{{asc ? 'icon-triangle_down' : 'icon-triangle_up'}}" ng-click="asc = !asc" ng-enter="asc = !asc" tabindex="0"></i></div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="row" ng-show="collisionStates.editCollisionStatus && !disableCollisionManagement">
|
|
<div class="create-change-wizard__dates-change-header col-sm-7">
|
|
<label>
|
|
<div class="col-xs-10">
|
|
<div class="{{changeFlag ? 'dropdown-item_selected' : 'dropdown-item'}}" role="menuitemcheckbox" aria-checked="" ng-click="selectAllChanges(changeFlag)" ng-enter="selectAllChanges(changeFlag)" tabindex="0">
|
|
{{'create.change.wizard.dates.changeRequestId' | i18n}}
|
|
</div>
|
|
</div>
|
|
<div class="col-xs-2 create-change-wizard__dates-change-icon"><i class="{{asc ? 'icon-triangle_down' : 'icon-triangle_up'}}" ng-click="asc = !asc" ng-enter="asc = !asc" tabindex="0"></i></div>
|
|
</label>
|
|
</div>
|
|
<div class="col-sm-5 create-change-wizard__dates-change-mark-selected" align="center">
|
|
<div class="dropdown-input dropdown" tabindex="0">
|
|
<button class="dropdown-input__button btn_primary dropdown-toggle" aria-haspopup="true" aria-expanded="false" ng-disabled="collisionsSelected === 0">
|
|
{{'create.change.wizard.dates.markSelected' | i18n}}</button>
|
|
<ul class="dropdown-menu">
|
|
<li ng-repeat="item in collisionStatuses">
|
|
<div ng-click="markStatus(item)" ng-enter="markStatus(item)" class="dropdown-item" role="menuitem" tabindex="0">
|
|
{{item.label}}
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<table class="create-change-wizard__dates-change-table">
|
|
<tbody>
|
|
<tr ng-repeat="changeItem in (collisionsCopy.changeList | orderBy:'displayId':asc)">
|
|
<td>
|
|
<div class="col-sm-12 create-change-wizard__dates-dropdown-item">
|
|
<div class="col-sm-1"><i class="{{changeItem.show ? 'icon-angle_up' : 'icon-angle_down'}} create-change-wizard__dates-dropdown-chevron" ng-click="changeItem.show = !changeItem.show" ng-enter="changeItem.show = !changeItem.show" tabindex="0" ></i></div>
|
|
<div class="col-sm-10">
|
|
<div ng-if="collisionStates.editCollisionStatus && !disableCollisionManagement" class="{{changeItem.selected ? 'dropdown-item_selected' : 'dropdown-item'}}" role="menuitemcheckbox" aria-checked="" ng-click="selectChange(changeItem)" ng-enter="selectChange(changeItem)" title={{changeItem.displayId}} tabindex="0">
|
|
{{changeItem.displayId}}
|
|
<label>{{changeItem.ciCount === 1 ? 'collision.labels.collisionCI.singular' : 'collision.labels.collisionCI.plural' | i18n:(changeItem.ciCount)}}</label><label ng-if="(changeItem.configurationItems.length - changeItem.ciCount) > 0">{{'collision.labels.addressed' | i18n:(changeItem.configurationItems.length - changeItem.ciCount)}}</label>
|
|
</div>
|
|
<div ng-if="!collisionStates.editCollisionStatus || (collisionStates.editCollisionStatus && disableCollisionManagement)" title={{changeItem.displayId}} tabindex="0">
|
|
{{changeItem.displayId}}
|
|
<label>{{changeItem.ciCount === 1 ? 'collision.labels.collisionCI.singular' : 'collision.labels.collisionCI.plural' | i18n:(changeItem.ciCount)}}</label><label ng-if="(changeItem.configurationItems.length - changeItem.ciCount) > 0">{{'collision.labels.addressed' | i18n:(changeItem.configurationItems.length - changeItem.ciCount)}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-1">
|
|
<div class="create-change-wizard__dates_collisions-weekend" ng-if="!showWeekends && changeItem.fallsOnWeekend">
|
|
<span class="icon-exclamation_triangle" tooltip-placement="top" tooltip="{{'collision.warning.weekend' | i18n}}"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div ng-show="changeItem.show">
|
|
<div class="col-sm-12 create-change-wizard__dates-dropdown-item" ng-repeat="ci in (changeItem.configurationItems | orderBy:'name':asc) ">
|
|
<div class="col-sm-1">
|
|
</div>
|
|
<div ng-if="!collisionStates.editCollisionStatus || (collisionStates.editCollisionStatus && disableCollisionManagement)" class="col-sm-11">
|
|
<div class="row">
|
|
<div class="col-sm-8" title={{ci.name}} tabindex="0">
|
|
{{ci.name}}
|
|
</div>
|
|
<div class="col-sm-4" >
|
|
<div class="create-change-wizard__dates-rationale-label" ng-if="ci.status">
|
|
<span>{{ci.status.name | localizeLabel: 'collisionStatus':'change'}}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-8" ng-if="ci.rationale"><label>{{ci.rationale}}</label></div>
|
|
<div class="pull-right">
|
|
<div><a href="#/person/{{ci.rationaleUser.loginId | escape}}">{{ci.rationaleUser.fullName}}</a></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div ng-if="collisionStates.editCollisionStatus && !disableCollisionManagement" class="col-sm-11">
|
|
<div class="row">
|
|
<div class="col-sm-8 {{ci.selected ? 'dropdown-item_selected' : 'dropdown-item'}}" role="menuitemcheckbox" ng-click="selectCIs(ci, changeItem)" ng-enter="selectCIs(ci, changeItem)" aria-checked="" title={{ci.name}} tabindex="0">
|
|
{{ci.name}}
|
|
</div>
|
|
<div class="col-sm-4" >
|
|
<div class="create-change-wizard__dates-rationale-label" ng-if="ci.status">
|
|
<span>
|
|
{{ci.status.name | localizeLabel: 'collisionStatus':'change'}}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-8" ng-if="ci.rationale"><label>{{ci.rationale}}</label></div>
|
|
<div class="pull-right"><a href="#/person/{{ci.rationaleUser.loginId | escape}}">{{ci.rationaleUser.fullName}}</a></div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="row" ng-if="editMode">
|
|
<div class="col-md-12">
|
|
<a class="collision-banner__send-email-link" ng-click="showEmailForm()" ng-if="collisionsCopy.count === 1" ng-enter="showEmailForm()" tabindex="0">
|
|
<span class="icon-envelope"></span> {{'collision.sendEmail.label.singular' |i18n }}
|
|
</a>
|
|
<a class="collision-banner__send-email-link" ng-click="showEmailForm()" ng-if="collisionsCopy.count > 1" ng-enter="showEmailForm()" tabindex="0">
|
|
<span class="icon-envelope"></span> {{'collision.sendEmail.label.plural' |i18n:collisionsCopy.count}}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-12">
|
|
<div ng-repeat="datesPanel in datesCustomFields[0].panels">
|
|
<custom-field-area ticket="context"
|
|
metadata="metadata"
|
|
ng-if="panelChildrenCount(datesPanel.name) > 0"
|
|
panel-id="{{screenLayout.name}}.{{datesPanel.name}}"
|
|
stacked="true"
|
|
edit-mode="editMode"
|
|
is-new="isNew"
|
|
class="editable-content-section-block"
|
|
update-is-handled-by-parent="true">
|
|
</custom-field-area>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td class="calendar-column">
|
|
<div class="create-change-wizard__calendar_container"
|
|
ng-class="{'create-change-wizard__calendar_container_expanded': expanded}">
|
|
<div ui-view></div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</form>
|
|
</div> |