mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-12 17:04:57 +00:00
* [ADF-4248] Created form cloud service * [ADF-4248] Created form cloud model * [ADF-4248] Created new cloud form * [ADF-4248] Exported cloud from module * [ADF-4248] Added form saving feature * [ADF-4248] Added form to task details * [ADF-4248] Added services to save form * [ADF-4248] Added data support * [ADF-4248] Added outcome support in form model * [ADF-4248] Modified demo component to show form * [ADF-4248] Copied tests * [ADF-4248] Added form parsing service * [ADF-4248] Added form cloud demo * [ADF-4248] Added form input to fom-cloud * [ADF-4248] Added tests for form cloud model * [ADF-4248] Improved form model json parsing * [ADF-4248] Added test for form could * [ADF-4248] Refactored types in the form model * [ADF-4248] Improved tests * [ADF-4248] Added tests for form cloud service * [ADF-4248] Added tests for form services * [ADF-4248] Refactored form services * [ADF-4248] Handled form events in demo shell * [ADF-4248] Improved form value parsing * [ADF-4248] Added form-cloud demo to routing * [ADF-4248] Added field validation without handler * [ADF-4248] Added task variable model * [ADF-4248] Added adf-cloud prefix to css classes * [ADF-4248] Translated name of nameless task * [ADF-4248] Added docs for cloud form component * [ADF-4248] Added docs for cloud form service * create base component * [ADF-4248] Created formBase and formModelbase * [ADF-4248] Used base classes in cloud package * Update form-cloud.component.md * Update form-cloud.service.md * [ADF-4248] Created form cloud service * [ADF-4248] Created form cloud model * [ADF-4248] Created new cloud form * [ADF-4248] Exported cloud from module * [ADF-4248] Added form saving feature * [ADF-4248] Added form to task details * [ADF-4248] Added services to save form * [ADF-4248] Added data support * [ADF-4248] Added outcome support in form model * [ADF-4248] Modified demo component to show form * [ADF-4248] Copied tests * [ADF-4248] Added form parsing service * [ADF-4248] Added form cloud demo * [ADF-4248] Added form input to fom-cloud * [ADF-4248] Added tests for form cloud model * [ADF-4248] Improved form model json parsing * [ADF-4248] Added test for form could * [ADF-4248] Refactored types in the form model * [ADF-4248] Improved tests * [ADF-4248] Added tests for form cloud service * [ADF-4248] Added tests for form services * [ADF-4248] Refactored form services * [ADF-4248] Handled form events in demo shell * [ADF-4248] Improved form value parsing * [ADF-4248] Added form-cloud demo to routing * [ADF-4248] Added field validation without handler * [ADF-4248] Added task variable model * [ADF-4248] Added adf-cloud prefix to css classes * [ADF-4248] Translated name of nameless task * [ADF-4248] Added docs for cloud form component * [ADF-4248] Added docs for cloud form service * create base component * [ADF-4248] Created formBase and formModelbase * [ADF-4248] Used base classes in cloud package * [ADF-4248] Moved documentation to process services * [ADF-4248] Removed duplicate import * [ADF-4248] Fixed wrong imports * [ADF-4248] Renamed form renderer input * [ADF-4248] Show translated name for nameless form * Enable the uploadWidget * Make the form great again! * Move the class style on the parent * Fix the debugMode
183 lines
6.2 KiB
TypeScript
183 lines
6.2 KiB
TypeScript
/*!
|
|
* @license
|
|
* Copyright 2019 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,
|
|
ElementRef,
|
|
EventEmitter,
|
|
Input,
|
|
OnChanges,
|
|
OnInit,
|
|
Output,
|
|
SimpleChanges,
|
|
ViewChild,
|
|
ViewEncapsulation,
|
|
OnDestroy
|
|
} from '@angular/core';
|
|
import { FormComponent } from './form.component';
|
|
import { ContentLinkModel, FormService, WidgetVisibilityService, FormRenderingService, ValidateFormEvent, FormOutcomeModel } from '@alfresco/adf-core';
|
|
|
|
@Component({
|
|
selector: 'adf-start-form',
|
|
templateUrl: './start-form.component.html',
|
|
styleUrls: ['./start-form.component.scss'],
|
|
encapsulation: ViewEncapsulation.None
|
|
})
|
|
export class StartFormComponent extends FormComponent implements OnChanges, OnInit, OnDestroy {
|
|
|
|
/** Definition ID of the process to start. */
|
|
@Input()
|
|
processDefinitionId: string;
|
|
|
|
/** Process ID of the process to start. */
|
|
@Input()
|
|
processId: string;
|
|
|
|
/** Should form outcome buttons be shown? */
|
|
@Input()
|
|
showOutcomeButtons: boolean = true;
|
|
|
|
/** Should the refresh button be shown? */
|
|
@Input()
|
|
showRefreshButton: boolean = true;
|
|
|
|
/** Is the form read-only (ie, can't be edited)? */
|
|
@Input()
|
|
readOnlyForm: boolean = false;
|
|
|
|
/** Emitted when the user clicks one of the outcome buttons that completes the form. */
|
|
@Output()
|
|
outcomeClick: EventEmitter<any> = new EventEmitter<any>();
|
|
|
|
/** Emitted when a field of the form is clicked. */
|
|
@Output()
|
|
formContentClicked: EventEmitter<ContentLinkModel> = new EventEmitter<ContentLinkModel>();
|
|
|
|
@ViewChild('outcomesContainer', {})
|
|
outcomesContainer: ElementRef = null;
|
|
|
|
constructor(formService: FormService,
|
|
visibilityService: WidgetVisibilityService,
|
|
formRenderingService: FormRenderingService) {
|
|
super(formService, visibilityService, null, null, formRenderingService);
|
|
this.showTitle = false;
|
|
}
|
|
|
|
ngOnInit() {
|
|
this.subscriptions.push(
|
|
this.formService.formContentClicked.subscribe((content) => {
|
|
this.formContentClicked.emit(content);
|
|
}),
|
|
this.formService.validateForm.subscribe((validateFormEvent: ValidateFormEvent) => {
|
|
if (validateFormEvent.errorsField.length > 0) {
|
|
this.formError.next(validateFormEvent.errorsField);
|
|
}
|
|
})
|
|
);
|
|
}
|
|
|
|
ngOnDestroy() {
|
|
this.subscriptions.forEach((subscription) => subscription.unsubscribe());
|
|
this.subscriptions = [];
|
|
}
|
|
|
|
ngOnChanges(changes: SimpleChanges) {
|
|
const processDefinitionId = changes['processDefinitionId'];
|
|
if (processDefinitionId && processDefinitionId.currentValue) {
|
|
this.visibilityService.cleanProcessVariable();
|
|
this.getStartFormDefinition(processDefinitionId.currentValue);
|
|
return;
|
|
}
|
|
|
|
const processId = changes['processId'];
|
|
if (processId && processId.currentValue) {
|
|
this.visibilityService.cleanProcessVariable();
|
|
this.loadStartForm(processId.currentValue);
|
|
return;
|
|
}
|
|
}
|
|
|
|
loadStartForm(processId: string) {
|
|
this.formService.getProcessInstance(processId)
|
|
.subscribe((instance: any) => {
|
|
this.formService
|
|
.getStartFormInstance(processId)
|
|
.subscribe(
|
|
(form) => {
|
|
this.formName = form.name;
|
|
if (instance.variables) {
|
|
form.processVariables = instance.variables;
|
|
}
|
|
this.form = this.parseForm(form);
|
|
this.visibilityService.refreshVisibility(this.form);
|
|
this.form.validateForm();
|
|
this.form.readOnly = this.readOnlyForm;
|
|
this.onFormLoaded(this.form);
|
|
},
|
|
(error) => this.handleError(error)
|
|
);
|
|
});
|
|
}
|
|
|
|
getStartFormDefinition(processId: string) {
|
|
this.formService
|
|
.getStartFormDefinition(processId)
|
|
.subscribe(
|
|
(form) => {
|
|
this.formName = form.processDefinitionName;
|
|
this.form = this.parseForm(form);
|
|
this.visibilityService.refreshVisibility(this.form);
|
|
this.form.validateForm();
|
|
this.form.readOnly = this.readOnlyForm;
|
|
this.onFormLoaded(this.form);
|
|
},
|
|
(error) => this.handleError(error)
|
|
);
|
|
}
|
|
|
|
/** @override */
|
|
isOutcomeButtonVisible(outcome: FormOutcomeModel, isFormReadOnly: boolean): boolean {
|
|
if (outcome && outcome.isSystem && (outcome.name === FormOutcomeModel.SAVE_ACTION ||
|
|
outcome.name === FormOutcomeModel.COMPLETE_ACTION)) {
|
|
return false;
|
|
} else if (outcome && outcome.name === FormOutcomeModel.START_PROCESS_ACTION) {
|
|
return true;
|
|
}
|
|
return super.isOutcomeButtonVisible(outcome, isFormReadOnly);
|
|
}
|
|
|
|
/** @override */
|
|
saveTaskForm() {
|
|
// do nothing
|
|
}
|
|
|
|
/** @override */
|
|
onRefreshClicked() {
|
|
if (this.processDefinitionId) {
|
|
this.visibilityService.cleanProcessVariable();
|
|
this.getStartFormDefinition(this.processDefinitionId);
|
|
} else if (this.processId) {
|
|
this.visibilityService.cleanProcessVariable();
|
|
this.loadStartForm(this.processId);
|
|
}
|
|
}
|
|
|
|
completeTaskForm(outcome?: string) {
|
|
this.outcomeClick.emit(outcome);
|
|
}
|
|
}
|