diff --git a/demo-shell-ng2/app/components/files/files.component.ts b/demo-shell-ng2/app/components/files/files.component.ts index 639e089cd8..37ef65ce3d 100644 --- a/demo-shell-ng2/app/components/files/files.component.ts +++ b/demo-shell-ng2/app/components/files/files.component.ts @@ -20,7 +20,7 @@ import { ActivatedRoute, Params, Router } from '@angular/router'; import { AlfrescoAuthenticationService, LogService, NotificationService } from 'ng2-alfresco-core'; import { DocumentActionsService, DocumentListComponent, ContentActionHandler, DocumentActionModel, FolderActionModel } from 'ng2-alfresco-documentlist'; import { FormService } from 'ng2-activiti-form'; -import { UploadButtonComponent, UploadDragAreaComponent } from 'ng2-alfresco-upload'; +import { UploadService, UploadButtonComponent, UploadDragAreaComponent, FolderCreatedEvent } from 'ng2-alfresco-upload'; @Component({ selector: 'files-component', @@ -72,6 +72,7 @@ export class FilesComponent implements OnInit, AfterViewInit { private changeDetector: ChangeDetectorRef, private router: Router, private notificationService: NotificationService, + private uploadService: UploadService, @Optional() private route: ActivatedRoute) { documentActions.setHandler('my-handler', this.myDocumentActionHandler.bind(this)); } @@ -120,6 +121,8 @@ export class FilesComponent implements OnInit, AfterViewInit { } else { this.logService.warn('You are not logged in to BPM'); } + + this.uploadService.folderCreated.subscribe(value => this.onFolderCreated(value)); } ngAfterViewInit() { @@ -170,6 +173,14 @@ export class FilesComponent implements OnInit, AfterViewInit { }.bind(this); } + onFolderCreated(event: FolderCreatedEvent) { + console.log('FOLDER CREATED'); + console.log(event); + if (event && event.parentId === this.documentList.currentFolderId) { + this.documentList.reload(); + } + } + onPermissionsFailed(event: any) { this.notificationService.openSnackMessage(`you don't have the ${event.permission} permission to ${event.action} the ${event.type} `, 4000); } diff --git a/ng2-components/ng2-alfresco-upload/README.md b/ng2-components/ng2-alfresco-upload/README.md index a43714be19..144c414728 100644 --- a/ng2-components/ng2-alfresco-upload/README.md +++ b/ng2-components/ng2-alfresco-upload/README.md @@ -307,6 +307,16 @@ This component should be used in combination with upload button or drag & drop a ``` +### UploadService service + +Provides access to various APIs related to file upload features. + +#### Events + +| Name | Type | Description | +| --- | --- | --- | +| folderCreated | FolderCreatedEvent | Raised when dropped folder gets created | + ## Build from sources Alternatively you can build component from sources with the following commands: diff --git a/ng2-components/ng2-alfresco-upload/index.ts b/ng2-components/ng2-alfresco-upload/index.ts index f31f38e7da..fbf07e42b0 100644 --- a/ng2-components/ng2-alfresco-upload/index.ts +++ b/ng2-components/ng2-alfresco-upload/index.ts @@ -49,6 +49,7 @@ export * from './src/directives/file-draggable.directive'; export * from './src/components/file-uploading-list.component'; export * from './src/models/file.model'; export * from './src/models/permissions.model'; +export * from './src/events/folder-created.event'; export const UPLOAD_DIRECTIVES: any[] = [ FileDraggableDirective, diff --git a/ng2-components/ng2-alfresco-upload/src/events/folder-created.event.ts b/ng2-components/ng2-alfresco-upload/src/events/folder-created.event.ts new file mode 100644 index 0000000000..8051498adf --- /dev/null +++ b/ng2-components/ng2-alfresco-upload/src/events/folder-created.event.ts @@ -0,0 +1,27 @@ +/*! + * @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 { MinimalNodeEntity } from 'alfresco-js-api'; + +export interface FolderCreatedEvent { + + name: string; + relativePath?: string; + parentId?: string; + node?: MinimalNodeEntity; + +} diff --git a/ng2-components/ng2-alfresco-upload/src/services/upload.service.ts b/ng2-components/ng2-alfresco-upload/src/services/upload.service.ts index 27c2fde967..5131083e1b 100644 --- a/ng2-components/ng2-alfresco-upload/src/services/upload.service.ts +++ b/ng2-components/ng2-alfresco-upload/src/services/upload.service.ts @@ -17,8 +17,9 @@ import { EventEmitter, Injectable } from '@angular/core'; import { Response } from '@angular/http'; -import { Observer, Observable } from 'rxjs/Rx'; +import { Observer, Observable, Subject } from 'rxjs/Rx'; import { AlfrescoApiService, LogService } from 'ng2-alfresco-core'; +import { FolderCreatedEvent } from '../events/folder-created.event'; import { FileModel } from '../models/file.model'; import { MinimalNodeEntity, MinimalNodeEntryEntity } from 'alfresco-js-api'; @@ -39,6 +40,8 @@ export class UploadService { filesUpload$: Observable; totalCompleted$: Observable; + folderCreated: Subject = new Subject(); + constructor(private apiService: AlfrescoApiService, private logService: LogService) { this.filesUpload$ = new Observable(observer => this.filesUploadObserverProgressBar = observer).share(); @@ -134,9 +137,16 @@ export class UploadService { * Create a folder * @param name - the folder name */ - createFolder(relativePath: string, name: string, parentId?: string) { + createFolder(relativePath: string, name: string, parentId?: string): Observable { return Observable.fromPromise(this.callApiCreateFolder(relativePath, name, parentId)) - .do(data => this.logService.info('Node data', data)) // eyeball results in the console + .do(data => { + this.folderCreated.next({ + relativePath: relativePath, + name: name, + parentId: parentId, + node: data + }); + }) .catch(err => this.handleError(err)); }