support page picker for document list (#2424)

This commit is contained in:
Denys Vuika
2017-10-04 15:03:11 +01:00
committed by Eugenio Romano
parent 80b6e15420
commit 12f5a219f5
4 changed files with 67 additions and 42 deletions

View File

@@ -16,7 +16,10 @@
*/
import { Injectable } from '@angular/core';
import { AlfrescoApi, ContentApi, NodesApi, RenditionsApi } from 'alfresco-js-api';
import {
AlfrescoApi, ContentApi, FavoritesApi, NodesApi,
PeopleApi, RenditionsApi, SharedlinksApi, SitesApi
} from 'alfresco-js-api';
import * as alfrescoApi from 'alfresco-js-api';
import { AppConfigService } from './app-config.service';
import { StorageService } from './storage.service';
@@ -42,6 +45,26 @@ export class AlfrescoApiService {
return this.getInstance().core.renditionsApi;
}
get sharedLinksApi(): SharedlinksApi {
return this.getInstance().core.sharedlinksApi;
}
get sitesApi(): SitesApi {
return this.getInstance().core.sitesApi;
}
get favoritesApi(): FavoritesApi {
return this.getInstance().core.favoritesApi;
}
get peopleApi(): PeopleApi {
return this.getInstance().core.peopleApi;
}
get searchApi() {
return this.getInstance().search.searchApi;
}
constructor(private appConfig: AppConfigService,
private storage: StorageService) {

View File

@@ -55,6 +55,7 @@
*ngIf="isPaginationNeeded()"
class="adf-documentlist-pagination"
(changePageSize)="onChangePageSize($event)"
(changePageNumber)="onChangePageNumber($event)"
(nextPage)="onNextPage($event)"
(prevPage)="onPrevPage($event)"
[pagination]="pagination"

View File

@@ -17,6 +17,7 @@
import { CUSTOM_ELEMENTS_SCHEMA, NgZone, SimpleChange, TemplateRef } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { Pagination } from 'alfresco-js-api';
import { AlfrescoApiService, AlfrescoTranslationService, CoreModule } from 'ng2-alfresco-core';
import { DataColumn, DataTableComponent } from 'ng2-alfresco-datatable';
import { DataTableModule } from 'ng2-alfresco-datatable';
@@ -76,7 +77,6 @@ describe('DocumentList', () => {
fixture = TestBed.createComponent(DocumentListComponent);
let translateService = TestBed.get(AlfrescoTranslationService);
// spyOn(translateService, 'addTranslationFolder').and.stub();
spyOn(translateService, 'get').and.callFake((key) => {
return Observable.of(key);
});
@@ -905,11 +905,10 @@ describe('DocumentList', () => {
});
it('should fetch trashcan', () => {
const nodesApi = apiService.getInstance().core.nodesApi;
spyOn(nodesApi, 'getDeletedNodes').and.returnValue(Promise.resolve(null));
spyOn(apiService.nodesApi, 'getDeletedNodes').and.returnValue(Promise.resolve(null));
documentList.loadFolderByNodeId('-trashcan-');
expect(nodesApi.getDeletedNodes).toHaveBeenCalled();
expect(apiService.nodesApi.getDeletedNodes).toHaveBeenCalled();
});
it('should fetch shared links', () => {
@@ -937,20 +936,40 @@ describe('DocumentList', () => {
});
it('should fetch recent', (done) => {
const person = { entry: { id: 'person '} };
const peopleApi = apiService.getInstance().core.peopleApi;
const searchApi = apiService.getInstance().search.searchApi;
spyOn(peopleApi, 'getPerson').and.returnValue(Promise.resolve(person));
spyOn(searchApi, 'search').and.returnValue(Promise.resolve(null));
spyOn(apiService.peopleApi, 'getPerson').and.returnValue(Promise.resolve(person));
spyOn(apiService.searchApi, 'search').and.returnValue(Promise.resolve(null));
documentList.loadFolderByNodeId('-recent-');
setTimeout(function() {
expect(peopleApi.getPerson).toHaveBeenCalledWith('-me-');
expect(searchApi.search).toHaveBeenCalled();
expect(apiService.peopleApi.getPerson).toHaveBeenCalledWith('-me-');
expect(apiService.searchApi.search).toHaveBeenCalled();
done();
}, 100);
});
it('should switch to another page', () => {
spyOn(documentList, 'reload').and.stub();
const page1: Pagination = {
maxItems: 5,
skipCount: 0
};
const page2: Pagination = {
maxItems: 5,
skipCount: 10
};
documentList.onChangePageNumber(page1);
expect(documentList.pageSize).toBe(page1.maxItems);
expect(documentList.skipCount).toBe(page1.skipCount);
documentList.onChangePageNumber(page2);
expect(documentList.pageSize).toBe(page2.maxItems);
expect(documentList.skipCount).toBe(page2.skipCount);
expect(documentList.reload).toHaveBeenCalledTimes(2);
});
});

View File

@@ -172,30 +172,6 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
this.supportedPageSizes = appConfig.get('document-list.supportedPageSizes', [5, 10, 15, 20]);
}
private get nodesApi() {
return this.apiService.getInstance().core.nodesApi;
}
private get sharedLinksApi() {
return this.apiService.getInstance().core.sharedlinksApi;
}
private get sitesApi() {
return this.apiService.getInstance().core.sitesApi;
}
private get favoritesApi() {
return this.apiService.getInstance().core.favoritesApi;
}
private get peopleApi() {
return this.apiService.getInstance().core.peopleApi;
}
private get searchApi() {
return this.apiService.getInstance().search.searchApi;
}
getContextActions(node: MinimalNodeEntity) {
if (node && node.entry) {
let actions = this.getNodeActions(node);
@@ -495,7 +471,7 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
maxItems: this.pageSize,
skipCount: this.skipCount
};
this.nodesApi.getDeletedNodes(options).then((page: NodePaging) => {
this.apiService.nodesApi.getDeletedNodes(options).then((page: NodePaging) => {
this.onPageLoaded(page);
});
}
@@ -506,7 +482,7 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
maxItems: this.pageSize,
skipCount: this.skipCount
};
this.sharedLinksApi.findSharedLinks(options).then((page: NodePaging) => {
this.apiService.sharedLinksApi.findSharedLinks(options).then((page: NodePaging) => {
this.onPageLoaded(page);
});
}
@@ -518,7 +494,7 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
skipCount: this.skipCount
};
this.sitesApi.getSites(options).then((page: NodePaging) => {
this.apiService.sitesApi.getSites(options).then((page: NodePaging) => {
this.onPageLoaded(page);
});
}
@@ -531,7 +507,7 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
include: [ 'properties', 'allowableOperations', 'path' ]
};
this.favoritesApi.getFavorites('-me-', options).then((result: NodePaging) => {
this.apiService.favoritesApi.getFavorites('-me-', options).then((result: NodePaging) => {
let page: NodePaging = {
list: {
entries: result.list.entries
@@ -553,7 +529,7 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
}
private loadRecent(): void {
this.peopleApi.getPerson('-me-').then((person: PersonEntry) => {
this.apiService.peopleApi.getPerson('-me-').then((person: PersonEntry) => {
const username = person.entry.id;
const query = {
query: {
@@ -577,7 +553,7 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
}
};
this.searchApi.search(query).then(page => this.onPageLoaded(page));
this.apiService.searchApi.search(query).then(page => this.onPageLoaded(page));
});
}
@@ -733,6 +709,12 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
this.reload();
}
onChangePageNumber(page: Pagination): void {
this.pageSize = page.maxItems;
this.skipCount = page.skipCount;
this.reload();
}
onNextPage(event: Pagination): void {
this.skipCount = event.skipCount;
this.reload();