167 lines
10 KiB
HTML
167 lines
10 KiB
HTML
<div ux-id="person-preview" class="person-preview">
|
|
|
|
<div class="relative-position">
|
|
<div loading-spinner if="state.loadingSummaryStats || state.loadingPersonDetails" centered="true" overlay="true"></div>
|
|
<div class="person-preview__details">
|
|
|
|
<div class="person-preview__details-panel col-sm-4">
|
|
<img ux-id="avatar" alt="{{person.firstName}} {{person.lastName}}" class="person-preview__avatar"
|
|
user-availability="person" thumbnail-img="{{'data:' + person.thumbnailMime + ';base64,' + person.thumbnail}}" imgplaceholder="user" />
|
|
<div class="person-preview__customer-details">
|
|
<span class="person-preview__list-item-highlight"><a ux-id="full-name" href="#/{{ pvEnabled ? 'personPV' : 'person' }}/{{person.id | escape}}">{{person.fullName}}</a></span>
|
|
<span ux-id="is-vip" class="person-summary__VIP" ng-if="person.isVIP">{{'common.labels.vip' | i18n}}</span>
|
|
<div ux-id="department">{{person.department}}</div>
|
|
<div ux-id="organization">{{person.organization}}</div>
|
|
<div ux-id="company">{{person.company.name}}</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="person-preview__details-panel col-sm-4">
|
|
<div>
|
|
<div><a ux-id="phone" href="tel:{{person.phone}}">{{person.phone}}</a></div>
|
|
</div>
|
|
<div class="person-preview__list-item-highlight">
|
|
<a ux-id="email" href="mailto:{{person.email}}">{{person.email}}</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="person-preview__details-panel col-sm-4">
|
|
<span class="label__text">{{'common.label.site' | i18n}}</span>
|
|
<div ux-id="site-name">{{person.site.name}}</div>
|
|
<div ux-id="street">{{person.site.address.street}}</div>
|
|
<div ux-id="city">{{person.site.address.city}}{{person.site.address.state ? ',' : ''}}
|
|
{{person.site.address.state}}
|
|
{{person.site.address.zip}}</div>
|
|
<div ux-id="country">{{person.site.address.country}}</div>
|
|
<div ux-id="desklocation" ng-if="person.deskLocation">
|
|
<span class="person__info-label">{{'person.details.deskLocation' | i18n}}:</span>
|
|
<span class="person__point-value">{{person.deskLocation}}</span>
|
|
</div>
|
|
<get-directions destination = "person.site.address.address"></get-directions>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="person-service-summary__section">
|
|
<div class="person-service-summary__body">
|
|
<div class="person-preview-service-summary__rating-section ">
|
|
<div class="person-service-summary__title">{{'personInfoCard.label.serviceSummary' | i18n}}</div>
|
|
<div title="{{'personInfoCard.label.avgRating' | i18n : serviceSummary.ratingScore}}">
|
|
<span ng-repeat="marker in serviceSummary.ratingMarkers"
|
|
ng-class="{'icon-star_o': marker.value === 0, 'icon-star_half': marker.value === 50, 'icon-star': marker.value === 100}"
|
|
class="person-preview-service-summary__rating-star">
|
|
</span>
|
|
<span ux-id="rating-count" class="person-preview-service-summary__rating-count">
|
|
{{serviceSummary.ratingCount}} {{'personInfoCard.label.ratingCount' | i18n}}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="person-service-summary__escalation-section">
|
|
<span class="icon-exclamation_triangle"></span>
|
|
<span ux-id="escalation" class="person-service-summary__escalation">{{'personInfoCard.label.numberOfEscalations' | i18n: (serviceSummary.escalation)}}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div ux-d="person-custom-field" class="person-custom-field">
|
|
<custom-field-area ng-if="person" ticket="person" stacked="false"
|
|
panel-id="personDetailsScreen.Person Summary"
|
|
class="editable-content-section-block">
|
|
</custom-field-area>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div collapse="!displayFullProfile">
|
|
<div class="person-preview__Related-content-block" ng-class="{'person-preview__Related-content-block_no-data': personAssetList.length == 0 }" >
|
|
<div ux-id="assets-count" class="person-preview__header" ng-class="{'person-preview-no-data__header': personAssetList.length == 0 }">
|
|
{{'person.preview.assets'|i18n}} ({{personAssetList.length}})
|
|
</div>
|
|
<div class="person-preview__list-content">
|
|
<div loading-spinner if="state.loadingPersonAssets" centered="true"></div>
|
|
<div class="person-preview__list-item" ng-repeat="asset in personAssetList|orderBy:'name':false|limitTo:assetLimit">
|
|
<person-asset-with-checkbox-renderer data="asset" select-asset-item="selectAssetItem(asset)" show-item-details="showItemDetails(asset)" saved-template ="savedTemplate"></person-asset-with-checkbox-renderer>
|
|
</div>
|
|
</div>
|
|
<show-more-less limit="assetLimit" size="{{personAssetList.length}}"></show-more-less>
|
|
</div>
|
|
|
|
<div ux-id="open-tickets" class="person-preview__Related-content-block" ng-class="{'person-preview__Related-content-block_no-data': personOpenTicketsTotalMatches == 0 }" >
|
|
<div ux-id="open-tickets-count"
|
|
tabindex="0"
|
|
tooltip="{{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}"
|
|
aria-label="{{'common.tabs.openTickets'|i18n}} ({{personOpenTicketsTotalMatches}}) {{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}"
|
|
class="person-preview__header"
|
|
ng-class="{'person-preview-no-data__header': personOpenTicketsTotalMatches == 0 }">
|
|
{{'common.tabs.openTickets'|i18n}} ({{personOpenTicketsTotalMatches}})
|
|
</div>
|
|
<div class="person-preview__list-content">
|
|
<div loading-spinner if="state.loadingOpenTickets" centered="true"></div>
|
|
<div ux-id="ticket_{{index}}" class="person-preview__list-item" ng-repeat="ticket in personOpenTickets|limitTo:ticketOpenLimit" ng-click="showItemDetails(ticket, $event)">
|
|
<person-ticket-renderer data="ticket"></person-ticket-renderer>
|
|
</div>
|
|
</div>
|
|
<show-more-less ux-id="show-more" limit="ticketOpenLimit" size="{{personOpenTickets.length}}" get-more="getMoreOpenTickets()" total-size="{{personOpenTicketsTotalMatches}}"></show-more-less>
|
|
</div>
|
|
|
|
<div ux-id="open-sbe-tickets" class="person-preview__Related-content-block" ng-if="isServiceBrokerEnabled" ng-class="{'person-preview__Related-content-block_no-data': personOpenServiceBrokerTicketsTotalMatches == 0 }" >
|
|
<div ux-id="open-sbe-tickets-count"
|
|
tabindex="0"
|
|
aria-label="{{'common.tabs.openSBETickets'|i18n}} ({{personOpenServiceBrokerTicketsTotalMatches}}) {{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}"
|
|
tooltip="{{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}"
|
|
class="person-preview__header"
|
|
ng-class="{'person-preview-no-data__header': personOpenServiceBrokerTicketsTotalMatches == 0 }">
|
|
{{'common.tabs.openSBETickets'|i18n}} ({{personOpenServiceBrokerTicketsTotalMatches}})
|
|
</div>
|
|
<div class="person-preview__list-content">
|
|
<div loading-spinner if="state.loadingSBEOpenTickets" centered="true"></div>
|
|
<div ux-id="sbe-ticket_{{index}}" class="person-preview__list-item" ng-repeat="ticket in personOpenServiceBrokerTickets|limitTo:ticketSBEOpenLimit" ng-click="showItemDetails(ticket, $event)">
|
|
<person-ticket-renderer data="ticket"></person-ticket-renderer>
|
|
</div>
|
|
</div>
|
|
<show-more-less ux-id="show-more" limit="ticketSBEOpenLimit" size="{{personOpenServiceBrokerTickets.length}}" get-more="getMoreOpenServiceBrokerTickets()" total-size="{{personOpenServiceBrokerTicketsTotalMatches}}"></show-more-less>
|
|
</div>
|
|
|
|
<div ux-id="closed-tickets" class="person-preview__Related-content-block" ng-class="{'person-preview__Related-content-block_no-data': personClosedTicketsTotalMatches == 0 }" >
|
|
<div ux-id="closed-tickets-count"
|
|
tabindex="0"
|
|
aria-label="{{'person.preview.closedTickets'|i18n}} ({{personClosedTicketsTotalMatches}}) {{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}"
|
|
tooltip="{{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}"
|
|
class="person-preview__header"
|
|
ng-class="{'person-preview-no-data__header': personClosedTicketsTotalMatches == 0 }">
|
|
{{'person.preview.closedTickets'|i18n}} ({{personClosedTicketsTotalMatches}})
|
|
</div>
|
|
<div class="person-preview__list-content">
|
|
<div loading-spinner if="state.loadingClosedTickets" centered="true"></div>
|
|
<div ux-id="closed-ticket_{{index}}" class="person-preview__list-item" ng-repeat="ticket in personClosedTickets|limitTo:ticketCloseLimit" ng-click="showItemDetails(ticket, $event)">
|
|
<person-ticket-renderer data="ticket"></person-ticket-renderer>
|
|
</div>
|
|
</div>
|
|
<show-more-less ux-id="show-more" limit="ticketCloseLimit" size="{{personClosedTickets.length}}" get-more="getMoreClosedTickets()" total-size="{{personClosedTicketsTotalMatches}}"></show-more-less>
|
|
</div>
|
|
|
|
<div ux-id="closed-sbe-tickets" class="person-preview__Related-content-block" ng-if="isServiceBrokerEnabled" ng-class="{'person-preview__Related-content-block_no-data': personClosedServiceBrokerTicketsTotalMatches == 0 }">
|
|
<div ux-id="closed-sbe-ticket-count"
|
|
tabindex="0"
|
|
aria-label="{{'person.preview.closedSBETickets'|i18n}} ({{personClosedServiceBrokerTicketsTotalMatches}}) {{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}"
|
|
tooltip="{{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}"
|
|
class="person-preview__header"
|
|
ng-class="{'person-preview-no-data__header': personClosedServiceBrokerTicketsTotalMatches == 0 }">
|
|
{{'person.preview.closedSBETickets'|i18n}} ({{personClosedServiceBrokerTicketsTotalMatches}})
|
|
</div>
|
|
<div class="person-preview__list-content">
|
|
<div loading-spinner if="state.loadingSBEClosedTickets" centered="true"></div>
|
|
<div ux-id="closed-sbe-ticket_{{$index}}" class="person-preview__list-item" ng-repeat="ticket in personClosedServiceBrokerTickets|limitTo:ticketSBECloseLimit" ng-click="showItemDetails(ticket, $event)">
|
|
<person-ticket-renderer data="ticket"></person-ticket-renderer>
|
|
</div>
|
|
</div>
|
|
<show-more-less ux-id="show-more" limit="ticketSBECloseLimit" size="{{personClosedServiceBrokerTickets.length}}" get-more="getMoreClosedServiceBrokerTickets()" total-size="{{personClosedServiceBrokerTicketsTotalMatches}}"></show-more-less>
|
|
</div>
|
|
|
|
</div>
|
|
</div> |