SmartIT_Extensions/BMC/smart-it-full/views/ticket/activity-details.html

203 lines
12 KiB
HTML

<div loading-spinner if="state.dataIsLoading" centered="true" overlay="true"></div>
<!-- TODO: extract this block to directive -->
<div class="ticket__not-found" ng-if="!state.dataIsLoading && !basicData.id">
<h3>{{'activity.details.notFound' | i18n}}</h3>
</div>
<div class="ticket-details" ng-class="{'ticket__header-edit': editHeader}" ng-if="!state.dataIsLoading && basicData.id" aria-label="{{'common.button.activity' | i18n}} {{'ticket.region.details' | i18n}}" role="region">
<div class="ticket__header_activity clearfix">
<!--Ticket header section-->
<editable-content-section id="ticket-header" class="custom-edit-button" hide-edit-button="editDisabledFor('ticket-header')" edit-mode-allowed="basicData.accessMappings.summaryEditAllowed" aria-label="{{'ticket.region.header' | i18n}}" edit-button-label="'header'" role="region" tabindex="0">
<div ng-if="!editMode" class="ticket__management clearfix" ng-class="{'highlight-section':!basicData.summary}">
<!-- TODO: extract common blocks to directive -->
<div class="ticket__basic-info">
<div class="ticket__summary" ng-if="isFullVersion" title="{{basicData.summary}}">{{basicData.summary}}</div>
<div class="ticket__summary" ng-if="!isFullVersion" title="{{basicData.summary}}">
<a class="ticket__summary" href="#/activity/{{basicData.id}}">{{basicData.summary}}</a>
</div>
<div class="pull-left ticket__basic-info_left">
<div class="ticket__icon">
<span class="icon-activity"></span>
</div>
<div class="ticket__information">
<div class="ticket__name">{{basicData.displayId || ''}}</div>
<a class="ticket__name-link" aria-label="{{'search.preview.viewFullActivity' | i18n}}" ng-if="!isFullVersion" href="#/activity/{{basicData.id}}">{{'search.preview.viewFullActivity' | i18n}}</a>
<div ticket-priority-display priority-value="{{basicData.priority}}">
{{ basicData.priority | localizeLabel: 'priority':'incident' }}
</div>
<div class="ticket__lastupdated">{{'ticket.list.lastUpdated' | i18n : (basicData.modifiedDate | humanizedAbsoluteDateFormat)}}</div>
</div>
</div>
<div class="activity-controls" ng-if="isFullVersion">
<div class="profile-action-bar__item edit-ticket-header-button" ng-if="basicData.accessMappings.summaryEditAllowed"
title="{{'controls.action.edit' | i18n}}" aria-label="{{'common.aria.label.edit.header' | i18n}}" role="link" tabindex="0"
ng-click="handleExternalEditClick()" ng-enter="handleExternalEditClick()">
<i class="icon-pencil"></i>
</div>
<div class="profile-action-bar__item dropdown" title="{{'controls.action.share' | i18n}}">
<button type="button" class="btn_link dropdown-toggle" aria-label="{{'controls.action.share' | i18n}}">
<i class="icon-share"></i>
</button>
<ul class="profile-action-bar__item-menu dropdown-menu">
<li>
<div class="dropdown-item" ng-click="ticketActions.share()" tabindex="0" role="menuitem">
{{'action.ticket.email' | i18n: ('common.labels.' + basicData.type | i18n) }}
</div>
</li>
<li ng-if='chatModel.connected'>
<a class="dropdown-item profile-action-bar__item-menu_start-chat" tabindex="0" role="menuitem">
{{'chat.startFromTicket.headerMenu' | i18n: ('common.labels.' + basicData.type | i18n) }}
</a>
</li>
</ul>
</div>
<div class="profile-action-bar__item" role="link" tabindex="0" ng-click="toggleFollowingFlag()" ng-enter="toggleFollowingFlag()"
title="{{(basicData.following? 'controls.action.unfollow' : 'controls.action.follow') | i18n}}"
aria-label="{{(basicData.following? 'controls.action.unfollow' : 'controls.action.follow') | i18n}}">
<i class="{{basicData.following? 'icon-star' : 'icon-star_o'}}"></i>
</div>
<div class="profile-action-bar__item" role="link" tabindex="0" ng-click="refreshTicket()" ng-enter="refreshTicket()"
title="{{'common.labels.refresh' | i18n}}"
aria-label="{{'common.labels.refresh' | i18n}}">
<i class="icon-refresh"></i>
</div>
<launch-actions-dropdown ng-if="!isDraft" class="profile-action-bar__item profile-action-bar__item_text profile-action-bar__item-more-actions" context="basicData" drop-down-options="moreDropDownOptions"></launch-actions-dropdown>
</div>
</div>
</div>
<form name="editActivityHeaderSection">
<edit-header ticket="basicData" metadata="metadata" ng-if="editMode" update="ticketActions.editHeader(data)"></edit-header>
</form>
</editable-content-section>
<div class="activity-ticket__status-section" aria-label="{{'ticket.region.status' | i18n}}" role="region" tabindex="0">
<div class="activity-ticket__status-selector" role="link" tabindex="0"
aria-label="{{'ticket.region.status' | i18n}} {{ basicData.status.value | localizeLabel: 'status':'activity' }}"
ng-click="!basicData.accessMappings.statusEditAllowed || ticketActions.editStatus($event)"
ng-enter="!basicData.accessMappings.statusEditAllowed || ticketActions.editStatus($event)"
>
<div class="dropdown-toggle">
{{"common.labels.status" | i18n}} :
<span class="activity-status-value">{{ basicData.status.value | localizeLabel: 'status':'activity' }}</span>
<i class="icon-angle_down ticket__status-icon"></i>
</div>
</div>
<div class="ticket-status-section__sla-box clearfix">
<div class="sla-progress-bar__wrapper">
<sla-progress-bar ticket="basicData" class="sla-progress-bar" ng-if="basicData.SLA.slaProgressBarValid"></sla-progress-bar>
</div>
<sla-reach-time sla="basicData.SLA"></sla-reach-time>
</div>
</div>
<div class="ticket__parent-item-detail ng-binding ng-scope" aria-label="Parent Ticket" role="region" tabindex="0">
{{"common.labels.activityFor" | i18n}}
<strong>
<a aria-label="{{'activity.detail.requestedBy' | i18n}} {{basicData.requestedBy.fullName}}"
href="#/release/{{basicData.parentGuid | escape}}">{{basicData.parentId}}:</a>
</strong>
<span ng-if="basicData.parentTitle">{{basicData.parentTitle}}</span>
<span ng-if="!basicData.parentTitle">{{"activity.noParentRelease" | i18n}}</span>
</div>
</div>
<div class="ticket__body_activity">
<alert-carousel basic-data="basicData" alert-details="alertDetails" collisions="collisions" impact-analysis-status="basicData.impactAnalysisStatus" ng-if="alertDetails.alertItems.length > 0"></alert-carousel>
<editable-content-section id="ticket-record-summary" hide-edit-button="editDisabledFor('ticket-record-summary')" ticket="basicData"
edit-mode-allowed="basicData.accessMappings.detailsEditAllowed || basicData.accessMappings.requestedforEditAllowed || basicData.accessMappings.priorityEditAllowed || basicData.accessMappings.summaryEditAllowed" aria-label="{{'ticket.region.details' | i18n}}" role="region" tabindex="0"
edit-button-label="'details'">
<div class="activity-details__desc">
<edit-summary ticket="basicData" context="'detail'" class="editable-content-section-block" update-is-handled-by-parent="true" edit-disabled="!basicData.accessMappings.summaryEditAllowed">
</edit-summary>
</div>
<div class="activity-details__section">
<form name="editActivityDetailsSection">
<activity-details-editor ticket="basicData" metadata="metadata" class="editable-content-section-block" form="editActivityDetailsSection"></activity-details-editor>
</form>
</div>
</editable-content-section>
<div class="activity-ticket__assignment" aria-label="{{'ticket.region.assignment' | i18n}}" role="region" tabindex="0" ng-class="{'disable-edit': editDisabledFor('ticket-assignment')}">
<div class="editable-content-section__controls">
<div class="editable-content-section__edit-button" ng-if="basicData.accessMappings.detailsEditAllowed" ng-click="ticketActions.assign($event)" ng-enter="ticketActions.assign($event)" aria-label="{{'common.aria.label.edit.assignment' | i18n}}" role="link" tabindex="0">
<i class="icon icon-pencil icon-edit_sml"></i> {{'controls.action.edit' | i18n}}
</div>
</div>
<div class="row">
<div class="ticket__assignee col-sm-6">
<div class="col-sm-1">
<img ng-if="basicData.requestedBy.loginId" alt="{{basicData.requestedBy.fullName}}" class="ticket-assignee__thumbnail " user-availability="basicData.requestedBy" imgplaceholder="user"
thumbnail-img="{{'data:' + basicData.requestedBy.thumbnailMime + ';base64,' + basicData.requestedBy.thumbnail}}" />
<span ng-if="!basicData.requestedBy.fullName" class="ticket-assignee__none icon-question_circle"></span>
</div>
<div class="ticket-assignee__details">
<div class="ticket__label-small">{{'activity.detail.requestedBy' | i18n }}</div>
<span ng-if="!basicData.requestedBy.fullName" class="ticket__field-value">{{'common.label.noneYet' | i18n }}</span>
<span ng-if="basicData.requestedBy.fullName" class="ticket__field-value">
<a aria-label="{{'activity.detail.requestedBy' | i18n}} {{basicData.requestedBy.fullName}}"
href="#/person/{{basicData.assignee.id | escape}}">{{basicData.requestedBy.fullName}}</a>
</span>
</div>
</div>
<div class="ticket__assignee col-sm-6">
<div class="col-sm-1">
<img ng-if="basicData.assignee.loginId" alt="{{basicData.assignee.fullName}}" class="ticket-assignee__thumbnail " user-availability="basicData.assignee" imgplaceholder="user"
thumbnail-img="{{'data:' + basicData.assignee.thumbnailMime + ';base64,' + basicData.assignee.thumbnail}}" />
<span ng-if="!basicData.assignee.loginId" class="ticket-assignee__none icon-question_circle"></span>
</div>
<div class="ticket-assignee__details">
<div class="ticket__label-small">{{'activity.detail.assignedTo' | i18n }}</div>
<span ng-if="!basicData.assignee.loginId" class="ticket__field-value">{{'common.label.noneYet' | i18n }}</span>
<span ng-if="basicData.assignee.loginId" class="ticket__field-value">
<a aria-label="{{'activity.detail.assignee' | i18n}} {{basicData.assignee.fullName}}"
href="#/person/{{basicData.assignee.id | escape}}">{{basicData.assignee.fullName}}</a>
</span>
<div class="ticket-assignee__action" ng-if="basicData.accessMappings.assigneeSelfAssignmentAllowed && basicData.assignee.id !== loggedInUserId && isFullVersion"
ng-click="ticketActions.assignToMe($event, 'ticketassignee')" ng-enter="ticketActions.assign($event, 'ticketassignee')">
<i class="icon-user_plus"></i>
<a aria-label="{{'common.labels.assignToMe' | i18n}}" href="">
{{'common.labels.assignToMe' | i18n }}
</a>
</div>
</div>
</div>
</div>
</div>
<editable-content-section id="ticket-edit-date" hide-edit-button="editDisabledFor('ticket-edit-date')"
ticket="basicData"
class="ticket__dates"
edit-mode-allowed="basicData.accessMappings.detailsEditAllowed || basicData.accessMappings.requestedforEditAllowed || basicData.accessMappings.priorityEditAllowed || basicData.accessMappings.summaryEditAllowed"
aria-label="{{'ticket.region.details' | i18n}}" role="region" tabindex="0"
edit-button-label="'edit'">
<form name="forms.editActivityDateSection" novalidate>
<div class="activity-ticket__row">
<display-ticket-dates ticket="basicData" ng-if="!editMode"></display-ticket-dates>
</div>
<edit-activity-dates ticket="basicData" is-draft="isDraft" ng-show="editMode"
date-form="forms.editActivityDateSection"
class="editable-content-section-block"
update-is-handled-by-parent="true"></edit-activity-dates>
</form>
</editable-content-section>
<!-- Tasks & Linked Items -->
<div ng-if="isFullVersion" class="profile__relation" aria-label="{{'ticket.region.relationship' | i18n}}" role="region" tabindex="0">
<tabset justified="true" class="tabset_short-relative-tabs">
<tab heading="{{'common.label.tasks' | i18n}} ({{relationCounters.tasks}})">
<ticket-tasks ticket="basicData" relation-counters="relationCounters"></ticket-tasks>
</tab>
</tabset>
</div>
</div>
</div>