mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-19 17:14:57 +00:00
[ADF-794] Add people assignment component (#1977)
* Add people component * exported people service * added people-list component to show the involved user list * changed people-search component layout * changed people-list usage in people component * changed people-list data table from custom template to data adapter * changes people-search component related to people-list * changes in activiti-people related to people-list and people-search component * changed data adapter to direct data column setting to data-table * removed ngChanges and added User and UserEvent models * added User and UserEvent model in emitter and other emitter handler * added user event model * changed activiti-people component with latest UX changes * addedand changed translate keys to the components * added hasUser method to check the condition in html * fixed tslint issue and test case issue in activiti-people component * added test case for actviti-people-list component * test case added for activiti-people-search component * changed activiti-people test cases according to latest UX changes * added description for activiti-people component * changed test case to fix component.upgradeElement issue * changes requested by Vito Albano #1 * splitted getDisplayUser into getDisplayUser and getInitialUsername
This commit is contained in:
parent
5aa5ac9e57
commit
58340384fc
@ -0,0 +1,7 @@
|
|||||||
|
<alfresco-datatable
|
||||||
|
[rows]="users"
|
||||||
|
[actions]="hasActions()"
|
||||||
|
(rowClick)="selectUser($event)"
|
||||||
|
(showRowActionsMenu)="onShowRowActionsMenu($event)"
|
||||||
|
(executeRowAction)="onExecuteRowAction($event)">
|
||||||
|
</alfresco-datatable>
|
@ -0,0 +1,100 @@
|
|||||||
|
/*!
|
||||||
|
* @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 { ComponentFixture, TestBed, async } from '@angular/core/testing';
|
||||||
|
import { Observable } from 'rxjs/Observable';
|
||||||
|
import { CoreModule, AlfrescoTranslationService } from 'ng2-alfresco-core';
|
||||||
|
import { ActivitiPeopleList } from './activiti-people-list.component';
|
||||||
|
import { User, UserEventModel } from '../models/index';
|
||||||
|
import { DataTableModule, ObjectDataRow, DataRowEvent, DataRowActionEvent } from 'ng2-alfresco-datatable';
|
||||||
|
|
||||||
|
declare let jasmine: any;
|
||||||
|
|
||||||
|
const fakeUser: User = new User({
|
||||||
|
id: '1',
|
||||||
|
firstName: 'fake-name',
|
||||||
|
lastName: 'fake-last',
|
||||||
|
email: 'fake@mail.com'
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('ActivitiPeopleList', () => {
|
||||||
|
|
||||||
|
let activitiPeopleListComponent: ActivitiPeopleList;
|
||||||
|
let fixture: ComponentFixture<ActivitiPeopleList>;
|
||||||
|
let element: HTMLElement;
|
||||||
|
let componentHandler;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [
|
||||||
|
CoreModule.forRoot(),
|
||||||
|
DataTableModule
|
||||||
|
],
|
||||||
|
declarations: [
|
||||||
|
ActivitiPeopleList
|
||||||
|
]
|
||||||
|
}).compileComponents().then(() => {
|
||||||
|
|
||||||
|
let translateService = TestBed.get(AlfrescoTranslationService);
|
||||||
|
spyOn(translateService, 'addTranslationFolder').and.stub();
|
||||||
|
spyOn(translateService.translate, 'get').and.callFake((key) => { return Observable.of(key); });
|
||||||
|
|
||||||
|
fixture = TestBed.createComponent(ActivitiPeopleList);
|
||||||
|
activitiPeopleListComponent = fixture.componentInstance;
|
||||||
|
element = fixture.nativeElement;
|
||||||
|
componentHandler = jasmine.createSpyObj('componentHandler', [
|
||||||
|
'upgradeAllRegistered'
|
||||||
|
]);
|
||||||
|
|
||||||
|
window['componentHandler'] = componentHandler;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should emit row click event', (done) => {
|
||||||
|
let row = new ObjectDataRow(fakeUser);
|
||||||
|
let rowEvent = new DataRowEvent(row, null);
|
||||||
|
|
||||||
|
activitiPeopleListComponent.clickRow.subscribe(selectedUser => {
|
||||||
|
expect(selectedUser.id).toEqual('1');
|
||||||
|
expect(selectedUser.email).toEqual('fake@mail.com');
|
||||||
|
expect(activitiPeopleListComponent.user.id).toEqual('1');
|
||||||
|
expect(activitiPeopleListComponent.user.email).toEqual('fake@mail.com');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
|
||||||
|
activitiPeopleListComponent.selectUser(rowEvent);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should emit row action event', (done) => {
|
||||||
|
let row = new ObjectDataRow(fakeUser);
|
||||||
|
let removeObj = {
|
||||||
|
name: 'remove',
|
||||||
|
title: 'Remove'
|
||||||
|
};
|
||||||
|
let rowActionEvent = new DataRowActionEvent(row, removeObj);
|
||||||
|
|
||||||
|
activitiPeopleListComponent.clickAction.subscribe((selectedAction: UserEventModel) => {
|
||||||
|
expect(selectedAction.type).toEqual('remove');
|
||||||
|
expect(selectedAction.value.id).toEqual('1');
|
||||||
|
expect(selectedAction.value.email).toEqual('fake@mail.com');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
|
||||||
|
activitiPeopleListComponent.onExecuteRowAction(rowActionEvent);
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,99 @@
|
|||||||
|
/*!
|
||||||
|
* @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 { Component, Input, Output, EventEmitter, ViewChild, ContentChild } from '@angular/core';
|
||||||
|
import { User, UserEventModel } from '../models/index';
|
||||||
|
import { DataColumnListComponent } from 'ng2-alfresco-core';
|
||||||
|
import { DataTableComponent } from 'ng2-alfresco-datatable';
|
||||||
|
|
||||||
|
declare let componentHandler: any;
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'activiti-people-list',
|
||||||
|
templateUrl: './activiti-people-list.component.html',
|
||||||
|
styleUrls: ['./activiti-people-list.component.css']
|
||||||
|
})
|
||||||
|
|
||||||
|
export class ActivitiPeopleList {
|
||||||
|
|
||||||
|
@ContentChild(DataColumnListComponent) columnList: DataColumnListComponent;
|
||||||
|
|
||||||
|
@ViewChild(DataTableComponent)
|
||||||
|
peopleDataTable: DataTableComponent;
|
||||||
|
|
||||||
|
@Input()
|
||||||
|
users: User[];
|
||||||
|
|
||||||
|
@Input()
|
||||||
|
actions: boolean = false;
|
||||||
|
|
||||||
|
@Output()
|
||||||
|
clickRow: EventEmitter<User> = new EventEmitter<User>();
|
||||||
|
|
||||||
|
@Output()
|
||||||
|
clickAction: EventEmitter<UserEventModel> = new EventEmitter<UserEventModel>();
|
||||||
|
|
||||||
|
user: User;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
}
|
||||||
|
|
||||||
|
ngAfterContentInit() {
|
||||||
|
this.peopleDataTable.columnList = this.columnList;
|
||||||
|
}
|
||||||
|
|
||||||
|
ngAfterViewInit() {
|
||||||
|
this.setupMaterialComponents(componentHandler);
|
||||||
|
}
|
||||||
|
|
||||||
|
setupMaterialComponents(handler?: any): boolean {
|
||||||
|
// workaround for MDL issues with dynamic components
|
||||||
|
let isUpgraded: boolean = false;
|
||||||
|
if (handler) {
|
||||||
|
handler.upgradeAllRegistered();
|
||||||
|
isUpgraded = true;
|
||||||
|
}
|
||||||
|
return isUpgraded;
|
||||||
|
}
|
||||||
|
|
||||||
|
selectUser(event: any) {
|
||||||
|
this.user = event.value.obj;
|
||||||
|
this.clickRow.emit(this.user);
|
||||||
|
}
|
||||||
|
|
||||||
|
hasActions(): boolean {
|
||||||
|
return this.actions;
|
||||||
|
}
|
||||||
|
|
||||||
|
onShowRowActionsMenu(event: any) {
|
||||||
|
|
||||||
|
let removeAction = {
|
||||||
|
title: 'Remove',
|
||||||
|
name: 'remove'
|
||||||
|
};
|
||||||
|
|
||||||
|
event.value.actions = [
|
||||||
|
removeAction
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
onExecuteRowAction(event: any) {
|
||||||
|
let args = event.value;
|
||||||
|
let action = args.action;
|
||||||
|
this.clickAction.emit(new UserEventModel({type: action.name, value: args.row.obj}));
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user