From bc23d28ad6758862e16de7004f9a562f7c311097 Mon Sep 17 00:00:00 2001 From: Eugenio Romano Date: Mon, 18 Jun 2018 22:58:58 +0100 Subject: [PATCH] [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 --- .../trashcan/trashcan.component.html | 2 +- .../components/trashcan/trashcan.component.ts | 45 ++++++++++++++----- docs/core/node-restore.directive.md | 24 ++++++++-- lib/core/directives/node-restore.directive.ts | 22 +++++++-- tools/doc/tools/index.js | 26 ++++++----- 5 files changed, 88 insertions(+), 31 deletions(-) diff --git a/demo-shell/src/app/components/trashcan/trashcan.component.html b/demo-shell/src/app/components/trashcan/trashcan.component.html index a684003864..2cf59097f4 100644 --- a/demo-shell/src/app/components/trashcan/trashcan.component.html +++ b/demo-shell/src/app/components/trashcan/trashcan.component.html @@ -17,7 +17,7 @@ @@ -26,20 +26,38 @@ Restores deleted nodes to their original location. ``` +```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)`` | 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 diff --git a/lib/core/directives/node-restore.directive.ts b/lib/core/directives/node-restore.directive.ts index e5d1a989e8..d5260137d4 100644 --- a/lib/core/directives/node-restore.directive.ts +++ b/lib/core/directives/node-restore.directive.ts @@ -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 = new EventEmitter(); + restore: EventEmitter = 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 { diff --git a/tools/doc/tools/index.js b/tools/doc/tools/index.js index cb7580f9da..619e671519 100644 --- a/tools/doc/tools/index.js +++ b/tools/doc/tools/index.js @@ -104,7 +104,7 @@ function aggPhase(aggData) { var libName = adfLibNames[l]; var libSection = sections[libName]; - + var md = makeLibSectionMD(libSection, false); zone(indexFileTree, libName, (startComment, oldSection, endComment) => { @@ -164,14 +164,14 @@ function updatePhase(tree, pathname, aggData) { // Create a stoplist of regular expressions. -function makeStoplist(config) { +function makeStoplist(config) { var listExpressions = config.undocStoplist; var result = []; - + for (var i = 0; i < listExpressions.length; i++) { result.push(new RegExp(listExpressions[i])); } - + return result; } @@ -182,7 +182,7 @@ function rejectItemViaStoplist(stoplist, itemName) { return true; } } - + return false; } @@ -216,11 +216,13 @@ 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", "srcPath": srcData.path }); + } } } @@ -248,9 +250,9 @@ function initEmptySections() { function buildMDDocumentedTable(docItems, forSubFolder) { var rows = [ - + ]; - + for (var i = 0; i < docItems.length; i++) { rows.push(makeMDDocumentedTableRow(docItems[i], forSubFolder)); } @@ -262,9 +264,9 @@ function buildMDDocumentedTable(docItems, forSubFolder) { function buildMDUndocumentedTable(docItems, forSubFolder) { var rows = [ - + ]; - + for (var i = 0; i < docItems.length; i++) { rows.push(makeMDUndocumentedTableRow(docItems[i], forSubFolder)); } @@ -361,7 +363,7 @@ function makeLibSectionMD(libSection, forSubFolder){ var md = []; var libClassTypes = Object.keys(libSection); - + for (var i = 0; i < libClassTypes.length; i++) { var classType = libClassTypes[i]; @@ -375,7 +377,7 @@ function makeLibSectionMD(libSection, forSubFolder){ if ((classSection.documented.length > 0) || (classSection.undocumented.length > 0)) { displayNameNode = unist.makeText(ngHelpers.dekebabifyName(classType + "s")); md.push(unist.makeHeading(displayNameNode, 2)); - + var tableRows = [ unist.makeTableRow([ unist.makeTableCell([unist.makeText("Name")]), @@ -421,4 +423,4 @@ function buildGuideSection(guideJsonFilename, forSubFolder) { } return unist.makeListUnordered(listItems); -} \ No newline at end of file +}