mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-31 17:38:48 +00:00
* #1014 use document list to diplay search results * #1014 refactor pagination * #1014 documentation and scripts update * fix random erros on tests executrion * #1014 fix travis scripts and raise timeout jasmine * #1014 fix appveyor script * #1014 type nodeId
This commit is contained in:
committed by
Denys Vuika
parent
9e00b1d4f1
commit
b05247dade
@@ -15,9 +15,22 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, OnInit, Input, OnChanges, Output, SimpleChanges, EventEmitter, AfterContentInit, TemplateRef, NgZone, ViewChild, HostListener } from '@angular/core';
|
||||
import {
|
||||
Component,
|
||||
OnInit,
|
||||
Input,
|
||||
OnChanges,
|
||||
Output,
|
||||
SimpleChanges,
|
||||
EventEmitter,
|
||||
AfterContentInit,
|
||||
TemplateRef,
|
||||
NgZone,
|
||||
ViewChild,
|
||||
HostListener
|
||||
} from '@angular/core';
|
||||
import { Subject } from 'rxjs/Rx';
|
||||
import { MinimalNodeEntity, MinimalNodeEntryEntity } from 'alfresco-js-api';
|
||||
import { MinimalNodeEntity, MinimalNodeEntryEntity, NodePaging, Pagination } from 'alfresco-js-api';
|
||||
import { AlfrescoTranslationService } from 'ng2-alfresco-core';
|
||||
import { DataRowEvent, DataTableComponent, ObjectDataColumn } from 'ng2-alfresco-datatable';
|
||||
import { DocumentListService } from './../services/document-list.service';
|
||||
@@ -55,6 +68,9 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
|
||||
@Input()
|
||||
multiselect: boolean = false;
|
||||
|
||||
@Input()
|
||||
enablePagination: boolean = true;
|
||||
|
||||
@Input()
|
||||
contentActions: boolean = false;
|
||||
|
||||
@@ -67,10 +83,15 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
|
||||
@Input()
|
||||
pageSize: number = DocumentListComponent.DEFAULT_PAGE_SIZE;
|
||||
|
||||
skipCount: number = 0;
|
||||
|
||||
pagination: Pagination;
|
||||
|
||||
@Input()
|
||||
set rowFilter(value: RowFilter) {
|
||||
if (this.data) {
|
||||
if (this.data && value && this.currentFolderId) {
|
||||
this.data.setFilter(value);
|
||||
this.loadFolderNodesByFolderNodeId(this.currentFolderId, this.pageSize, this.skipCount);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -81,6 +102,16 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
|
||||
}
|
||||
}
|
||||
|
||||
// The identifier of a node. You can also use one of these well-known aliases: -my- | -shared- | -root-
|
||||
@Input()
|
||||
currentFolderId: string = null;
|
||||
|
||||
@Input()
|
||||
folderNode: MinimalNodeEntryEntity = null;
|
||||
|
||||
@Input()
|
||||
node: NodePaging = null;
|
||||
|
||||
@Output()
|
||||
nodeClick: EventEmitter<any> = new EventEmitter();
|
||||
|
||||
@@ -102,25 +133,17 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
|
||||
@ViewChild(DataTableComponent)
|
||||
dataTable: DataTableComponent;
|
||||
|
||||
// The identifier of a node. You can also use one of these well-known aliases: -my- | -shared- | -root-
|
||||
@Input()
|
||||
currentFolderId: string = null;
|
||||
|
||||
@Input()
|
||||
folderNode: MinimalNodeEntryEntity = null;
|
||||
|
||||
errorMessage;
|
||||
actions: ContentActionModel[] = [];
|
||||
emptyFolderTemplate: TemplateRef<any>;
|
||||
contextActionHandler: Subject<any> = new Subject();
|
||||
data: ShareDataTableAdapter;
|
||||
|
||||
constructor(
|
||||
private documentListService: DocumentListService,
|
||||
private ngZone: NgZone,
|
||||
private translateService: AlfrescoTranslationService) {
|
||||
constructor(private documentListService: DocumentListService,
|
||||
private ngZone: NgZone,
|
||||
private translateService: AlfrescoTranslationService) {
|
||||
|
||||
this.data = new ShareDataTableAdapter(this.documentListService, './', []);
|
||||
this.data = new ShareDataTableAdapter(this.documentListService, this.baseComponentPath, []);
|
||||
|
||||
if (translateService) {
|
||||
translateService.addTranslationFolder('ng2-alfresco-documentlist', 'node_modules/ng2-alfresco-documentlist/src');
|
||||
@@ -151,15 +174,15 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
|
||||
|
||||
ngOnInit() {
|
||||
this.data.thumbnails = this.thumbnails;
|
||||
this.data.maxItems = this.pageSize;
|
||||
this.contextActionHandler.subscribe(val => this.contextActionCallback(val));
|
||||
|
||||
// Automatically enforce single-click navigation for mobile browsers
|
||||
this.enforceSingleClickNavigationForMobile();
|
||||
}
|
||||
|
||||
private enforceSingleClickNavigationForMobile(): void {
|
||||
if (this.isMobile()) {
|
||||
this.navigationMode = DocumentListComponent.SINGLE_CLICK_NAVIGATION;
|
||||
}
|
||||
|
||||
this.loadFolder();
|
||||
}
|
||||
|
||||
ngAfterContentInit() {
|
||||
@@ -172,9 +195,37 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
|
||||
ngOnChanges(changes: SimpleChanges) {
|
||||
if (changes['folderNode'] && changes['folderNode'].currentValue) {
|
||||
this.loadFolder();
|
||||
} else if (changes['currentFolderId'] && changes['currentFolderId'].currentValue) {
|
||||
this.loadFolderByNodeId(changes['currentFolderId'].currentValue);
|
||||
return;
|
||||
}
|
||||
|
||||
if (changes['currentFolderId'] && changes['currentFolderId'].currentValue) {
|
||||
this.loadFolderByNodeId(changes['currentFolderId'].currentValue);
|
||||
return;
|
||||
}
|
||||
|
||||
if (changes['node'] && changes['node'].currentValue) {
|
||||
this.data.loadPage(changes['node'].currentValue);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
reload() {
|
||||
this.ngZone.run(() => {
|
||||
if (this.folderNode) {
|
||||
this.loadFolder();
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.currentFolderId) {
|
||||
this.loadFolderByNodeId(this.currentFolderId);
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.node) {
|
||||
this.data.loadPage(this.node);
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
isEmptyTemplateDefined() {
|
||||
@@ -229,7 +280,7 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
|
||||
this.folderNode = node.entry;
|
||||
|
||||
this.loadFolder();
|
||||
this.folderChange.emit({ node: node.entry });
|
||||
this.folderChange.emit({node: node.entry});
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -246,21 +297,10 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
|
||||
}
|
||||
}
|
||||
|
||||
loadFolderById(id: string): Promise<any> {
|
||||
return this.data.loadById(id);
|
||||
}
|
||||
|
||||
reload() {
|
||||
this.ngZone.run(() => {
|
||||
this.loadFolder();
|
||||
});
|
||||
}
|
||||
|
||||
loadFolder() {
|
||||
let nodeId = this.folderNode ? this.folderNode.id : this.currentFolderId;
|
||||
if (nodeId) {
|
||||
this.loadFolderById(nodeId)
|
||||
.catch(err => this.error.emit(err));
|
||||
this.loadFolderNodesByFolderNodeId(nodeId, this.pageSize, this.skipCount).catch(err => this.error.emit(err));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -269,9 +309,33 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
|
||||
this.documentListService.getFolderNode(nodeId).then(node => {
|
||||
this.folderNode = node;
|
||||
this.currentFolderId = node.id;
|
||||
this.data.loadById(node.id).catch(err => this.error.emit(err));
|
||||
this.loadFolderNodesByFolderNodeId(node.id, this.pageSize, this.skipCount).catch(err => this.error.emit(err));
|
||||
})
|
||||
.catch(err => this.error.emit(err));
|
||||
.catch(err => this.error.emit(err));
|
||||
}
|
||||
|
||||
loadFolderNodesByFolderNodeId(id: string, maxItems: number, skipCount: number): Promise<any> {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (id && this.documentListService) {
|
||||
this.documentListService
|
||||
.getFolder(null, {
|
||||
maxItems: maxItems,
|
||||
skipCount: skipCount,
|
||||
rootFolderId: id
|
||||
})
|
||||
.subscribe(val => {
|
||||
this.data.loadPage(<NodePaging>val);
|
||||
this.pagination = val.list.pagination;
|
||||
resolve(true);
|
||||
},
|
||||
error => {
|
||||
reject(error);
|
||||
});
|
||||
} else {
|
||||
resolve(false);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -387,4 +451,19 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni
|
||||
this.reload();
|
||||
this.success.emit(event);
|
||||
}
|
||||
|
||||
public onChangePageSize(event: Pagination): void {
|
||||
this.pageSize = event.maxItems;
|
||||
this.reload();
|
||||
}
|
||||
|
||||
public onNextPage(event: Pagination): void {
|
||||
this.skipCount = event.skipCount;
|
||||
this.reload();
|
||||
}
|
||||
|
||||
public onPrevPage(event: Pagination): void {
|
||||
this.skipCount = event.skipCount;
|
||||
this.reload();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user