diff --git a/ng2-components/ng2-activiti-form/karma.conf.js b/ng2-components/ng2-activiti-form/karma.conf.js index d875822935..45e88af408 100644 --- a/ng2-components/ng2-activiti-form/karma.conf.js +++ b/ng2-components/ng2-activiti-form/karma.conf.js @@ -4,7 +4,7 @@ module.exports = function (config) { var configuration = { basePath: '.', - frameworks: [/*'jasmine-ajax',*/ 'jasmine'], + frameworks: ['jasmine-ajax', 'jasmine'], files: [ // paths loaded by Karma @@ -63,7 +63,7 @@ module.exports = function (config) { plugins: [ 'karma-jasmine', 'karma-coverage', - //'karma-jasmine-ajax', + 'karma-jasmine-ajax', 'karma-chrome-launcher', 'karma-mocha-reporter', 'karma-jasmine-html-reporter' diff --git a/ng2-components/ng2-activiti-form/package.json b/ng2-components/ng2-activiti-form/package.json index 47503cb8be..2e71ddd712 100644 --- a/ng2-components/ng2-activiti-form/package.json +++ b/ng2-components/ng2-activiti-form/package.json @@ -81,6 +81,7 @@ "karma-coveralls": "1.1.2", "karma-jasmine": "1.0.2", "karma-jasmine-html-reporter": "0.2.0", + "karma-jasmine-ajax": "0.1.13", "karma-mocha-reporter": "2.0.3", "license-check": "1.1.5", "remap-istanbul": "0.6.3", diff --git a/ng2-components/ng2-activiti-form/src/components/activiti-form.component.html b/ng2-components/ng2-activiti-form/src/components/activiti-form.component.html index b269a29029..b0a1858552 100644 --- a/ng2-components/ng2-activiti-form/src/components/activiti-form.component.html +++ b/ng2-components/ng2-activiti-form/src/components/activiti-form.component.html @@ -13,7 +13,7 @@
- +
diff --git a/ng2-components/ng2-activiti-form/src/components/activiti-form.component.spec.ts b/ng2-components/ng2-activiti-form/src/components/activiti-form.component.spec.ts index a9b1ce5216..fed7fecd72 100644 --- a/ng2-components/ng2-activiti-form/src/components/activiti-form.component.spec.ts +++ b/ng2-components/ng2-activiti-form/src/components/activiti-form.component.spec.ts @@ -35,7 +35,7 @@ describe('ActivitiForm', () => { window['componentHandler'] = componentHandler; formService = new FormService(null, null, null); - formComponent = new ActivitiForm(formService); + formComponent = new ActivitiForm(formService, null); }); it('should upgrade MDL content on view checked', () => { diff --git a/ng2-components/ng2-activiti-form/src/components/activiti-form.component.ts b/ng2-components/ng2-activiti-form/src/components/activiti-form.component.ts index c01bd4ca7f..57bf834072 100644 --- a/ng2-components/ng2-activiti-form/src/components/activiti-form.component.ts +++ b/ng2-components/ng2-activiti-form/src/components/activiti-form.component.ts @@ -26,7 +26,7 @@ import { import { MATERIAL_DESIGN_DIRECTIVES } from 'ng2-alfresco-core'; import { FormService } from './../services/form.service'; -import { FormModel, FormOutcomeModel, FormValues } from './widgets/core/index'; +import { FormModel, FormOutcomeModel, FormValues, FormFieldModel } from './widgets/core/index'; import { TabsWidget } from './widgets/tabs/tabs.widget'; import { ContainerWidget } from './widgets/container/container.widget'; @@ -34,6 +34,8 @@ import { ContainerWidget } from './widgets/container/container.widget'; declare let __moduleName: string; declare var componentHandler; +import { WidgetVisibilityService } from './../services/widget-visibility.service'; + /** * @Input * ActivitiForm can show 3 forms searching by 3 type of params: @@ -70,7 +72,7 @@ declare var componentHandler; templateUrl: './activiti-form.component.html', styleUrls: ['./activiti-form.component.css'], directives: [MATERIAL_DESIGN_DIRECTIVES, ContainerWidget, TabsWidget], - providers: [FormService] + providers: [FormService, WidgetVisibilityService] }) export class ActivitiForm implements OnInit, AfterViewChecked, OnChanges { @@ -118,7 +120,8 @@ export class ActivitiForm implements OnInit, AfterViewChecked, OnChanges { debugMode: boolean = false; - constructor(private formService: FormService) { + constructor(private formService: FormService, + private visibilityService: WidgetVisibilityService) { } hasForm(): boolean { @@ -220,6 +223,7 @@ export class ActivitiForm implements OnInit, AfterViewChecked, OnChanges { loadForm() { if (this.taskId) { this.getFormByTaskId(this.taskId); + this.visibilityService.getTaskProcessVariableModelsForTask(this.taskId); return; } @@ -334,4 +338,8 @@ export class ActivitiForm implements OnInit, AfterViewChecked, OnChanges { new FormOutcomeModel(form, { id: '$custom', name: FormOutcomeModel.SAVE_ACTION, isSystem: true }) ]; } + + checkVisibility(field: FormFieldModel) { + this.visibilityService.updateVisibilityForForm(field.form); + } } diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/.gitignore b/ng2-components/ng2-activiti-form/src/components/widgets/.gitignore new file mode 100644 index 0000000000..3a6691d8d4 --- /dev/null +++ b/ng2-components/ng2-activiti-form/src/components/widgets/.gitignore @@ -0,0 +1 @@ +/widget.model.ts diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/checkbox/checkbox.widget.html b/ng2-components/ng2-activiti-form/src/components/widgets/checkbox/checkbox.widget.html index a417d59cb3..67862db94d 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/checkbox/checkbox.widget.html +++ b/ng2-components/ng2-activiti-form/src/components/widgets/checkbox/checkbox.widget.html @@ -3,6 +3,7 @@ [attr.id]="field.id" class="mdl-checkbox__input" [(ngModel)]="field.value" + (ngModelChange)="checkVisibility(field)" [disabled]="field.readOnly"> {{field.name}} diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.html b/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.html index dfdacb9b43..bd2732ddc4 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.html +++ b/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.html @@ -15,33 +15,33 @@
-
+
- +
- +
- +
- +
- +
- +
- +
- +
- +
UNKNOWN WIDGET TYPE: {{field.type}} diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.ts index 50e14bc604..aa8e0ddab9 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.ts @@ -15,11 +15,12 @@ * limitations under the License. */ -import { Component, Input, AfterViewInit } from '@angular/core'; +import { Component, Input, AfterViewInit, Output, EventEmitter } from '@angular/core'; import { ContainerModel } from './../core/index'; import { MATERIAL_DESIGN_DIRECTIVES } from 'ng2-alfresco-core'; import { PRIMITIVE_WIDGET_DIRECTIVES } from './../index'; +import { FormFieldModel } from '../core/index'; declare let __moduleName: string; declare var componentHandler; @@ -39,6 +40,9 @@ export class ContainerWidget implements AfterViewInit { @Input() content: ContainerModel; + @Output() + formValueChanged: EventEmitter = new EventEmitter(); + onExpanderClicked() { if (this.content && this.content.isCollapsible()) { this.content.isExpanded = !this.content.isExpanded; @@ -58,4 +62,8 @@ export class ContainerWidget implements AfterViewInit { return false; } + fieldChanged(field: FormFieldModel) { + this.formValueChanged.emit(field); + } + } diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/core/form-field.model.ts b/ng2-components/ng2-activiti-form/src/components/widgets/core/form-field.model.ts index 988208b2b9..916c8714df 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/core/form-field.model.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/core/form-field.model.ts @@ -20,6 +20,7 @@ import { FormFieldOption } from './form-field-option'; import { FormFieldTypes } from './form-field-types'; import { FormFieldMetadata } from './form-field-metadata'; import { FormModel } from './form.model'; +import { WidgetVisibilityModel } from '../../../models/widget-visibility.model'; export class FormFieldModel extends FormWidgetModel { @@ -45,6 +46,8 @@ export class FormFieldModel extends FormWidgetModel { params: FormFieldMetadata = {}; hyperlinkUrl: string; displayText: string; + isVisible: boolean = true; + visibilityCondition: WidgetVisibilityModel = null; get value(): any { return this._value; @@ -86,6 +89,7 @@ export class FormFieldModel extends FormWidgetModel { this.params = json.params || {}; this.hyperlinkUrl = json.hyperlinkUrl; this.displayText = json.displayText; + this.visibilityCondition = json.visibilityCondition; this._value = this.parseValue(json); this.updateForm(); diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.html b/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.html index bb5eb65114..a5d637d91c 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.html +++ b/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.html @@ -3,6 +3,7 @@ type="text" [attr.id]="field.id" [(ngModel)]="field.value" + (ngModelChange)="checkVisibility(field)" disabled>
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/dropdown/dropdown.widget.html b/ng2-components/ng2-activiti-form/src/components/widgets/dropdown/dropdown.widget.html index b25a40fd9a..3da33231b0 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/dropdown/dropdown.widget.html +++ b/ng2-components/ng2-activiti-form/src/components/widgets/dropdown/dropdown.widget.html @@ -1,5 +1,5 @@ diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.html b/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.html index d33c9d518f..2511b63434 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.html +++ b/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.html @@ -4,6 +4,7 @@ rows= "3" [attr.id]="field.id" [(ngModel)]="field.value" + (ngModelChange)="checkVisibility(field)" [disabled]="field.readOnly"> diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.html b/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.html index 37b0be6875..3a5bd8b474 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.html +++ b/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.html @@ -4,6 +4,7 @@ pattern="-?[0-9]*(\.[0-9]+)?" [attr.id]="field.id" [(ngModel)]="field.value" + (ngModelChange)="checkVisibility(field)" [disabled]="field.readOnly"> Input is not a number! diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/text/text.widget.html b/ng2-components/ng2-activiti-form/src/components/widgets/text/text.widget.html index 5d6d2e5901..d74aac765a 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/text/text.widget.html +++ b/ng2-components/ng2-activiti-form/src/components/widgets/text/text.widget.html @@ -3,6 +3,7 @@ type="text" [attr.id]="field.id" [(ngModel)]="field.value" + (ngModelChange)="checkVisibility(field)" [disabled]="field.readOnly">
diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts b/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts index ec08a747cc..321fcffb1a 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Input, AfterViewInit } from '@angular/core'; +import { Input, AfterViewInit, Output, EventEmitter } from '@angular/core'; import { FormFieldModel } from './core/index'; declare let __moduleName: string; @@ -29,6 +29,9 @@ export class WidgetComponent implements AfterViewInit { @Input() field: FormFieldModel; + @Output() + fieldChanged: EventEmitter = new EventEmitter(); + hasField() { return this.field ? true : false; } @@ -46,4 +49,8 @@ export class WidgetComponent implements AfterViewInit { return false; } + checkVisibility(field: FormFieldModel) { + this.fieldChanged.emit(field); + } + } diff --git a/ng2-components/ng2-activiti-form/src/models/task-process-variable.model.ts b/ng2-components/ng2-activiti-form/src/models/task-process-variable.model.ts new file mode 100644 index 0000000000..d6966a17aa --- /dev/null +++ b/ng2-components/ng2-activiti-form/src/models/task-process-variable.model.ts @@ -0,0 +1,22 @@ +/*! + * @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. + */ + +export class TaskProcessVariableModel { + id: string; + type: string; + value: string; +} diff --git a/ng2-components/ng2-activiti-form/src/models/widget-visibility.model.ts b/ng2-components/ng2-activiti-form/src/models/widget-visibility.model.ts new file mode 100644 index 0000000000..e6cf0dec4a --- /dev/null +++ b/ng2-components/ng2-activiti-form/src/models/widget-visibility.model.ts @@ -0,0 +1,28 @@ +/*! + * @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. + */ + +export class WidgetVisibilityModel { + leftFormFieldId: string; + leftRestResponseId: string; + nextCondition: WidgetVisibilityModel; + nextConditionOperator: string; + operator: string; + rightFormFieldId: string; + rightRestResponseId: string; + rightType: string; + rightValue: string; +} diff --git a/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.spec.ts b/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.spec.ts index 3622b8c44e..134ab384f7 100644 --- a/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.spec.ts +++ b/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.spec.ts @@ -19,8 +19,9 @@ import { it, describe, inject, beforeEach, beforeEachProviders } from '@angular/ import { WidgetVisibilityService } from './widget-visibility.service'; import { AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; import { HTTP_PROVIDERS } from '@angular/http'; -import { VisibilityFormWidget, IProcessVariable } from '../components/widgets/widget-visibility.model'; -import { FormModel, FormValues, FormFieldModel } from './../components/widgets/widget.model'; +import { WidgetVisibilityModel } from '../models/widget-visibility.model'; +import { TaskProcessVariableModel } from '../models/task-process-variable.model'; +import { FormModel, FormFieldModel, FormValues } from '../components/widgets/core/index'; declare let AlfrescoApi: any; declare let jasmine: any; @@ -28,7 +29,7 @@ declare let jasmine: any; describe('WidgetVisibilityService', () => { let service; - let fakeProcessVariables = [ + let fakeTaskProcessVariableModels = [ {id: 'TEST_VAR_1', type: 'string', value: 'test_value_1'}, {id: 'TEST_VAR_2', type: 'string', value: 'test_value_2'}, {id: 'TEST_VAR_3', type: 'string', value: 'test_value_3'} @@ -122,7 +123,7 @@ describe('WidgetVisibilityService', () => { let formValues: FormValues = { 'test_1': 'value_1', 'test_2': 'value_2', 'test_3': 'value_1' }; - let visibilityObjTest: VisibilityFormWidget = { + let visibilityObjTest: WidgetVisibilityModel = { leftFormFieldId : '', leftRestResponseId : '', nextCondition : null, @@ -134,7 +135,7 @@ describe('WidgetVisibilityService', () => { rightValue : null }; - let chainedVisibilityObj: VisibilityFormWidget = { + let chainedVisibilityObj: WidgetVisibilityModel = { leftFormFieldId : '', leftRestResponseId : '', nextCondition : null, @@ -167,8 +168,8 @@ describe('WidgetVisibilityService', () => { }); it('should return the process variables for task', (done) => { - service.getProcessVariablesForTask(9999).subscribe( - (res: IProcessVariable[]) => { + service.getTaskProcessVariableModelsForTask(9999).subscribe( + (res: TaskProcessVariableModel[]) => { expect(res).toBeDefined(); expect(res.length).toEqual(3); expect(res[0].id).toEqual('TEST_VAR_1'); @@ -181,7 +182,7 @@ describe('WidgetVisibilityService', () => { jasmine.Ajax.requests.mostRecent().respondWith({ 'status': 200, contentType: 'application/json', - responseText: JSON.stringify(fakeProcessVariables) + responseText: JSON.stringify(fakeTaskProcessVariableModels) }); }); @@ -266,15 +267,15 @@ describe('WidgetVisibilityService', () => { }); it('should be able to retrieve the value of a process variable', (done) => { - service.getProcessVariablesForTask(9999).subscribe( - (res: IProcessVariable[]) => { + service.getTaskProcessVariableModelsForTask(9999).subscribe( + (res: TaskProcessVariableModel[]) => { done(); } ); jasmine.Ajax.requests.mostRecent().respondWith({ 'status': 200, contentType: 'application/json', - responseText: JSON.stringify(fakeProcessVariables) + responseText: JSON.stringify(fakeTaskProcessVariableModels) }); let formTest = new FormModel(fakeFormJson); @@ -285,15 +286,15 @@ describe('WidgetVisibilityService', () => { }); it('should be able to retrieve the value of a form variable', (done) => { - service.getProcessVariablesForTask(9999).subscribe( - (res: IProcessVariable[]) => { + service.getTaskProcessVariableModelsForTask(9999).subscribe( + (res: TaskProcessVariableModel[]) => { done(); } ); jasmine.Ajax.requests.mostRecent().respondWith({ 'status': 200, contentType: 'application/json', - responseText: JSON.stringify(fakeProcessVariables) + responseText: JSON.stringify(fakeTaskProcessVariableModels) }); let formTest = new FormModel(fakeFormJson); @@ -304,15 +305,15 @@ describe('WidgetVisibilityService', () => { }); it('should return null if the variable does not exist', (done) => { - service.getProcessVariablesForTask(9999).subscribe( - (res: IProcessVariable[]) => { + service.getTaskProcessVariableModelsForTask(9999).subscribe( + (res: TaskProcessVariableModel[]) => { done(); } ); jasmine.Ajax.requests.mostRecent().respondWith({ 'status': 200, contentType: 'application/json', - responseText: JSON.stringify(fakeProcessVariables) + responseText: JSON.stringify(fakeTaskProcessVariableModels) }); let formTest = new FormModel(fakeFormJson); @@ -385,15 +386,15 @@ describe('WidgetVisibilityService', () => { }); it('should retrieve the value for the right field when it is a process variable', (done) => { - service.getProcessVariablesForTask(9999).subscribe( - (res: IProcessVariable[]) => { + service.getTaskProcessVariableModelsForTask(9999).subscribe( + (res: TaskProcessVariableModel[]) => { done(); } ); jasmine.Ajax.requests.mostRecent().respondWith({ 'status': 200, contentType: 'application/json', - responseText: JSON.stringify(fakeProcessVariables) + responseText: JSON.stringify(fakeTaskProcessVariableModels) }); let formTest = new FormModel(fakeFormJson); visibilityObjTest.rightRestResponseId = 'TEST_VAR_2'; @@ -463,15 +464,15 @@ describe('WidgetVisibilityService', () => { }); it('should retrieve the value for the left field when it is a process variable', (done) => { - service.getProcessVariablesForTask(9999).subscribe( - (res: IProcessVariable[]) => { + service.getTaskProcessVariableModelsForTask(9999).subscribe( + (res: TaskProcessVariableModel[]) => { done(); } ); jasmine.Ajax.requests.mostRecent().respondWith({ 'status': 200, contentType: 'application/json', - responseText: JSON.stringify(fakeProcessVariables) + responseText: JSON.stringify(fakeTaskProcessVariableModels) }); let formTest = new FormModel(fakeFormJson); visibilityObjTest.leftRestResponseId = 'TEST_VAR_2'; @@ -589,15 +590,15 @@ describe('WidgetVisibilityService', () => { }); it('should evaluate the visibility for the field with single visibility condition between form value and process var', (done) => { - service.getProcessVariablesForTask(9999).subscribe( - (res: IProcessVariable[]) => { + service.getTaskProcessVariableModelsForTask(9999).subscribe( + (res: TaskProcessVariableModel[]) => { done(); } ); jasmine.Ajax.requests.mostRecent().respondWith({ 'status': 200, contentType: 'application/json', - responseText: JSON.stringify(fakeProcessVariables) + responseText: JSON.stringify(fakeTaskProcessVariableModels) }); let formTest = new FormModel(fakeFormJson); visibilityObjTest.leftFormFieldId = 'LEFT_FORM_FIELD_ID'; @@ -612,15 +613,15 @@ describe('WidgetVisibilityService', () => { }); it('should evaluate visibility with multiple conditions', (done) => { - service.getProcessVariablesForTask(9999).subscribe( - (res: IProcessVariable[]) => { + service.getTaskProcessVariableModelsForTask(9999).subscribe( + (res: TaskProcessVariableModel[]) => { done(); } ); jasmine.Ajax.requests.mostRecent().respondWith({ 'status': 200, contentType: 'application/json', - responseText: JSON.stringify(fakeProcessVariables) + responseText: JSON.stringify(fakeTaskProcessVariableModels) }); let formTest = new FormModel(fakeFormJson); visibilityObjTest.leftFormFieldId = 'LEFT_FORM_FIELD_ID'; @@ -639,15 +640,15 @@ describe('WidgetVisibilityService', () => { }); it('should return true evaluating a proper condition for a field', (done) => { - service.getProcessVariablesForTask(9999).subscribe( - (res: IProcessVariable[]) => { + service.getTaskProcessVariableModelsForTask(9999).subscribe( + (res: TaskProcessVariableModel[]) => { done(); } ); jasmine.Ajax.requests.mostRecent().respondWith({ 'status': 200, contentType: 'application/json', - responseText: JSON.stringify(fakeProcessVariables) + responseText: JSON.stringify(fakeTaskProcessVariableModels) }); let formTest = new FormModel(fakeFormJson); visibilityObjTest.leftFormFieldId = 'LEFT_FORM_FIELD_ID'; diff --git a/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.ts b/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.ts index 9fd0b11519..56249235b4 100644 --- a/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.ts +++ b/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.ts @@ -19,13 +19,14 @@ import { Injectable } from '@angular/core'; import { Response, Http, Headers, RequestOptions } from '@angular/http'; import { Observable } from 'rxjs/Rx'; import { AlfrescoSettingsService } from 'ng2-alfresco-core'; -import { FormModel, FormFieldModel } from './../components/widgets/widget.model'; -import { VisibilityFormWidget, IProcessVariable } from './../components/widgets/widget-visibility.model'; +import { FormModel, FormFieldModel } from '../components/widgets/core/index'; +import { WidgetVisibilityModel } from '../models/widget-visibility.model'; +import { TaskProcessVariableModel } from '../models/task-process-variable.model'; @Injectable() export class WidgetVisibilityService { - private processVarList: IProcessVariable[]; + private processVarList: TaskProcessVariableModel[]; constructor(private http: Http, private alfrescoSettingsService: AlfrescoSettingsService) { @@ -54,7 +55,7 @@ export class WidgetVisibilityService { } } - public getVisiblityForField(form: FormModel, visibilityObj: VisibilityFormWidget): boolean { + public getVisiblityForField(form: FormModel, visibilityObj: WidgetVisibilityModel): boolean { let isLeftFieldPresent = visibilityObj.leftFormFieldId || visibilityObj.leftRestResponseId; if ( !isLeftFieldPresent ) { return true; @@ -63,7 +64,7 @@ export class WidgetVisibilityService { } } - private evaluateVisibilityForField(form: FormModel, visibilityObj: VisibilityFormWidget): boolean { + private evaluateVisibilityForField(form: FormModel, visibilityObj: WidgetVisibilityModel): boolean { let leftValue = this.getLeftValue(form, visibilityObj); let rightValue = this.getRightValue(form, visibilityObj); let actualResult = this.evaluateCondition(leftValue, rightValue, visibilityObj.operator); @@ -78,14 +79,14 @@ export class WidgetVisibilityService { } } - private getLeftValue(form: FormModel, visibilityObj: VisibilityFormWidget) { + private getLeftValue(form: FormModel, visibilityObj: WidgetVisibilityModel) { if ( visibilityObj.leftRestResponseId ) { return this.getValueFromVariable(form, visibilityObj.leftRestResponseId); } return this.getValueOField(form, visibilityObj.leftFormFieldId); } - private getRightValue(form: FormModel, visibilityObj: VisibilityFormWidget) { + private getRightValue(form: FormModel, visibilityObj: WidgetVisibilityModel) { let valueFound = null; if ( visibilityObj.rightRestResponseId ) { valueFound = this.getValueFromVariable(form, visibilityObj.rightRestResponseId); @@ -170,19 +171,19 @@ export class WidgetVisibilityService { return null; } - getProcessVariablesForTask(taskId: string): Observable { + getTaskProcessVariableModelsForTask(taskId: string): Observable { let url = `${this.alfrescoSettingsService.getBPMApiBaseUrl()}/app/rest/task-forms/${taskId}/variables`; let options = this.getRequestOptions(); return this.http .get(url, options) - .map( (response: Response) => this.processVarList = response.json()) + .map( (response: Response) => this.processVarList = response.json()) .catch(this.handleError); } - getProcessVariableForTaskByName(taskId: string, processVarName: string): Observable { - return this.getProcessVariablesForTask(taskId) + getTaskProcessVariableModelForTaskByName(taskId: string, processVarName: string): Observable { + return this.getTaskProcessVariableModelsForTask(taskId) .map( - (variables: IProcessVariable[]) => + (variables: TaskProcessVariableModel[]) => variables.find(variable => variable.id === processVarName)); }