ngx-t-forms 2.0.23 → 2.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +177 -16
- package/fesm2022/ngx-t-forms-calculated-field-rules.component-DiNSTxsW.mjs +313 -0
- package/fesm2022/ngx-t-forms-calculated-field-rules.component-DiNSTxsW.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-chip-options-creator-editor.component-DVhV4izc.mjs → ngx-t-forms-chip-options-creator-editor.component-3FkGwVWB.mjs} +6 -6
- package/fesm2022/{ngx-t-forms-chip-options-creator-editor.component-DVhV4izc.mjs.map → ngx-t-forms-chip-options-creator-editor.component-3FkGwVWB.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-BTUnZ1q1.mjs → ngx-t-forms-config-mscoa-additional-inputs.component-tHaWIt1o.mjs} +10 -10
- package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-BTUnZ1q1.mjs.map → ngx-t-forms-config-mscoa-additional-inputs.component-tHaWIt1o.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-data-source-picker.component-DcpGy7kq.mjs → ngx-t-forms-data-source-picker.component-CxG1tQfC.mjs} +10 -10
- package/fesm2022/{ngx-t-forms-data-source-picker.component-DcpGy7kq.mjs.map → ngx-t-forms-data-source-picker.component-CxG1tQfC.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-CsqYlgS6.mjs +291 -0
- package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-CsqYlgS6.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-form-input-selector.component-n88ExFxv.mjs → ngx-t-forms-form-input-selector.component-D-nVF7t7.mjs} +8 -8
- package/fesm2022/{ngx-t-forms-form-input-selector.component-n88ExFxv.mjs.map → ngx-t-forms-form-input-selector.component-D-nVF7t7.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-form-json-view.component-Bm-k704L.mjs → ngx-t-forms-form-json-view.component-B01nOklu.mjs} +6 -6
- package/fesm2022/{ngx-t-forms-form-json-view.component-Bm-k704L.mjs.map → ngx-t-forms-form-json-view.component-B01nOklu.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-form-section-stepper.component-Bg9eGmgN.mjs +267 -0
- package/fesm2022/ngx-t-forms-form-section-stepper.component-Bg9eGmgN.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-forms-builder-menu.component-Brj72jZP.mjs → ngx-t-forms-forms-builder-menu.component-jn9-yVbI.mjs} +21 -21
- package/fesm2022/ngx-t-forms-forms-builder-menu.component-jn9-yVbI.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-input-editor.component-BqRBvrQe.mjs → ngx-t-forms-input-editor.component-DyQBfgio.mjs} +19 -19
- package/fesm2022/{ngx-t-forms-input-editor.component-BqRBvrQe.mjs.map → ngx-t-forms-input-editor.component-DyQBfgio.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-BCoTHeK3.mjs +106 -0
- package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-BCoTHeK3.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-mat-slider-editor.component-CnnC8-nJ.mjs → ngx-t-forms-mat-slider-editor.component-WDd5lc_2.mjs} +5 -5
- package/fesm2022/{ngx-t-forms-mat-slider-editor.component-CnnC8-nJ.mjs.map → ngx-t-forms-mat-slider-editor.component-WDd5lc_2.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-B8O9Xn4R.mjs → ngx-t-forms-mat-slider-toggle-editor.component-DGac4Eja.mjs} +5 -5
- package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-B8O9Xn4R.mjs.map → ngx-t-forms-mat-slider-toggle-editor.component-DGac4Eja.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-missing-form-configs.component-CXIOm7OT.mjs → ngx-t-forms-missing-form-configs.component-sJVu5SkY.mjs} +8 -8
- package/fesm2022/{ngx-t-forms-missing-form-configs.component-CXIOm7OT.mjs.map → ngx-t-forms-missing-form-configs.component-sJVu5SkY.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-mscoa-chart-toolbar.component-CF5DxLZG.mjs +43 -0
- package/fesm2022/ngx-t-forms-mscoa-chart-toolbar.component-CF5DxLZG.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-mscoa-error-display.component-D9zKeT7Z.mjs +116 -0
- package/fesm2022/ngx-t-forms-mscoa-error-display.component-D9zKeT7Z.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-BIr1g5cG.mjs +299 -0
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-BIr1g5cG.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-mscoa-temporary-hint.component-DgdZwE72.mjs +83 -0
- package/fesm2022/ngx-t-forms-mscoa-temporary-hint.component-DgdZwE72.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-ngx-t-forms-BYmto56R.mjs → ngx-t-forms-ngx-t-forms-A9_4GxP6.mjs} +3855 -980
- package/fesm2022/ngx-t-forms-ngx-t-forms-A9_4GxP6.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-pipeline-generator.component-CwCwl53b.mjs +637 -0
- package/fesm2022/ngx-t-forms-pipeline-generator.component-CwCwl53b.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-record-list-manager.component-BYyr0yzb.mjs +270 -0
- package/fesm2022/ngx-t-forms-record-list-manager.component-BYyr0yzb.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-required-inputs.component-C5iwMGil.mjs → ngx-t-forms-required-inputs.component-pv5pqFhh.mjs} +12 -12
- package/fesm2022/{ngx-t-forms-required-inputs.component-C5iwMGil.mjs.map → ngx-t-forms-required-inputs.component-pv5pqFhh.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-C4zwQqzh.mjs → ngx-t-forms-rest-api-call-setup.component-CQeww1qM.mjs} +14 -14
- package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-C4zwQqzh.mjs.map → ngx-t-forms-rest-api-call-setup.component-CQeww1qM.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-section-report.component-B5TrrkeO.mjs → ngx-t-forms-section-report.component-DGwgq4QR.mjs} +10 -10
- package/fesm2022/{ngx-t-forms-section-report.component-B5TrrkeO.mjs.map → ngx-t-forms-section-report.component-DGwgq4QR.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-selection-options-editor.component-ClzCcmlC.mjs → ngx-t-forms-selection-options-editor.component-CqAxZnEp.mjs} +10 -10
- package/fesm2022/{ngx-t-forms-selection-options-editor.component-ClzCcmlC.mjs.map → ngx-t-forms-selection-options-editor.component-CqAxZnEp.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-t-workflow-picker.component-Cz6YZMia.mjs +187 -0
- package/fesm2022/ngx-t-forms-t-workflow-picker.component-Cz6YZMia.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-validators-config.component-B9kfcaSm.mjs → ngx-t-forms-validators-config.component-CL73KUxw.mjs} +11 -11
- package/fesm2022/{ngx-t-forms-validators-config.component-B9kfcaSm.mjs.map → ngx-t-forms-validators-config.component-CL73KUxw.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms.mjs +1 -1
- package/lib/components/form-builder/elements/form-section-stepper/form-section-stepper.component.d.ts +4 -1
- package/lib/components/form-builder/elements/input-element-editor/input-element-editor.component.d.ts +6 -2
- package/lib/components/forms/forms.component.d.ts +2 -1
- package/lib/components/forms/store/Form-actions-formBuilder.d.ts +1 -0
- package/lib/components/forms/store/Form-selectors-FormBuilder.d.ts +3 -1
- package/lib/components/forms/store/Forms-Effects.d.ts +7 -1
- package/lib/components/forms/store/forms-store.service.d.ts +19 -53
- package/lib/components/index.d.ts +2 -1
- package/lib/components/t-dynamic-data-edit/elements/api-value-access-rules/api-value-access-rules.component.d.ts +40 -20
- package/lib/components/t-dynamic-data-edit/elements/calculated-field-rules/calculated-field-rules.component.d.ts +51 -63
- package/lib/components/t-dynamic-data-edit/elements/document-list-label-config-editor/document-list-label-config-editor.component.d.ts +8 -1
- package/lib/components/t-dynamic-data-edit/elements/json-editor/json-editor.component.d.ts +37 -9
- package/lib/components/t-dynamic-data-edit/elements/mat-chip-list-editor/mat-chip-list-editor.component.d.ts +5 -1
- package/lib/components/t-dynamic-data-edit/elements/mscoa-segment-config/mscoa-segment-config.component.d.ts +4 -1
- package/lib/components/t-dynamic-data-edit/elements/pipeline-generator/pipeline-generator.component.d.ts +2 -0
- package/lib/components/t-dynamic-data-edit/elements/record-list-manager/record-list-manager.component.d.ts +75 -0
- package/lib/components/t-dynamic-data-edit/elements/t-workflow-picker/t-workflow-picker.component.d.ts +7 -3
- package/lib/components/t-dynamic-data-edit/t-dynamic-data-edit.component.d.ts +1 -0
- package/lib/components/t-form-input/elements/Geo-location-form-input/geo-location.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/auto-complete-input-element/auto-complete-input-element.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/basic-input-input-element/basic-input-input-element.component.d.ts +2 -1
- package/lib/components/t-form-input/elements/basic-input-input-element/core/input-custom/input-custom.component.d.ts +2 -1
- package/lib/components/t-form-input/elements/date-picker-input-element/date-picker-input-element.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/date-range-picker-input-element/date-range-picker-input-element.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/document-picker/document-picker.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/editor-input-element/editor-input-element.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/file-upload-input-element/file-upload-input-element.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/image-capture-input-element/image-capture-input-element.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/account-value/account-value.component.d.ts +8 -0
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-chart-input-menu/mscoa-chart-input-menu.component.d.ts +23 -0
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-chart-toolbar/mscoa-chart-toolbar.component.d.ts +22 -0
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-error-display/mscoa-error-display.component.d.ts +34 -0
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-temporary-hint/mscoa-temporary-hint.component.d.ts +21 -0
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/extractCols.d.ts +22 -0
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/mscoa-chart.component.d.ts +299 -86
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/utils/mscoa-chart.constants.d.ts +47 -0
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/utils/mscoa-chart.helpers.d.ts +87 -0
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/utils/mscoa-chart.types.d.ts +51 -0
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/utils/mscoa-message-formatter.d.ts +87 -0
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-computation/mscoa-computation.component.d.ts +149 -22
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-reactive-form-field/mscoa-reactive-form-field.component.d.ts +11 -0
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/scoa-account-table/scoa-account-table.component.d.ts +4 -0
- package/lib/components/t-form-input/elements/mscoa-form-input/mscoa-form-input.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/mscoa-form-input/store/accountConstants.d.ts +7 -2
- package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-actions.d.ts +13 -2
- package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-component-store.service.d.ts +45 -8
- package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-effects.d.ts +1 -0
- package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-selectors.d.ts +33 -8
- package/lib/components/t-form-input/elements/multiple-input-input-element/multiple-input-input-element.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/select-input-element/select-input-element.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/signature-input-element/core/signature-pad-input/functions/getSignatureImage.d.ts +3 -0
- package/lib/components/t-form-input/elements/signature-input-element/signature-input-element.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/textarea-input-element/core/text-area-reactive-input/text-area-reactive-input.component.d.ts +1 -2
- package/lib/components/t-form-input/elements/textarea-input-element/textarea-input-element.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/toggle-input-element/toggle-input-element.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/workflow-adjudication/elements/point-assignment/elements/point-assignment-dialog/point-assignment-dialog.component.d.ts +41 -0
- package/lib/components/t-form-input/elements/workflow-adjudication/elements/point-assignment/point-assignment.component.d.ts +40 -28
- package/lib/components/t-form-input/elements/workflow-adjudication/elements/submission-review/elements/submission-review-dialog/submission-review-dialog.component.d.ts +27 -0
- package/lib/components/t-form-input/elements/workflow-adjudication/elements/submission-review/submission-review.component.d.ts +6 -11
- package/lib/components/t-form-input/elements/workflow-adjudication/elements/supplier-selection/supplier-selection.component.d.ts +33 -0
- package/lib/components/t-form-input/elements/workflow-adjudication/workflow-adjudication.component.d.ts +1 -1
- package/lib/services/core/t-form-builder/functions/deleteSection.d.ts +1 -0
- package/lib/services/core/t-form-builder/functions/inputElementEditorConfigs.d.ts +9 -3
- package/lib/services/core/t-form-builder/functions/removeItem.d.ts +1 -0
- package/lib/services/core/t-form-builder/functions/stepTitleChangeStep.d.ts +1 -0
- package/lib/services/core/t-form-controller/function/calculateInputValue.d.ts +1 -1
- package/lib/services/core/t-form-controller/function/getInputSourcedValue.d.ts +4 -0
- package/lib/services/core/t-form-tower-controller/functions/runMultipleInputPrepopulationFunctions.d.ts +11 -0
- package/lib/services/core/t-form-tower-controller/functions/updateFormInputConfig.d.ts +7 -0
- package/lib/services/core/t-input-controller/functions/baseCustomInput.d.ts +4 -2
- package/lib/services/core/t-input-controller/functions/inputErrorMessage.d.ts +1 -1
- package/lib/shared/functions/convertElementEditorTypesToInputType.d.ts +3 -0
- package/lib/shared/functions/fuzzyTextSearch.d.ts +4 -0
- package/lib/shared/functions/getPipedValueFromDataType.d.ts +2 -0
- package/lib/shared/index.d.ts +2 -1
- package/package.json +2 -2
- package/fesm2022/ngx-t-forms-calculated-field-rules.component-BdDN7YwK.mjs +0 -316
- package/fesm2022/ngx-t-forms-calculated-field-rules.component-BdDN7YwK.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-Bdfd5ik4.mjs +0 -238
- package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-Bdfd5ik4.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-form-section-stepper.component-BGu2CX3r.mjs +0 -261
- package/fesm2022/ngx-t-forms-form-section-stepper.component-BGu2CX3r.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-forms-builder-menu.component-Brj72jZP.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-DRMTdPwU.mjs +0 -95
- package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-DRMTdPwU.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-B0I2X92a.mjs +0 -281
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-B0I2X92a.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-ngx-t-forms-BYmto56R.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-pipeline-generator.component-T4_0xqeE.mjs +0 -727
- package/fesm2022/ngx-t-forms-pipeline-generator.component-T4_0xqeE.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-t-workflow-picker.component-C1t8oH9s.mjs +0 -171
- package/fesm2022/ngx-t-forms-t-workflow-picker.component-C1t8oH9s.mjs.map +0 -1
|
@@ -1,316 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Output, Input, HostBinding, Optional, Self, Component } from '@angular/core';
|
|
3
|
-
import { v4 } from 'uuid';
|
|
4
|
-
import { M as MatModulesModule } from './ngx-t-forms-ngx-t-forms-BYmto56R.mjs';
|
|
5
|
-
import * as i2$1 from '@angular/common';
|
|
6
|
-
import { CommonModule } from '@angular/common';
|
|
7
|
-
import * as i1 from '@angular/forms';
|
|
8
|
-
import { FormsModule } from '@angular/forms';
|
|
9
|
-
import { FormInputSelectorComponent } from './ngx-t-forms-form-input-selector.component-n88ExFxv.mjs';
|
|
10
|
-
import { MatFormFieldControl } from '@angular/material/form-field';
|
|
11
|
-
import { Subject } from 'rxjs';
|
|
12
|
-
import { CalculationFunctions } from 'ngx-t-forms-types';
|
|
13
|
-
import * as i11 from '@angular/cdk/overlay';
|
|
14
|
-
import { OverlayModule } from '@angular/cdk/overlay';
|
|
15
|
-
import * as i1$1 from '@angular/material/autocomplete';
|
|
16
|
-
import * as i2 from '@angular/material/button';
|
|
17
|
-
import * as i3 from '@angular/material/card';
|
|
18
|
-
import * as i5 from '@angular/material/chips';
|
|
19
|
-
import * as i5$1 from '@angular/material/icon';
|
|
20
|
-
import * as i3$1 from '@angular/material/select';
|
|
21
|
-
import * as i9 from '@angular/material/toolbar';
|
|
22
|
-
import * as i12 from '@angular/material/input';
|
|
23
|
-
|
|
24
|
-
class CalculatedFieldRulesComponent {
|
|
25
|
-
static { this.nextId = 0; }
|
|
26
|
-
constructor(ngControl, _elementRef) {
|
|
27
|
-
this.ngControl = ngControl;
|
|
28
|
-
this._elementRef = _elementRef;
|
|
29
|
-
this.stateChanges = new Subject();
|
|
30
|
-
this.id = `app-calculated-field-rules-${CalculatedFieldRulesComponent.nextId++}`;
|
|
31
|
-
this.placeholder = '';
|
|
32
|
-
this.focused = false;
|
|
33
|
-
this.required = false;
|
|
34
|
-
this.disabled = false;
|
|
35
|
-
this.touched = false;
|
|
36
|
-
this.onTouched = () => { };
|
|
37
|
-
this.mapToData = undefined;
|
|
38
|
-
this._value = {};
|
|
39
|
-
this.formInputs = [];
|
|
40
|
-
this.errors = [];
|
|
41
|
-
this.valueChange2dWithPath = new EventEmitter();
|
|
42
|
-
this.valueChanged = new EventEmitter();
|
|
43
|
-
this.activeVariable = {};
|
|
44
|
-
this.showVariableConfig = false;
|
|
45
|
-
this.functions = [
|
|
46
|
-
{ value: 'avg', label: 'Average' },
|
|
47
|
-
{ value: 'max', label: 'Maximum' },
|
|
48
|
-
{ value: 'min', label: 'lowest' },
|
|
49
|
-
{ value: 'sum', label: 'Sum' },
|
|
50
|
-
];
|
|
51
|
-
}
|
|
52
|
-
get empty() {
|
|
53
|
-
return !this.value;
|
|
54
|
-
}
|
|
55
|
-
get shouldLabelFloat() {
|
|
56
|
-
return this.focused || !this.empty;
|
|
57
|
-
}
|
|
58
|
-
get errorState() {
|
|
59
|
-
const hasError = !!this.ngControl?.control?.errors || (this.errors || []).length > 0 && this.touched;
|
|
60
|
-
return !this.value && !!this.required || hasError;
|
|
61
|
-
}
|
|
62
|
-
setDescribedByIds(ids) {
|
|
63
|
-
// Ensure the component view is initialized
|
|
64
|
-
if (this._elementRef && this._elementRef.nativeElement) {
|
|
65
|
-
const controlElement = this._elementRef.nativeElement.querySelector('.app-calculated-field-rules');
|
|
66
|
-
// Check if the controlElement exists before attempting to set its attribute
|
|
67
|
-
if (controlElement) {
|
|
68
|
-
controlElement.setAttribute('aria-describedby', ids.join(' '));
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
onContainerClick(event) {
|
|
73
|
-
this.markAsTouched();
|
|
74
|
-
this.stateChanges.next();
|
|
75
|
-
}
|
|
76
|
-
markAsTouched() {
|
|
77
|
-
console.log('markAsTouched');
|
|
78
|
-
if (!this.touched) {
|
|
79
|
-
this.onTouched();
|
|
80
|
-
this.touched = true;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
set value(value) {
|
|
84
|
-
this._value = value;
|
|
85
|
-
}
|
|
86
|
-
get value() {
|
|
87
|
-
return this._value;
|
|
88
|
-
}
|
|
89
|
-
get allCalculationFunction() {
|
|
90
|
-
return Object.values(CalculationFunctions);
|
|
91
|
-
}
|
|
92
|
-
ngOnInit() { }
|
|
93
|
-
applyColTo() {
|
|
94
|
-
let i = this.formInputs?.find((input) => input.id === this.activeVariable['inputId']);
|
|
95
|
-
if (i?.element === 'tableSelection') {
|
|
96
|
-
return this.selectedInputVariable().tableConfig.displayedColumnsInOrder;
|
|
97
|
-
}
|
|
98
|
-
else if (i?.multipleInputInEditId) {
|
|
99
|
-
const parentInput = this.formInputs?.find((input) => input.id === i?.multipleInputInEditId);
|
|
100
|
-
return parentInput?.formInputs;
|
|
101
|
-
}
|
|
102
|
-
return [];
|
|
103
|
-
}
|
|
104
|
-
get numberInputs() {
|
|
105
|
-
return this.formInputs?.filter((input) => input.dataType === 'number' || input.type === 'number');
|
|
106
|
-
}
|
|
107
|
-
get tableMode() {
|
|
108
|
-
return !!this.mapToData?.tableConfig;
|
|
109
|
-
}
|
|
110
|
-
get tableConfig() {
|
|
111
|
-
return this.mapToData?.tableConfig;
|
|
112
|
-
}
|
|
113
|
-
inputIsInItemList(v) {
|
|
114
|
-
let i = this.formInputs?.find((input) => input.formControlName === v['formControlName']);
|
|
115
|
-
const hasParent = i ? i['multipleInputInEditId'] : false;
|
|
116
|
-
const isInTable = v['tableCell'];
|
|
117
|
-
return !!hasParent || isInTable;
|
|
118
|
-
}
|
|
119
|
-
selectedVariableIsTable() {
|
|
120
|
-
const selectedInput = this.formInputs?.find((inp) => inp['id'] === this.activeVariable['inputId']);
|
|
121
|
-
const isTable = selectedInput
|
|
122
|
-
? selectedInput['element'] === 'tableSelection'
|
|
123
|
-
: false;
|
|
124
|
-
return !!isTable;
|
|
125
|
-
}
|
|
126
|
-
selectedInputVariable() {
|
|
127
|
-
const selectedInput = this.formInputs?.find((inp) => inp['formControlName'] === this.activeVariable['formControlName']);
|
|
128
|
-
const isTable = selectedInput
|
|
129
|
-
? selectedInput['element'] === 'tableSelection'
|
|
130
|
-
: false;
|
|
131
|
-
return isTable ? selectedInput : {};
|
|
132
|
-
}
|
|
133
|
-
checkIfInputCanBeLinkedToCalVariable(currentInput, inputToDisable) {
|
|
134
|
-
if (currentInput?.['formControlName'] === inputToDisable.formControlName) {
|
|
135
|
-
return true;
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
if (!currentInput?.['multipleInputInEditId']) {
|
|
139
|
-
return !!inputToDisable['parentInput'] || !!inputToDisable['multipleInputInEditId'];
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
valueChangedPost(event) {
|
|
147
|
-
this.valueChanged.emit(this.value);
|
|
148
|
-
}
|
|
149
|
-
addVariable() {
|
|
150
|
-
if (!this.value?.['variables']) {
|
|
151
|
-
this.value = {
|
|
152
|
-
...this.value,
|
|
153
|
-
variables: [],
|
|
154
|
-
formula: this.value?.formula || ''
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
this.value = {
|
|
158
|
-
...this.value,
|
|
159
|
-
variables: [...this.value.variables, {
|
|
160
|
-
formControlName: '',
|
|
161
|
-
variable: '',
|
|
162
|
-
}]
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
linkFormulaSource(event) {
|
|
166
|
-
if (!this.value) {
|
|
167
|
-
this.value = {};
|
|
168
|
-
}
|
|
169
|
-
this.value.formControlWithFormula = event.value;
|
|
170
|
-
this.value.formula = undefined;
|
|
171
|
-
this.valueChanged.emit(this.value);
|
|
172
|
-
}
|
|
173
|
-
bindInput(inputId) {
|
|
174
|
-
const input = this.formInputs?.find((input) => input.id === inputId);
|
|
175
|
-
if (!input)
|
|
176
|
-
return;
|
|
177
|
-
if (this.activeVariable['formControlName'] === input['formControlName']) {
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
this.activeVariable['formControlName'] = input['formControlName'];
|
|
181
|
-
this.activeVariable['label'] = input['label'];
|
|
182
|
-
this.activeVariable['inputId'] = input['id'];
|
|
183
|
-
this.activeVariable['parentInputId'] = input['multipleInputInEditId'];
|
|
184
|
-
}
|
|
185
|
-
formulaChanged(event) {
|
|
186
|
-
this.valueChanged.emit(this.value);
|
|
187
|
-
}
|
|
188
|
-
bindTableCol(event, col) {
|
|
189
|
-
this.activeVariable['formControlName'] = col;
|
|
190
|
-
this.activeVariable['tableCell'] = true;
|
|
191
|
-
this.activeVariable['label'] = this.tableConfig?.columnsConfig[col].label;
|
|
192
|
-
event.stopPropagation();
|
|
193
|
-
}
|
|
194
|
-
tableFunctionToCol(event, col) {
|
|
195
|
-
if (typeof col === 'object') {
|
|
196
|
-
this.activeVariable['applyFunctionToCol'] = col['formControlName'];
|
|
197
|
-
this.activeVariable['applyFunctionToLabel'] = col['label'];
|
|
198
|
-
}
|
|
199
|
-
else {
|
|
200
|
-
this.activeVariable['applyFunctionToCol'] = col;
|
|
201
|
-
this.activeVariable['applyFunctionToLabel'] =
|
|
202
|
-
this.selectedInputVariable()?.tableConfig.columnsConfig[col].label;
|
|
203
|
-
}
|
|
204
|
-
event.stopPropagation();
|
|
205
|
-
}
|
|
206
|
-
filterValuesByThisCol(event, col) {
|
|
207
|
-
this.activeVariable['filterValuesByCol'] = col;
|
|
208
|
-
this.activeVariable['filterValuesByThisColLabel'] =
|
|
209
|
-
this.selectedInputVariable()?.tableConfig.columnsConfig[col].label;
|
|
210
|
-
event.stopPropagation();
|
|
211
|
-
}
|
|
212
|
-
unlick(event) {
|
|
213
|
-
delete this.activeVariable['formControlName'];
|
|
214
|
-
delete this.activeVariable['label'];
|
|
215
|
-
delete this.activeVariable['tableCell'];
|
|
216
|
-
event.stopPropagation();
|
|
217
|
-
}
|
|
218
|
-
unlinkTableFunctionToCol(event) {
|
|
219
|
-
delete this.activeVariable['applyFunctionToCol'];
|
|
220
|
-
delete this.activeVariable['applyFunctionToLabel'];
|
|
221
|
-
event.stopPropagation();
|
|
222
|
-
}
|
|
223
|
-
unlinkTableFilter(event) {
|
|
224
|
-
delete this.activeVariable['filterValuesByCol'];
|
|
225
|
-
delete this.activeVariable['filterValuesByThisColLabel'];
|
|
226
|
-
event.stopPropagation();
|
|
227
|
-
}
|
|
228
|
-
attachFunction(event, value) {
|
|
229
|
-
if (this.activeVariable['function'] === value) {
|
|
230
|
-
this.activeVariable['function'] = undefined;
|
|
231
|
-
this.activeVariable['applyFunctionToCol'] = undefined;
|
|
232
|
-
this.activeVariable['applyFunctionToLabel'] = undefined;
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
(this.activeVariable['function'] = value);
|
|
236
|
-
this.activeVariable['applyFunctionToCol'] = this.activeVariable['formControlName'];
|
|
237
|
-
this.activeVariable['applyFunctionToLabel'] = this.activeVariable['label'];
|
|
238
|
-
}
|
|
239
|
-
event.stopPropagation();
|
|
240
|
-
}
|
|
241
|
-
saveNewVariable(event) {
|
|
242
|
-
if (!this.value?.['variables']) {
|
|
243
|
-
this.value = {
|
|
244
|
-
...this.value,
|
|
245
|
-
variables: [],
|
|
246
|
-
formula: this.value?.formula || ''
|
|
247
|
-
};
|
|
248
|
-
}
|
|
249
|
-
this.activeVariable['id'] = v4();
|
|
250
|
-
if (this.inputIsInItemList(this.activeVariable)) {
|
|
251
|
-
let i = this.formInputs?.find((input) => input.formControlName === this.activeVariable['formControlName']);
|
|
252
|
-
const hasParent = i ? i['multipleInputInEditId'] : false;
|
|
253
|
-
this.activeVariable['parentInputId'] =
|
|
254
|
-
hasParent && i ? i['multipleInputInEditId'] : undefined;
|
|
255
|
-
this.value = {
|
|
256
|
-
...this.value,
|
|
257
|
-
variables: [...this.value['variables'], this.activeVariable],
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
else {
|
|
261
|
-
this.value = {
|
|
262
|
-
...this.value,
|
|
263
|
-
variables: [...this.value['variables'], this.activeVariable],
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
this.activeVariable = {};
|
|
267
|
-
this.showVariableConfig = false;
|
|
268
|
-
console.error(this.value);
|
|
269
|
-
this.valueChanged.emit(this.value);
|
|
270
|
-
}
|
|
271
|
-
remove(variable) {
|
|
272
|
-
this.value = {
|
|
273
|
-
...this.value,
|
|
274
|
-
variables: this.value.variables.filter((v) => v.id !== variable.id)
|
|
275
|
-
};
|
|
276
|
-
}
|
|
277
|
-
cancelVariableConfig(event) {
|
|
278
|
-
this.activeVariable = {};
|
|
279
|
-
this.showVariableConfig = false;
|
|
280
|
-
}
|
|
281
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CalculatedFieldRulesComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
282
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: CalculatedFieldRulesComponent, isStandalone: true, selector: "app-calculated-field-rules", inputs: { disabled: "disabled", mapToData: "mapToData", value: "value", formInputs: "formInputs", errors: "errors" }, outputs: { valueChange2dWithPath: "valueChange2dWithPath", valueChanged: "valueChanged" }, host: { properties: { "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: CalculatedFieldRulesComponent }], ngImport: i0, template: "\r\n<br>\r\n<div *ngIf=\" !!this.value &&!mapToData?.['id'] && !tableMode\" class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n Save the input first to enable calculated field configurations\r\n </span>\r\n</div>\r\n\r\n<section >\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" appearance=\"outline\" >\r\n <mat-label >Equation</mat-label>\r\n <textarea matInput #textarea [(ngModel)]=\"value['formula']\" \r\n (input)=\"formulaChanged($event)\"\r\n placeholder=\"Enter calculation expression\"></textarea>\r\n <mat-hint>\r\n example: ((a+2)/(b-1))*2\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" style=\" margin-bottom: 8px;\" appearance=\"outline\" *ngIf=\"!!value.getFormulaFromAFormInput\">\r\n <mat-label>Equation</mat-label>\r\n <mat-select matNativeControl [value]=\"value.formControlWithFormula\" (selectionChange)=\"linkFormulaSource($event)\"\r\n placeholder=\"select Input with formula\">\r\n @for (input of formInputs; track input.id) {\r\n <mat-option [disabled]=\"\r\n checkIfInputCanBeLinkedToCalVariable(mapToData, input) ||\r\n input.element !== 'select'\" [value]=\"input.formControlName\">{{input.label}}</mat-option>\r\n }\r\n\r\n\r\n </mat-select>\r\n <mat-hint>\r\n Link formula to an input value\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-chip-listbox #chipList aria-label=\"options\">\r\n\r\n <mat-chip *ngFor=\"let variable of (this.value['variables']||[])\" \r\n (click)=\"value['formula'] = value['formula'] +' '+ variable['variable'] \"\r\n (removed)=\"remove(variable)\">\r\n <div [style.color]=\"\r\n variable['tableCell'] ? 'var(--ion-color-purple)' : ''\r\n \" style=\"font-size: 13px\">\r\n {{ variable[\"variable\"] }}\r\n\r\n - {{ variable[\"label\"] }}\r\n <span style=\"opacity: 0.6; padding-left: 5px\" *ngIf=\"variable['function']\">\r\n {{ variable[\"function\"] }}</span>\r\n </div>\r\n\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <mat-chip *ngIf=\"!showVariableConfig\" highlighted=\"true\" color=\"accent\" (click)=\"showVariableConfig = !showVariableConfig\">\r\n <span> {{showVariableConfig?'close Variable edit':'Add a new Variable'}} </span>\r\n <mat-icon matChipTrailingIcon>{{\r\n showVariableConfig\r\n ? 'close'\r\n : 'add'\r\n }}</mat-icon>\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n\r\n @if( showVariableConfig){\r\n <ng-container *ngTemplateOutlet=\"variableConfiguration\">\r\n\r\n </ng-container>\r\n }\r\n\r\n</section>\r\n<ng-template #variableConfiguration>\r\n <mat-card style=\"background: var(--mat-sys-surface-container, var(--mat-app-surface));\">\r\n <div style=\"padding: 8px;\">\r\n <div class=\"tree-instructions\" style=\"background: azure\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n <strong>Configure variable </strong><br>\r\n Link a form input to a variable to use in the equation\r\n </span>\r\n </div>\r\n\r\n <lib-form-input-selector \r\n [disabled]=\"!!this.activeVariable['formControlName']\"\r\n [formInputs]=\"numberInputs\" [value]=\"this.activeVariable['inputId']\"\r\n (click)=\"$event.stopPropagation()\" (change)=\"bindInput($event)\"></lib-form-input-selector>\r\n\r\n <ng-container *ngIf=\"this.activeVariable ? !!this.activeVariable['formControlName'] : false\">\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" appearance=\"outline\">\r\n <mat-label >Variable Name</mat-label>\r\n <textarea matInput #textarea (click)=\"$event.stopPropagation()\"\r\n [(ngModel)]=\"this.activeVariable['variable']\"\r\n placeholder=\"enter variable\"></textarea>\r\n <mat-hint>\r\n A variable is an alphabet or term that represents a form input in the equation.\r\n </mat-hint>\r\n </mat-form-field>\r\n @if (activeVariable['parentInputId']) {\r\n <br>\r\n <mat-label > <small>list function ( \u0192 )</small> </mat-label>\r\n <mat-chip-listbox class=\"mat-mdc-chip-set-stacked\" aria-label=\"Calculation function\">\r\n @for (func of allCalculationFunction; track func) {\r\n <mat-chip-option (click)=\"attachFunction($event,func)\" [selected]=\"activeVariable.function === func\">{{func}}</mat-chip-option>\r\n }\r\n </mat-chip-listbox>\r\n \r\n }\r\n \r\n </ng-container>\r\n </div>\r\n\r\n <mat-toolbar class=\"ion-margin-top\" lines=\"none\">\r\n <span class=\"spacer\"></span>\r\n <button mat-flat-button (click)=\"cancelVariableConfig($event)\">\r\n cancel\r\n </button>\r\n <button mat-raised-button color=\"primary\" [disabled]=\"\r\n !this.activeVariable['formControlName'] ||\r\n !this.activeVariable['variable']\r\n \" (click)=\"saveNewVariable($event)\">\r\n save variable\r\n </button>\r\n\r\n </mat-toolbar>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOpen]=\"disabled\"\r\n>\r\n<div style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5);\">\r\n\r\n\r\n</div>\r\n</ng-template>\r\n", styles: [".labelM{font-size:13px}.tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px;margin:8px auto auto}mat-form-field{width:100%;background:azure}.endIcons{height:100%;display:flex!important;align-items:center!important;justify-content:center}mat-chip{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i1$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i5.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i5.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i5.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: i5.MatChipRemove, selector: "[matChipRemove]" }, { kind: "directive", type: i5.MatChipTrailingIcon, selector: "mat-chip-trailing-icon, [matChipTrailingIcon]" }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i3$1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i11.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FormInputSelectorComponent, selector: "lib-form-input-selector", inputs: ["errors", "value", "formInputs", "disabled"], outputs: ["change"] }, { kind: "ngmodule", type: OverlayModule }] }); }
|
|
283
|
-
}
|
|
284
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CalculatedFieldRulesComponent, decorators: [{
|
|
285
|
-
type: Component,
|
|
286
|
-
args: [{ selector: 'app-calculated-field-rules', standalone: true, imports: [
|
|
287
|
-
MatModulesModule,
|
|
288
|
-
CommonModule,
|
|
289
|
-
FormsModule,
|
|
290
|
-
FormInputSelectorComponent,
|
|
291
|
-
OverlayModule
|
|
292
|
-
], providers: [{ provide: MatFormFieldControl, useExisting: CalculatedFieldRulesComponent }], template: "\r\n<br>\r\n<div *ngIf=\" !!this.value &&!mapToData?.['id'] && !tableMode\" class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n Save the input first to enable calculated field configurations\r\n </span>\r\n</div>\r\n\r\n<section >\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" appearance=\"outline\" >\r\n <mat-label >Equation</mat-label>\r\n <textarea matInput #textarea [(ngModel)]=\"value['formula']\" \r\n (input)=\"formulaChanged($event)\"\r\n placeholder=\"Enter calculation expression\"></textarea>\r\n <mat-hint>\r\n example: ((a+2)/(b-1))*2\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" style=\" margin-bottom: 8px;\" appearance=\"outline\" *ngIf=\"!!value.getFormulaFromAFormInput\">\r\n <mat-label>Equation</mat-label>\r\n <mat-select matNativeControl [value]=\"value.formControlWithFormula\" (selectionChange)=\"linkFormulaSource($event)\"\r\n placeholder=\"select Input with formula\">\r\n @for (input of formInputs; track input.id) {\r\n <mat-option [disabled]=\"\r\n checkIfInputCanBeLinkedToCalVariable(mapToData, input) ||\r\n input.element !== 'select'\" [value]=\"input.formControlName\">{{input.label}}</mat-option>\r\n }\r\n\r\n\r\n </mat-select>\r\n <mat-hint>\r\n Link formula to an input value\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-chip-listbox #chipList aria-label=\"options\">\r\n\r\n <mat-chip *ngFor=\"let variable of (this.value['variables']||[])\" \r\n (click)=\"value['formula'] = value['formula'] +' '+ variable['variable'] \"\r\n (removed)=\"remove(variable)\">\r\n <div [style.color]=\"\r\n variable['tableCell'] ? 'var(--ion-color-purple)' : ''\r\n \" style=\"font-size: 13px\">\r\n {{ variable[\"variable\"] }}\r\n\r\n - {{ variable[\"label\"] }}\r\n <span style=\"opacity: 0.6; padding-left: 5px\" *ngIf=\"variable['function']\">\r\n {{ variable[\"function\"] }}</span>\r\n </div>\r\n\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <mat-chip *ngIf=\"!showVariableConfig\" highlighted=\"true\" color=\"accent\" (click)=\"showVariableConfig = !showVariableConfig\">\r\n <span> {{showVariableConfig?'close Variable edit':'Add a new Variable'}} </span>\r\n <mat-icon matChipTrailingIcon>{{\r\n showVariableConfig\r\n ? 'close'\r\n : 'add'\r\n }}</mat-icon>\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n\r\n @if( showVariableConfig){\r\n <ng-container *ngTemplateOutlet=\"variableConfiguration\">\r\n\r\n </ng-container>\r\n }\r\n\r\n</section>\r\n<ng-template #variableConfiguration>\r\n <mat-card style=\"background: var(--mat-sys-surface-container, var(--mat-app-surface));\">\r\n <div style=\"padding: 8px;\">\r\n <div class=\"tree-instructions\" style=\"background: azure\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n <strong>Configure variable </strong><br>\r\n Link a form input to a variable to use in the equation\r\n </span>\r\n </div>\r\n\r\n <lib-form-input-selector \r\n [disabled]=\"!!this.activeVariable['formControlName']\"\r\n [formInputs]=\"numberInputs\" [value]=\"this.activeVariable['inputId']\"\r\n (click)=\"$event.stopPropagation()\" (change)=\"bindInput($event)\"></lib-form-input-selector>\r\n\r\n <ng-container *ngIf=\"this.activeVariable ? !!this.activeVariable['formControlName'] : false\">\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" appearance=\"outline\">\r\n <mat-label >Variable Name</mat-label>\r\n <textarea matInput #textarea (click)=\"$event.stopPropagation()\"\r\n [(ngModel)]=\"this.activeVariable['variable']\"\r\n placeholder=\"enter variable\"></textarea>\r\n <mat-hint>\r\n A variable is an alphabet or term that represents a form input in the equation.\r\n </mat-hint>\r\n </mat-form-field>\r\n @if (activeVariable['parentInputId']) {\r\n <br>\r\n <mat-label > <small>list function ( \u0192 )</small> </mat-label>\r\n <mat-chip-listbox class=\"mat-mdc-chip-set-stacked\" aria-label=\"Calculation function\">\r\n @for (func of allCalculationFunction; track func) {\r\n <mat-chip-option (click)=\"attachFunction($event,func)\" [selected]=\"activeVariable.function === func\">{{func}}</mat-chip-option>\r\n }\r\n </mat-chip-listbox>\r\n \r\n }\r\n \r\n </ng-container>\r\n </div>\r\n\r\n <mat-toolbar class=\"ion-margin-top\" lines=\"none\">\r\n <span class=\"spacer\"></span>\r\n <button mat-flat-button (click)=\"cancelVariableConfig($event)\">\r\n cancel\r\n </button>\r\n <button mat-raised-button color=\"primary\" [disabled]=\"\r\n !this.activeVariable['formControlName'] ||\r\n !this.activeVariable['variable']\r\n \" (click)=\"saveNewVariable($event)\">\r\n save variable\r\n </button>\r\n\r\n </mat-toolbar>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOpen]=\"disabled\"\r\n>\r\n<div style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5);\">\r\n\r\n\r\n</div>\r\n</ng-template>\r\n", styles: [".labelM{font-size:13px}.tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px;margin:8px auto auto}mat-form-field{width:100%;background:azure}.endIcons{height:100%;display:flex!important;align-items:center!important;justify-content:center}mat-chip{cursor:pointer}\n"] }]
|
|
293
|
-
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
294
|
-
type: Optional
|
|
295
|
-
}, {
|
|
296
|
-
type: Self
|
|
297
|
-
}] }, { type: i0.ElementRef }], propDecorators: { id: [{
|
|
298
|
-
type: HostBinding
|
|
299
|
-
}], disabled: [{
|
|
300
|
-
type: Input
|
|
301
|
-
}], mapToData: [{
|
|
302
|
-
type: Input
|
|
303
|
-
}], value: [{
|
|
304
|
-
type: Input
|
|
305
|
-
}], formInputs: [{
|
|
306
|
-
type: Input
|
|
307
|
-
}], errors: [{
|
|
308
|
-
type: Input
|
|
309
|
-
}], valueChange2dWithPath: [{
|
|
310
|
-
type: Output
|
|
311
|
-
}], valueChanged: [{
|
|
312
|
-
type: Output
|
|
313
|
-
}] } });
|
|
314
|
-
|
|
315
|
-
export { CalculatedFieldRulesComponent };
|
|
316
|
-
//# sourceMappingURL=ngx-t-forms-calculated-field-rules.component-BdDN7YwK.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-t-forms-calculated-field-rules.component-BdDN7YwK.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/calculated-field-rules/calculated-field-rules.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/calculated-field-rules/calculated-field-rules.component.html"],"sourcesContent":["import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n\r\n OnInit,\r\n Optional,\r\n Output,\r\n Self,\r\n} from '@angular/core';\r\n\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CalculatedFieldRules, TableConfigurationsInterface } from 'ngx-t-forms-types';\r\n\r\nimport { FormColumnInputs } from 'ngx-t-forms-types';\r\nimport { FormsModule, NgControl } from '@angular/forms';\r\nimport { MatSelectChange } from '@angular/material/select';\r\nimport { FormInputSelectorComponent } from '../form-input-selector/form-input-selector.component';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Subject } from 'rxjs';\r\nimport { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\nimport { CalculationFunctions, calculationVariableInterface } from \"ngx-t-forms-types\"\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n@Component({\r\n selector: 'app-calculated-field-rules',\r\n templateUrl: './calculated-field-rules.component.html',\r\n styleUrls: ['./calculated-field-rules.component.scss'],\r\n standalone: true,\r\n imports: [\r\n MatModulesModule,\r\n CommonModule,\r\n FormsModule,\r\n FormInputSelectorComponent,\r\n OverlayModule\r\n ],\r\n providers: [{ provide: MatFormFieldControl, useExisting: CalculatedFieldRulesComponent }],\r\n})\r\nexport class CalculatedFieldRulesComponent implements OnInit, MatFormFieldControl<CalculatedFieldRules | undefined> {\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n\r\n @HostBinding() id = `app-calculated-field-rules-${CalculatedFieldRulesComponent.nextId++}`;\r\n\r\n placeholder: string = ''\r\n constructor(@Optional() @Self() public ngControl: NgControl, private _elementRef: ElementRef<HTMLElement>,) { }\r\n focused: boolean = false;\r\n get empty() {\r\n return !this.value\r\n }\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty;\r\n }\r\n required: boolean = false;\r\n @Input() disabled: boolean = false;\r\n get errorState(): boolean {\r\n const hasError = !!this.ngControl?.control?.errors || (this.errors || []).length > 0 && this.touched\r\n return !this.value && !!this.required || hasError\r\n }\r\n\r\n controlType?: string | undefined;\r\n autofilled?: boolean | undefined;\r\n userAriaDescribedBy?: string | undefined;\r\n disableAutomaticLabeling?: boolean | undefined;\r\n setDescribedByIds(ids: string[]) {\r\n // Ensure the component view is initialized\r\n if (this._elementRef && this._elementRef.nativeElement) {\r\n const controlElement = this._elementRef.nativeElement.querySelector('.app-calculated-field-rules');\r\n // Check if the controlElement exists before attempting to set its attribute\r\n if (controlElement) {\r\n controlElement.setAttribute('aria-describedby', ids.join(' '));\r\n }\r\n }\r\n }\r\n onContainerClick(event: MouseEvent): void {\r\n this.markAsTouched();\r\n this.stateChanges.next();\r\n }\r\n\r\n touched: boolean = false;\r\n onTouched = () => { };\r\n markAsTouched() {\r\n console.log('markAsTouched')\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n\r\n\r\n @Input() mapToData: FormColumnInputs | undefined = undefined;\r\n _value: CalculatedFieldRules = {} as any;\r\n @Input() set value(value: CalculatedFieldRules) {\r\n this._value = value;\r\n }\r\n get value(): CalculatedFieldRules {\r\n return this._value;\r\n }\r\n @Input() formInputs: Array<FormColumnInputs> = []\r\n @Input() errors: IConfigElementError[] | undefined = [];\r\n @Output() valueChange2dWithPath = new EventEmitter<any>();\r\n @Output() valueChanged = new EventEmitter<CalculatedFieldRules | any>();\r\n\r\n\r\n get allCalculationFunction() {\r\n return Object.values(\r\n CalculationFunctions\r\n )\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n applyColTo() {\r\n let i: any = this.formInputs?.find(\r\n (input: any) => input.id === this.activeVariable['inputId']\r\n );\r\n if (i?.element === 'tableSelection') {\r\n return this.selectedInputVariable().tableConfig.displayedColumnsInOrder\r\n } else if (i?.multipleInputInEditId) {\r\n const parentInput = this.formInputs?.find(\r\n (input: any) => input.id === i?.multipleInputInEditId\r\n );\r\n return parentInput?.formInputs\r\n }\r\n\r\n return []\r\n }\r\n get numberInputs() {\r\n\r\n return this.formInputs?.filter((input: FormColumnInputs) => input.dataType === 'number' || input.type === 'number')\r\n }\r\n get tableMode(): Boolean {\r\n return !!this.mapToData?.tableConfig\r\n }\r\n get tableConfig(): TableConfigurationsInterface | undefined {\r\n return this.mapToData?.tableConfig\r\n }\r\n\r\n inputIsInItemList(v: FormColumnInputs) {\r\n let i = this.formInputs?.find(\r\n (input: any) => input.formControlName === v['formControlName']\r\n );\r\n\r\n const hasParent = i ? i['multipleInputInEditId'] : false;\r\n\r\n const isInTable = (v as any)['tableCell'];\r\n\r\n return !!hasParent || isInTable;\r\n }\r\n selectedVariableIsTable(): boolean {\r\n const selectedInput: any = this.formInputs?.find(\r\n (inp: { [x: string]: any }) =>\r\n inp['id'] === this.activeVariable['inputId']\r\n );\r\n const isTable = selectedInput\r\n ? selectedInput['element'] === 'tableSelection'\r\n : false;\r\n\r\n\r\n return !!isTable\r\n }\r\n selectedInputVariable(): any {\r\n const selectedInput: any = this.formInputs?.find(\r\n (inp: { [x: string]: any }) =>\r\n inp['formControlName'] === this.activeVariable['formControlName']\r\n );\r\n const isTable = selectedInput\r\n ? selectedInput['element'] === 'tableSelection'\r\n : false;\r\n return isTable ? selectedInput : {};\r\n }\r\n\r\n\r\n checkIfInputCanBeLinkedToCalVariable(\r\n currentInput: FormColumnInputs | undefined,\r\n inputToDisable: { [x: string]: any; formControlName: any }\r\n ) {\r\n if (currentInput?.['formControlName'] === inputToDisable.formControlName) {\r\n return true;\r\n } else {\r\n if (!currentInput?.['multipleInputInEditId']\r\n ) {\r\n return !!inputToDisable['parentInput'] || !!inputToDisable['multipleInputInEditId'];\r\n } else {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n valueChangedPost(event: any) {\r\n this.valueChanged.emit(this.value);\r\n }\r\n activeVariable: any = {} as any;\r\n addVariable() {\r\n if (!this.value?.['variables']) {\r\n this.value = {\r\n ...this.value,\r\n variables: [],\r\n formula: this.value?.formula || ''\r\n }\r\n }\r\n this.value = {\r\n ...this.value,\r\n variables: [...this.value.variables, ({\r\n formControlName: '',\r\n variable: '',\r\n } as any)]\r\n }\r\n }\r\n linkFormulaSource(event: MatSelectChange) {\r\n if (!this.value) {\r\n this.value = {} as any\r\n }\r\n this.value!.formControlWithFormula = event.value\r\n this.value!.formula = undefined as any\r\n this.valueChanged.emit(this.value)\r\n }\r\n showVariableConfig: boolean = false;\r\n bindInput(\r\n inputId: string\r\n ) {\r\n const input = this.formInputs?.find(\r\n (input: any) => input.id === inputId\r\n )\r\n if (!input) return;\r\n if (this.activeVariable['formControlName'] === input['formControlName']) {\r\n return\r\n }\r\n this.activeVariable['formControlName'] = input['formControlName'];\r\n this.activeVariable['label'] = input['label'];\r\n this.activeVariable['inputId'] = input['id']\r\n this.activeVariable['parentInputId'] = input['multipleInputInEditId']\r\n\r\n }\r\n formulaChanged(event: any) {\r\n this.valueChanged.emit(this.value);\r\n }\r\n bindTableCol(event: { stopPropagation: () => void }, col: string) {\r\n this.activeVariable['formControlName'] = col;\r\n this.activeVariable['tableCell'] = true;\r\n\r\n this.activeVariable['label'] = this.tableConfig?.columnsConfig[col].label;\r\n event.stopPropagation();\r\n }\r\n tableFunctionToCol(\r\n event: { stopPropagation: () => void },\r\n col: string | number | any\r\n ) {\r\n if (typeof col === 'object') {\r\n this.activeVariable['applyFunctionToCol'] = col['formControlName'];\r\n this.activeVariable['applyFunctionToLabel'] = col['label'];\r\n } else {\r\n this.activeVariable['applyFunctionToCol'] = col;\r\n\r\n this.activeVariable['applyFunctionToLabel'] =\r\n this.selectedInputVariable()?.tableConfig.columnsConfig[col].label;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n filterValuesByThisCol(\r\n event: { stopPropagation: () => void },\r\n col: string\r\n ) {\r\n this.activeVariable['filterValuesByCol'] = col;\r\n this.activeVariable['filterValuesByThisColLabel'] =\r\n this.selectedInputVariable()?.tableConfig.columnsConfig[col].label;\r\n event.stopPropagation();\r\n }\r\n unlick(event: { stopPropagation: () => void }) {\r\n delete (this.activeVariable as any)['formControlName'];\r\n delete (this.activeVariable as any)['label'];\r\n delete this.activeVariable['tableCell'];\r\n event.stopPropagation();\r\n }\r\n unlinkTableFunctionToCol(event: { stopPropagation: () => void }) {\r\n delete this.activeVariable['applyFunctionToCol'];\r\n delete this.activeVariable['applyFunctionToLabel'];\r\n event.stopPropagation();\r\n }\r\n unlinkTableFilter(event: { stopPropagation: () => void }) {\r\n delete this.activeVariable['filterValuesByCol'];\r\n delete this.activeVariable['filterValuesByThisColLabel'];\r\n event.stopPropagation();\r\n }\r\n functions = [\r\n { value: 'avg', label: 'Average' },\r\n { value: 'max', label: 'Maximum' },\r\n { value: 'min', label: 'lowest' },\r\n { value: 'sum', label: 'Sum' },\r\n ];\r\n attachFunction(event: { stopPropagation: () => void }, value: any) {\r\n \r\n if (this.activeVariable['function'] === value) {\r\n this.activeVariable['function'] = undefined\r\n this.activeVariable['applyFunctionToCol'] = undefined;\r\n this.activeVariable['applyFunctionToLabel'] = undefined;\r\n\r\n } else {\r\n (this.activeVariable['function'] = value)\r\n this.activeVariable['applyFunctionToCol'] = this.activeVariable['formControlName'];\r\n this.activeVariable['applyFunctionToLabel'] = this.activeVariable['label'];\r\n }\r\n\r\n\r\n event.stopPropagation();\r\n }\r\n saveNewVariable(event: any) {\r\n\r\n if (!this.value?.['variables']) {\r\n this.value = {\r\n ...this.value,\r\n variables: [],\r\n formula: this.value?.formula || ''\r\n }\r\n }\r\n this.activeVariable['id'] = uuidv4();\r\n if (this.inputIsInItemList(this.activeVariable)) {\r\n let i = this.formInputs?.find(\r\n (input: any) =>\r\n input.formControlName === this.activeVariable['formControlName']\r\n );\r\n const hasParent = i ? i['multipleInputInEditId'] : false;\r\n\r\n\r\n this.activeVariable['parentInputId'] =\r\n hasParent && i ? i['multipleInputInEditId'] : undefined;\r\n\r\n this.value = {\r\n ...this.value,\r\n variables: [...this.value['variables'], this.activeVariable],\r\n }\r\n } else {\r\n this.value = {\r\n ...this.value,\r\n variables: [...this.value['variables'], this.activeVariable],\r\n }\r\n }\r\n\r\n this.activeVariable = {} as any;\r\n this.showVariableConfig = false;\r\n console.error(this.value)\r\n this.valueChanged.emit(this.value);\r\n }\r\n remove(variable: calculationVariableInterface) {\r\n this.value = {\r\n ...this.value,\r\n variables: this.value.variables.filter((v: calculationVariableInterface) => v.id !== variable.id)\r\n }\r\n\r\n }\r\n cancelVariableConfig(event: any) {\r\n this.activeVariable = {} as any;\r\n this.showVariableConfig = false;\r\n }\r\n}\r\n","\r\n<br>\r\n<div *ngIf=\" !!this.value &&!mapToData?.['id'] && !tableMode\" class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n Save the input first to enable calculated field configurations\r\n </span>\r\n</div>\r\n\r\n<section >\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" appearance=\"outline\" >\r\n <mat-label >Equation</mat-label>\r\n <textarea matInput #textarea [(ngModel)]=\"value['formula']\" \r\n (input)=\"formulaChanged($event)\"\r\n placeholder=\"Enter calculation expression\"></textarea>\r\n <mat-hint>\r\n example: ((a+2)/(b-1))*2\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" style=\" margin-bottom: 8px;\" appearance=\"outline\" *ngIf=\"!!value.getFormulaFromAFormInput\">\r\n <mat-label>Equation</mat-label>\r\n <mat-select matNativeControl [value]=\"value.formControlWithFormula\" (selectionChange)=\"linkFormulaSource($event)\"\r\n placeholder=\"select Input with formula\">\r\n @for (input of formInputs; track input.id) {\r\n <mat-option [disabled]=\"\r\n checkIfInputCanBeLinkedToCalVariable(mapToData, input) ||\r\n input.element !== 'select'\" [value]=\"input.formControlName\">{{input.label}}</mat-option>\r\n }\r\n\r\n\r\n </mat-select>\r\n <mat-hint>\r\n Link formula to an input value\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-chip-listbox #chipList aria-label=\"options\">\r\n\r\n <mat-chip *ngFor=\"let variable of (this.value['variables']||[])\" \r\n (click)=\"value['formula'] = value['formula'] +' '+ variable['variable'] \"\r\n (removed)=\"remove(variable)\">\r\n <div [style.color]=\"\r\n variable['tableCell'] ? 'var(--ion-color-purple)' : ''\r\n \" style=\"font-size: 13px\">\r\n {{ variable[\"variable\"] }}\r\n\r\n - {{ variable[\"label\"] }}\r\n <span style=\"opacity: 0.6; padding-left: 5px\" *ngIf=\"variable['function']\">\r\n {{ variable[\"function\"] }}</span>\r\n </div>\r\n\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <mat-chip *ngIf=\"!showVariableConfig\" highlighted=\"true\" color=\"accent\" (click)=\"showVariableConfig = !showVariableConfig\">\r\n <span> {{showVariableConfig?'close Variable edit':'Add a new Variable'}} </span>\r\n <mat-icon matChipTrailingIcon>{{\r\n showVariableConfig\r\n ? 'close'\r\n : 'add'\r\n }}</mat-icon>\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n\r\n @if( showVariableConfig){\r\n <ng-container *ngTemplateOutlet=\"variableConfiguration\">\r\n\r\n </ng-container>\r\n }\r\n\r\n</section>\r\n<ng-template #variableConfiguration>\r\n <mat-card style=\"background: var(--mat-sys-surface-container, var(--mat-app-surface));\">\r\n <div style=\"padding: 8px;\">\r\n <div class=\"tree-instructions\" style=\"background: azure\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n <strong>Configure variable </strong><br>\r\n Link a form input to a variable to use in the equation\r\n </span>\r\n </div>\r\n\r\n <lib-form-input-selector \r\n [disabled]=\"!!this.activeVariable['formControlName']\"\r\n [formInputs]=\"numberInputs\" [value]=\"this.activeVariable['inputId']\"\r\n (click)=\"$event.stopPropagation()\" (change)=\"bindInput($event)\"></lib-form-input-selector>\r\n\r\n <ng-container *ngIf=\"this.activeVariable ? !!this.activeVariable['formControlName'] : false\">\r\n <mat-form-field [subscriptSizing]=\"'dynamic'\" [floatLabel]=\"'always'\" appearance=\"outline\">\r\n <mat-label >Variable Name</mat-label>\r\n <textarea matInput #textarea (click)=\"$event.stopPropagation()\"\r\n [(ngModel)]=\"this.activeVariable['variable']\"\r\n placeholder=\"enter variable\"></textarea>\r\n <mat-hint>\r\n A variable is an alphabet or term that represents a form input in the equation.\r\n </mat-hint>\r\n </mat-form-field>\r\n @if (activeVariable['parentInputId']) {\r\n <br>\r\n <mat-label > <small>list function ( ƒ )</small> </mat-label>\r\n <mat-chip-listbox class=\"mat-mdc-chip-set-stacked\" aria-label=\"Calculation function\">\r\n @for (func of allCalculationFunction; track func) {\r\n <mat-chip-option (click)=\"attachFunction($event,func)\" [selected]=\"activeVariable.function === func\">{{func}}</mat-chip-option>\r\n }\r\n </mat-chip-listbox>\r\n \r\n }\r\n \r\n </ng-container>\r\n </div>\r\n\r\n <mat-toolbar class=\"ion-margin-top\" lines=\"none\">\r\n <span class=\"spacer\"></span>\r\n <button mat-flat-button (click)=\"cancelVariableConfig($event)\">\r\n cancel\r\n </button>\r\n <button mat-raised-button color=\"primary\" [disabled]=\"\r\n !this.activeVariable['formControlName'] ||\r\n !this.activeVariable['variable']\r\n \" (click)=\"saveNewVariable($event)\">\r\n save variable\r\n </button>\r\n\r\n </mat-toolbar>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOpen]=\"disabled\"\r\n>\r\n<div style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5);\">\r\n\r\n\r\n</div>\r\n</ng-template>\r\n"],"names":["uuidv4","i2","i3","i4","i6","i7","i8","i9","i10"],"mappings":"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"}
|