mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ADF-] update library to use new js-api 3.0.0 (#4097)
This commit is contained in:
committed by
Eugenio Romano
parent
2acd1b4e26
commit
3ef7d3b7ea
@@ -38,6 +38,7 @@ import { CustomResourcesService } from './../services/custom-resources.service';
|
||||
import { DocumentListComponent } from './document-list.component';
|
||||
import { setupTestBed } from '@alfresco/adf-core';
|
||||
import { ContentTestingModule } from '../../testing/content.testing.module';
|
||||
import { NodeEntry } from '@alfresco/js-api';
|
||||
|
||||
describe('DocumentList', () => {
|
||||
|
||||
@@ -73,7 +74,7 @@ describe('DocumentList', () => {
|
||||
documentList.ngOnInit();
|
||||
|
||||
spyGetSites = spyOn(apiService.sitesApi, 'getSites').and.returnValue(Promise.resolve(fakeGetSitesAnswer));
|
||||
spyFavorite = spyOn(apiService.favoritesApi, 'getFavorites').and.returnValue(Promise.resolve({list: []}));
|
||||
spyFavorite = spyOn(apiService.favoritesApi, 'getFavorites').and.returnValue(Promise.resolve({ list: [] }));
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
@@ -202,6 +203,7 @@ describe('DocumentList', () => {
|
||||
});
|
||||
|
||||
it('should reset selection upon reload', () => {
|
||||
documentList.currentFolderId = 'id-folder';
|
||||
spyOn(documentList, 'resetSelection').and.callThrough();
|
||||
|
||||
documentList.reload();
|
||||
@@ -228,6 +230,7 @@ describe('DocumentList', () => {
|
||||
});
|
||||
|
||||
it('should reset selection upon reload', () => {
|
||||
documentList.currentFolderId = 'id-folder';
|
||||
spyOn(documentList, 'resetSelection').and.callThrough();
|
||||
|
||||
documentList.reload();
|
||||
@@ -296,6 +299,7 @@ describe('DocumentList', () => {
|
||||
});
|
||||
|
||||
it('should disable the action if there is no permission for the file and disableWithNoPermission true', () => {
|
||||
documentList.currentFolderId = 'fake-node-id';
|
||||
let documentMenu = new ContentActionModel({
|
||||
disableWithNoPermission: true,
|
||||
permission: 'delete',
|
||||
@@ -929,7 +933,7 @@ describe('DocumentList', () => {
|
||||
it('should emit node-click DOM event', (done) => {
|
||||
let node = new NodeMinimalEntry();
|
||||
|
||||
document.addEventListener('node-click', (e: CustomEvent) => {
|
||||
document.addEventListener('node-click', (customEvent: CustomEvent) => {
|
||||
done();
|
||||
});
|
||||
|
||||
@@ -947,7 +951,7 @@ describe('DocumentList', () => {
|
||||
it('should emit node-dblclick DOM event', (done) => {
|
||||
let node = new NodeMinimalEntry();
|
||||
|
||||
document.addEventListener('node-dblclick', (e: CustomEvent) => {
|
||||
document.addEventListener('node-dblclick', (customEvent: CustomEvent) => {
|
||||
done();
|
||||
});
|
||||
|
||||
@@ -977,7 +981,7 @@ describe('DocumentList', () => {
|
||||
|
||||
it('should emit error when loadFolderNodesByFolderNodeId fails', (done) => {
|
||||
const error = { message: '{ "error": { "statusCode": 501 } }' };
|
||||
spyOn(documentListService, 'getFolderNode').and.returnValue(of(fakeNodeWithCreatePermission));
|
||||
spyOn(documentListService, 'getFolderNode').and.returnValue(of({ entry: fakeNodeWithCreatePermission }));
|
||||
spyOn(documentList, 'loadFolderNodesByFolderNodeId').and.returnValue(Promise.reject(error));
|
||||
|
||||
let disposableError = documentList.error.subscribe((val) => {
|
||||
@@ -996,7 +1000,7 @@ describe('DocumentList', () => {
|
||||
expect(folderNode.value.id).toBe('fake-node');
|
||||
done();
|
||||
});
|
||||
documentList.onNodeDblClick({ entry: { id: 'fake-node', isFolder: true } });
|
||||
documentList.onNodeDblClick(new NodeEntry({ entry: { id: 'fake-node', isFolder: true } }));
|
||||
});
|
||||
|
||||
it('should set no permission when getFolderNode fails with 403', (done) => {
|
||||
@@ -1014,6 +1018,7 @@ describe('DocumentList', () => {
|
||||
});
|
||||
|
||||
it('should reset noPermission upon reload', () => {
|
||||
documentList.currentFolderId = 'fake-node-id';
|
||||
documentList.noPermission = true;
|
||||
fixture.detectChanges();
|
||||
|
||||
@@ -1043,7 +1048,7 @@ describe('DocumentList', () => {
|
||||
documentList.folderNode = new NodeMinimal();
|
||||
documentList.folderNode.id = '1d26e465-dea3-42f3-b415-faa8364b9692';
|
||||
|
||||
spyOn(documentListService, 'getFolderNode').and.returnValue(of(fakeNodeWithNoPermission));
|
||||
spyOn(documentListService, 'getFolderNode').and.returnValue(of({ entry: fakeNodeWithNoPermission }));
|
||||
spyOn(documentListService, 'getFolder').and.returnValue(throwError(error));
|
||||
|
||||
documentList.loadFolder();
|
||||
@@ -1153,14 +1158,14 @@ describe('DocumentList', () => {
|
||||
|
||||
it('should fetch user membership sites', () => {
|
||||
const peopleApi = apiService.getInstance().core.peopleApi;
|
||||
spyOn(peopleApi, 'getSiteMembership').and.returnValue(Promise.resolve(fakeGetSiteMembership));
|
||||
spyOn(peopleApi, 'listSiteMembershipsForPerson').and.returnValue(Promise.resolve(fakeGetSiteMembership));
|
||||
|
||||
documentList.loadFolderByNodeId('-mysites-');
|
||||
expect(peopleApi.getSiteMembership).toHaveBeenCalled();
|
||||
expect(peopleApi.listSiteMembershipsForPerson).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should emit error when fetch membership sites fails', (done) => {
|
||||
spyOn(apiService.getInstance().core.peopleApi, 'getSiteMembership')
|
||||
spyOn(apiService.getInstance().core.peopleApi, 'listSiteMembershipsForPerson')
|
||||
.and.returnValue(Promise.reject('error'));
|
||||
|
||||
let disposableError = documentList.error.subscribe((val) => {
|
||||
@@ -1175,10 +1180,10 @@ describe('DocumentList', () => {
|
||||
it('should assure that user membership sites have name property set', (done) => {
|
||||
fixture.detectChanges();
|
||||
const peopleApi = apiService.getInstance().core.peopleApi;
|
||||
spyOn(peopleApi, 'getSiteMembership').and.returnValue(Promise.resolve(fakeGetSiteMembership));
|
||||
spyOn(peopleApi, 'listSiteMembershipsForPerson').and.returnValue(Promise.resolve(fakeGetSiteMembership));
|
||||
|
||||
documentList.loadFolderByNodeId('-mysites-');
|
||||
expect(peopleApi.getSiteMembership).toHaveBeenCalled();
|
||||
expect(peopleApi.listSiteMembershipsForPerson).toHaveBeenCalled();
|
||||
|
||||
let disposableReady = documentList.ready.subscribe((page) => {
|
||||
const entriesWithoutName = page.list.entries.filter((item) => !item.entry.name);
|
||||
@@ -1191,10 +1196,10 @@ describe('DocumentList', () => {
|
||||
it('should assure that user membership sites have name property set correctly', (done) => {
|
||||
fixture.detectChanges();
|
||||
const peopleApi = apiService.getInstance().core.peopleApi;
|
||||
spyOn(peopleApi, 'getSiteMembership').and.returnValue(Promise.resolve(fakeGetSiteMembership));
|
||||
spyOn(peopleApi, 'listSiteMembershipsForPerson').and.returnValue(Promise.resolve(fakeGetSiteMembership));
|
||||
|
||||
documentList.loadFolderByNodeId('-mysites-');
|
||||
expect(peopleApi.getSiteMembership).toHaveBeenCalled();
|
||||
expect(peopleApi.listSiteMembershipsForPerson).toHaveBeenCalled();
|
||||
|
||||
let disposableReady = documentList.ready.subscribe((page) => {
|
||||
const wrongName = page.list.entries.filter((item) => (item.entry.name !== item.entry.title));
|
||||
@@ -1259,6 +1264,7 @@ describe('DocumentList', () => {
|
||||
});
|
||||
|
||||
it('should reset folder node upon changing current folder id', () => {
|
||||
documentList.currentFolderId = 'fake-node-id';
|
||||
documentList.folderNode = <any> {};
|
||||
|
||||
documentList.ngOnChanges({ currentFolderId: new SimpleChange(null, '-sites-', false) });
|
||||
@@ -1278,7 +1284,7 @@ describe('DocumentList', () => {
|
||||
documentList.currentFolderId = '12345-some-id-6789';
|
||||
|
||||
const peopleApi = apiService.getInstance().core.peopleApi;
|
||||
spyOn(peopleApi, 'getSiteMembership').and.returnValue(Promise.resolve(fakeGetSiteMembership));
|
||||
spyOn(peopleApi, 'listSiteMembershipsForPerson').and.returnValue(Promise.resolve(fakeGetSiteMembership));
|
||||
|
||||
documentList.loadFolderByNodeId('-mysites-');
|
||||
expect(documentList.currentFolderId).toBe('-mysites-');
|
||||
|
@@ -28,7 +28,7 @@ import {
|
||||
UserPreferencesService, PaginationModel, ThumbnailService
|
||||
} from '@alfresco/adf-core';
|
||||
|
||||
import { MinimalNodeEntity, MinimalNodeEntryEntity, NodePaging } from 'alfresco-js-api';
|
||||
import { Node, NodeEntry, NodePaging } from '@alfresco/js-api';
|
||||
import { Subject, BehaviorSubject, Subscription, of } from 'rxjs';
|
||||
import { ShareDataRow } from './../data/share-data-row.model';
|
||||
import { ShareDataTableAdapter } from './../data/share-datatable-adapter';
|
||||
@@ -178,7 +178,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
* @deprecated 2.3.0 - use currentFolderId or node
|
||||
*/
|
||||
@Input()
|
||||
folderNode: MinimalNodeEntryEntity = null;
|
||||
folderNode: Node = null;
|
||||
|
||||
/** The Document list will show all the nodes contained in the NodePaging entity */
|
||||
@Input()
|
||||
@@ -238,7 +238,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
contextActionHandler: Subject<any> = new Subject();
|
||||
data: ShareDataTableAdapter;
|
||||
noPermission: boolean = false;
|
||||
selection = new Array<MinimalNodeEntity>();
|
||||
selection = new Array<NodeEntry>();
|
||||
|
||||
private _pagination: BehaviorSubject<PaginationModel>;
|
||||
private layoutPresets = {};
|
||||
@@ -256,7 +256,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
private thumbnailService: ThumbnailService) {
|
||||
}
|
||||
|
||||
getContextActions(node: MinimalNodeEntity) {
|
||||
getContextActions(node: NodeEntry) {
|
||||
if (node && node.entry) {
|
||||
let actions = this.getNodeActions(node);
|
||||
if (actions && actions.length > 0) {
|
||||
@@ -446,7 +446,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
}
|
||||
}
|
||||
|
||||
getNodeActions(node: MinimalNodeEntity | any): ContentActionModel[] {
|
||||
getNodeActions(node: NodeEntry | any): ContentActionModel[] {
|
||||
if (node && node.entry) {
|
||||
let target = null;
|
||||
|
||||
@@ -487,12 +487,12 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
return [];
|
||||
}
|
||||
|
||||
private refreshAction(action: ContentActionModel, node: MinimalNodeEntity) {
|
||||
private refreshAction(action: ContentActionModel, node: NodeEntry) {
|
||||
action.disabled = this.isActionDisabled(action, node);
|
||||
action.visible = this.isActionVisible(action, node);
|
||||
}
|
||||
|
||||
private isActionVisible(action: ContentActionModel, node: MinimalNodeEntity): boolean {
|
||||
private isActionVisible(action: ContentActionModel, node: NodeEntry): boolean {
|
||||
if (typeof action.visible === 'function') {
|
||||
return action.visible(node);
|
||||
}
|
||||
@@ -500,7 +500,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
return action.visible;
|
||||
}
|
||||
|
||||
private isActionDisabled(action: ContentActionModel, node: MinimalNodeEntity): boolean {
|
||||
private isActionDisabled(action: ContentActionModel, node: NodeEntry): boolean {
|
||||
if (typeof action.disabled === 'function') {
|
||||
return action.disabled(node);
|
||||
}
|
||||
@@ -519,7 +519,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
}
|
||||
}
|
||||
|
||||
performNavigation(node: MinimalNodeEntity): boolean {
|
||||
performNavigation(node: NodeEntry): boolean {
|
||||
if (this.canNavigateFolder(node)) {
|
||||
this.updateFolderData(node);
|
||||
return true;
|
||||
@@ -527,7 +527,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
return false;
|
||||
}
|
||||
|
||||
performCustomSourceNavigation(node: MinimalNodeEntity): boolean {
|
||||
performCustomSourceNavigation(node: NodeEntry): boolean {
|
||||
if (this.customResourcesService.isCustomSource(this.currentFolderId)) {
|
||||
this.updateFolderData(node);
|
||||
return true;
|
||||
@@ -535,18 +535,18 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
return false;
|
||||
}
|
||||
|
||||
updateFolderData(node: MinimalNodeEntity): void {
|
||||
updateFolderData(node: NodeEntry): void {
|
||||
this.resetNewFolderPagination();
|
||||
this.currentFolderId = this.getNodeFolderDestinationId(node);
|
||||
this.folderChange.emit(new NodeEntryEvent({ id: this.currentFolderId }));
|
||||
this.folderChange.emit(new NodeEntryEvent(<Node> { id: this.currentFolderId }));
|
||||
this.reload();
|
||||
}
|
||||
|
||||
private getNodeFolderDestinationId(node: MinimalNodeEntity) {
|
||||
private getNodeFolderDestinationId(node: NodeEntry) {
|
||||
return this.isLinkFolder(node) ? node.entry.properties['cm:destination'] : node.entry.id;
|
||||
}
|
||||
|
||||
private isLinkFolder(node: MinimalNodeEntity) {
|
||||
private isLinkFolder(node: NodeEntry) {
|
||||
return node.entry.nodeType === 'app:folderlink' && node.entry.properties &&
|
||||
node.entry.properties['cm:destination'];
|
||||
}
|
||||
@@ -561,7 +561,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
* @param node Node to be the context of the execution.
|
||||
* @param action Action to be executed against the context.
|
||||
*/
|
||||
executeContentAction(node: MinimalNodeEntity, action: ContentActionModel) {
|
||||
executeContentAction(node: NodeEntry, action: ContentActionModel) {
|
||||
if (node && node.entry && action) {
|
||||
let handlerSub;
|
||||
|
||||
@@ -620,9 +620,9 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
} else {
|
||||
this.documentListService
|
||||
.getFolderNode(nodeId, this.includeFields)
|
||||
.subscribe((node: MinimalNodeEntryEntity) => {
|
||||
this.folderNode = node;
|
||||
return this.loadFolderNodesByFolderNodeId(node.id, this.pagination.getValue())
|
||||
.subscribe((node: NodeEntry) => {
|
||||
this.folderNode = node.entry;
|
||||
return this.loadFolderNodesByFolderNodeId(node.entry.id, this.pagination.getValue())
|
||||
.catch((err) => this.handleError(err));
|
||||
}, (err) => {
|
||||
this.handleError(err);
|
||||
@@ -675,13 +675,13 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
}
|
||||
}
|
||||
|
||||
onPreviewFile(node: MinimalNodeEntity) {
|
||||
onPreviewFile(node: NodeEntry) {
|
||||
if (node) {
|
||||
this.preview.emit(new NodeEntityEvent(node));
|
||||
}
|
||||
}
|
||||
|
||||
onNodeClick(node: MinimalNodeEntity) {
|
||||
onNodeClick(node: NodeEntry) {
|
||||
const domEvent = new CustomEvent('node-click', {
|
||||
detail: {
|
||||
sender: this,
|
||||
@@ -709,7 +709,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
}
|
||||
}
|
||||
|
||||
onNodeDblClick(node: MinimalNodeEntity) {
|
||||
onNodeDblClick(node: NodeEntry) {
|
||||
const domEvent = new CustomEvent('node-dblclick', {
|
||||
detail: {
|
||||
sender: this,
|
||||
@@ -796,7 +796,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
}
|
||||
}
|
||||
|
||||
canNavigateFolder(node: MinimalNodeEntity): boolean {
|
||||
canNavigateFolder(node: NodeEntry): boolean {
|
||||
let canNavigateFolder: boolean = false;
|
||||
|
||||
if (this.customResourcesService.isCustomSource(this.currentFolderId)) {
|
||||
@@ -833,7 +833,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
this.currentFolderId = nodeId;
|
||||
this.resetNewFolderPagination();
|
||||
this.loadFolder();
|
||||
this.folderChange.emit(new NodeEntryEvent({ id: nodeId }));
|
||||
this.folderChange.emit(new NodeEntryEvent(<Node> { id: nodeId }));
|
||||
}
|
||||
|
||||
private resetNewFolderPagination() {
|
||||
@@ -848,9 +848,12 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
||||
|
||||
private handleError(err: any) {
|
||||
if (err.message) {
|
||||
if (JSON.parse(err.message).error.statusCode === 403) {
|
||||
this.setLoadingState(false);
|
||||
this.noPermission = true;
|
||||
try {
|
||||
if (JSON.parse(err.message).error.statusCode === 403) {
|
||||
this.setLoadingState(false);
|
||||
this.noPermission = true;
|
||||
}
|
||||
} catch (error) {
|
||||
}
|
||||
}
|
||||
this.error.emit(err);
|
||||
|
@@ -23,7 +23,7 @@ import {
|
||||
Input,
|
||||
ElementRef
|
||||
} from '@angular/core';
|
||||
import { MinimalNodeEntity } from 'alfresco-js-api';
|
||||
import { NodeEntry } from '@alfresco/js-api';
|
||||
import { ShareDataRow } from '../../data/share-data-row.model';
|
||||
|
||||
@Component({
|
||||
@@ -43,7 +43,7 @@ export class LibraryNameColumnComponent implements OnInit {
|
||||
|
||||
displayTooltip: string;
|
||||
displayText: string;
|
||||
node: MinimalNodeEntity;
|
||||
node: NodeEntry;
|
||||
|
||||
constructor(private element: ElementRef) {}
|
||||
|
||||
|
@@ -23,7 +23,7 @@ import {
|
||||
ViewEncapsulation,
|
||||
ElementRef
|
||||
} from '@angular/core';
|
||||
import { MinimalNodeEntity } from 'alfresco-js-api';
|
||||
import { NodeEntry } from '@alfresco/js-api';
|
||||
|
||||
@Component({
|
||||
selector: 'adf-name-column',
|
||||
@@ -41,7 +41,7 @@ export class NameColumnComponent implements OnInit {
|
||||
context: any;
|
||||
|
||||
displayText: string;
|
||||
node: MinimalNodeEntity;
|
||||
node: NodeEntry;
|
||||
|
||||
constructor(private element: ElementRef) {}
|
||||
|
||||
|
@@ -16,28 +16,28 @@
|
||||
*/
|
||||
|
||||
import { BaseEvent } from '@alfresco/adf-core';
|
||||
import { MinimalNodeEntity, MinimalNodeEntryEntity } from 'alfresco-js-api';
|
||||
import { NodeEntry, Node } from '@alfresco/js-api';
|
||||
|
||||
export class NodeEntityEvent extends BaseEvent<MinimalNodeEntity> {
|
||||
export class NodeEntityEvent extends BaseEvent<NodeEntry> {
|
||||
|
||||
value: MinimalNodeEntity;
|
||||
value: NodeEntry;
|
||||
|
||||
defaultPrevented: boolean;
|
||||
|
||||
constructor(entity: MinimalNodeEntity) {
|
||||
constructor(nodeEntry: NodeEntry) {
|
||||
super();
|
||||
this.value = entity;
|
||||
this.value = nodeEntry;
|
||||
}
|
||||
}
|
||||
|
||||
export class NodeEntryEvent extends BaseEvent<MinimalNodeEntryEntity> {
|
||||
export class NodeEntryEvent extends BaseEvent<Node> {
|
||||
|
||||
value: MinimalNodeEntryEntity;
|
||||
value: Node;
|
||||
|
||||
defaultPrevented: boolean;
|
||||
|
||||
constructor(entity: MinimalNodeEntryEntity) {
|
||||
constructor(node: Node) {
|
||||
super();
|
||||
this.value = entity;
|
||||
this.value = node;
|
||||
}
|
||||
}
|
||||
|
@@ -22,7 +22,7 @@ import {
|
||||
OnInit,
|
||||
Input
|
||||
} from '@angular/core';
|
||||
import { MinimalNodeEntity } from 'alfresco-js-api';
|
||||
import { NodeEntry } from '@alfresco/js-api';
|
||||
import { ShareDataRow } from '../../data/share-data-row.model';
|
||||
|
||||
@Component({
|
||||
@@ -46,7 +46,7 @@ export class TrashcanNameColumnComponent implements OnInit {
|
||||
isLibrary = false;
|
||||
displayText: string;
|
||||
displayTooltip: string;
|
||||
node: MinimalNodeEntity;
|
||||
node: NodeEntry;
|
||||
|
||||
ngOnInit() {
|
||||
this.node = this.context.row.node;
|
||||
|
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
import { DataRow, ObjectUtils, ThumbnailService } from '@alfresco/adf-core';
|
||||
import { MinimalNode, MinimalNodeEntity } from 'alfresco-js-api';
|
||||
import { MinimalNode, NodeEntry } from '@alfresco/js-api';
|
||||
import { PermissionStyleModel } from './../models/permissions-style.model';
|
||||
import { DocumentListService } from './../services/document-list.service';
|
||||
|
||||
@@ -29,11 +29,11 @@ export class ShareDataRow implements DataRow {
|
||||
isDropTarget: boolean;
|
||||
cssClass: string = '';
|
||||
|
||||
get node(): MinimalNodeEntity {
|
||||
get node(): NodeEntry {
|
||||
return this.obj;
|
||||
}
|
||||
|
||||
constructor(private obj: MinimalNodeEntity,
|
||||
constructor(private obj: NodeEntry,
|
||||
private documentListService: DocumentListService,
|
||||
private permissionsStyle: PermissionStyleModel[],
|
||||
private thumbnailService?: ThumbnailService) {
|
||||
@@ -48,7 +48,7 @@ export class ShareDataRow implements DataRow {
|
||||
}
|
||||
}
|
||||
|
||||
getPermissionClass(nodeEntity: MinimalNodeEntity): string {
|
||||
getPermissionClass(nodeEntity: NodeEntry): string {
|
||||
let permissionsClasses = '';
|
||||
|
||||
this.permissionsStyle.forEach((currentPermissionsStyle: PermissionStyleModel) => {
|
||||
@@ -73,12 +73,12 @@ export class ShareDataRow implements DataRow {
|
||||
return (currentPermissionsStyle.isFolder && node.isFolder);
|
||||
}
|
||||
|
||||
isFolderAndHasPermissionToUpload(obj: MinimalNodeEntity): boolean {
|
||||
return this.isFolder(obj) && this.documentListService.hasPermission(obj.entry, 'create');
|
||||
isFolderAndHasPermissionToUpload(nodeEntry: NodeEntry): boolean {
|
||||
return this.isFolder(nodeEntry) && this.documentListService.hasPermission(nodeEntry.entry, 'create');
|
||||
}
|
||||
|
||||
isFolder(obj: MinimalNodeEntity): boolean {
|
||||
return obj.entry && obj.entry.isFolder;
|
||||
isFolder(nodeEntry: NodeEntry): boolean {
|
||||
return nodeEntry.entry && nodeEntry.entry.isFolder;
|
||||
}
|
||||
|
||||
cacheValue(key: string, value: any): any {
|
||||
@@ -94,7 +94,9 @@ export class ShareDataRow implements DataRow {
|
||||
}
|
||||
|
||||
imageErrorResolver(event: Event): any {
|
||||
return this.thumbnailService.getMimeTypeIcon(this.obj.entry.content.mimeType);
|
||||
if (this.obj.entry.content) {
|
||||
return this.thumbnailService.getMimeTypeIcon(this.obj.entry.content.mimeType);
|
||||
}
|
||||
}
|
||||
|
||||
hasValue(key: string): boolean {
|
||||
|
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
import { DataColumn, DataRow, DataSorting, DataTableAdapter, ThumbnailService } from '@alfresco/adf-core';
|
||||
import { NodePaging } from 'alfresco-js-api';
|
||||
import { NodePaging } from '@alfresco/js-api';
|
||||
import { PermissionStyleModel } from './../models/permissions-style.model';
|
||||
import { DocumentListService } from './../services/document-list.service';
|
||||
import { ShareDataRow } from './share-data-row.model';
|
||||
|
@@ -17,7 +17,7 @@
|
||||
|
||||
// note: contains only limited subset of available fields
|
||||
|
||||
import { MinimalNodeEntity, MinimalNodeEntryEntity } from 'alfresco-js-api';
|
||||
import { NodeEntry, Node } from '@alfresco/js-api';
|
||||
|
||||
export class NodePaging {
|
||||
list: NodePagingList;
|
||||
@@ -28,7 +28,7 @@ export class NodePagingList {
|
||||
entries: NodeMinimalEntry[];
|
||||
}
|
||||
|
||||
export class NodeMinimalEntry implements MinimalNodeEntity {
|
||||
export class NodeMinimalEntry implements NodeEntry {
|
||||
entry: NodeMinimal;
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ export class Pagination {
|
||||
maxItems: number;
|
||||
}
|
||||
|
||||
export class NodeMinimal implements MinimalNodeEntryEntity {
|
||||
export class NodeMinimal implements Node {
|
||||
id: string;
|
||||
parentId: string;
|
||||
name: string;
|
||||
|
@@ -26,8 +26,12 @@ import {
|
||||
PersonEntry,
|
||||
SitePaging,
|
||||
DeletedNodesPaging,
|
||||
SearchRequest
|
||||
} from 'alfresco-js-api';
|
||||
SearchRequest,
|
||||
SharedLinkPaging,
|
||||
FavoritePaging,
|
||||
SiteMemberPaging,
|
||||
SiteRolePaging
|
||||
} from '@alfresco/js-api';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Observable, from, of, throwError } from 'rxjs';
|
||||
import { catchError, map } from 'rxjs/operators';
|
||||
@@ -54,7 +58,7 @@ export class CustomResourcesService {
|
||||
this.apiService.peopleApi.getPerson(personId)
|
||||
.then((person: PersonEntry) => {
|
||||
const username = person.entry.id;
|
||||
const query: SearchRequest = {
|
||||
const query: SearchRequest = new SearchRequest({
|
||||
query: {
|
||||
query: '*',
|
||||
language: 'afts'
|
||||
@@ -74,7 +78,7 @@ export class CustomResourcesService {
|
||||
maxItems: pagination.maxItems,
|
||||
skipCount: pagination.skipCount
|
||||
}
|
||||
};
|
||||
});
|
||||
return this.apiService.searchApi.search(query)
|
||||
.then((searchResult) => {
|
||||
observer.next(searchResult);
|
||||
@@ -110,8 +114,8 @@ export class CustomResourcesService {
|
||||
|
||||
return new Observable((observer) => {
|
||||
this.apiService.favoritesApi.getFavorites('-me-', options)
|
||||
.then((result: NodePaging) => {
|
||||
let page: NodePaging = {
|
||||
.then((result: FavoritePaging) => {
|
||||
let page: FavoritePaging = {
|
||||
list: {
|
||||
entries: result.list.entries
|
||||
.map(({ entry: { target } }: any) => ({
|
||||
@@ -143,7 +147,7 @@ export class CustomResourcesService {
|
||||
* @param pagination Specifies how to paginate the results
|
||||
* @returns List of sites
|
||||
*/
|
||||
loadMemberSites(pagination: PaginationModel): Observable<NodePaging> {
|
||||
loadMemberSites(pagination: PaginationModel): Observable<SiteMemberPaging> {
|
||||
const options = {
|
||||
include: ['properties'],
|
||||
maxItems: pagination.maxItems,
|
||||
@@ -151,9 +155,9 @@ export class CustomResourcesService {
|
||||
};
|
||||
|
||||
return new Observable((observer) => {
|
||||
this.apiService.peopleApi.getSiteMembership('-me-', options)
|
||||
.then((result: SitePaging) => {
|
||||
let page: NodePaging = {
|
||||
this.apiService.peopleApi.listSiteMembershipsForPerson('-me-', options)
|
||||
.then((result: SiteRolePaging) => {
|
||||
let page: SiteMemberPaging = new SiteMemberPaging( {
|
||||
list: {
|
||||
entries: result.list.entries
|
||||
.map(({ entry: { site } }: any) => {
|
||||
@@ -165,7 +169,7 @@ export class CustomResourcesService {
|
||||
}),
|
||||
pagination: result.list.pagination
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
observer.next(page);
|
||||
observer.complete();
|
||||
@@ -191,7 +195,7 @@ export class CustomResourcesService {
|
||||
|
||||
return new Observable((observer) => {
|
||||
this.apiService.sitesApi.getSites(options)
|
||||
.then((page: NodePaging) => {
|
||||
.then((page: SitePaging) => {
|
||||
page.list.entries.map(
|
||||
({ entry }: any) => {
|
||||
entry.name = entry.name || entry.title;
|
||||
@@ -234,7 +238,7 @@ export class CustomResourcesService {
|
||||
* @param includeFields List of data field names to include in the results
|
||||
* @returns List of shared links
|
||||
*/
|
||||
loadSharedLinks(pagination: PaginationModel, includeFields: string[] = []): Observable<NodePaging> {
|
||||
loadSharedLinks(pagination: PaginationModel, includeFields: string[] = []): Observable<SharedLinkPaging> {
|
||||
let includeFieldsRequest = this.getIncludesFields(includeFields);
|
||||
|
||||
const options = {
|
||||
@@ -286,7 +290,7 @@ export class CustomResourcesService {
|
||||
* @param includeFields List of data field names to include in the results
|
||||
* @returns List of items contained in the folder
|
||||
*/
|
||||
loadFolderByNodeId(nodeId: string, pagination: PaginationModel, includeFields: string[]): Observable<NodePaging> {
|
||||
loadFolderByNodeId(nodeId: string, pagination: PaginationModel, includeFields: string[] = []): any {
|
||||
if (nodeId === '-trashcan-') {
|
||||
return this.loadTrashcan(pagination, includeFields);
|
||||
} else if (nodeId === '-sharedlinks-') {
|
||||
@@ -313,20 +317,10 @@ export class CustomResourcesService {
|
||||
getCorrespondingNodeIds(nodeId: string, pagination: PaginationModel = {}): Observable<string[]> {
|
||||
if (this.isCustomSource(nodeId)) {
|
||||
|
||||
return this.loadFolderByNodeId(nodeId, pagination, [])
|
||||
.pipe(map((result) => result.list.entries.map((node: any) => {
|
||||
if (nodeId === '-sharedlinks-') {
|
||||
return node.entry.nodeId;
|
||||
|
||||
} else if (nodeId === '-sites-' || nodeId === '-mysites-') {
|
||||
return node.entry.guid;
|
||||
|
||||
} else if (nodeId === '-favorites-') {
|
||||
return node.entry.targetGuid;
|
||||
}
|
||||
|
||||
return node.entry.id;
|
||||
})));
|
||||
return this.loadFolderByNodeId(nodeId, pagination)
|
||||
.pipe(map((result: any): string[] => {
|
||||
return result.list.entries.map((node: any): string => this.getIdFromEntry(node, nodeId));
|
||||
}));
|
||||
|
||||
} else if (nodeId) {
|
||||
// cases when nodeId is '-my-', '-root-' or '-shared-'
|
||||
@@ -337,6 +331,18 @@ export class CustomResourcesService {
|
||||
return of([]);
|
||||
}
|
||||
|
||||
getIdFromEntry(node: any, nodeId: string): string {
|
||||
if (nodeId === '-sharedlinks-') {
|
||||
return node.entry.nodeId;
|
||||
} else if (nodeId === '-sites-' || nodeId === '-mysites-') {
|
||||
return node.entry.guid;
|
||||
} else if (nodeId === '-favorites-') {
|
||||
return node.entry.targetGuid;
|
||||
} else {
|
||||
return node.entry.id;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the well-known alias have a corresponding node ID?
|
||||
* @param nodeId Node to check
|
||||
|
@@ -17,7 +17,7 @@
|
||||
|
||||
import { ContentService, TranslationService } from '@alfresco/adf-core';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { MinimalNodeEntity } from 'alfresco-js-api';
|
||||
import { NodeEntry } from '@alfresco/js-api';
|
||||
import { Observable, Subject, throwError } from 'rxjs';
|
||||
import { ContentActionHandler } from '../models/content-action.model';
|
||||
import { PermissionModel } from '../models/permissions.model';
|
||||
@@ -77,8 +77,8 @@ export class DocumentActionsService {
|
||||
* @param obj Item to receive an action
|
||||
* @returns True if the action can be executed on this item, false otherwise
|
||||
*/
|
||||
canExecuteAction(obj: any): boolean {
|
||||
return this.documentListService && obj && obj.entry.isFile === true;
|
||||
canExecuteAction(nodeEntry: NodeEntry): boolean {
|
||||
return this.documentListService && nodeEntry && nodeEntry.entry.isFile === true;
|
||||
}
|
||||
|
||||
private setupActionHandlers() {
|
||||
@@ -89,21 +89,21 @@ export class DocumentActionsService {
|
||||
this.handlers['lock'] = this.lockNode.bind(this);
|
||||
}
|
||||
|
||||
private lockNode(node: MinimalNodeEntity, target?: any, permission?: string) {
|
||||
private lockNode(node: NodeEntry, target?: any, permission?: string) {
|
||||
return this.contentNodeDialogService.openLockNodeDialog(node.entry);
|
||||
}
|
||||
|
||||
private downloadNode(obj: MinimalNodeEntity, target?: any, permission?: string) {
|
||||
private downloadNode(obj: NodeEntry, target?: any, permission?: string) {
|
||||
this.nodeActionsService.downloadNode(obj);
|
||||
}
|
||||
|
||||
private copyNode(node: MinimalNodeEntity, target?: any, permission?: string) {
|
||||
private copyNode(node: NodeEntry, target?: any, permission?: string) {
|
||||
const actionObservable = this.nodeActionsService.copyContent(node.entry, permission);
|
||||
this.prepareHandlers(actionObservable, 'content', 'copy', target, permission);
|
||||
return actionObservable;
|
||||
}
|
||||
|
||||
private moveNode(node: MinimalNodeEntity, target?: any, permission?: string) {
|
||||
private moveNode(node: NodeEntry, target?: any, permission?: string) {
|
||||
const actionObservable = this.nodeActionsService.moveContent(node.entry, permission);
|
||||
this.prepareHandlers(actionObservable, 'content', 'move', target, permission);
|
||||
return actionObservable;
|
||||
@@ -118,7 +118,7 @@ export class DocumentActionsService {
|
||||
);
|
||||
}
|
||||
|
||||
private deleteNode(node: MinimalNodeEntity, target?: any, permission?: string): Observable<any> {
|
||||
private deleteNode(node: NodeEntry, target?: any, permission?: string): Observable<any> {
|
||||
let handlerObservable;
|
||||
|
||||
if (this.canExecuteAction(node)) {
|
||||
|
@@ -26,33 +26,6 @@ describe('DocumentListService', () => {
|
||||
let service: DocumentListService;
|
||||
let alfrescoApiService: AlfrescoApiService;
|
||||
|
||||
let fakeEntryNode = {
|
||||
'entry': {
|
||||
'aspectNames': ['cm:auditable'],
|
||||
'createdAt': '2016-12-06T15:58:32.408+0000',
|
||||
'isFolder': true,
|
||||
'isFile': false,
|
||||
'createdByUser': { 'id': 'admin', 'displayName': 'Administrator' },
|
||||
'modifiedAt': '2016-12-06T15:58:32.408+0000',
|
||||
'modifiedByUser': { 'id': 'admin', 'displayName': 'Administrator' },
|
||||
'name': 'fake-name',
|
||||
'id': '2214733d-a920-4dbe-af95-4230345fae82',
|
||||
'nodeType': 'cm:folder',
|
||||
'parentId': 'ed7ab80e-b398-4bed-b38d-139ae4cc592a'
|
||||
}
|
||||
};
|
||||
|
||||
let fakeAlreadyExist = {
|
||||
'error': {
|
||||
'errorKey': 'Duplicate child name not allowed: empty',
|
||||
'statusCode': 409,
|
||||
'briefSummary': '11060002 Duplicate child name not' +
|
||||
' allowed: empty',
|
||||
'stackTrace': 'For security reasons the stack trace is no longer displayed, but the property is kept for previous versions.',
|
||||
'descriptionURL': 'https://api-explorer.alfresco.com'
|
||||
}
|
||||
};
|
||||
|
||||
let fakeFolder = {
|
||||
'list': {
|
||||
'pagination': { 'count': 1, 'hasMoreItems': false, 'totalItems': 1, 'skipCount': 0, 'maxItems': 20 },
|
||||
@@ -105,43 +78,6 @@ describe('DocumentListService', () => {
|
||||
jasmine.Ajax.uninstall();
|
||||
});
|
||||
|
||||
it('should create a folder in the path', () => {
|
||||
service.createFolder('fake-name', 'fake-path').subscribe(
|
||||
(res) => {
|
||||
expect(res).toBeDefined();
|
||||
expect(res.entry).toBeDefined();
|
||||
expect(res.entry.isFolder).toBeTruthy();
|
||||
expect(res.entry.name).toEqual('fake-name');
|
||||
expect(res.entry.nodeType).toEqual('cm:folder');
|
||||
}
|
||||
);
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
status: 200,
|
||||
contentType: 'json',
|
||||
responseText: fakeEntryNode
|
||||
});
|
||||
});
|
||||
|
||||
it('should emit an error when the folder already exist', () => {
|
||||
service.createFolder('fake-name', 'fake-path').subscribe(
|
||||
(res) => {
|
||||
|
||||
},
|
||||
(err) => {
|
||||
expect(err).toBeDefined();
|
||||
expect(err.status).toEqual(409);
|
||||
expect(err.response).toBeDefined();
|
||||
}
|
||||
);
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
status: 409,
|
||||
contentType: 'json',
|
||||
responseText: fakeAlreadyExist
|
||||
});
|
||||
});
|
||||
|
||||
it('should return the folder info', () => {
|
||||
service.getFolder('/fake-root/fake-name').subscribe(
|
||||
(res) => {
|
||||
@@ -186,7 +122,7 @@ describe('DocumentListService', () => {
|
||||
});
|
||||
|
||||
it('should add the includeTypes in the request getFolderNode if required', () => {
|
||||
let spyGetNodeInfo = spyOn(alfrescoApiService.getInstance().nodes, 'getNodeInfo').and.callThrough();
|
||||
let spyGetNodeInfo = spyOn(alfrescoApiService.getInstance().nodes, 'getNode').and.callThrough();
|
||||
|
||||
service.getFolderNode('test-id', ['isLocked']);
|
||||
|
||||
@@ -197,7 +133,7 @@ describe('DocumentListService', () => {
|
||||
});
|
||||
|
||||
it('should not add the includeTypes in the request getFolderNode if is duplicated', () => {
|
||||
let spyGetNodeInfo = spyOn(alfrescoApiService.getInstance().nodes, 'getNodeInfo').and.callThrough();
|
||||
let spyGetNodeInfo = spyOn(alfrescoApiService.getInstance().nodes, 'getNode').and.callThrough();
|
||||
|
||||
service.getFolderNode('test-id', ['allowableOperations']);
|
||||
|
||||
@@ -211,7 +147,7 @@ describe('DocumentListService', () => {
|
||||
it('should delete the folder', () => {
|
||||
service.deleteNode('fake-id').subscribe(
|
||||
(res) => {
|
||||
expect(res).toBeNull();
|
||||
expect(res).toBe('');
|
||||
}
|
||||
);
|
||||
|
||||
|
@@ -21,7 +21,7 @@ import {
|
||||
} from '@alfresco/adf-core';
|
||||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { MinimalNodeEntity, MinimalNodeEntryEntity, NodeEntry, NodePaging } from 'alfresco-js-api';
|
||||
import { NodeEntry, NodePaging } from '@alfresco/js-api';
|
||||
import { Observable, from, throwError } from 'rxjs';
|
||||
import { catchError } from 'rxjs/operators';
|
||||
|
||||
@@ -39,37 +39,6 @@ export class DocumentListService {
|
||||
private thumbnailService: ThumbnailService) {
|
||||
}
|
||||
|
||||
private getNodesPromise(folder: string, opts?: any, includeFields: string[] = []): Promise<NodePaging> {
|
||||
|
||||
let rootNodeId = DocumentListService.ROOT_ID;
|
||||
if (opts && opts.rootFolderId) {
|
||||
rootNodeId = opts.rootFolderId;
|
||||
}
|
||||
|
||||
let includeFieldsRequest = ['path', 'properties', 'allowableOperations', 'permissions', 'aspectNames', ...includeFields]
|
||||
.filter((element, index, array) => index === array.indexOf(element));
|
||||
|
||||
let params: any = {
|
||||
includeSource: true,
|
||||
include: includeFieldsRequest
|
||||
};
|
||||
|
||||
if (folder) {
|
||||
params.relativePath = folder;
|
||||
}
|
||||
|
||||
if (opts) {
|
||||
if (opts.maxItems) {
|
||||
params.maxItems = opts.maxItems;
|
||||
}
|
||||
if (opts.skipCount) {
|
||||
params.skipCount = opts.skipCount;
|
||||
}
|
||||
}
|
||||
|
||||
return this.apiService.getInstance().nodes.getNodeChildren(rootNodeId, params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a node.
|
||||
* @param nodeId ID of the node to delete
|
||||
@@ -105,19 +74,6 @@ export class DocumentListService {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new folder in the path.
|
||||
* @param name Folder name
|
||||
* @param parentId Parent folder ID
|
||||
* @returns Details of the created folder node
|
||||
*/
|
||||
createFolder(name: string, parentId: string): Observable<MinimalNodeEntity> {
|
||||
return from(this.apiService.getInstance().nodes.createFolder(name, '/', parentId))
|
||||
.pipe(
|
||||
catchError((err) => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the folder node with the specified relative name path below the root node.
|
||||
* @param folder Path to folder.
|
||||
@@ -126,10 +82,35 @@ export class DocumentListService {
|
||||
* @returns Details of the folder
|
||||
*/
|
||||
getFolder(folder: string, opts?: any, includeFields: string[] = []): Observable<NodePaging> {
|
||||
return from(this.getNodesPromise(folder, opts, includeFields))
|
||||
.pipe(
|
||||
catchError((err) => this.handleError(err))
|
||||
);
|
||||
let rootNodeId = DocumentListService.ROOT_ID;
|
||||
if (opts && opts.rootFolderId) {
|
||||
rootNodeId = opts.rootFolderId;
|
||||
}
|
||||
|
||||
let includeFieldsRequest = ['path', 'properties', 'allowableOperations', 'permissions', 'aspectNames', ...includeFields]
|
||||
.filter((element, index, array) => index === array.indexOf(element));
|
||||
|
||||
let params: any = {
|
||||
includeSource: true,
|
||||
include: includeFieldsRequest
|
||||
};
|
||||
|
||||
if (folder) {
|
||||
params.relativePath = folder;
|
||||
}
|
||||
|
||||
if (opts) {
|
||||
if (opts.maxItems) {
|
||||
params.maxItems = opts.maxItems;
|
||||
}
|
||||
if (opts.skipCount) {
|
||||
params.skipCount = opts.skipCount;
|
||||
}
|
||||
}
|
||||
|
||||
return from(this.apiService.getInstance().nodes.getNodeChildren(rootNodeId, params)).pipe(
|
||||
catchError((err) => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -153,12 +134,11 @@ export class DocumentListService {
|
||||
|
||||
/**
|
||||
* Gets a folder node via its node ID.
|
||||
* @deprecated 2.3.0
|
||||
* @param nodeId ID of the folder node
|
||||
* @param includeFields Extra information to include (available options are "aspectNames", "isLink" and "association")
|
||||
* @returns Details of the folder
|
||||
*/
|
||||
getFolderNode(nodeId: string, includeFields: string[] = []): Observable<MinimalNodeEntryEntity> {
|
||||
getFolderNode(nodeId: string, includeFields: string[] = []): Observable<NodeEntry> {
|
||||
|
||||
let includeFieldsRequest = ['path', 'properties', 'allowableOperations', 'permissions', 'aspectNames', ...includeFields]
|
||||
.filter((element, index, array) => index === array.indexOf(element));
|
||||
@@ -168,14 +148,17 @@ export class DocumentListService {
|
||||
include: includeFieldsRequest
|
||||
};
|
||||
|
||||
return from(this.apiService.getInstance().nodes.getNodeInfo(nodeId, opts));
|
||||
return from(this.apiService.getInstance().nodes.getNode(nodeId, opts)).pipe(
|
||||
catchError((err) => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get thumbnail URL for the given document node.
|
||||
* @param node Node to get URL for.
|
||||
* @returns Thumbnail URL string
|
||||
*/
|
||||
getDocumentThumbnailUrl(node: MinimalNodeEntity): string {
|
||||
getDocumentThumbnailUrl(node: NodeEntry): string {
|
||||
return this.thumbnailService.getDocumentThumbnailUrl(node);
|
||||
}
|
||||
|
||||
|
@@ -17,7 +17,7 @@
|
||||
|
||||
import { ContentService, TranslationService } from '@alfresco/adf-core';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { MinimalNodeEntity } from 'alfresco-js-api';
|
||||
import { NodeEntry } from '@alfresco/js-api';
|
||||
import { Observable, Subject, throwError } from 'rxjs';
|
||||
import { ContentActionHandler } from '../models/content-action.model';
|
||||
import { PermissionModel } from '../models/permissions.model';
|
||||
@@ -72,11 +72,11 @@ export class FolderActionsService {
|
||||
|
||||
/**
|
||||
* Checks if an action is available for a particular item.
|
||||
* @param obj Item to check
|
||||
* @param nodeEntry Item to check
|
||||
* @returns True if the action is available, false otherwise
|
||||
*/
|
||||
canExecuteAction(obj: any): boolean {
|
||||
return this.documentListService && obj && obj.entry.isFolder === true;
|
||||
canExecuteAction(nodeEntry: NodeEntry): boolean {
|
||||
return this.documentListService && nodeEntry && nodeEntry.entry.isFolder === true;
|
||||
}
|
||||
|
||||
private setupActionHandlers() {
|
||||
@@ -86,18 +86,18 @@ export class FolderActionsService {
|
||||
this.handlers['download'] = this.downloadNode.bind(this);
|
||||
}
|
||||
|
||||
private downloadNode(obj: MinimalNodeEntity, target?: any, permission?: string) {
|
||||
this.nodeActionsService.downloadNode(obj);
|
||||
private downloadNode(nodeEntry: NodeEntry) {
|
||||
this.nodeActionsService.downloadNode(nodeEntry);
|
||||
}
|
||||
|
||||
private copyNode(obj: MinimalNodeEntity, target?: any, permission?: string) {
|
||||
const actionObservable = this.nodeActionsService.copyFolder(obj.entry, permission);
|
||||
private copyNode(nodeEntry: NodeEntry, target?: any, permission?: string) {
|
||||
const actionObservable = this.nodeActionsService.copyFolder(nodeEntry.entry, permission);
|
||||
this.prepareHandlers(actionObservable, 'folder', 'copy', target, permission);
|
||||
return actionObservable;
|
||||
}
|
||||
|
||||
private moveNode(obj: MinimalNodeEntity, target?: any, permission?: string) {
|
||||
const actionObservable = this.nodeActionsService.moveFolder(obj.entry, permission);
|
||||
private moveNode(nodeEntry: NodeEntry, target?: any, permission?: string) {
|
||||
const actionObservable = this.nodeActionsService.moveFolder(nodeEntry.entry, permission);
|
||||
this.prepareHandlers(actionObservable, 'folder', 'move', target, permission);
|
||||
return actionObservable;
|
||||
}
|
||||
@@ -114,7 +114,7 @@ export class FolderActionsService {
|
||||
);
|
||||
}
|
||||
|
||||
private deleteNode(node: MinimalNodeEntity, target?: any, permission?: string): Observable<any> {
|
||||
private deleteNode(node: NodeEntry, target?: any, permission?: string): Observable<any> {
|
||||
let handlerObservable: Observable<any>;
|
||||
|
||||
if (this.canExecuteAction(node)) {
|
||||
|
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
import { async, TestBed } from '@angular/core/testing';
|
||||
import { MinimalNodeEntryEntity } from 'alfresco-js-api';
|
||||
import { Node } from '@alfresco/js-api';
|
||||
import { AppConfigService, setupTestBed, CoreModule } from '@alfresco/adf-core';
|
||||
import { DocumentListService } from './document-list.service';
|
||||
import { NodeActionsService } from './node-actions.service';
|
||||
@@ -25,7 +25,7 @@ import { of, throwError } from 'rxjs';
|
||||
import { MatDialogRef } from '@angular/material';
|
||||
import { DialogModule } from '../../dialogs/dialog.module';
|
||||
|
||||
const fakeNode: MinimalNodeEntryEntity = <MinimalNodeEntryEntity> {
|
||||
const fakeNode: Node = <Node> {
|
||||
id: 'fake'
|
||||
};
|
||||
|
||||
|
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
import { Injectable, Output, EventEmitter } from '@angular/core';
|
||||
import { MinimalNodeEntryEntity, MinimalNodeEntity } from 'alfresco-js-api';
|
||||
import { Node, NodeEntry } from '@alfresco/js-api';
|
||||
import { Subject } from 'rxjs';
|
||||
import { AlfrescoApiService, ContentService, NodeDownloadDirective } from '@alfresco/adf-core';
|
||||
import { MatDialog } from '@angular/material';
|
||||
@@ -39,7 +39,7 @@ export class NodeActionsService {
|
||||
private apiService?: AlfrescoApiService,
|
||||
private dialog?: MatDialog) {}
|
||||
|
||||
downloadNode(node: MinimalNodeEntity) {
|
||||
downloadNode(node: NodeEntry) {
|
||||
new NodeDownloadDirective(this.apiService, this.dialog)
|
||||
.downloadNode(node);
|
||||
}
|
||||
@@ -50,7 +50,7 @@ export class NodeActionsService {
|
||||
* @param contentEntry node to copy
|
||||
* @param permission permission which is needed to apply the action
|
||||
*/
|
||||
public copyContent(contentEntry: MinimalNodeEntryEntity, permission?: string): Subject<string> {
|
||||
public copyContent(contentEntry: Node, permission?: string): Subject<string> {
|
||||
return this.doFileOperation('copy', 'content', contentEntry, permission);
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ export class NodeActionsService {
|
||||
* @param contentEntry node to copy
|
||||
* @param permission permission which is needed to apply the action
|
||||
*/
|
||||
public copyFolder(contentEntry: MinimalNodeEntryEntity, permission?: string): Subject<string> {
|
||||
public copyFolder(contentEntry: Node, permission?: string): Subject<string> {
|
||||
return this.doFileOperation('copy', 'folder', contentEntry, permission);
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ export class NodeActionsService {
|
||||
* @param contentEntry node to move
|
||||
* @param permission permission which is needed to apply the action
|
||||
*/
|
||||
public moveContent(contentEntry: MinimalNodeEntryEntity, permission?: string): Subject<string> {
|
||||
public moveContent(contentEntry: Node, permission?: string): Subject<string> {
|
||||
return this.doFileOperation('move', 'content', contentEntry, permission);
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ export class NodeActionsService {
|
||||
* @param contentEntry node to move
|
||||
* @param permission permission which is needed to apply the action
|
||||
*/
|
||||
public moveFolder(contentEntry: MinimalNodeEntryEntity, permission?: string): Subject<string> {
|
||||
public moveFolder(contentEntry: Node, permission?: string): Subject<string> {
|
||||
return this.doFileOperation('move', 'folder', contentEntry, permission);
|
||||
}
|
||||
|
||||
@@ -92,12 +92,12 @@ export class NodeActionsService {
|
||||
* @param contentEntry the contentEntry which has to have the action performed on
|
||||
* @param permission permission which is needed to apply the action
|
||||
*/
|
||||
private doFileOperation(action: string, type: string, contentEntry: MinimalNodeEntryEntity, permission?: string): Subject<string> {
|
||||
private doFileOperation(action: string, type: string, contentEntry: Node, permission?: string): Subject<string> {
|
||||
const observable: Subject<string> = new Subject<string>();
|
||||
|
||||
this.contentDialogService
|
||||
.openCopyMoveDialog(action, contentEntry, permission)
|
||||
.subscribe((selections: MinimalNodeEntryEntity[]) => {
|
||||
.subscribe((selections: Node[]) => {
|
||||
const selection = selections[0];
|
||||
this.documentListService[`${action}Node`].call(this.documentListService, contentEntry.id, selection.id)
|
||||
.subscribe(
|
||||
|
Reference in New Issue
Block a user