[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", "TAG": "Tag",
"SOCIAL": "Social", "SOCIAL": "Social",
"SETTINGS": "Settings", "SETTINGS": "Settings",
"OVERLAY_VIEWER": "Overlay Viewer",
"ABOUT": "About" "ABOUT": "About"
}, },
"DOCUMENT_LIST": { "DOCUMENT_LIST": {

View File

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

View File

@@ -41,6 +41,7 @@ import { UploadButtonComponent } from '@alfresco/adf-content-services';
import { FileViewComponent } from './components/file-view/file-view.component'; import { FileViewComponent } from './components/file-view/file-view.component';
import { CustomSourcesComponent } from './components/files/custom-sources.component'; import { CustomSourcesComponent } from './components/files/custom-sources.component';
import { FormListComponent } from './components/form/form-list.component'; import { FormListComponent } from './components/form/form-list.component';
import { OverlayViewerComponent } from './components/overlay-viewer/overlay-viewer.component';
export const appRoutes: Routes = [ export const appRoutes: Routes = [
{ path: 'login', component: LoginComponent }, { path: 'login', component: LoginComponent },
@@ -149,7 +150,12 @@ export const appRoutes: Routes = [
}, },
{ path: 'about', component: AboutComponent }, { path: 'about', component: AboutComponent },
{ path: 'form', component: FormComponent }, { 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: '/tag', icon: 'local_offer', title: 'APP_LAYOUT.TAG' },
{ href: '/social', icon: 'thumb_up', title: 'APP_LAYOUT.SOCIAL' }, { href: '/social', icon: 'thumb_up', title: 'APP_LAYOUT.SOCIAL' },
{ href: '/settings', icon: 'settings', title: 'APP_LAYOUT.SETTINGS' }, { 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' } { 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. | | print | any | Yes | Raised when user clicks the 'Print' button. |
| share | any | Yes | Raised when user clicks the 'Share' 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 ## Details
### Supported file formats ### Supported file formats

View File

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