[ADF-3223] Restore message directive files fix (#3499)

* fix restore notification

* improve path specification property

* fix lint and document issues

* fix test

* remove unused import
This commit is contained in:
Eugenio Romano
2018-06-18 22:58:58 +01:00
committed by GitHub
parent 58522d0722
commit bc23d28ad6
5 changed files with 88 additions and 31 deletions

View File

@@ -17,7 +17,7 @@
<button
mat-icon-button
(selection-node-restored)="refresh()"
(restore)="documentList.reload()"
(restore)="onRestore($event)"
[adf-restore]="documentList.selection"
*ngIf="documentList.selection.length"
title="{{ 'TRASHCAN.ACTIONS.RESTORE' | translate }}">

View File

@@ -25,34 +25,57 @@
import { Component, ViewChild } from '@angular/core';
import { DocumentListComponent } from '@alfresco/adf-content-services';
import { UserPreferencesService, UserPreferenceValues } from '@alfresco/adf-core';
import { UserPreferencesService, UserPreferenceValues, RestoreMessageModel, NotificationService } from '@alfresco/adf-core';
import { Router } from '@angular/router';
import { PathInfoEntity } from 'alfresco-js-api';
@Component({
templateUrl: './trashcan.component.html',
styleUrls: ['trashcan.component.scss']
})
export class TrashcanComponent {
@ViewChild('documentList')
documentList: DocumentListComponent;
supportedPages = [];
currentLocale;
constructor(private preference: UserPreferencesService) {
this.preference.select(UserPreferenceValues.SupportedPageSizes)
.subscribe((pages) => {
constructor(
private preference: UserPreferencesService,
private router: Router,
private notificationService: NotificationService
) {
this.preference
.select(UserPreferenceValues.SupportedPageSizes)
.subscribe(pages => {
this.supportedPages = pages;
});
this.preference.select(UserPreferenceValues.Locale).subscribe((locale) => {
this.preference
.select(UserPreferenceValues.Locale)
.subscribe(locale => {
this.currentLocale = locale;
});
}
onRestore(restoreMessage: RestoreMessageModel) {
this.notificationService
.openSnackMessageAction(
restoreMessage.message,
restoreMessage.action
)
.onAction()
.subscribe(() => this.navigateLocation(restoreMessage.path));
this.documentList.reload();
}
private navigateLocation(path: PathInfoEntity) {
const parent = path.elements[path.elements.length - 1];
this.router.navigate(['files/', parent.id]);
}
refresh() {
this.documentList.reload();
this.documentList.resetSelection();
}
}

View File

@@ -15,7 +15,7 @@ Restores deleted nodes to their original location.
<button mat-icon-button
location="/files"
[adf-restore]="documentList.selection"
(restore)="documentList.reload()">
(restore)="onRestore($event)">
<mat-icon>restore</mat-icon>
</button>
</adf-toolbar>
@@ -26,20 +26,38 @@ Restores deleted nodes to their original location.
</adf-document-list>
```
```ts
onRestore(restoreMessage: RestoreMessageModel) {
this.notificationService
.openSnackMessageAction(
restoreMessage.message,
restoreMessage.action
)
.onAction()
.subscribe(() => this.navigateLocation(restoreMessage.path));
this.documentList.reload();
}
navigateLocation(path: PathInfoEntity) {
const parent = path.elements[path.elements.length - 1];
this.router.navigate(['files/', parent.id]);
}
```
## Class members
### Properties
| Name | Type | Default value | Description |
| -- | -- | -- | -- |
| location | `string` | "" | Path to restored node. |
| location | `string` | "" | **Deprecated:** 2.4.0 Path to restored node. |
| adf-restore | `DeletedNodeEntry[]` | | Array of deleted nodes to restore. |
### Events
| Name | Type | Description |
| -- | -- | -- |
| restore | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when restoration is complete. |
| restore | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`RestoreMessageModel`](../../lib/core/directives/node-restore.directive.ts)`>` | Emitted when restoration is complete. |
## Details

View File

@@ -18,7 +18,7 @@
/* tslint:disable:component-selector no-input-rename */
import { Directive, EventEmitter, HostListener, Input, Output } from '@angular/core';
import { DeletedNodeEntry, DeletedNodesPaging } from 'alfresco-js-api';
import { DeletedNodeEntry, DeletedNodesPaging, PathInfoEntity } from 'alfresco-js-api';
import { Observable } from 'rxjs/Observable';
import { AlfrescoApiService } from '../services/alfresco-api.service';
import { TranslationService } from '../services/translation.service';
@@ -26,6 +26,12 @@ import 'rxjs/add/observable/from';
import 'rxjs/add/observable/zip';
import 'rxjs/add/operator/mergeMap';
export class RestoreMessageModel {
message: string;
path: PathInfoEntity;
action: string;
}
@Directive({
selector: '[adf-restore]'
})
@@ -36,13 +42,13 @@ export class NodeRestoreDirective {
@Input('adf-restore')
selection: DeletedNodeEntry[];
/** Path to restored node. */
/** @deprecated 2.4.0 Path to restored node. */
@Input()
location: string = '';
/** Emitted when restoration is complete. */
@Output()
restore: EventEmitter<any> = new EventEmitter();
restore: EventEmitter<RestoreMessageModel> = new EventEmitter();
@HostListener('click')
onClick() {
@@ -243,7 +249,15 @@ export class NodeRestoreDirective {
const action = (status.oneSucceeded && !status.someFailed) ? this.translation.instant('CORE.RESTORE_NODE.VIEW') : '';
this.restore.emit({ message: message, action: action });
let path;
if (status.success && status.success.length > 0) {
path = status.success[0].entry.path;
}
this.restore.emit({
message: message,
action: action,
path: path
});
}
private reset(): void {

View File

@@ -216,6 +216,7 @@ function prepareIndexSections(aggData) {
"status": status
});
} else if (!rejectItemViaStoplist(aggData.stoplist, itemName)) {
if(sections[libName]){
sections[libName][srcData.type].undocumented.push({
"displayName": displayName,
"mdName": itemName + ".md",
@@ -223,6 +224,7 @@ function prepareIndexSections(aggData) {
});
}
}
}
return sections;
}