mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2025-09-17 14:21:14 +00:00
improved diplay name and tooltip for Location column
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
import { Component, Input, ChangeDetectionStrategy, OnInit, ViewEncapsulation } from '@angular/core';
|
||||
import { DataColumn, DataRow, DataTableAdapter } from 'ng2-alfresco-datatable';
|
||||
import { PathInfoEntity } from 'alfresco-js-api';
|
||||
import { AlfrescoApiService } from 'ng2-alfresco-core';
|
||||
import { PathInfoEntity, AlfrescoApi } from 'alfresco-js-api';
|
||||
import { Observable } from 'rxjs/Rx';
|
||||
|
||||
@Component({
|
||||
selector: 'app-location-link',
|
||||
template: `
|
||||
<a href="" [title]="tooltip" [routerLink]="link">
|
||||
{{ displayText }}
|
||||
<a href="" [title]="tooltip | async" [routerLink]="link">
|
||||
{{ displayText | async }}
|
||||
</a>
|
||||
`,
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
@@ -25,10 +27,13 @@ export class LocationLinkComponent implements OnInit {
|
||||
link: any[];
|
||||
|
||||
@Input()
|
||||
displayText = '';
|
||||
displayText: Observable<string>;
|
||||
|
||||
@Input()
|
||||
tooltip = '';
|
||||
tooltip: Observable<string>;
|
||||
|
||||
constructor(private apiService: AlfrescoApiService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
if (this.context) {
|
||||
@@ -58,27 +63,81 @@ export class LocationLinkComponent implements OnInit {
|
||||
return false;
|
||||
}
|
||||
|
||||
private getDisplayText(path: PathInfoEntity): string {
|
||||
let result = path.elements[path.elements.length - 1].name;
|
||||
// todo: review once 5.2.3 is out
|
||||
private getDisplayText(path: PathInfoEntity): Observable<string> {
|
||||
const elements = path.elements.map(e => e.name);
|
||||
|
||||
if (result === 'documentLibrary') {
|
||||
result = path.elements[path.elements.length - 2].name;
|
||||
// for admin users
|
||||
if (elements.length === 1 && elements[0] === 'Company Home') {
|
||||
return Observable.of('Personal Files');
|
||||
}
|
||||
|
||||
result = result.replace('Company Home', 'Personal Files');
|
||||
// for non-admin users
|
||||
if (elements.length === 3 && elements[0] === 'Company Home' && elements[1] === 'User Homes') {
|
||||
return Observable.of('Personal Files');
|
||||
}
|
||||
|
||||
return result;
|
||||
const result = elements[elements.length - 1];
|
||||
|
||||
if (result === 'documentLibrary') {
|
||||
const fragment = path.elements[path.elements.length - 2];
|
||||
|
||||
return new Observable<string>(observer => {
|
||||
this.apiService.nodesApi.getNodeInfo(fragment.id).then(
|
||||
(node) => {
|
||||
observer.next(node.properties['cm:title'] || node.name || fragment.name);
|
||||
observer.complete();
|
||||
},
|
||||
(err) => {
|
||||
observer.next(fragment.name);
|
||||
observer.complete();
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
return Observable.of(result);
|
||||
}
|
||||
|
||||
// todo: review once 5.2.3 is out
|
||||
private getTooltip(path: PathInfoEntity): string {
|
||||
let result = path.name;
|
||||
private getTooltip(path: PathInfoEntity): Observable<string> {
|
||||
const elements = path.elements.map(e => Object.assign({}, e));
|
||||
|
||||
result = result.replace('documentLibrary/', '');
|
||||
result = result.replace('/documentLibrary', '');
|
||||
result = result.replace('/Company Home/Sites', 'File Libraries');
|
||||
result = result.replace('/Company Home', 'Personal Files');
|
||||
if (elements[0].name === 'Company Home') {
|
||||
if (elements[1].name === 'Sites') {
|
||||
const fragment = elements[2];
|
||||
|
||||
return result;
|
||||
return new Observable<string>(observer => {
|
||||
this.apiService.nodesApi.getNodeInfo(fragment.id).then(
|
||||
(node) => {
|
||||
elements.splice(0, 2);
|
||||
elements[0].name = node.properties['cm:title'] || node.name || fragment.name;
|
||||
elements.splice(1, 1);
|
||||
elements.unshift({ id: null, name: 'File Libraries' });
|
||||
|
||||
observer.next(elements.map(e => e.name).join('/'));
|
||||
observer.complete();
|
||||
},
|
||||
(err) => {
|
||||
elements.splice(0, 2);
|
||||
elements.unshift({ id: null, name: 'File Libraries' });
|
||||
elements.splice(2, 1);
|
||||
|
||||
observer.next(elements.map(e => e.name).join('/'));
|
||||
observer.complete();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
if (elements[1].name === 'User Homes') {
|
||||
elements.splice(0, 3);
|
||||
elements.unshift({ id: null, name: 'Personal Files'});
|
||||
}
|
||||
}
|
||||
|
||||
const result = elements.map(e => e.name).join('/');
|
||||
return Observable.of(result);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user