mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ADF-2755] Fix preview overlay (#3208)
* Fix overlay in the new sidenav * Update wrong url * Enrich BlobPreviewService * Fix another previews * Filepreview use the same router outlet
This commit is contained in:
committed by
Eugenio Romano
parent
adfc5adba8
commit
fba23c4377
@@ -1,2 +1,3 @@
|
|||||||
<router-outlet></router-outlet>
|
<router-outlet></router-outlet>
|
||||||
<app-log></app-log>
|
<app-log></app-log>
|
||||||
|
<router-outlet name="overlay"></router-outlet>
|
||||||
|
@@ -34,6 +34,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
router-outlet[name="overlay"] + * {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 999999;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 425px) {
|
@media (max-width: 425px) {
|
||||||
adf-content-node-selector {
|
adf-content-node-selector {
|
||||||
.adf-content-node-selector-content-list {
|
.adf-content-node-selector-content-list {
|
||||||
|
@@ -39,6 +39,7 @@ import { TagComponent } from './components/tag/tag.component';
|
|||||||
import { SocialComponent } from './components/social/social.component';
|
import { SocialComponent } from './components/social/social.component';
|
||||||
import { VersionManagerDialogAdapterComponent } from './components/files/version-manager-dialog-adapter.component';
|
import { VersionManagerDialogAdapterComponent } from './components/files/version-manager-dialog-adapter.component';
|
||||||
import { MetadataDialogAdapterComponent } from './components/files/metadata-dialog-adapter.component';
|
import { MetadataDialogAdapterComponent } from './components/files/metadata-dialog-adapter.component';
|
||||||
|
import { BlobPreviewComponent } from './components/blob-preview/blob-preview.component';
|
||||||
|
|
||||||
import { ThemePickerModule } from './components/theme-picker/theme-picker';
|
import { ThemePickerModule } from './components/theme-picker/theme-picker';
|
||||||
import { DebugAppConfigService } from './services/debug-app-config.service';
|
import { DebugAppConfigService } from './services/debug-app-config.service';
|
||||||
@@ -49,6 +50,7 @@ import { TaskAttachmentsComponent } from './components/process-service/task-atta
|
|||||||
import { ProcessAttachmentsComponent } from './components/process-service/process-attachments.component';
|
import { ProcessAttachmentsComponent } from './components/process-service/process-attachments.component';
|
||||||
import { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component';
|
import { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component';
|
||||||
import { DemoPermissionComponent } from './components/permissions/demo-permissions.component';
|
import { DemoPermissionComponent } from './components/permissions/demo-permissions.component';
|
||||||
|
import { PreviewService } from './services/preview.service';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
@@ -98,7 +100,8 @@ import { DemoPermissionComponent } from './components/permissions/demo-permissio
|
|||||||
SharedLinkViewComponent,
|
SharedLinkViewComponent,
|
||||||
FormLoadingComponent,
|
FormLoadingComponent,
|
||||||
DemoPermissionComponent,
|
DemoPermissionComponent,
|
||||||
FormLoadingComponent
|
FormLoadingComponent,
|
||||||
|
BlobPreviewComponent
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
{ provide: AppConfigService, useClass: DebugAppConfigService },
|
{ provide: AppConfigService, useClass: DebugAppConfigService },
|
||||||
@@ -117,7 +120,8 @@ import { DemoPermissionComponent } from './components/permissions/demo-permissio
|
|||||||
name: 'lazy-loading',
|
name: 'lazy-loading',
|
||||||
source: 'resources/lazy-loading'
|
source: 'resources/lazy-loading'
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
PreviewService
|
||||||
],
|
],
|
||||||
entryComponents: [
|
entryComponents: [
|
||||||
VersionManagerDialogAdapterComponent,
|
VersionManagerDialogAdapterComponent,
|
||||||
|
@@ -46,15 +46,14 @@ import { OverlayViewerComponent } from './components/overlay-viewer/overlay-view
|
|||||||
import { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component';
|
import { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component';
|
||||||
import { FormLoadingComponent } from './components/form/form-loading.component';
|
import { FormLoadingComponent } from './components/form/form-loading.component';
|
||||||
import { DemoPermissionComponent } from './components/permissions/demo-permissions.component';
|
import { DemoPermissionComponent } from './components/permissions/demo-permissions.component';
|
||||||
|
import { BlobPreviewComponent } from './components/blob-preview/blob-preview.component';
|
||||||
|
|
||||||
export const appRoutes: Routes = [
|
export const appRoutes: Routes = [
|
||||||
{ path: 'login', component: LoginComponent },
|
{ path: 'login', component: LoginComponent },
|
||||||
{ path: 'settings', component: SettingsComponent },
|
{ path: 'settings', component: SettingsComponent },
|
||||||
{ path: 'files/:nodeId/view', component: FileViewComponent, canActivate: [ AuthGuardEcm ] },
|
{ path: 'files/:nodeId/view', component: FileViewComponent, canActivate: [ AuthGuardEcm ], outlet: 'overlay' },
|
||||||
{
|
{ path: 'preview/blob', component: BlobPreviewComponent, outlet: 'overlay', pathMatch: 'full' },
|
||||||
path: 'preview/s/:id',
|
{ path: 'preview/s/:id', component: SharedLinkViewComponent },
|
||||||
component: SharedLinkViewComponent
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
component: AppLayoutComponent,
|
component: AppLayoutComponent,
|
||||||
|
@@ -51,4 +51,4 @@
|
|||||||
</ng-template>
|
</ng-template>
|
||||||
</adf-sidenav-layout-content>
|
</adf-sidenav-layout-content>
|
||||||
|
|
||||||
</adf-sidenav-layout>
|
</adf-sidenav-layout>
|
@@ -0,0 +1,21 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
import { PreviewService } from '../../services/preview.service';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
templateUrl: 'bob-preview.component.html'
|
||||||
|
})
|
||||||
|
export class BlobPreviewComponent {
|
||||||
|
content: Blob;
|
||||||
|
name: string;
|
||||||
|
|
||||||
|
constructor(preview: PreviewService, router: Router) {
|
||||||
|
if (preview.content === null || preview.name === null) {
|
||||||
|
router.navigate([{ outlets: { overlay: null } }]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.content = preview.content;
|
||||||
|
this.name = preview.name;
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,5 @@
|
|||||||
|
<adf-viewer
|
||||||
|
[showViewer]="true"
|
||||||
|
[blobFile]="content"
|
||||||
|
[displayName]="name">
|
||||||
|
</adf-viewer>
|
@@ -38,6 +38,7 @@ import { SelectAppsDialogComponent } from '@alfresco/adf-process-services';
|
|||||||
import { VersionManagerDialogAdapterComponent } from './version-manager-dialog-adapter.component';
|
import { VersionManagerDialogAdapterComponent } from './version-manager-dialog-adapter.component';
|
||||||
import { MetadataDialogAdapterComponent } from './metadata-dialog-adapter.component';
|
import { MetadataDialogAdapterComponent } from './metadata-dialog-adapter.component';
|
||||||
import { Subscription } from 'rxjs/Subscription';
|
import { Subscription } from 'rxjs/Subscription';
|
||||||
|
import { PreviewService } from '../../services/preview.service';
|
||||||
|
|
||||||
const DEFAULT_FOLDER_TO_SHOW = '-my-';
|
const DEFAULT_FOLDER_TO_SHOW = '-my-';
|
||||||
|
|
||||||
@@ -163,6 +164,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
private logService: LogService,
|
private logService: LogService,
|
||||||
private preference: UserPreferencesService,
|
private preference: UserPreferencesService,
|
||||||
private appConfig: AppConfigService,
|
private appConfig: AppConfigService,
|
||||||
|
private preview: PreviewService,
|
||||||
@Optional() private route: ActivatedRoute,
|
@Optional() private route: ActivatedRoute,
|
||||||
public authenticationService: AuthenticationService) {
|
public authenticationService: AuthenticationService) {
|
||||||
this.preference.select(UserPreferenceValues.SupportedPageSizes)
|
this.preference.select(UserPreferenceValues.SupportedPageSizes)
|
||||||
@@ -174,7 +176,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
showFile(event) {
|
showFile(event) {
|
||||||
const entry = event.value.entry;
|
const entry = event.value.entry;
|
||||||
if (entry && entry.isFile) {
|
if (entry && entry.isFile) {
|
||||||
this.router.navigate(['/files', entry.id, 'view']);
|
this.preview.showResource(entry.id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -35,13 +35,4 @@
|
|||||||
</adf-create-process-attachment>
|
</adf-create-process-attachment>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="fileShowed">
|
|
||||||
<adf-viewer
|
|
||||||
[(showViewer)]="fileShowed"
|
|
||||||
[blobFile]="content"
|
|
||||||
[displayName]="contentName"
|
|
||||||
[overlayMode]="true">
|
|
||||||
</adf-viewer>
|
|
||||||
</div>
|
|
@@ -21,6 +21,7 @@ import { ProcessInstance, ProcessService ,
|
|||||||
import { UploadService } from '@alfresco/adf-core';
|
import { UploadService } from '@alfresco/adf-core';
|
||||||
import { AlfrescoApiService } from '@alfresco/adf-core';
|
import { AlfrescoApiService } from '@alfresco/adf-core';
|
||||||
import { AppConfigService } from '@alfresco/adf-core';
|
import { AppConfigService } from '@alfresco/adf-core';
|
||||||
|
import { PreviewService } from '../../services/preview.service';
|
||||||
|
|
||||||
export function processUploadServiceFactory(api: AlfrescoApiService, config: AppConfigService) {
|
export function processUploadServiceFactory(api: AlfrescoApiService, config: AppConfigService) {
|
||||||
return new ProcessUploadService(api, config);
|
return new ProcessUploadService(api, config);
|
||||||
@@ -47,14 +48,13 @@ export class ProcessAttachmentsComponent implements OnInit, OnChanges {
|
|||||||
@Input()
|
@Input()
|
||||||
processInstanceId: string;
|
processInstanceId: string;
|
||||||
|
|
||||||
fileShowed = false;
|
|
||||||
content: Blob;
|
|
||||||
contentName: string;
|
|
||||||
|
|
||||||
processInstance: ProcessInstance;
|
processInstance: ProcessInstance;
|
||||||
|
|
||||||
constructor(private uploadService: UploadService, private processService: ProcessService) {
|
constructor(
|
||||||
}
|
private uploadService: UploadService,
|
||||||
|
private processService: ProcessService,
|
||||||
|
private preview: PreviewService
|
||||||
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.uploadService.fileUploadComplete.subscribe(value => this.onFileUploadComplete(value.data));
|
this.uploadService.fileUploadComplete.subscribe(value => this.onFileUploadComplete(value.data));
|
||||||
@@ -74,9 +74,7 @@ export class ProcessAttachmentsComponent implements OnInit, OnChanges {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onAttachmentClick(content: any): void {
|
onAttachmentClick(content: any): void {
|
||||||
this.fileShowed = true;
|
this.preview.showBlob(content.name, content.contentBlob);
|
||||||
this.content = content.contentBlob;
|
|
||||||
this.contentName = content.name;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isCompletedProcess(): boolean {
|
isCompletedProcess(): boolean {
|
||||||
|
@@ -233,12 +233,3 @@
|
|||||||
</div>
|
</div>
|
||||||
</mat-tab>
|
</mat-tab>
|
||||||
</mat-tab-group>
|
</mat-tab-group>
|
||||||
|
|
||||||
<div *ngIf="fileShowed">
|
|
||||||
<adf-viewer
|
|
||||||
[(showViewer)]="fileShowed"
|
|
||||||
[blobFile]="content"
|
|
||||||
[displayName]="contentName"
|
|
||||||
[overlayMode]="true">
|
|
||||||
</adf-viewer>
|
|
||||||
</div>
|
|
||||||
|
@@ -63,6 +63,7 @@ import {
|
|||||||
import { Subscription } from 'rxjs/Subscription';
|
import { Subscription } from 'rxjs/Subscription';
|
||||||
import { /*CustomEditorComponent*/ CustomStencil01 } from './custom-editor/custom-editor.component';
|
import { /*CustomEditorComponent*/ CustomStencil01 } from './custom-editor/custom-editor.component';
|
||||||
import { DemoFieldValidator } from './demo-field-validator';
|
import { DemoFieldValidator } from './demo-field-validator';
|
||||||
|
import { PreviewService } from '../../services/preview.service';
|
||||||
|
|
||||||
const currentProcessIdNew = '__NEW__';
|
const currentProcessIdNew = '__NEW__';
|
||||||
const currentTaskIdNew = '__NEW__';
|
const currentTaskIdNew = '__NEW__';
|
||||||
@@ -111,14 +112,10 @@ export class ProcessServiceComponent implements AfterViewInit, OnDestroy, OnInit
|
|||||||
@Output()
|
@Output()
|
||||||
changePageSize: EventEmitter<Pagination> = new EventEmitter();
|
changePageSize: EventEmitter<Pagination> = new EventEmitter();
|
||||||
|
|
||||||
fileShowed = false;
|
|
||||||
selectFirstReport = false;
|
selectFirstReport = false;
|
||||||
|
|
||||||
private tabs = { tasks: 0, processes: 1, reports: 2 };
|
private tabs = { tasks: 0, processes: 1, reports: 2 };
|
||||||
|
|
||||||
content: Blob;
|
|
||||||
contentName: string;
|
|
||||||
|
|
||||||
layoutType: string;
|
layoutType: string;
|
||||||
currentTaskId: string;
|
currentTaskId: string;
|
||||||
currentProcessInstanceId: string;
|
currentProcessInstanceId: string;
|
||||||
@@ -161,6 +158,7 @@ export class ProcessServiceComponent implements AfterViewInit, OnDestroy, OnInit
|
|||||||
private apiService: AlfrescoApiService,
|
private apiService: AlfrescoApiService,
|
||||||
private logService: LogService,
|
private logService: LogService,
|
||||||
private appConfig: AppConfigService,
|
private appConfig: AppConfigService,
|
||||||
|
private preview: PreviewService,
|
||||||
formRenderingService: FormRenderingService,
|
formRenderingService: FormRenderingService,
|
||||||
formService: FormService,
|
formService: FormService,
|
||||||
private preferenceService: UserPreferencesService) {
|
private preferenceService: UserPreferencesService) {
|
||||||
@@ -385,9 +383,7 @@ export class ProcessServiceComponent implements AfterViewInit, OnDestroy, OnInit
|
|||||||
}
|
}
|
||||||
|
|
||||||
onContentClick(content: any): void {
|
onContentClick(content: any): void {
|
||||||
this.fileShowed = true;
|
this.preview.showBlob(content.name, content.contentBlob);
|
||||||
this.content = content.contentBlob;
|
|
||||||
this.contentName = content.name;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onAuditClick(event: any) {
|
onAuditClick(event: any) {
|
||||||
|
@@ -33,12 +33,3 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="fileShowed">
|
|
||||||
<adf-viewer
|
|
||||||
[(showViewer)]="fileShowed"
|
|
||||||
[blobFile]="content"
|
|
||||||
[displayName]="contentName"
|
|
||||||
[overlayMode]="true">
|
|
||||||
</adf-viewer>
|
|
||||||
</div>
|
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
import { Component, Input, OnChanges, OnInit, ViewChild } from '@angular/core';
|
import { Component, Input, OnChanges, OnInit, ViewChild } from '@angular/core';
|
||||||
import { TaskListService, TaskAttachmentListComponent, TaskDetailsModel, TaskUploadService } from '@alfresco/adf-process-services';
|
import { TaskListService, TaskAttachmentListComponent, TaskDetailsModel, TaskUploadService } from '@alfresco/adf-process-services';
|
||||||
import { UploadService, AlfrescoApiService, AppConfigService } from '@alfresco/adf-core';
|
import { UploadService, AlfrescoApiService, AppConfigService } from '@alfresco/adf-core';
|
||||||
|
import { PreviewService } from '../../services/preview.service';
|
||||||
|
|
||||||
export function taskUploadServiceFactory(api: AlfrescoApiService, config: AppConfigService) {
|
export function taskUploadServiceFactory(api: AlfrescoApiService, config: AppConfigService) {
|
||||||
return new TaskUploadService(api, config);
|
return new TaskUploadService(api, config);
|
||||||
@@ -44,14 +45,12 @@ export class TaskAttachmentsComponent implements OnInit, OnChanges {
|
|||||||
@Input()
|
@Input()
|
||||||
taskId: string;
|
taskId: string;
|
||||||
|
|
||||||
fileShowed = false;
|
|
||||||
content: Blob;
|
|
||||||
contentName: string;
|
|
||||||
|
|
||||||
taskDetails: any;
|
taskDetails: any;
|
||||||
|
|
||||||
constructor(private uploadService: UploadService, private activitiTaskList: TaskListService) {
|
constructor(
|
||||||
}
|
private uploadService: UploadService,
|
||||||
|
private activitiTaskList: TaskListService,
|
||||||
|
private preview: PreviewService) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.uploadService.fileUploadComplete.subscribe(value => this.onFileUploadComplete(value.data));
|
this.uploadService.fileUploadComplete.subscribe(value => this.onFileUploadComplete(value.data));
|
||||||
@@ -71,9 +70,7 @@ export class TaskAttachmentsComponent implements OnInit, OnChanges {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onAttachmentClick(content: any): void {
|
onAttachmentClick(content: any): void {
|
||||||
this.fileShowed = true;
|
this.preview.showBlob(content.name, content.contentBlob);
|
||||||
this.content = content.contentBlob;
|
|
||||||
this.contentName = content.name;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isCompletedTask(): boolean {
|
isCompletedTask(): boolean {
|
||||||
|
38
demo-shell/src/app/services/preview.service.ts
Normal file
38
demo-shell/src/app/services/preview.service.ts
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
/*!
|
||||||
|
* @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 { Injectable } from '@angular/core';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class PreviewService {
|
||||||
|
|
||||||
|
public content: Blob = null;
|
||||||
|
public name: string = null;
|
||||||
|
|
||||||
|
constructor(private router: Router) {}
|
||||||
|
|
||||||
|
showResource(resourceId): void {
|
||||||
|
this.router.navigate([{ outlets: { overlay: ['files', resourceId, 'view'] } }]);
|
||||||
|
}
|
||||||
|
|
||||||
|
showBlob(name: string, content: Blob): void {
|
||||||
|
this.name = name;
|
||||||
|
this.content = content;
|
||||||
|
this.router.navigate([{ outlets: { overlay: ['preview', 'blob'] } }]);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user