mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-26 17:24:56 +00:00
#805 display form name in task header
- add support for displaying form name in task header (only when form loaded) - fix live reload for task-details component (demo shell) - code improvements (including type-safe events)
This commit is contained in:
parent
903c313615
commit
5aaa2d6682
@ -8,6 +8,7 @@
|
|||||||
"node_modules/ng2-alfresco-upload/dist/**/*.{html,css,js}",
|
"node_modules/ng2-alfresco-upload/dist/**/*.{html,css,js}",
|
||||||
"node_modules/ng2-alfresco-viewer/dist/**/*.{html,css,js}",
|
"node_modules/ng2-alfresco-viewer/dist/**/*.{html,css,js}",
|
||||||
"node_modules/ng2-alfresco-webscript/dist/**/*.{html,css,js}",
|
"node_modules/ng2-alfresco-webscript/dist/**/*.{html,css,js}",
|
||||||
"node_modules/ng2-activiti-form/dist/**/*.{html,css,js}"
|
"node_modules/ng2-activiti-form/dist/**/*.{html,css,js}",
|
||||||
|
"node_modules/ng2-activiti-tasklist/dist/**/*.{html,css,js}"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div *ngIf="taskDetails">
|
<div *ngIf="taskDetails">
|
||||||
<h2 class="mdl-card__title-text">{{taskDetails.name}}</h2>
|
<h2 class="mdl-card__title-text">{{taskDetails.name}}</h2>
|
||||||
<activiti-task-header [taskDetails]="taskDetails" #activitiheader></activiti-task-header>
|
<activiti-task-header [taskDetails]="taskDetails" [formName]="taskFormName" #activitiheader></activiti-task-header>
|
||||||
<div class="mdl-grid">
|
<div class="mdl-grid">
|
||||||
<div class="mdl-cell mdl-cell--4-col">
|
<div class="mdl-cell mdl-cell--4-col">
|
||||||
<activiti-people [people]="taskPeople" [readOnly]="readOnlyForm"
|
<activiti-people [people]="taskPeople" [readOnly]="readOnlyForm"
|
||||||
@ -30,11 +30,11 @@
|
|||||||
[showCompleteButton]="showFormCompleteButton"
|
[showCompleteButton]="showFormCompleteButton"
|
||||||
[showSaveButton]="showFormSaveButton"
|
[showSaveButton]="showFormSaveButton"
|
||||||
[readOnly]="readOnlyForm"
|
[readOnly]="readOnlyForm"
|
||||||
(formSaved)='formSavedEmitter($event)'
|
(formSaved)='onFormSaved($event)'
|
||||||
(formCompleted)='formCompletedEmitter($event)'
|
(formCompleted)='onFormCompleted($event)'
|
||||||
(formLoaded)='formLoadedEmitter($event)'
|
(formLoaded)='onFormLoaded($event)'
|
||||||
(onError)='onErrorEmitter($event)'
|
(onError)='onFormError($event)'
|
||||||
(executeOutcome)='executeOutcomeEmitter($event)'
|
(executeOutcome)='onExecuteFormOutcome($event)'
|
||||||
#activitiForm>
|
#activitiForm>
|
||||||
</activiti-form>
|
</activiti-form>
|
||||||
<button type="button" class="mdl-button" *ngIf="!hasFormKey() && isTaskActive()" (click)="onComplete()">
|
<button type="button" class="mdl-button" *ngIf="!hasFormKey() && isTaskActive()" (click)="onComplete()">
|
||||||
|
@ -20,11 +20,9 @@ import { AlfrescoTranslationService, AlfrescoAuthenticationService } from 'ng2-a
|
|||||||
import { ActivitiTaskListService } from './../services/activiti-tasklist.service';
|
import { ActivitiTaskListService } from './../services/activiti-tasklist.service';
|
||||||
import { TaskDetailsModel } from '../models/task-details.model';
|
import { TaskDetailsModel } from '../models/task-details.model';
|
||||||
import { User } from '../models/user.model';
|
import { User } from '../models/user.model';
|
||||||
import { FormModel, FormService } from 'ng2-activiti-form';
|
import { FormService, FormModel, FormOutcomeEvent } from 'ng2-activiti-form';
|
||||||
import { TaskQueryRequestRepresentationModel } from '../models/filter.model';
|
import { TaskQueryRequestRepresentationModel } from '../models/filter.model';
|
||||||
|
|
||||||
declare let componentHandler: any;
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'activiti-task-details',
|
selector: 'activiti-task-details',
|
||||||
moduleId: module.id,
|
moduleId: module.id,
|
||||||
@ -61,23 +59,22 @@ export class ActivitiTaskDetails implements OnInit, OnChanges {
|
|||||||
showFormRefreshButton: boolean = true;
|
showFormRefreshButton: boolean = true;
|
||||||
|
|
||||||
@Output()
|
@Output()
|
||||||
formSaved = new EventEmitter();
|
formSaved: EventEmitter<FormModel> = new EventEmitter<FormModel>();
|
||||||
|
|
||||||
@Output()
|
@Output()
|
||||||
formCompleted = new EventEmitter();
|
formCompleted: EventEmitter<FormModel> = new EventEmitter<FormModel>();
|
||||||
|
|
||||||
@Output()
|
@Output()
|
||||||
formLoaded = new EventEmitter();
|
formLoaded: EventEmitter<FormModel> = new EventEmitter<FormModel>();
|
||||||
|
|
||||||
@Output()
|
@Output()
|
||||||
onError = new EventEmitter();
|
onError: EventEmitter<any> = new EventEmitter<any>();
|
||||||
|
|
||||||
@Output()
|
@Output()
|
||||||
executeOutcome = new EventEmitter();
|
executeOutcome: EventEmitter<FormOutcomeEvent> = new EventEmitter<FormOutcomeEvent>();
|
||||||
|
|
||||||
taskDetails: TaskDetailsModel;
|
taskDetails: TaskDetailsModel;
|
||||||
|
taskFormName: string = null;
|
||||||
taskForm: FormModel;
|
|
||||||
|
|
||||||
taskPeople: User[] = [];
|
taskPeople: User[] = [];
|
||||||
|
|
||||||
@ -142,8 +139,8 @@ export class ActivitiTaskDetails implements OnInit, OnChanges {
|
|||||||
* @param taskId
|
* @param taskId
|
||||||
*/
|
*/
|
||||||
loadDetails(taskId: string) {
|
loadDetails(taskId: string) {
|
||||||
this.taskForm = null;
|
|
||||||
this.taskPeople = [];
|
this.taskPeople = [];
|
||||||
|
this.taskFormName = null;
|
||||||
if (taskId) {
|
if (taskId) {
|
||||||
this.activitiTaskList.getTaskDetails(taskId).subscribe(
|
this.activitiTaskList.getTaskDetails(taskId).subscribe(
|
||||||
(res: TaskDetailsModel) => {
|
(res: TaskDetailsModel) => {
|
||||||
@ -194,61 +191,34 @@ export class ActivitiTaskDetails implements OnInit, OnChanges {
|
|||||||
*/
|
*/
|
||||||
onComplete() {
|
onComplete() {
|
||||||
this.activitiTaskList.completeTask(this.taskId).subscribe(
|
this.activitiTaskList.completeTask(this.taskId).subscribe(
|
||||||
(res) => {
|
(res) => this.formCompleted.emit(null)
|
||||||
console.log(res);
|
|
||||||
this.formCompleted.emit(res);
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
onFormSaved(form: FormModel) {
|
||||||
* Emit the form saved event
|
this.formSaved.emit(form);
|
||||||
* @param data
|
|
||||||
*/
|
|
||||||
formSavedEmitter(data: any) {
|
|
||||||
this.formSaved.emit(data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
onFormCompleted(form: FormModel) {
|
||||||
* Emit the form completed event
|
this.formCompleted.emit(form);
|
||||||
* @param data
|
if (this.showNextTask) {
|
||||||
*/
|
|
||||||
formCompletedEmitter(data: any) {
|
|
||||||
this.formCompleted.emit(data);
|
|
||||||
if (this.isShowNextTask()) {
|
|
||||||
this.loadNextTask(this.taskDetails.processInstanceId, this.taskDetails.processDefinitionId);
|
this.loadNextTask(this.taskDetails.processInstanceId, this.taskDetails.processDefinitionId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
onFormLoaded(form: FormModel) {
|
||||||
* Emit the form loaded event
|
this.taskFormName = null;
|
||||||
* @param data
|
if (form && form.name) {
|
||||||
*/
|
this.taskFormName = form.name;
|
||||||
formLoadedEmitter(data: any) {
|
}
|
||||||
this.formLoaded.emit(data);
|
this.formLoaded.emit(form);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
onFormError(error: any) {
|
||||||
* Emit the error event of the form
|
this.onError.emit(error);
|
||||||
* @param data
|
|
||||||
*/
|
|
||||||
onErrorEmitter(err: any) {
|
|
||||||
this.onError.emit(err);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
onExecuteFormOutcome(event: FormOutcomeEvent) {
|
||||||
* Emit the execute outcome of the form
|
this.executeOutcome.emit(event);
|
||||||
* @param data
|
|
||||||
*/
|
|
||||||
executeOutcomeEmitter(data: any) {
|
|
||||||
this.executeOutcome.emit(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the showNexTask value
|
|
||||||
* @returns {boolean}
|
|
||||||
*/
|
|
||||||
isShowNextTask(): boolean {
|
|
||||||
return this.showNextTask;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,10 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.activiti-label {
|
.activiti-task-header__label {
|
||||||
font-weight: bolder;
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.activiti-task-header__value {
|
||||||
|
color: rgb(68,138,255);
|
||||||
}
|
}
|
@ -1,14 +1,16 @@
|
|||||||
<div *ngIf="taskDetails">
|
<div *ngIf="taskDetails">
|
||||||
<div class="mdl-grid">
|
<div class="mdl-grid">
|
||||||
<div class="mdl-cell mdl-cell--4-col">
|
<div class="mdl-cell mdl-cell--4-col">
|
||||||
<span class="activiti-label">{{ 'TASK_DETAILS.LABELS.ASSIGNEE' | translate }}</span>:
|
<span class="activiti-task-header__label">{{ 'TASK_DETAILS.LABELS.ASSIGNEE' | translate }}: </span>
|
||||||
{{taskDetails.assignee.lastName }}
|
<span class="activiti-task-header__value">{{taskDetails.assignee.lastName }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="mdl-cell mdl-cell--4-col">
|
<div class="mdl-cell mdl-cell--4-col">
|
||||||
<span class="activiti-label">
|
<span class="activiti-task-header__label">{{ 'TASK_DETAILS.LABELS.DUE' | translate }}: </span>
|
||||||
{{ 'TASK_DETAILS.LABELS.DUE' | translate }}</span>:
|
<span class="activiti-task-header__value">{{taskDetails?.dueDate ? taskDetails.dueDate : ('TASK_DETAILS.DUE.NONE' |translate) }}</span>
|
||||||
{{taskDetails?.dueDate ? taskDetails.dueDate : ('TASK_DETAILS.DUE.NONE' |translate) }}
|
</div>
|
||||||
|
<div *ngIf="formName" class="mdl-cell mdl-cell--4-col">
|
||||||
|
<span class="activiti-task-header__label">{{ 'TASK_DETAILS.LABELS.FORM' | translate }}: </span>
|
||||||
|
<span class="activiti-task-header__value">{{formName}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
@ -19,8 +19,6 @@ import { Component, Input } from '@angular/core';
|
|||||||
import { AlfrescoTranslationService } from 'ng2-alfresco-core';
|
import { AlfrescoTranslationService } from 'ng2-alfresco-core';
|
||||||
import { TaskDetailsModel } from '../models/task-details.model';
|
import { TaskDetailsModel } from '../models/task-details.model';
|
||||||
|
|
||||||
declare let componentHandler: any;
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'activiti-task-header',
|
selector: 'activiti-task-header',
|
||||||
moduleId: module.id,
|
moduleId: module.id,
|
||||||
@ -29,19 +27,15 @@ declare let componentHandler: any;
|
|||||||
})
|
})
|
||||||
export class ActivitiTaskHeader {
|
export class ActivitiTaskHeader {
|
||||||
|
|
||||||
|
@Input()
|
||||||
|
formName: string = 'No form';
|
||||||
|
|
||||||
@Input()
|
@Input()
|
||||||
taskDetails: TaskDetailsModel;
|
taskDetails: TaskDetailsModel;
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
* @param auth
|
|
||||||
* @param translate
|
|
||||||
*/
|
|
||||||
constructor(private translate: AlfrescoTranslationService) {
|
constructor(private translate: AlfrescoTranslationService) {
|
||||||
|
|
||||||
if (translate) {
|
if (translate) {
|
||||||
translate.addTranslationFolder('node_modules/ng2-activiti-tasklist/src');
|
translate.addTranslationFolder('node_modules/ng2-activiti-tasklist/src');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user