SmartIT_Extensions/BMC/smart-it-full/views/create/create-activity.html

379 lines
16 KiB
HTML

<div class="create-activity clearfix">
<div class="create-form-wrapper">
<div loading-spinner class="create-ticket__loading-spinner" if="state.dataIsLoading" centered="true" overlay="true"></div>
<div class="clearfix">
<form name="createActivityForm" novalidate>
<div class="create-ticket__header">
<h3 class="create-ticket__header-title">{{ 'create.activity.header' | i18n }}</h3>
<span ng-bind-html="'create.activity.sub.header' | i18n"></span>
</div>
<div class="create-activity__highlight-section">
{{'create.activity.activityFor' | i18n:draftTicket.parentId}}
</div>
<div class="create-ticket__full-width-section">
<div class="row">
<div class="col-sm-8 create-ticket__section">
<div class="clearfix">
<label class="label_control-wrap">
<span class="label__text"
prevent-click-event
potentially-required-field
field-name="summary"
entity="draftTicket">
{{ 'create.activity.summary' | i18n }}
</span>
<div class="create-ticket__item">
<input type="text"
prevent-click-event
potentially-required-field
field-name="summary"
entity="draftTicket"
title="{{ 'create.activity.summary' | i18n }}"
class="custom-input"
name="summary"
ng-model="draftTicket.summary"
maxlength="100"
placeholder="{{ 'create.activity.summary.placeholder' | i18n }}">
</div>
</label>
<character-limit-message field="incident.summary" limit="100"></character-limit-message>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-8 create-ticket__section">
<div class="create-ticket__item">
<edit-summary
label="{{'common.label.desc' | i18n}}"
is-desc-required="false"
ticket="draftTicket"
context="'create'"
textplaceholder="'create.activity.desc.placeholder' | i18n"
attachment="false">
</edit-summary>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-8">
<div class="row">
<div class="col-sm-4 create-ticket__section">
<label class="label_control-wrap">
<span class="label__text required__label"
data-required="{{'common.label.required.bracketed' | i18n}}">
{{'create.release.wizard.basicDetails.priority' | i18n }}
</span>
<div class="create-ticket__item">
<selection selection-items="activityMetadata.priorities"
selected-item="draftTicket.priority"
title-text="{{'create.release.wizard.basicDetails.priority' | i18n | uppercase}}"
required="true"
label="label"
value="label"
aria-required="true"
field-name="priority"
entity="draftTicket"
update-selected-item="true">
</selection>
</div>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="create-ticket__full-width-section">
<div class="row">
<div class="col-sm-8 create-ticket__section">
<label class="label_control-wrap">
<span class="label__text">
{{'create.activity.location' | i18n }}
</span>
</label>
<foundation-selector ng-if="draftCreated" type="site" inline="true" multiple="false" options="siteOptions"
use-chunking="true" typeahead-mode="true" selected-foundations="draftTicket.location"></foundation-selector>
</div>
</div>
</div>
<div class="create-ticket__full-width-section">
<div class="row">
<div class="col-sm-4 create-ticket__section">
<div class="row">
<div class="release-point col-md-8 col-sm-12">
<label class="label_control-wrap">
<span id="scheduledStart" class="label__text">
{{ 'create.ticket.scheduled.start.time' | i18n }}
</span>
<div class="create-ticket__date-time-item">
<div class="custom-field__date">
<input type="text"
title="{{'common.label.date' | i18n}}"
class="form-control"
name="scheduledStartDate"
datepicker-popup="mediumDate"
ng-model="draftTicket.scheduledStartDate"
is-open="draftTicket.scheduledStartDatePicker.open"
show-button-bar="false"
ng-click="openDatePicker(draftTicket.scheduledStartDatePicker, $event)"
ng-enter="openDatePicker(draftTicket.scheduledStartDatePicker)"
datepicker-options="datePickerOptions"
aria-labelledby="scheduledStart"
ng-change="updateDateTime('scheduled')" />
<i class="icon-calendar create-release-wizard__date-icon"></i>
</div>
<div class="custom-field__time">
<div class="dropdown timepicker">
<div class="dropdown-toggle">
<input class="form-control custom-field__time-input create-release-wizard__time_disabled"
type="text" value="{{ draftTicket.scheduledStartDate | date: 'shortTime' }}"
ng-disabled="validator.scheduledStartTimeDisabled(draftTicket, editMode)"
title="{{'common.label.time' | i18n}}" aria-labelledby="scheduledStart"
readonly="readonly"/>
<i class="icon-clock_o create-release-wizard__time-icon"></i>
</div>
<div class="dropdown-menu" prevent-click-event ng-if="draftTicket.scheduledStartDate"
ng-hide="validator.scheduledStartTimeDisabled(draftTicket, editMode)">
<timepicker ng-model="draftTicket.scheduledStartDate"
ng-change="updateDateTime('scheduled')"
show-meridian="showMeridian"
default-hours="12"
default-minutes="0">
</timepicker>
</div>
</div>
</div>
</div>
</label>
</div>
</div>
<div class="row">
<div class="release-point col-md-8 col-sm-12">
<label class="label_control-wrap">
<span id="scheduledEnd" class="label__text">
{{ 'create.ticket.scheduled.end.time' | i18n }}
</span>
<div class="create-ticket__date-time-item">
<div class="custom-field__date">
<input type="text"
title="{{'common.label.date' | i18n}}"
class="form-control"
name="scheduledEndDate"
datepicker-popup="mediumDate"
ng-model="draftTicket.scheduledEndDate"
is-open="draftTicket.scheduledEndDatePicker.open"
show-button-bar="false"
ng-click="openDatePicker(draftTicket.scheduledEndDatePicker, $event)"
ng-enter="openDatePicker(draftTicket.scheduledEndDatePicker)"
datepicker-options="datePickerOptions"
aria-labelledby="scheduledEnd"
ng-change="updateDateTime('scheduled')" />
<i class="icon-calendar create-release-wizard__date-icon"></i>
</div>
<div class="custom-field__time">
<div class="dropdown timepicker">
<div class="dropdown-toggle">
<input class="form-control custom-field__time-input create-release-wizard__time_disabled"
type="text" value="{{ draftTicket.scheduledEndDate | date: 'shortTime' }}"
ng-disabled="validator.scheduledEndTimeDisabled(draftTicket, editMode)"
title="{{'common.label.time' | i18n}}" aria-labelledby="scheduledEnd"
readonly="readonly"/>
<i class="icon-clock_o create-release-wizard__time-icon"></i>
</div>
<div class="dropdown-menu" prevent-click-event ng-if="draftTicket.scheduledEndDate"
ng-hide="validator.scheduledEndTimeDisabled(draftTicket, editMode)">
<timepicker ng-model="draftTicket.scheduledEndDate"
ng-change="updateDateTime('scheduled')"
show-meridian="showMeridian"
default-hours="12"
default-minutes="0">
</timepicker>
</div>
</div>
</div>
</div>
</label>
</div>
</div>
</div>
<div class="col-sm-4 create-ticket__section">
<div class="row">
<div class="release-point col-md-8 col-sm-12">
<label class="label_control-wrap">
<span id="actualStart" class="label__text">
{{ 'create.ticket.actual.start.time' | i18n }}
</span>
<div class="create-ticket__date-time-item">
<div class="custom-field__date">
<input type="text"
title="{{'common.label.date' | i18n}}"
class="form-control"
name="actualStartDate"
datepicker-popup="mediumDate"
ng-model="draftTicket.actualStartDate"
is-open="draftTicket.actualStartDatePicker.open"
show-button-bar="false"
ng-click="openDatePicker(draftTicket.actualStartDatePicker, $event)"
ng-enter="openDatePicker(draftTicket.actualStartDatePicker)"
datepicker-options="datePickerOptions"
aria-labelledby="actualStart"
ng-change="updateDateTime('actual')" />
<i class="icon-calendar create-release-wizard__date-icon"></i>
</div>
<div class="custom-field__time">
<div class="dropdown timepicker">
<div class="dropdown-toggle">
<input class="form-control custom-field__time-input create-release-wizard__time_disabled"
type="text" value="{{ draftTicket.actualStartDate | date: 'shortTime' }}"
ng-disabled="validator.actualStartTimeDisabled(draftTicket, editMode)"
title="{{'common.label.time' | i18n}}" aria-labelledby="actualStart"
readonly="readonly"/>
<i class="icon-clock_o create-release-wizard__time-icon"></i>
</div>
<div class="dropdown-menu" prevent-click-event ng-if="draftTicket.actualStartDate"
ng-hide="validator.actualStartTimeDisabled(draftTicket, editMode)">
<timepicker ng-model="draftTicket.actualStartDate"
ng-change="updateDateTime('actual')"
show-meridian="showMeridian"
default-hours="12"
default-minutes="0">
</timepicker>
</div>
</div>
</div>
</div>
</label>
</div>
</div>
<div class="row">
<div class="release-point col-md-8 col-sm-12">
<label class="label_control-wrap">
<span id="actualEnd" class="label__text">
{{ 'create.ticket.actual.end.time' | i18n }}
</span>
<div class="create-ticket__date-time-item">
<div class="custom-field__date">
<input type="text"
title="{{'common.label.date' | i18n}}"
class="form-control"
name="actualEndDate"
datepicker-popup="mediumDate"
ng-model="draftTicket.actualEndDate"
is-open="draftTicket.actualEndDatePicker.open"
show-button-bar="false"
ng-click="openDatePicker(draftTicket.actualEndDatePicker, $event)"
ng-enter="openDatePicker(draftTicket.actualEndDatePicker)"
datepicker-options="datePickerOptions"
aria-labelledby="actualEnd"
ng-change="updateDateTime('actual')" />
<i class="icon-calendar create-release-wizard__date-icon"></i>
</div>
<div class="custom-field__time">
<div class="dropdown timepicker">
<div class="dropdown-toggle">
<input class="form-control custom-field__time-input create-release-wizard__time_disabled"
type="text" value="{{ draftTicket.actualEndDate | date: 'shortTime' }}"
ng-disabled="validator.actualEndTimeDisabled(draftTicket, editMode)"
title="{{'common.label.time' | i18n}}" aria-labelledby="actualEnd"
readonly="readonly"/>
<i class="icon-clock_o create-release-wizard__time-icon"></i>
</div>
<div class="dropdown-menu" prevent-click-event ng-if="draftTicket.actualEndDate"
ng-hide="validator.actualEndTimeDisabled(draftTicket, editMode)">
<timepicker ng-model="draftTicket.actualEndDate"
ng-change="updateDateTime('actual')"
show-meridian="showMeridian"
default-hours="12"
default-minutes="0">
</timepicker>
</div>
</div>
</div>
</div>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="create-ticket__full-width-section">
<div class="row">
<div class="col-sm-12 create-ticket__section">
<span class="label__text">{{ 'create.ticket.assignee' | i18n }}</span>
<div class="create-ticket__section">
<div class="auto-assign__text" ng-if="draftTicket.autoAssignAssignee">
{{ 'create.ticket.auto.assign' | i18n }}
</div>
<div class="create-ticket__assignment" ng-if="!draftTicket.autoAssignAssignee">
<img ng-if="draftTicket.assignee.loginId" alt="{{draftTicket.assignee.fullName}}" class="ticket-assignee__thumbnail" imgplaceholder="user"
thumbnail-img="{{'data:' + draftTicket.assignee.thumbnailMime + ';base64,' + incident.assignee.thumbnail}}" />
<span ng-if="!draftTicket.assignee.loginId" class="ticket-assignee__none icon-question_circle"></span>
<div class="ticket-assignee__info">
<div class="ticket__label-small">{{'common.labels.assignedTo' | i18n }}:</div>
<span ng-if="!draftTicket.assignee.loginId" class="ticket__field-value">{{'common.label.noneYet' | i18n }}</span>
<span ng-if="draftTicket.assignee.loginId" class="ticket__field-value">{{draftTicket.assignee.fullName}}</span>
</div>
<div class="ticket-assignee__support-group">
<div class="ticket__label-small">{{'common.labels.supportGroup' | i18n}}:</div>
<span class="ticket__field-value">{{ draftTicket.supportGroup.name || ('common.label.noneYet' | i18n ) }}</span>
</div>
</div>
<div class="ticket-new-incident-assignee__action" ng-click="assignToMe($event, 'ticketassignee')" ng-enter="assignToMe($event, 'ticketassignee')" ng-if="draftTicket.assignee.id !== loggedInUserId">
<i class="icon-user_plus"></i>
<a aria-label="{{'common.labels.assignToMe' | i18n}} {{'common.aria.labels.assignToMeAsAssignee' | i18n}}"href="">
{{'common.labels.assignToMe' | i18n }}
</a>
</div>
<button type="button" class="btn_primary ticket-template__assignment-btn " aria-label="{{ 'create.ticket.assignment' | i18n }}" ng-click="assign($event)">{{ 'create.ticket.assignment' | i18n }}</button>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="create-ticket__action-panel">
<span class="create-ticket__form_invalid" ng-if="createActivityForm.$invalid">
<i class="icon-exclamation_triangle"></i>
<span ng-if="createActivityForm.$error.required.length">{{createActivityForm.$error.required.length}} {{ 'create.ticket.more.required.fields' | i18n }}</span>
<span ng-if="createActivityForm.scheduledStartDate.$invalid && createActivityForm.scheduledStartDate.$dirty">{{'create.ticket.invalid.scheduled-start-date'|i18n}}</span>
<span ng-if="createActivityForm.scheduledEndDate.$invalid && createActivityForm.scheduledEndDate.$dirty">{{'create.ticket.invalid.scheduled-end-date'|i18n}}</span>
<span ng-if="createActivityForm.actualStartDate.$invalid && createActivityForm.actualStartDate.$dirty">{{'create.ticket.invalid.actual-start-date'|i18n}}</span>
<span ng-if="createActivityForm.actualEndDate.$invalid && createActivityForm.actualEndDate.$dirty">{{'create.ticket.invalid.actual-end-date'|i18n}}</span>
<span ng-if="formContainsInvalidFields(createActivityForm)">{{ 'create.ticket.invalid.fields' | i18n }}</span>
</span>
<span class="font-size-m" ng-if="createActivityForm.$valid">
<i class="icon-check"></i>
{{ 'create.ticket.all.required.fields.complete' | i18n }}
</span>
<div class="pull-right">
<button type="submit" class="btn_primary create-ticket__action-btn" ng-disabled="createActivityForm.$invalid || state.dataIsLoading" ng-click="createActivity()">
{{ 'common.button.saveTicket' | i18n }}
</button>
<button type="button" class="btn_secondary action-panel__cancel-btn" ng-disabled="state.dataIsLoading" ng-click="cancel()">
{{ 'common.button.cancel' | i18n }}
</button>
</div>
</div>
</div>