[ADF-2032] viewer reopening fixes (#2739)

* viewer reopening fixes

* docs update
This commit is contained in:
Denys Vuika
2017-11-27 22:41:10 +00:00
committed by Eugenio Romano
parent 82dca30d7f
commit 2746b29984
8 changed files with 99 additions and 21 deletions

View File

@@ -20,6 +20,7 @@
"TAG": "Tag",
"SOCIAL": "Social",
"SETTINGS": "Settings",
"OVERLAY_VIEWER": "Overlay Viewer",
"ABOUT": "About"
},
"DOCUMENT_LIST": {

View File

@@ -20,6 +20,7 @@ import { AboutComponent } from './components/about/about.component';
import { FormComponent } from './components/form/form.component';
import { FormListComponent } from './components/form/form-list.component';
import { CustomSourcesComponent } from './components/files/custom-sources.component';
import { OverlayViewerComponent } from './components/overlay-viewer/overlay-viewer.component';
import { ProcessServiceComponent } from './components/process-service/process-service.component';
import { ShowDiagramComponent } from './components/process-service/show-diagram.component';
@@ -83,7 +84,8 @@ import { ProcessAttachmentsComponent } from './components/process-service/proces
CustomSourcesComponent,
VersionManagerDialogAdapterComponent,
TaskAttachmentsComponent,
ProcessAttachmentsComponent
ProcessAttachmentsComponent,
OverlayViewerComponent
],
providers: [
TranslateService,

View File

@@ -41,6 +41,7 @@ import { UploadButtonComponent } from '@alfresco/adf-content-services';
import { FileViewComponent } from './components/file-view/file-view.component';
import { CustomSourcesComponent } from './components/files/custom-sources.component';
import { FormListComponent } from './components/form/form-list.component';
import { OverlayViewerComponent } from './components/overlay-viewer/overlay-viewer.component';
export const appRoutes: Routes = [
{ path: 'login', component: LoginComponent },
@@ -149,7 +150,12 @@ export const appRoutes: Routes = [
},
{ path: 'about', component: AboutComponent },
{ path: 'form', component: FormComponent },
{ path: 'form-list', component: FormListComponent }
{ path: 'form-list', component: FormListComponent },
{
path: 'overlay-viewer',
component: OverlayViewerComponent,
canActivate: [AuthGuardEcm]
}
]
}
];

View File

@@ -41,6 +41,7 @@ export class AppLayoutComponent {
{ href: '/tag', icon: 'local_offer', title: 'APP_LAYOUT.TAG' },
{ href: '/social', icon: 'thumb_up', title: 'APP_LAYOUT.SOCIAL' },
{ href: '/settings', icon: 'settings', title: 'APP_LAYOUT.SETTINGS' },
{ href: '/overlay-viewer', icon: 'pageview', title: 'APP_LAYOUT.OVERLAY_VIEWER' },
{ href: '/about', icon: 'info_outline', title: 'APP_LAYOUT.ABOUT' }
];

View File

@@ -0,0 +1,12 @@
<h1>Overlay Viewer</h1>
<adf-document-list
currentFolderId="-my-"
(preview)="showPreview($event)">
</adf-document-list>
<adf-viewer
[(showViewer)]="showViewer"
[overlayMode]="true"
[fileNodeId]="nodeId">
</adf-viewer>

View File

@@ -0,0 +1,36 @@
/*!
* @license
* Copyright 2016 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Component, Input } from '@angular/core';
@Component({
templateUrl: 'overlay-viewer.component.html'
})
export class OverlayViewerComponent {
@Input()
showViewer: boolean = false;
nodeId: string;
showPreview(event) {
if (event.value.entry.isFile) {
this.nodeId = event.value.entry.id;
this.showViewer = true;
}
}
}

View File

@@ -67,6 +67,42 @@ Using with file url:
| print | any | Yes | Raised when user clicks the 'Print' button. |
| share | any | Yes | Raised when user clicks the 'Share' button. |
## Integrating with DocumentList component
Below is the most simple integration of Pagination and DocumentList components within your custom component:
```html
<adf-document-list
currentFolderId="-my-"
(preview)="showPreview($event)">
</adf-document-list>
<adf-viewer
[(showViewer)]="showViewer"
[overlayMode]="true"
[fileNodeId]="nodeId">
</adf-viewer>
```
And the component controller class implementation can look like the following:
```ts
export class OverlayViewerComponent {
@Input()
showViewer: boolean = false;
nodeId: string;
showPreview(event) {
if (event.value.entry.isFile) {
this.nodeId = event.value.entry.id;
this.showViewer = true;
}
}
}
```
## Details
### Supported file formats

View File

@@ -18,7 +18,7 @@
import { Location } from '@angular/common';
import {
Component, ContentChild, EventEmitter, HostListener,
Input, OnChanges, OnDestroy, Output, TemplateRef, ViewEncapsulation
Input, OnChanges, Output, SimpleChanges, TemplateRef, ViewEncapsulation
} from '@angular/core';
import { MinimalNodeEntryEntity } from 'alfresco-js-api';
import { BaseEvent } from '../../events';
@@ -37,7 +37,7 @@ import { ViewerToolbarComponent } from './viewer-toolbar.component';
host: { 'class': 'adf-viewer' },
encapsulation: ViewEncapsulation.None
})
export class ViewerComponent implements OnDestroy, OnChanges {
export class ViewerComponent implements OnChanges {
@ContentChild(ViewerToolbarComponent)
toolbar: ViewerToolbarComponent;
@@ -146,7 +146,7 @@ export class ViewerComponent implements OnDestroy, OnChanges {
private renditionService: RenditionsService) {
}
ngOnChanges(changes) {
ngOnChanges(changes: SimpleChanges) {
if (this.showViewer) {
if (!this.urlFile && !this.blobFile && !this.fileNodeId) {
throw new Error('Attribute urlFile or fileNodeId or blobFile is required');
@@ -308,26 +308,10 @@ export class ViewerComponent implements OnDestroy, OnChanges {
if (this.otherMenu) {
this.otherMenu.hidden = false;
}
this.cleanup();
this.showViewer = false;
this.showViewerChange.emit(this.showViewer);
}
/**
* cleanup before the close
*/
cleanup() {
this.urlFileContent = '';
this.displayName = '';
this.fileNodeId = null;
this.extension = null;
this.mimeType = null;
}
ngOnDestroy() {
this.cleanup();
}
/**
* get File name from url
*