[ADF-1623] routing integration for Viewer (#2404)

* routed viewer (demo app)

* toolbar support

* app menu component for demo shell

* navigate back button

* fix unit tests

* improve viewer type detection and rendering

* download button

* automatic pdf rendition, spinners, ui tweaks

* border for pdf pages

* scroll top support

* docs update

* info drawer placeholder
This commit is contained in:
Denys Vuika
2017-10-03 11:57:23 +01:00
committed by Maurizio Vitale
parent 55a999b492
commit 93a87af4a5
40 changed files with 674 additions and 846 deletions

View File

@@ -4,80 +4,151 @@
[class.adf-viewer-inline-container]="!overlayMode">
<div class="adf-viewer-content">
<ng-container *ngIf="overlayMode">
<ng-container *ngIf="showToolbar">
<adf-toolbar color="default" class="adf-viewer-toolbar">
<adf-toolbar-title>
<span class="adf-viewer-filename">{{ displayName }}</span>
<button *ngIf="allowGoBack"
class="adf-viewer-close-button"
md-icon-button
mdTooltip="Back"
(click)="onBackButtonClick()">
<md-icon>arrow_back</md-icon>
</button>
<img [src]="mimeType | adfMimeTypeIcon">
<span>{{ displayName }}</span>
</adf-toolbar-title>
<button
md-icon-button
class="adf-viewer-close-button"
mdTooltip="Close and go back"
mdTooltipPosition="before"
(click)="close()"
aria-label="Close">
<md-icon>close</md-icon>
<ng-container *ngIf="allowOpenWith">
<button md-button [mdMenuTriggerFor]="mnuOpenWith">
<span>Open with</span>
<md-icon>arrow_drop_down</md-icon>
</button>
<md-menu #mnuOpenWith="mdMenu" [overlapTrigger]="false">
<button md-menu-item>
<md-icon>dialpad</md-icon>
<span>Option 1</span>
</button>
<button md-menu-item disabled>
<md-icon>voicemail</md-icon>
<span>Option 2</span>
</button>
<button md-menu-item>
<md-icon>notifications_off</md-icon>
<span>Option 3</span>
</button>
</md-menu>
</ng-container>
<adf-toolbar-divider></adf-toolbar-divider>
<button *ngIf="allowDownload" md-icon-button mdTooltip="Download" (click)="download()">
<md-icon>file_download</md-icon>
</button>
<button *ngIf="allowPrint" md-icon-button mdTooltip="Print">
<md-icon>print</md-icon>
</button>
<button *ngIf="allowShare" md-icon-button mdTooltip="Share">
<md-icon>share</md-icon>
</button>
<button md-icon-button [mdMenuTriggerFor]="mnuMoreActions" mdTooltip="More actions">
<md-icon>more_vert</md-icon>
</button>
<md-menu #mnuMoreActions="mdMenu">
<button md-menu-item>
<md-icon>dialpad</md-icon>
<span>Action One</span>
</button>
<button md-menu-item disabled>
<md-icon>voicemail</md-icon>
<span>Action Two</span>
</button>
<button md-menu-item>
<md-icon>notifications_off</md-icon>
<span>Action Three</span>
</button>
</md-menu>
<ng-container *ngIf="allowInfoDrawer">
<adf-toolbar-divider></adf-toolbar-divider>
<button md-icon-button mdTooltip="Info"
[color]="showInfoDrawer ? 'accent' : 'default'"
(click)="showInfoDrawer = !showInfoDrawer">
<md-icon>info_outline</md-icon>
</button>
</ng-container>
</adf-toolbar>
</ng-container>
<div class="adf-viewer-layout">
<ng-container *ngIf="isLoading">
<div class="adf-viewer__loading-screen">
<h2>Loading</h2>
<div>
<md-spinner></md-spinner>
</div>
</div>
</ng-container>
<div *ngIf="!isLoading" class="adf-viewer-layout">
<div class="adf-viewer-layout-content">
<div *ngIf="isLoaded()">
<div class="adf-viewer-content-container">
<div>
<div class="adf-viewer-content-container" [ngSwitch]="viewerType">
<ng-container *ngIf="isPdf()">
<adf-pdf-viewer
[showToolbar]="showToolbar"
[blobFile]="blobFile"
[urlFile]="urlFileContent"
[nameFile]="displayName">
</adf-pdf-viewer>
<ng-container *ngSwitchCase="'pdf'">
<adf-pdf-viewer [blobFile]="blobFile" [urlFile]="urlFileContent" [nameFile]="displayName"></adf-pdf-viewer>
</ng-container>
<ng-container *ngIf="isImage()">
<adf-img-viewer
[urlFile]="urlFileContent"
[nameFile]="displayName"
[blobFile]="blobFile">
</adf-img-viewer>
<ng-container *ngSwitchCase="'image'">
<adf-img-viewer [urlFile]="urlFileContent" [nameFile]="displayName" [blobFile]="blobFile"></adf-img-viewer>
</ng-container>
<ng-container *ngIf="isMedia()">
<adf-media-player
[urlFile]="urlFileContent"
[mimeType]="mimeType"
[blobFile]="blobFile"
[nameFile]="displayName">
</adf-media-player>
<ng-container *ngSwitchCase="'media'">
<adf-media-player [urlFile]="urlFileContent" [mimeType]="mimeType" [blobFile]="blobFile" [nameFile]="displayName"></adf-media-player>
</ng-container>
<ng-container *ngIf="isText() && !isExternalSupportedExtension()">
<ng-container *ngSwitchCase="'text'">
<adf-txt-viewer [urlFile]="urlFileContent" [blobFile]="blobFile"></adf-txt-viewer>
</ng-container>
<span *ngFor="let extensionTemplate of extensionTemplates">
<ng-template
*ngIf="extensionTemplate.isVisible"
[ngTemplateOutlet]="extensionTemplate.template"
[ngOutletContext]="{ urlFileContent: urlFileContent, extension:extension }">
</ng-template>
</span>
<ng-container *ngSwitchCase="'custom'">
<span *ngFor="let extensionTemplate of extensionTemplates">
<ng-template
*ngIf="extensionTemplate.isVisible"
[ngTemplateOutlet]="extensionTemplate.template"
[ngOutletContext]="{ urlFileContent: urlFileContent, extension:extension }">
</ng-template>
</span>
</ng-container>
<div *ngIf="!supportedExtension()" class="adf-viewer-unknown-content">
<adf-not-supported-format
*ngIf="!extensionTemplate"
[urlFile]="urlFileContent"
[blobFile]="blobFile"
[nameFile]="displayName"
[showToolbar]="showToolbar"
[nodeId]="fileNodeId">
</adf-not-supported-format>
</div>
<ng-container *ngSwitchDefault>
<adf-viewer-unknown-format></adf-viewer-unknown-format>
</ng-container>
</div>
</div>
</div>
<ng-container *ngIf="showInfoDrawer">
<div class="adf-viewer__info-drawer">
<md-tab-group md-stretch-tabs>
<md-tab label="Details">
<md-card>
DETAILS
</md-card>
</md-tab>
<md-tab label="Activity">
<md-card>
Activity
</md-card>
</md-tab>
</md-tab-group>
</div>
</ng-container>
</div>
</div>
</div>