ngx-t-forms 2.0.8 → 2.0.9
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/fesm2022/{ngx-t-forms-api-value-access-rules.component-B9s7Hx-j.mjs → ngx-t-forms-api-value-access-rules.component-DjZDnTHz.mjs} +11 -11
- package/fesm2022/{ngx-t-forms-api-value-access-rules.component-B9s7Hx-j.mjs.map → ngx-t-forms-api-value-access-rules.component-DjZDnTHz.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-api-value-access-rules.component-Zg1ddSDb.mjs +813 -0
- package/fesm2022/ngx-t-forms-api-value-access-rules.component-Zg1ddSDb.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-calculated-field-rules.component-vhdr4NMu.mjs → ngx-t-forms-calculated-field-rules.component-E3l7DQo7.mjs} +11 -11
- package/fesm2022/{ngx-t-forms-calculated-field-rules.component-vhdr4NMu.mjs.map → ngx-t-forms-calculated-field-rules.component-E3l7DQo7.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-calculated-field-rules.component-ZepKycLR.mjs +532 -0
- package/fesm2022/ngx-t-forms-calculated-field-rules.component-ZepKycLR.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-DLnB3R7t.mjs +297 -0
- package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-DLnB3R7t.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-Br3EWLav.mjs → ngx-t-forms-config-mscoa-additional-inputs.component-sOC54w4T.mjs} +9 -9
- package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-Br3EWLav.mjs.map → ngx-t-forms-config-mscoa-additional-inputs.component-sOC54w4T.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-form-input-selector.component-BjwzDiCY.mjs +187 -0
- package/fesm2022/ngx-t-forms-form-input-selector.component-BjwzDiCY.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-form-input-selector.component-CR3ZVWLw.mjs → ngx-t-forms-form-input-selector.component-CB03sPjA.mjs} +6 -6
- package/fesm2022/{ngx-t-forms-form-input-selector.component-CR3ZVWLw.mjs.map → ngx-t-forms-form-input-selector.component-CB03sPjA.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-form-json-view.component-CMdtaqhR.mjs → ngx-t-forms-form-json-view.component-C1AZujJH.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-form-json-view.component-CMdtaqhR.mjs.map → ngx-t-forms-form-json-view.component-C1AZujJH.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-form-json-view.component-CqtTYCRH.mjs +28 -0
- package/fesm2022/ngx-t-forms-form-json-view.component-CqtTYCRH.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-form-section-stepper.component-Ba5WCLzp.mjs +673 -0
- package/fesm2022/ngx-t-forms-form-section-stepper.component-Ba5WCLzp.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-form-section-stepper.component-C_dciQhe.mjs +225 -0
- package/fesm2022/ngx-t-forms-form-section-stepper.component-C_dciQhe.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-forms-builder-menu.component-pWNcCGY8.mjs → ngx-t-forms-forms-builder-menu.component-CPIcPREp.mjs} +10 -10
- package/fesm2022/{ngx-t-forms-forms-builder-menu.component-pWNcCGY8.mjs.map → ngx-t-forms-forms-builder-menu.component-CPIcPREp.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-forms-builder-menu.component-DbxEBvpt.mjs +735 -0
- package/fesm2022/ngx-t-forms-forms-builder-menu.component-DbxEBvpt.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-input-editor.component-BnsC-jsN.mjs +445 -0
- package/fesm2022/ngx-t-forms-input-editor.component-BnsC-jsN.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-input-editor.component-_ER-4SAR.mjs → ngx-t-forms-input-editor.component-__grERM8.mjs} +5 -5
- package/fesm2022/{ngx-t-forms-input-editor.component-_ER-4SAR.mjs.map → ngx-t-forms-input-editor.component-__grERM8.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-DS6s98ZX.mjs +111 -0
- package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-DS6s98ZX.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-Bq0rr62p.mjs → ngx-t-forms-mat-chip-list-editor.component-DcdHYqhN.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-Bq0rr62p.mjs.map → ngx-t-forms-mat-chip-list-editor.component-DcdHYqhN.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-mat-slider-editor.component-BOT4I9Wg.mjs → ngx-t-forms-mat-slider-editor.component-C9rintm4.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-mat-slider-editor.component-BOT4I9Wg.mjs.map → ngx-t-forms-mat-slider-editor.component-C9rintm4.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-mat-slider-editor.component-ChiiJYK2.mjs +130 -0
- package/fesm2022/ngx-t-forms-mat-slider-editor.component-ChiiJYK2.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-CawhiguI.mjs → ngx-t-forms-mat-slider-toggle-editor.component-CItK6kXf.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-CawhiguI.mjs.map → ngx-t-forms-mat-slider-toggle-editor.component-CItK6kXf.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-mat-slider-toggle-editor.component-DFcLzkSF.mjs +171 -0
- package/fesm2022/ngx-t-forms-mat-slider-toggle-editor.component-DFcLzkSF.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-missing-form-configs.component-DNkGCH0e.mjs +104 -0
- package/fesm2022/ngx-t-forms-missing-form-configs.component-DNkGCH0e.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-missing-form-configs.component-DEx_YKAi.mjs → ngx-t-forms-missing-form-configs.component-Da3SdUn6.mjs} +4 -4
- package/fesm2022/{ngx-t-forms-missing-form-configs.component-DEx_YKAi.mjs.map → ngx-t-forms-missing-form-configs.component-Da3SdUn6.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-4hrEpLk3.mjs +258 -0
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-4hrEpLk3.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-CrHAIRAw.mjs +455 -0
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-CrHAIRAw.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-ngx-t-forms-R8Bkco8q.mjs → ngx-t-forms-ngx-t-forms-1Roar4qK.mjs} +630 -175
- package/fesm2022/ngx-t-forms-ngx-t-forms-1Roar4qK.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-ngx-t-forms-DaAFB-HX.mjs +14694 -0
- package/fesm2022/ngx-t-forms-ngx-t-forms-DaAFB-HX.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-pipeline-generator.component-CDCDamaQ.mjs → ngx-t-forms-pipeline-generator.component-BQDykLNH.mjs} +13 -13
- package/fesm2022/{ngx-t-forms-pipeline-generator.component-CDCDamaQ.mjs.map → ngx-t-forms-pipeline-generator.component-BQDykLNH.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-pipeline-generator.component-U0d8jQKW.mjs +1362 -0
- package/fesm2022/ngx-t-forms-pipeline-generator.component-U0d8jQKW.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-required-inputs.component-zHQPB3m_.mjs → ngx-t-forms-required-inputs.component-BGK3DNu0.mjs} +10 -10
- package/fesm2022/{ngx-t-forms-required-inputs.component-zHQPB3m_.mjs.map → ngx-t-forms-required-inputs.component-BGK3DNu0.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-required-inputs.component-S3cbA-zG.mjs +383 -0
- package/fesm2022/ngx-t-forms-required-inputs.component-S3cbA-zG.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-CKStotqz.mjs → ngx-t-forms-rest-api-call-setup.component-CCaRUSVQ.mjs} +4 -4
- package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-CKStotqz.mjs.map → ngx-t-forms-rest-api-call-setup.component-CCaRUSVQ.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-rest-api-call-setup.component-DDg4fCFx.mjs +457 -0
- package/fesm2022/ngx-t-forms-rest-api-call-setup.component-DDg4fCFx.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-section-report.component-Us4jxjhq.mjs → ngx-t-forms-section-report.component-C8Ja_G_3.mjs} +5 -5
- package/fesm2022/{ngx-t-forms-section-report.component-Us4jxjhq.mjs.map → ngx-t-forms-section-report.component-C8Ja_G_3.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-section-report.component-C_h0KIR4.mjs +314 -0
- package/fesm2022/ngx-t-forms-section-report.component-C_h0KIR4.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-selection-options-editor.component-CllhwZ5Y.mjs +231 -0
- package/fesm2022/ngx-t-forms-selection-options-editor.component-CllhwZ5Y.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-selection-options-editor.component-BwFboSq2.mjs → ngx-t-forms-selection-options-editor.component-cYkn1O48.mjs} +5 -5
- package/fesm2022/{ngx-t-forms-selection-options-editor.component-BwFboSq2.mjs.map → ngx-t-forms-selection-options-editor.component-cYkn1O48.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-validators-config.component-BPJZRtjT.mjs +434 -0
- package/fesm2022/ngx-t-forms-validators-config.component-BPJZRtjT.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-validators-config.component-CX0M2OH1.mjs → ngx-t-forms-validators-config.component-CGXCCl45.mjs} +7 -7
- package/fesm2022/{ngx-t-forms-validators-config.component-CX0M2OH1.mjs.map → ngx-t-forms-validators-config.component-CGXCCl45.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 +2 -0
- package/lib/components/form-builder/elements/form-submissions-config/form-submissions-config.component.d.ts +1 -1
- package/lib/components/form-builder/elements/input-element-editor/input-element-editor.component.d.ts +2 -2
- package/lib/components/forms/forms.component.d.ts +1 -1
- package/lib/components/forms/store/Form-actions-formBuilder.d.ts +1 -0
- package/lib/components/forms/store/Form-selectors-FormBuilder.d.ts +1 -1
- package/lib/components/forms/store/forms-store.service.d.ts +2 -1
- package/lib/components/index.d.ts +2 -1
- package/lib/components/t-dynamic-data-edit/elements/mscoa-segment-config/mscoa-segment-config.component.d.ts +5 -9
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/account-value/account-value.component.d.ts +3 -3
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/mscoa-chart.component.d.ts +67 -52
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-computation/mscoa-computation.component.d.ts +10 -10
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-reactive-form-field/mscoa-reactive-form-field.component.d.ts +8 -6
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/scoa-account-table/scoa-account-table.component.d.ts +8 -8
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/scoa-input/scoa-input.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/mscoa-form-input/mscoa-form-input.component.d.ts +4 -3
- package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-actions.d.ts +5 -5
- package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-component-store.service.d.ts +27 -31
- package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-effects.d.ts +2 -2
- package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-selectors.d.ts +20 -24
- package/lib/components/t-form-input/elements/multiple-input-input-element/core/multiple-input-table-edit/multiple-input-table-edit.component.d.ts +1 -1
- package/lib/components/t-form-input/elements/select-input-element/elements/select-input/select-input.component.d.ts +20 -0
- package/lib/components/t-form-input/elements/select-input-element/select-input-element.component.d.ts +0 -3
- package/lib/components/t-form-input/t-form-input.component.d.ts +3 -2
- package/lib/components/workflow-builder/store/workflow-builder-store.service.d.ts +18 -0
- package/lib/components/workflow-builder/store/workflowEditorActions.d.ts +4 -0
- package/lib/components/workflow-builder/store/workflowEditorEffects.d.ts +2 -0
- package/lib/components/workflow-builder/store/workflowEditorSelectors.d.ts +2 -0
- package/lib/components/workflow-builder/workflow-builder.component.d.ts +12 -0
- package/lib/services/core/t-form-builder/functions/addScoaExtensionInput.d.ts +2 -0
- package/lib/services/core/t-form-tower-controller/functions/allFormInputs.d.ts +2 -3
- package/lib/services/core/t-form-tower-controller/functions/getAllFunctionTypes.d.ts +2 -0
- package/package.json +3 -2
- package/fesm2022/ngx-t-forms-form-section-stepper.component-DEtijO30.mjs +0 -220
- package/fesm2022/ngx-t-forms-form-section-stepper.component-DEtijO30.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-CYWVyEYn.mjs +0 -230
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-CYWVyEYn.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-ngx-t-forms-R8Bkco8q.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngx-t-forms-pipeline-generator.component-U0d8jQKW.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/json-editor/json-editor.component.html","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/json-editor/json-editor.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/pipeline-generator/elements/aggregate-stage-editor/aggregate-stage-editor.component.html","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/pipeline-generator/elements/aggregate-stage-editor/aggregate-stage-editor.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/t-workflow-picker/t-workflow-picker.component.html","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/t-workflow-picker/t-workflow-picker.component.ts","../../../projects/ngx-t-forms/src/lib/services/hhtpResources/Pipeline/pipeline.service.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/pipeline-generator/pipeline-generator.component.html","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/pipeline-generator/pipeline-generator.component.ts"],"sourcesContent":["<div class=\"json-editor-container\">\n <div *ngIf=\"jsonForm.invalid\" \n style=\"margin-top: 16px;\"\n class=\"tree-instructions\">\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\n <span> Paste or type JSON below. The editor will auto-beautify the text.</span>\n </div>\n\n\n \n <!-- Error message if JSON is invalid -->\n <div *ngIf=\"errorMessage\" \n \n style=\"\" class=\"tree-instructions json-error \">\n <span> {{errorMessage}}</span>\n </div>\n \n <form [formGroup]=\"jsonForm\">\n <textarea\n formControlName=\"jsonText\"\n class=\"json-textarea\"\n [class.error-message]=\"errorMessage\"\n rows=\"15\"\n placeholder=\"Enter your JSON here...\"></textarea>\n </form>\n <!-- JSON Textarea -->\n\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\n\nimport { debounceTime, Subscription } from 'rxjs';\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\n\n\n@Component({\n selector: 'app-json-editor',\n templateUrl: './json-editor.component.html',\n styleUrls: ['./json-editor.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n MatModulesModule,\n FormsModule,\n ReactiveFormsModule\n ]\n})\nexport class JsonEditorComponent implements OnChanges ,OnDestroy{\n jsonForm: FormGroup;\n subscriptions = new Subscription();\n constructor(private fb: FormBuilder){\n this.jsonForm = this.fb.group({\n jsonText: ['', Validators.required]\n });\n this.init()\n }\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe()\n }\n private _value:any\n ngOnChanges(changes: SimpleChanges,): void {\n if (changes['value']&& changes['value'].currentValue !==this._value){\n this._value = changes['value'].currentValue\n this.parseAndBeautifyJson(this._value ,true)\n\n }\n }\n@Input() value!:Object \n@Output() valueChange = new EventEmitter<{\n value: Object|Array<any>,\n valid: boolean\n}>()\n jsonText: string = ''; // Placeholder for the JSON text\n errorMessage: string | null = null;\n\n\n init(){\n this.subscriptions.add( this.jsonForm.get('jsonText')!.valueChanges\n .pipe(\n debounceTime(1000)\n )\n .subscribe(value => {\n this.parseAndBeautifyJson(value);\n })) \n \n }\n \n private parseAndBeautifyJson(value: string,hardSet?:boolean): void {\n try {\n\n // Attempt to parse the JSON\n const parsedJson = typeof value === 'object' && value !==null? value: JSON.parse(value);\n \n // If valid, beautify the JSON\n const beautifiedJson = JSON.stringify(parsedJson, null, 4);\n \n // Update form control value with beautified JSON\n const form = this.jsonForm.get('jsonText');\n if (!form) {\n this.errorMessage = 'Form control not found.';\n return;\n }\n \n // Set beautified JSON without emitting another change event\n form.setValue(beautifiedJson, { emitEvent: false });\n this.errorMessage = null;\n this.valueChange.emit({value:parsedJson,valid:true})\n } catch (error) {\n if (error instanceof SyntaxError) {\n // Extract the position of the error from the error message\n const errorMessage = this.getDetailedJsonError(value, error.message);\n this.errorMessage = `JSON Syntax Error: ${errorMessage}`;\n } else {\n this.errorMessage = 'Unexpected error occurred while parsing JSON.';\n }\n if(hardSet){\n console.log('hardset',value)\n this.jsonForm.get('jsonText')?.setValue(value, { emitEvent: false });\n }\n this.valueChange.emit({value:value,valid:false})\n \n }\n }\n\n // Function to give detailed JSON error information\n private getDetailedJsonError(value: string, message: string): string {\n const positionMatch = message.match(/position (\\d+)/);\n if (!!positionMatch?.[1]) {\n const position = parseInt(positionMatch[1], 10);\n const excerpt = this.getErrorExcerpt(value, position);\n return `at position ${position}: near \"${excerpt}\". Check for missing commas, brackets, or quotes.`;\n }\n return message;\n }\n\n // Helper function to extract a portion of the string around the error position\n private getErrorExcerpt(value: string, position: number, excerptLength: number = 20): string {\n const start = Math.max(0, position - excerptLength);\n const end = Math.min(value.length, position + excerptLength);\n return value.substring(start, end);\n }\n\n\n}\n","<mat-card style=\"margin-bottom:8px\">\n <mat-card-content>\n\n <h5>\n Aggregate Pipeline Stage Configuration\n </h5>\n\n\n\n <mat-form-field style=\" margin-bottom: 8px;\" appearance=\"outline\">\n <mat-label>Select Aggregate Stage</mat-label>\n <mat-select matNativeControl [value]=\"selectedStage?.name\" (selectionChange)=\"handleChange($event)\"\n placeholder=\"ChooseFunctionToRun\">\n <mat-option *ngFor=\"let stage of allowedStages; trackBy: trackByStage\" [value]=\"stage.stage\">\n {{stage.stage}}</mat-option>\n\n\n\n </mat-select>\n <mat-hint>\n {{activeDescription ?\n 'Hover over the info icon to view stage details .'\n : 'Please select an aggregation function from the list.'}}\n </mat-hint>\n <mat-hint *ngIf=\"activeDescription\" align=\"end\">\n <mat-icon matTooltipHideDelay=\"1000\" [matTooltip]=\"activeDescription\" matSuffix>info</mat-icon>\n </mat-hint>\n </mat-form-field>\n\n\n\n <div class=\"tree-instructions\" style=\"background: cornsilk;\" *ngIf=\"configValidationError\">\n <mat-icon style=\"margin-top: 4px;margin-bottom:auto\" class=\"info-icon\" color=\"warn\">warning</mat-icon>\n <span>{{ configValidationError }}</span>\n </div>\n\n\n\n\n\n <div class=\"config-container\" *ngIf=\"activeStage ||selectedStage?.config\">\n <app-json-editor [value]=\"selectedStage?.config\" (valueChange)=\"handleConfigChange($event)\"></app-json-editor>\n </div>\n\n <br>\n\n\n\n </mat-card-content>\n <mat-divider>\n </mat-divider>\n <mat-card-actions>\n\n <span class=\"spacer\"></span>\n <button color=\"warn\" [disabled]=\"isRunningPipeline\" mat-button (click)=\"deleteActive()\">\n Delete\n <mat-icon >delete</mat-icon>\n </button>\n <button style=\"margin-left:8px;\" color=\"primary\" mat-flat-button (click)=\"saveConfiguration()\"\n [disabled]=\"isRunningPipeline ||!activeStage?.valid \">\n Save\n <mat-icon> save</mat-icon>\n </button>\n </mat-card-actions>\n</mat-card>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport PipelineBuilder from \"db-aggregation-pipeline-builder\"\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { JsonEditorComponent } from '../../../json-editor/json-editor.component';\nimport { IAllowedStage } from '../../../../../../services/hhtpResources/Pipeline/pipeline.service';\nimport { MatModulesModule } from '../../../../../../shared/modules/mat-modules.module';\n\nimport { MatSelectChange } from '@angular/material/select';\n\n@Component({\n selector: 'app-aggregate-stage-editor',\n templateUrl: './aggregate-stage-editor.component.html',\n styleUrls: ['./aggregate-stage-editor.component.scss'],\n standalone: true,\n\n imports: [\n MatModulesModule,\n CommonModule,\n FormsModule,\n JsonEditorComponent\n ]\n})\nexport class AggregateStageEditorComponent implements OnInit {\n subscription = new Subscription();\n @Input() selectedStage:any\n @Input() isRunningPipeline: boolean = false\n @Output() saveStage = new EventEmitter<IAllowedStage | undefined>()\n @Output() deleteStage = new EventEmitter<void>()\n ngOnDestroy(): void {\n this.subscription.unsubscribe()\n }\n\n constructor() {\n\n }\n activeStage: IAllowedStage | undefined = undefined; // Define the type appropriately if possible\n allowedStages: { stage: string; description: string; config: any }[] = [];\n configValidationError: string | undefined\n\n\n ngOnInit() {\n // Debounce the config change to optimize performance\n\n this.allowedStages = PipelineBuilder.getViewOnlyStages() as any\n }\n\n handleChange(event: MatSelectChange): void {\n \n const selectedStage = event.value\n if (this.activeStage === undefined) {\n this.activeStage = {\n stage: selectedStage,\n ...this.selectedStage || {},\n\n } as IAllowedStage\n } else {\n this.activeStage = {\n config : this.activeStage?.config|| this.selectedStage ?.config,\n stage: selectedStage\n } as IAllowedStage\n\n }\n { }\n if (this.activeStage?.config as any && !!this.activeStage?.stage) {\n\n this.validateConfig();\n\n }\n }\n\n handleConfigChange(event: any): void {\n if (!this.activeStage) {\n this.activeStage = {\n ...this.selectedStage || {},\n } as IAllowedStage\n }\n this.activeStage = {\n stage:this.activeStage?.stage || this.selectedStage ?.name,\n config: event.value\n } as IAllowedStage\n this.validateConfig();\n\n }\n validateConfig(): void {\n this.configValidationError = undefined\n const { config, stage } = this.activeStage || {} as IAllowedStage;\n\n // Check if config and stage are defined\n if (!config && config !== 0 || !stage) {\n console.error('Config or stage is not defined', config, stage);\n this.activeStage!.valid = false;\n return; // Early exit if validation fails\n }\n\n try {\n const valid = PipelineBuilder.validateStageConfig(stage as any, config);\n this.activeStage!.valid = valid;\n\n // Set error message if config is invalid\n if (!valid) {\n this.configValidationError = undefined\n return;\n }\n } catch (error: any) {\n // Catch and handle errors from validation\n this.configValidationError = error.message || JSON.stringify(error) || 'An unknown error occurred';\n this.activeStage!.valid = false;\n console.error('Validation Error:', this.configValidationError);\n }\n }\n\n canSaveConfig(): boolean {\n return !!this.activeStage && !this.configValidationError;\n }\n\n saveConfiguration(): void {\n // Logic for saving the configuration\n if (this.canSaveConfig()) {\n this.saveStage.emit(this.activeStage as IAllowedStage);\n \n }\n }\n\n trackByStage(index: number, stage: any): string {\n return stage.stage;\n }\n\n get allowedStageNames(): string[] {\n return this.allowedStages.map(stage => stage.stage);\n }\n\n\n get activeDescription() {\n return this.allowedStages.find(stage => stage.stage === this.activeStage?.stage)?.description\n\n\n }\n\n deleteActive() {\n this.deleteStage.emit()\n }\n // close() {\n // this.pipeline.setActiveStage(undefined)\n // }\n\n}\n","@if (error) {\r\n<mat-toolbar>\r\n <span>\r\n Failed to load workflow list\r\n </span>\r\n <span class=\"spacer\"></span>\r\n <button color=\"primary\" mat-raised-button>\r\n Retry\r\n\r\n </button>\r\n</mat-toolbar>\r\n}\r\n@if(loading){\r\n<div class=\"loadingContainer\">\r\n <mat-spinner></mat-spinner>\r\n</div>\r\n}\r\n@if(!loading&& !error){\r\n<mat-card>\r\n <mat-nav-list style=\"padding: 0px;\">\r\n @if(!value){\r\n @for (option of workflowOptions; track option.id) {\r\n <mat-list-item (click)=\"bindInput(option)\">\r\n\r\n <mat-chip class=\"docType\" [style.background]=\" option['isDocument'] ? 'lightskyblue' : ''\" matListItemIcon>\r\n <span style=\"font-size: 10px;\">\r\n {{ option[\"isDocument\"] ? \"DOC\" : \"FLOW\" }}\r\n </span>\r\n </mat-chip>\r\n\r\n\r\n <div matListItemTitle>\r\n <div>\r\n {{ option.name }}\r\n </div>\r\n\r\n <div style=\"font-size: 13px; opacity: 0.6;line-height:normal\">\r\n {{ option[\"createdAt\"] | date: \"medium\" }} \r\n {{ option.numberOfSteps }}\r\n </div>\r\n </div>\r\n <button matListItemMeta mat-icon-button>\r\n <mat-icon>\r\n radio_button_unchecked\r\n </mat-icon>\r\n </button>\r\n\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n }\r\n }\r\n @if(value){\r\n <mat-list-item (click)=\" unbindInput() \">\r\n\r\n <mat-chip class=\"docType\" [style.background]=\"selectedWorkflow?.['isDocument'] ? 'lightskyblue' : ''\" matListItemIcon>\r\n <span style=\"font-size: 10px;\">\r\n {{selectedWorkflow?.[\"isDocument\"] ? \"DOC\" : \"FLOW\" }}\r\n </span>\r\n </mat-chip>\r\n \r\n \r\n <div matListItemTitle>\r\n <div>\r\n {{ selectedWorkflow?.name }}\r\n </div>\r\n \r\n <div style=\"font-size: 13px; opacity: 0.6;line-height:normal\">\r\n {{selectedWorkflow?.[\"createdAt\"] | date: \"medium\" }} \r\n {{ selectedWorkflow?.numberOfSteps }}\r\n </div>\r\n </div>\r\n <button matListItemMeta mat-icon-button>\r\n <mat-icon color=\"primary\">\r\n check_circle\r\n </mat-icon>\r\n </button>\r\n \r\n </mat-list-item>\r\n }\r\n\r\n\r\n </mat-nav-list>\r\n</mat-card>\r\n\r\n}","\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\nimport { IWorkflowOption } from 'ngx-t-forms-types';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\r\n\r\n@Component({\r\n selector: 'lib-t-workflow-picker',\r\n standalone: true,\r\n imports: [CommonModule, MatModulesModule],\r\n templateUrl: './t-workflow-picker.component.html',\r\n styleUrl: './t-workflow-picker.component.css'\r\n})\r\nexport class TWorkflowPickerComponent implements OnInit {\r\n private _workflowOptions: IWorkflowOption[] | undefined = []\r\n @Input() set getWorkflowOptions(value: IWorkflowOption[]|undefined) {\r\n if (value?.length === this._workflowOptions?.length && value?.every((workflow, index) => workflow.id === this._workflowOptions?.[index]?.id)) {\r\n return\r\n }\r\n this._workflowOptions = value\r\n }\r\n @Input() value: string | undefined | null = undefined\r\n @Output() valueChanged = new EventEmitter<string | undefined>()\r\n constructor() { }\r\n error: any = undefined\r\n loading: boolean = false\r\n ngOnInit(): void {\r\n\r\n }\r\n get workflowOptions(): IWorkflowOption[] {\r\n return this._workflowOptions || []\r\n }\r\n\r\n unbindInput() {\r\n this.value = undefined;\r\n\r\n this.valueChanged.emit(this.value);\r\n }\r\n bindInput(workflow: IWorkflowOption) {\r\n this.valueChanged.emit(workflow.id);\r\n }\r\n get selectedWorkflow(): IWorkflowOption | undefined {\r\n return this._workflowOptions?.find((workflow) => workflow.id === this.value)\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { BehaviorSubject, catchError, combineLatest, filter, finalize, map, Observable, switchMap, take, tap, throwError } from 'rxjs';\r\nimport { PipelineStage } from 'mongoose'\r\n\r\nimport PipelineBuilder from \"db-aggregation-pipeline-builder\"\r\nimport { IPipelineGenerationError, IPipelineGenerationResponse, IRunPipelineResponse, PipelineStageEnum } from 'ngx-t-forms-types';\r\nexport interface IAllowedStage {\r\n stage: PipelineStageEnum,\r\n description: string,\r\n config: any,\r\n valid?:boolean\r\n\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PipelineService {\r\n //LOADING INDICATORS\r\n isRunningPipeline: boolean = false\r\n aiIsGeneratingPipeline: boolean = false\r\n isLoadingAllowedStages: boolean = false\r\n isLoadingWorkflowSchema: boolean = false\r\n\r\n //States \r\n workflowId$ = new BehaviorSubject<string|undefined>(undefined)\r\n activeStage$ = new BehaviorSubject<number|undefined>(undefined)\r\n prompt$ = new BehaviorSubject<string|undefined>(undefined)\r\n schemaLoadError$ = new BehaviorSubject<string|undefined>(undefined)\r\n \r\n\r\n pipeline$ = new BehaviorSubject<PipelineStage[]>([])\r\n threadId$ = new BehaviorSubject<string|undefined>(undefined)\r\n schema$ = new BehaviorSubject<Object|undefined>(undefined)\r\n allowedStages$ = new BehaviorSubject<IAllowedStage[]>([])\r\n pipeLineResult$ = new BehaviorSubject<unknown>([])\r\n chatHistory$ = new BehaviorSubject<{\r\n user: string,\r\n assistance:IPipelineGenerationResponse,\r\n date:Date\r\n }[]>([])\r\n http = inject(HttpClient)\r\n constructor() { \r\n //Set local storage threadId\r\n const threadId = localStorage.getItem('threadId')\r\n if(threadId){\r\n this.threadId$.next(threadId)\r\n }\r\n }\r\n\r\n get config$() {\r\n return this.workflowId$.pipe(\r\n switchMap(workflowId => this.pipeline$.pipe(\r\n switchMap(pipeline => this.pipeLineResult$.pipe(\r\n map(responseBody => ({ workflowId, pipeline, responseBody }))\r\n ))\r\n ))\r\n );\r\n }\r\n /**\r\n * Fetch available pipeline stages for the user to select and generate pipelines.\r\n * Ideally, this could be static or fetched from a backend.\r\n */\r\n runPipeLine(pipeline: PipelineStage[],workflowId:string): Observable<IRunPipelineResponse> {\r\n const url = \"http://localhost:5000/api/v1/pipelineBuilder/runPipeline\"\r\n // For now, returning a static list of pipeline stages. In a real application, you can fetch from an API.\r\n\r\n this.isRunningPipeline = true\r\n return this.http.post<IRunPipelineResponse>(\r\n url,\r\n { pipeline,workflowId }\r\n ).pipe(\r\n take(1),\r\n catchError(this.handleError), // Error handling for the HTTP request,\r\n finalize(() => this.isRunningPipeline = false)\r\n );\r\n }\r\n\r\n /**\r\n * Generate a MongoDB pipeline based on the given user prompt.\r\n * \r\n * @param prompt The user's input or description of the desired pipeline.\r\n */\r\n private generatePipeline(query: string, schema: Object | undefined,\r\n threadId:string|undefined, existingPipeline: PipelineStage[],previousError:string): Observable<IPipelineGenerationResponse> {\r\n if (!schema) {\r\n throw new Error(\"Schema is required\")\r\n }\r\n const payload = { query, schema ,threadId, existingPipeline ,previousError};\r\n const url = \"http://localhost:5000/api/v1/pipelineBuilder/generatePipeline\";\r\n this.aiIsGeneratingPipeline = true\r\n return this.http.post<IPipelineGenerationResponse>(`${url}`, payload)\r\n .pipe(\r\n take(1),\r\n catchError(this.handleError),// Error handling for the HTTP request,\r\n finalize(() => this.aiIsGeneratingPipeline = false)\r\n );\r\n }\r\n\r\n /**\r\n * Handle any errors from the HTTP request.\r\n * \r\n * @param error The error response from the HTTP request\r\n */\r\n private handleError(error: any): Observable<never> {\r\n console.error('An error occurred', error);\r\n // Return an observable with a user-facing error message\r\n return throwError(() => new Error('Something went wrong with the pipeline generation; please try again later.'));\r\n\r\n }\r\n\r\n\r\n private getSchema(workflowId: string): Observable<{\r\n schema: object\r\n }> {\r\n if(!workflowId){\r\n throw new Error(\"WorkflowId is required\")\r\n }\r\n const url = \"http://localhost:5000/api/v1/pipelineBuilder/getSchema\";\r\n return this.http.get<{ schema: object }>(`${url}`, { params: { workflowId: workflowId } }).pipe(\r\n take(1),\r\n catchError(this.handleError) // Error handling for the HTTP request\r\n )\r\n }\r\n/** OPERATIONS */\r\nisSchemaEmpty(object:object){\r\n\r\n}\r\n workflowChanged(event: any) {\r\n this.workflowId$.next(event)\r\n if(!event){\r\n return \r\n }\r\n this.getSchema(event).pipe(\r\n take(1),\r\n tap(({ schema }) => {\r\n this.schema$.next(schema)\r\n const isEmptySchema = Object.keys( schema)[0] === \"\" && Object.values(schema)[0] === \"Array<>\"\r\n const error = isEmptySchema \r\n ? \"Document schema is missing. Please ensure at least one document exists for the selected workflow.\" \r\n : undefined\r\n this.schemaLoadError$.next(error)\r\n console.log(\"Workflow schema loaded,run pipeline\")\r\n this.runActivePipeline()\r\n }),\r\n catchError((error) => {\r\n this.schemaLoadError$.next(\"Error loading schema\");\r\n return this.handleError(error);\r\n })\r\n ).subscribe()\r\n }\r\n\r\n \r\n setActiveStage(i:number|undefined){\r\n const index = this.activeStage$.getValue()\r\n if(index === i){\r\n this.activeStage$.next(undefined)\r\n return\r\n }\r\n this.activeStage$.next(i)\r\n\r\n \r\n }\r\n addStage(){\r\n const newPipeline = this.pipeline$.getValue().concat({} as any)\r\n this.pipeline$.next(newPipeline)\r\n }\r\n onTextChange(event: any) {\r\n this.prompt$.next(event)\r\n console.log(event)\r\n }\r\n promptSubmit() {\r\n // Use combineLatest to fetch the latest values from multiple sources\r\n combineLatest([this.schema$, this.threadId$, this.pipeline$,this.prompt$,this.chatHistory$])\r\n .pipe(\r\n take(1),\r\n tap(([schema, threadId, pipeline,prompt,history]) => {\r\n if (!schema || !prompt) {\r\n console.warn(`Missing values: schema ${schema} prompt ${prompt}`);\r\n }\r\n }),\r\n filter(([schema,,,prompt]) => !!schema && !!prompt ),\r\n switchMap(([schema, threadId, pipeline,prompt,history]) => {\r\n // Use a shallow copy of the pipeline\r\n const previousError = (history[history.length-1]?.assistance as any )?.error\r\n const pipelineCopy = pipeline.map(stage => JSON.parse(JSON.stringify(stage))) || [];\r\n console.info('Generating pipeline with prompt:',\r\n prompt, 'schema:', schema, 'threadId:', threadId, 'pipeline:', pipeline)\r\n return this.generatePipeline(prompt!, schema, threadId, pipelineCopy,previousError).pipe(\r\n map((response) => ({ ...response,history,prompt}))\r\n )\r\n }),\r\n tap((response) => {\r\n const { pipeline, threadId,history,prompt } = response;\r\n const historyRecord = {\r\n user: prompt as any,\r\n assistance: response,\r\n date:new Date()\r\n };\r\n \r\n // Use next with a concatenated value for chat history\r\n this.chatHistory$.next([...(history||[]), historyRecord]);\r\n this.pipeline$.next(pipeline);\r\n this.threadId$.next(threadId);\r\n \r\n // Store threadID locally\r\n localStorage.setItem('threadId', threadId);\r\n \r\n // Run the active pipeline after all state updates are complete\r\n console.log(\"prompt submitted run pipeline\")\r\n this.runActivePipeline();\r\n }),\r\n catchError((error:IPipelineGenerationError) => {\r\n \r\n console.error('Error response:', error.message || error);\r\n return this.handleError(error);\r\n })\r\n ).subscribe();\r\n\r\n }\r\n \r\n runActivePipeline() {\r\n const pipeline = [...(this.pipeline$.getValue().map(stage => (JSON.parse(JSON.stringify(stage))))||[])]\r\n const someAreNotValid = pipeline.some(stage=>Object.keys(stage).length ===0)\r\n if(pipeline.length === 0 || someAreNotValid ){\r\n return\r\n }\r\n try {\r\n PipelineBuilder.validatePipeline(pipeline)\r\n } catch (error) {\r\n console.error(error,pipeline)\r\n return\r\n }\r\n const workflowId = this.workflowId$.getValue()\r\n if (!workflowId) {\r\n return\r\n }\r\n \r\n this.runPipeLine(pipeline,workflowId).pipe(\r\n take(1),\r\n tap(({ results }) => {\r\n this.pipeLineResult$.next(results)\r\n }),\r\n catchError((error) => {\r\n console.error('Error response:', error);\r\n const err = JSON.parse(JSON.stringify(error))\r\n const errorMessage = err.error\r\n if(errorMessage){\r\n this.pipelineErrorLogAndRetry(errorMessage)\r\n }\r\n return this.handleError(error);\r\n })\r\n ).subscribe()\r\n }\r\n\r\n pipelineErrorLogAndRetry(message:string){\r\n const history = this.chatHistory$.getValue() \r\n const prompt = this.prompt$.getValue ()\r\n const historyRecord = {\r\n user: prompt as any,\r\n assistance: {\r\n message\r\n } as any,\r\n date:new Date()\r\n };\r\n this.chatHistory$.next([...(history||[]), historyRecord]);\r\n\r\n }\r\n get activeStage():Observable<{name:string,config:PipelineStage}|undefined>{\r\n return this.pipeline$.asObservable().pipe(\r\n switchMap(pipeline=>this.activeStage$.pipe(\r\n map(activeIndex=>activeIndex === undefined ? undefined : {\r\n name:Object.keys(pipeline[activeIndex]||{})[0] || '',\r\n config:(pipeline[activeIndex] as any)[Object.keys(pipeline[activeIndex]||{})?.[0]||'']\r\n })\r\n ))\r\n )\r\n \r\n }\r\n saveStage(index:number,stage: IAllowedStage | undefined) {\r\n const pipeline = this.pipeline$.getValue()\r\n if(index === undefined){\r\n return\r\n }\r\n const newPipeline = pipeline.map((s, i) => {\r\n if (i === index) {\r\n return stage ? {\r\n [stage.stage]: stage.config\r\n } : s;\r\n }\r\n return s;\r\n });\r\n\r\n console.log(\"newPipeline\",newPipeline)\r\n this.pipeline$.next(newPipeline as any)\r\n this.activeStage$.next(undefined)\r\n console.log(\"stage saved run pipeline\")\r\n this.runActivePipeline()\r\n \r\n }\r\n deleteStage(index:number){\r\n const pipeline = this.pipeline$.getValue()\r\n\r\n if(index === undefined){\r\n return\r\n }\r\n const newPipeline = pipeline.filter((s, i) => i !== index);\r\n console.log(\"newPipeline\",newPipeline)\r\n this.pipeline$.next(newPipeline as any)\r\n this.activeStage$.next(undefined)\r\n console.log(\"stage deleted run pipeline\")\r\n this.runActivePipeline()\r\n }\r\n get pipelineGeneralValid(){\r\n return this.pipeline$.asObservable().pipe(\r\n map(pipeline=>{\r\n const allHaveTypes = pipeline.every(stage=>Object.keys(stage).length === 1)\r\n if(!allHaveTypes){\r\n return {\r\n valid:false,\r\n message:\"All stages must be a valid pipeline stage\"\r\n }\r\n }\r\n const AllStagesMustHaveConfig = pipeline.every((stage: { [key: string]: any }) => stage[Object.keys(stage)?.[0]||''] !== undefined)\r\n if(!AllStagesMustHaveConfig){\r\n return {\r\n valid:false,\r\n message:\"All stages must have a configuration\"\r\n }\r\n }\r\n return {\r\n valid:true\r\n }\r\n })\r\n )\r\n }\r\n}","@if(!!loadingWorkflowOptions){\n<div style=\"display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 24px;\">\n <mat-spinner style=\"margin-bottom: 16px;\"></mat-spinner>\n <p>\n Loading workflows...\n </p>\n</div>\n}\n\n@if(!loadingWorkflowOptions){\n<section class=\"ion-margin\">\n <p>MongoDB aggregation pipeline builder for selected workflows. </p>\n</section>\n<lib-t-workflow-picker \n(valueChanged)=\"workflowChanged($event)\" \n[getWorkflowOptions]=\" workflowOptions\"\n [value]=\"workflowId|async\">\n</lib-t-workflow-picker>\n<mat-accordion multi *ngIf=\"workflowId|async\">\n <!-- Pipeline Accordion -->\n <mat-expansion-panel value=\"pipeline\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-spinner color=\"accent\" *ngIf=\"isRunningPipeline\" class=\"header-spinner\"></mat-spinner>\n <mat-icon class=\"title-icon\">\n dynamic_form\n </mat-icon>\n {{isRunningPipeline?'Executing current Data pipeline...':'Data retrieval pipeline'}}\n </mat-panel-title>\n\n </mat-expansion-panel-header>\n <div class=\"content\">\n <!-- Mongodb aggregate pipelione stages management and edit start-->\n <div *ngIf=\"((stages | async)?.length || 0) ===0\" class=\"tree-instructions\">\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\n <span>\n Add stages to the pipeline below.<br>\n Each stage processes input documents by filtering, grouping, or calculating values. The output documents from\n one stage are passed to the next stage in the pipeline.\n </span>\n </div>\n\n <mat-nav-list style=\" background: var(--mat-tree-container-background-color);padding:0px;border-radius:8px\">\n\n\n <ng-container *ngFor=\"let stage of stages | async; trackBy: trackById;index as $index;last as isLast\">\n <mat-list-item [style.margin-top]=\"(activeStageIndex|async) ===$index?'4px':'0px'\"\n [class.mat-elevation-z8]=\"(activeStageIndex|async) ===$index\" class=\"stage-item\"\n (click)=\"setActiveStage($index)\" [activated]=\" (activeStageIndex|async) ===$index\">\n <span class=\"stage-index\" matListItemAvatar>{{$index + 1}} </span>\n <div matListItemTitle>\n <div style=\"line-height: normal;\">\n {{ stage.name || 'Stage ' }}\n </div>\n <div class=\"stage-inner-message\" *ngIf=\"!stage.name && (activeStageIndex|async) !==$index \">\n Incomplete , click to edit\n </div>\n\n </div>\n\n <button *ngIf=\"(activeStageIndex|async) ===$index||!stage.valid && (activeStageIndex|async) !==$index\"\n mat-icon-button matListItemMeta>\n <mat-icon color=\"primary\" *ngIf=\"(activeStageIndex|async) ===$index\">check_circle</mat-icon>\n\n <mat-icon color=\"warn\" *ngIf=\"!stage.valid && (activeStageIndex|async) !==$index\">\n warning\n </mat-icon>\n </button>\n </mat-list-item>\n <mat-divider></mat-divider>\n\n <app-aggregate-stage-editor [selectedStage]=\"stage\" [isRunningPipeline]=\"isRunningPipeline\"\n (deleteStage)=\"deleteStage($index)\" (saveStage)=\"saveStage($index,$event)\"\n *ngIf=\"(activeStageIndex|async) ===$index\"></app-aggregate-stage-editor>\n\n\n </ng-container>\n\n <mat-toolbar style=\"padding: 0px;\">\n\n <span class=\"spacer\"></span>\n <button class=\"stage-button\" [disabled]=\"isRunningPipeline\" color=\"primary\" (click)=\"addStage()\"\n mat-raised-button>\n Add\n <mat-icon>add</mat-icon>\n </button>\n </mat-toolbar>\n </mat-nav-list>\n\n <!-- Mongodb aggregate pipelione stages management and edit end -->\n </div>\n </mat-expansion-panel>\n\n <!-- Results Accordion -->\n <mat-expansion-panel value=\"results\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-spinner color=\"accent\" *ngIf=\"isRunningPipeline\" class=\"header-spinner\"></mat-spinner>\n <mat-icon class=\"title-icon\">dataset</mat-icon>\n {{isRunningPipeline?'Running pipeline...':'Data Results'}}\n </mat-panel-title>\n </mat-expansion-panel-header>\n <div class=\"content\">\n <ng-container *ngIf=\"pipeLineResults | async as results; else noResults\">\n\n <lib-t-dynamic-data-view *ngIf=\"results\" [data]=\"results\"></lib-t-dynamic-data-view>\n <p *ngIf=\"!results\" color=\"medium\">\n\n No results available\n\n </p>\n\n </ng-container>\n <ng-template #noResults>\n <p color=\"medium\">No results available</p>\n </ng-template>\n </div>\n </mat-expansion-panel>\n\n <!-- AI Agent Accordion -->\n <mat-expansion-panel value=\"ai\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-spinner *ngIf=\" aiIsGeneratingPipeline \" style=\"position: absolute;\" class=\"header-spinner\"></mat-spinner>\n <mat-icon class=\"title-icon\">tips_and_updates</mat-icon>\n {{ aiIsGeneratingPipeline ? 'Agent busy ...' : 'AI AGENT prompt' }}\n </mat-panel-title>\n </mat-expansion-panel-header>\n\n <div class=\"content\">\n @if( schemaLoadError$ | async){\n <div class=\"tree-instructions\" style=\"background: antiquewhite !important;\">\n <mat-icon class=\"info-icon\" color=\"warn\">error</mat-icon>\n <span> {{ schemaLoadError$ | async }}</span>\n </div>\n \n }\n <mat-list *ngFor=\"let chat of chatHistory|async;\">\n\n <mat-list-item class=\"chatContent chatItem\">\n <div class=\"chat\" style=\"background:bisque;text-align:end;\n border-radius: 18px 18px 0px 18px;\" matListItemTitle>\n <div>\n {{chat.user}}\n </div>\n <div style=\"opacity:0.6;line-height: normal;display: flex;align-items: center;justify-content: flex-end;\">\n {{chat.date|daysAgo}}\n <mat-icon class=\"sent-icon\">\n done_all\n </mat-icon>\n </div>\n </div>\n </mat-list-item>\n\n <mat-list-item style=\"margin-top: 16px;\" class=\"chatContent chatItem\" color=\"light\" lines=\"full\">\n <mat-icon style=\" margin-left: 0px;\n margin-top: 16px;\n margin-bottom: auto;\" matListItemIcon>smart_toy</mat-icon>\n <div class=\"chat\" style=\"text-align: left; \n padding-left: 16px; \n background: azure;\n border-radius: 0px 18px 18px 18px;\" *ngIf=\"!chat.assistance?.error\" matListItemTitle>\n <pre>\n {{chat. assistance.pipeline |json}}\n </pre>\n </div>\n <div *ngIf=\"chat.assistance?.error\" matListItemTitle>\n {{chat.assistance.error}}\n </div>\n </mat-list-item>\n\n\n </mat-list>\n <mat-list>\n <mat-list-item class=\"chatContent chatItem\">\n <textarea matListItemTitle #textarea style=\" width: calc(100% - 13px);\n border-radius: 14px;\n padding-right: 3px;\n padding-left: 8px;\" class=\"chat\" [value]=\" prompt|async\" (input)=\"onTextChange($event)\"\n placeholder=\"Provide a pipeline generation prompt\"></textarea>\n <button matListItemMeta style=\" margin-left: 4px;\n margin-right: 0px;\" color=\"primary\" mat-mini-fab [disabled]=\"aiIsGeneratingPipeline\" (click)=\"promptSubmit()\">\n\n <mat-icon style=\"margin: 0px !important;color:white\">send</mat-icon>\n <mat-spinner color=\"accent\" *ngIf=\" aiIsGeneratingPipeline \" \n class=\"submit-spinner\" ></mat-spinner>\n </button>\n \n </mat-list-item>\n\n </mat-list>\n\n\n <section *ngIf=\"showSuggestions\" class=\"showSuggestionContainer\">\n <!-- <mat-toolbar class=\"search-container\" style=\"background: inherit;\">\n\n\n <input type=\"search\" placeholder=\"Search options\" class=\"search-field\" (change)=\"onSearchChange($event)\">\n\n <mat-icon>\n search\n </mat-icon>\n </mat-toolbar> -->\n <mat-divider></mat-divider>\n <div style=\"padding: 8px;\">\n <div class=\"suggestion-container\">\n <div class=\"suggestion-column\">\n <h5>Collection document properties</h5>\n <div class=\"button-container\">\n <button *ngFor=\"let method of getSchemaProperties | async;trackBy: trackById\"\n (click)=\"selectSuggestionInput(method.value)\" color=\"accent\" mat-flat-button\n class=\"suggestion-button\">\n {{ method.label | titlecase }}\n </button>\n </div>\n </div>\n\n </div>\n\n\n </div>\n </section>\n\n\n\n\n\n\n\n </div>\n </mat-expansion-panel>\n</mat-accordion>\n\n\n}","import { CommonModule } from '@angular/common';\r\n\r\nimport { Component, ElementRef, EventEmitter, HostBinding, inject, Input, OnDestroy, OnInit, Optional, Output, Self, ViewChild } from '@angular/core';\r\nimport { FormsModule, NgControl } from '@angular/forms';\r\n\r\n\r\n\r\n\r\nimport { AggregateStageEditorComponent } from './elements/aggregate-stage-editor/aggregate-stage-editor.component';\r\nimport { map, Subject, takeUntil, take, tap, Observable, distinctUntilChanged } from 'rxjs';\r\nimport { MongoDbPipeLineConfigInterface } from \"ngx-t-forms-types\";\r\n\r\nimport { TDynamicDataViewComponent } from '../../../t-dynamic-data-view/t-dynamic-data-view.component';\r\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\r\nimport { TWorkflowPickerComponent } from '../t-workflow-picker/t-workflow-picker.component';\r\nimport { IWorkflowOption } from \"ngx-t-forms-types\";\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\nimport { NGX_T_FORMS_CONFIG_TOKEN } from '../../../../../lib/injection-tokens';\r\nimport { PipelineService } from '../../../../../lib/services/hhtpResources/Pipeline/pipeline.service';\r\nimport { DaysAgoPipe } from '../../../../../lib/shared/pipes/date/days-ago.pipe';\r\n\r\n\r\n@Component({\r\n selector: 'app-pipeline-generator',\r\n templateUrl: './pipeline-generator.component.html',\r\n styleUrls: ['./pipeline-generator.component.scss'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TWorkflowPickerComponent,\r\n FormsModule,\r\n TDynamicDataViewComponent,\r\n MatModulesModule,\r\n AggregateStageEditorComponent,\r\n DaysAgoPipe\r\n\r\n ],\r\n providers: [{ provide: MatFormFieldControl, useExisting:PipelineGeneratorComponent}],\r\n})\r\nexport class PipelineGeneratorComponent implements OnInit, OnDestroy,MatFormFieldControl< MongoDbPipeLineConfigInterface> {\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n NGX_T_FORMS_CONFIG = inject(NGX_T_FORMS_CONFIG_TOKEN)\r\n @HostBinding() id = `app-pipeline-generator-${ PipelineGeneratorComponent.nextId++}`;\r\n constructor(@Optional() @Self() public ngControl: NgControl, private _elementRef: ElementRef<HTMLElement>,) {\r\n }\r\n placeholder: string = ''\r\n\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 disabled: boolean = false;\r\nget errorState(): boolean {\r\n const hasError = !!this.ngControl?.control?.errors || (this.errors||[]).length > 0 && this.touched\r\n\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-pipeline-generator');\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\r\n\r\n\r\n\r\n //@ViewChild('textarea', { static: false }) textareaRef!: HTMLTextAreaElement\r\n @ViewChild('textarea', { read: ElementRef, static: false }) textareaElementRef!: ElementRef;\r\n @Input() set value(value: MongoDbPipeLineConfigInterface) {\r\n const workflowIdChanged = this._value?.workflowId !== value?.workflowId\r\n const pipelineLengthChanged = this._value?.pipeline?.length !== value?.pipeline?.length\r\n const pipeLineContentChanged = JSON.stringify(this._value?.pipeline) !== JSON.stringify(value?.pipeline)\r\n if (workflowIdChanged ||pipelineLengthChanged || pipeLineContentChanged) {\r\n\r\n this._value = value\r\n if(value?.workflowId){\r\n this.workflowChanged(value?.workflowId)\r\n }\r\n\r\n console.log('Pipeline value changed', value,this.pipeline.pipeline$.value)\r\n if(value?.pipeline){\r\n this.pipeline.pipeline$.next(value?.pipeline || [])\r\n }\r\n\r\n }\r\n\r\n }\r\n workflowOptions: IWorkflowOption[] |undefined= [];\r\n loadingWorkflowOptions: boolean = false;\r\n\r\n workflowsInitialized: boolean = false;\r\n @Input() set getWorkflowOptions(options$: Observable<IWorkflowOption[]|undefined> | undefined) {\r\n if (!this.workflowsInitialized && !!options$) {\r\n this.workflowsInitialized = true;\r\n this.loadingWorkflowOptions = true;\r\n options$.pipe(\r\n take(1),\r\n tap(options => {\r\n this.workflowOptions = options;\r\n this.loadingWorkflowOptions = false;\r\n })\r\n ).subscribe();\r\n \r\n }\r\n }\r\n @Input() userName: string | undefined\r\n _value!: MongoDbPipeLineConfigInterface\r\n @Output() valueChanged = new EventEmitter<MongoDbPipeLineConfigInterface>()\r\n\r\n @Input() errors:IConfigElementError[] |undefined = [];\r\n destroy$ = new Subject<void>()\r\n private pipeline: PipelineService = new PipelineService()\r\n\r\n ngOnInit(): void {\r\n this.initiateSubscription()\r\n\r\n\r\n }\r\n initiated: boolean = false\r\n initiateSubscription = () => {\r\n this.pipeline.config$.pipe(\r\n takeUntil(this.destroy$),\r\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\r\n ).subscribe(config => {\r\n if (!this.initiated) {\r\n this.initiated = true\r\n return\r\n }\r\n\r\n const newConfig: any = {\r\n ...this._value,\r\n ...config,\r\n \"source\": \"mongoPipeline\",\r\n\r\n }\r\n console.log('Pipeline config changed', newConfig)\r\n this.valueChanged.emit(newConfig)\r\n })\r\n\r\n \r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next()\r\n this.destroy$.complete()\r\n }\r\n workflowChanged(event: any) {\r\n this.pipeline.workflowChanged(event)\r\n }\r\n get workflowId() {\r\n return this.pipeline.workflowId$.asObservable()\r\n }\r\n get stages() {\r\n return this.pipeline.pipeline$.asObservable().pipe(\r\n map(stages => stages.map(stage => ({\r\n name: Object.keys(stage)[0],\r\n stage: Object.keys(stage)[0],\r\n config: (stage as any)[Object.keys(stage)?.[0]||''],\r\n valid: !!Object.keys(stage)[0] && !!(stage as any)[Object.keys(stage)?.[0]||'']\r\n })))\r\n )\r\n }\r\n get pipeLineResults() {\r\n return this.pipeline.pipeLineResult$.asObservable()\r\n }\r\n get prompt() {\r\n return this.pipeline.prompt$.asObservable()\r\n }\r\n get aiIsGeneratingPipeline() {\r\n return this.pipeline.aiIsGeneratingPipeline\r\n }\r\n get activeStageIndex() {\r\n return this.pipeline.activeStage$.asObservable()\r\n }\r\n get activeStage() {\r\n console.log(this.pipeline.activeStage)\r\n return this.pipeline.activeStage\r\n }\r\n get isRunningPipeline() {\r\n return this.pipeline.isRunningPipeline\r\n }\r\n get cannotAddStage() {\r\n return this.pipeline.pipelineGeneralValid.pipe(\r\n map(valid => !valid)\r\n )\r\n }\r\nget schemaLoadError$() {\r\n return this.pipeline.schemaLoadError$.asObservable()\r\n}\r\n get chatHistory() {\r\n return this.pipeline.chatHistory$.asObservable()\r\n }\r\n cursorPosition = 0\r\n showSuggestions = false;\r\n onTextChange(event: Event) {\r\n if (!this.textareaElementRef?.nativeElement) {\r\n return;\r\n }\r\n console.log('onTextChange',event)\r\n const newValue =(event.target as HTMLInputElement).value;\r\n const textarea = this.textareaElementRef.nativeElement;\r\n this.cursorPosition = textarea.selectionStart || 0;\r\n\r\n const lastChar = newValue[this.cursorPosition - 1];\r\n const match = newValue.slice(0, this.cursorPosition).match(/\\$(\\w*)$/);\r\n\r\n if (lastChar === '$' || (match && match[1] !== undefined)) {\r\n this.showSuggestions = true;\r\n this.optionsSearch = match ? match?.[1] ||'' : '';\r\n } else {\r\n this.showSuggestions = false;\r\n this.optionsSearch = '';\r\n }\r\n\r\n this.pipeline.onTextChange(newValue);\r\n }\r\n selectSuggestionInput(suggestion: string) {\r\n this.pipeline.prompt$.asObservable().pipe(\r\n take(1),\r\n tap(prompt => {\r\n const match = prompt?.slice(0, this.cursorPosition).match(/\\$(\\w*)$/);\r\n const beforeCursor = prompt?.slice(0, match ? match.index : this.cursorPosition - 1);\r\n const afterCursor = prompt?.slice(this.cursorPosition);\r\n prompt = beforeCursor + suggestion + ' ' + afterCursor;\r\n this.pipeline.prompt$.next(prompt);\r\n this.applyNewValueToPrompt(suggestion);\r\n })\r\n ).subscribe();\r\n }\r\n applyNewValueToPrompt(suggestion: any) {\r\n this.showSuggestions = false;\r\n\r\n const textarea = this.textareaElementRef.nativeElement;\r\n textarea.focus();\r\n const newCursorPosition = this.cursorPosition + suggestion.length;\r\n setTimeout(() => {\r\n textarea.setSelectionRange(newCursorPosition, newCursorPosition);\r\n }, 0);\r\n }\r\n optionsSearch = ''\r\n onSearchChange(event: any) {\r\n this.optionsSearch = event.detail.value\r\n\r\n }\r\n promptSubmit() {\r\n this.pipeline.promptSubmit()\r\n console.log('promptSubmit')\r\n }\r\n trackById = (index: number, stage: any) => index\r\n\r\n setActiveStage(index: number | undefined) {\r\n\r\n this.pipeline.setActiveStage(index)\r\n }\r\n addStage() {\r\n this.pipeline.addStage()\r\n }\r\n get getSchemaProperties() {\r\n return this.pipeline.schema$.asObservable().pipe(\r\n map(schema =>\r\n Object.keys(schema || {}).map(key => ({ label: key, value: key, })).filter(key => this.optionsSearch ? key.label.toLowerCase().includes(this.optionsSearch.toLowerCase()) : true)\r\n )\r\n )\r\n }\r\n deleteStage(index: number) {\r\n this.pipeline.deleteStage(index)\r\n }\r\n saveStage(index: number, stage: any) {\r\n this.pipeline.saveStage(index, stage)\r\n this.setActiveStage(undefined)\r\n }\r\n}\r\n"],"names":["i3","i1","i2","i5","i6","i9","i4","i7","i8"],"mappings":"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"}
|
|
@@ -4,22 +4,22 @@ import * as i0 from '@angular/core';
|
|
|
4
4
|
import { EventEmitter, Output, Input, HostBinding, Optional, Self, Component } from '@angular/core';
|
|
5
5
|
import * as i1 from '@angular/forms';
|
|
6
6
|
import { FormsModule } from '@angular/forms';
|
|
7
|
-
import { M as MatModulesModule } from './ngx-t-forms-ngx-t-forms-
|
|
7
|
+
import { M as MatModulesModule } from './ngx-t-forms-ngx-t-forms-1Roar4qK.mjs';
|
|
8
8
|
import { MinInputTypes } from 'ngx-t-forms-types';
|
|
9
9
|
import { g as getInputIllustration } from './ngx-t-forms-getInputIllustration-GCSKx5e5.mjs';
|
|
10
|
-
import * as i3$
|
|
10
|
+
import * as i3$2 from '@angular/material/form-field';
|
|
11
11
|
import { MatFormFieldControl } from '@angular/material/form-field';
|
|
12
12
|
import { Subject } from 'rxjs';
|
|
13
|
-
import * as
|
|
14
|
-
import * as i2$
|
|
15
|
-
import * as i3 from '@angular/material/card';
|
|
13
|
+
import * as i3 from '@angular/material/core';
|
|
14
|
+
import * as i2$1 from '@angular/material/button';
|
|
15
|
+
import * as i3$1 from '@angular/material/card';
|
|
16
16
|
import * as i4 from '@angular/material/chips';
|
|
17
17
|
import * as i4$1 from '@angular/material/divider';
|
|
18
|
-
import * as
|
|
19
|
-
import * as i6 from '@angular/material/list';
|
|
18
|
+
import * as i6 from '@angular/material/icon';
|
|
19
|
+
import * as i6$1 from '@angular/material/list';
|
|
20
20
|
import * as i7 from '@angular/material/select';
|
|
21
21
|
import * as i9 from '@angular/material/toolbar';
|
|
22
|
-
import * as
|
|
22
|
+
import * as i12 from '@angular/material/input';
|
|
23
23
|
|
|
24
24
|
class RequiredInputsComponent {
|
|
25
25
|
static { this.nextId = 0; }
|
|
@@ -163,7 +163,7 @@ class RequiredInputsComponent {
|
|
|
163
163
|
return this.formInputsToMapTo.find((input) => input.activated);
|
|
164
164
|
}
|
|
165
165
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: RequiredInputsComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
166
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: RequiredInputsComponent, isStandalone: true, selector: "app-required-inputs", inputs: { errors: "errors", value: "value", formInputs: "formInputs" }, outputs: { valueChanged: "valueChanged" }, host: { properties: { "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: RequiredInputsComponent }], ngImport: i0, template: "<mat-card>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"tree-instructions\" >\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>Ensure all required inputs are linked or have a default value.</span>\r\n </div>\r\n\r\n\r\n <mat-chip-listbox aria-label=\"Input selection\">\r\n <mat-chip-option\r\n [style.background]=\"( input.type === 'mapDocFilter' && !!input.mapTo || input.type === 'default' && !!input.defaultValue || input.type === 'mapto' && !!input.mapTo)&&activeInput !== input['name'] ? 'turquoise' : ''\"\r\n *ngFor=\"let input of value\" [selected]=\"activeInput === input['name']\"\r\n (click)=\"activeInput === input['name']? activeInput = '':activeInput = input['name']\">\r\n {{ input['name'] }}\r\n <mat-icon (click)=\"activeInput === input['name']? activeInput = '':activeInput = input['name']\" matChipRemove>{{\r\n input.type === 'mapDocFilter' && !!input.mapTo || input.type === 'default' && !!input.defaultValue ||\r\n input.type === 'mapto' && !!input.mapTo ? 'link' : 'link_off' }}</mat-icon>\r\n\r\n\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n @if (!!activeInput && activeInput !== '') {\r\n <br>\r\n <ng-container *ngTemplateOutlet=\"MinInputEdit\">\r\n\r\n </ng-container>\r\n }\r\n\r\n\r\n\r\n </mat-card-content>\r\n</mat-card>\r\n\r\n\r\n\r\n<ng-template #MinInputEdit>\r\n <mat-form-field style=\"margin-bottom: 8px;\" appearance=\"outline\">\r\n <mat-label>Input handling method</mat-label>\r\n <mat-select (selectionChange)=\"minInputValueType($event.value)\" [value]=\"minInputInEdit.type\">\r\n <mat-option [value]=\"minInputTypes.Default\">Default value</mat-option>\r\n <mat-option [value]=\"minInputTypes.MapTo\">Map to a form input</mat-option>\r\n <mat-option [value]=\"minInputTypes.MapDocFilter\">Filter by an input value</mat-option>\r\n </mat-select>\r\n <mat-hint>\r\n Select how this required input should be processed\r\n </mat-hint>\r\n </mat-form-field>\r\n\r\n\r\n\r\n <mat-form-field appearance=\"outline\" *ngIf=\"minInputInEdit?.type === 'default'\">\r\n <mat-label>Enter default value</mat-label>\r\n <input matInput [(ngModel)]=\"minInputInEdit.defaultValue\" placeholder=\"enter default\">\r\n <mat-hint>\r\n Enter a default value for this input\r\n </mat-hint>\r\n </mat-form-field>\r\n\r\n\r\n\r\n\r\n <mat-nav-list *ngIf=\"minInputInEdit?.type === 'mapto' || minInputInEdit?.type === 'mapDocFilter'\">\r\n <h5 mat-subheader>Select a form input to link the required input - {{ activeInput }} to</h5>\r\n @if(!!activatedInputs){\r\n <mat-list-item \r\n [activated]=\"activatedInputs.activated\"\r\n [disabled]=\"inputIsDisabled(activatedInputs)\" (click)=\" mapTo(activatedInputs); $event.stopPropagation()\">\r\n <img matListItemAvatar style=\"margin-left: 8px;\" [src]=\" getInputIllustration(activatedInputs) \"\r\n [alt]=\"activatedInputs.label\">\r\n <div matListItemTitle>{{activatedInputs[\"label\"] }}</div>\r\n <span matListItemMeta>\r\n <mat-icon color=\"primary\">\r\n check_circle\r\n </mat-icon>\r\n </span>\r\n </mat-list-item>\r\n }@else {\r\n\r\n @for(input of formInputsToMapTo;track input.id){\r\n <mat-list-item \r\n \r\n [disabled]=\"inputIsDisabled(input)\" (click)=\" mapTo(input); $event.stopPropagation()\">\r\n <img matListItemAvatar \r\n style=\"margin-left: 8px;background:azure\" [src]=\" getInputIllustration(input) \"\r\n [alt]=\"input.label\">\r\n <div matListItemTitle>{{ input[\"label\"] }}</div>\r\n <div matListItemLine style=\"font-size: 13px; opacity: 0.6;\">{{ input[\"formControlName\"] }}</div>\r\n <span matListItemMeta>\r\n <mat-icon >\r\n radio_button_unchecked\r\n </mat-icon>\r\n </span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n }\r\n }\r\n\r\n\r\n <mat-list-item *ngIf=\"formInputs ? formInputs?.length === 0 : true\">\r\n Add inputs to get started\r\n </mat-list-item>\r\n </mat-nav-list>\r\n\r\n <p *ngIf=\"minInputInEdit?.type ? minInputInEdit?.type === 'bind' : true\">\r\n This input is already linked\r\n </p>\r\n <mat-divider></mat-divider>\r\n <mat-toolbar *ngIf=\"minInputInEdit?.type === 'default'\">\r\n <span class=\"spacer\"></span>\r\n <button mat-raised-button color=\"primary\" (click)=\"save()\">save</button>\r\n </mat-toolbar>\r\n</ng-template>", styles: ["mat-form-field{background:azure;width:100%}mat-card{background:var(--mat-toolbar-container-background-color)}.tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:var(--mdc-elevated-card-container-color, var(--mat-app-surface-container-low));border-radius:4px;margin-bottom:16px}.info-icon{width:38px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type:
|
|
166
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: RequiredInputsComponent, isStandalone: true, selector: "app-required-inputs", inputs: { errors: "errors", value: "value", formInputs: "formInputs" }, outputs: { valueChanged: "valueChanged" }, host: { properties: { "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: RequiredInputsComponent }], ngImport: i0, template: "<mat-card>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"tree-instructions\" >\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>Ensure all required inputs are linked or have a default value.</span>\r\n </div>\r\n\r\n\r\n <mat-chip-listbox aria-label=\"Input selection\">\r\n <mat-chip-option\r\n [style.background]=\"( input.type === 'mapDocFilter' && !!input.mapTo || input.type === 'default' && !!input.defaultValue || input.type === 'mapto' && !!input.mapTo)&&activeInput !== input['name'] ? 'turquoise' : ''\"\r\n *ngFor=\"let input of value\" [selected]=\"activeInput === input['name']\"\r\n (click)=\"activeInput === input['name']? activeInput = '':activeInput = input['name']\">\r\n {{ input['name'] }}\r\n <mat-icon (click)=\"activeInput === input['name']? activeInput = '':activeInput = input['name']\" matChipRemove>{{\r\n input.type === 'mapDocFilter' && !!input.mapTo || input.type === 'default' && !!input.defaultValue ||\r\n input.type === 'mapto' && !!input.mapTo ? 'link' : 'link_off' }}</mat-icon>\r\n\r\n\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n @if (!!activeInput && activeInput !== '') {\r\n <br>\r\n <ng-container *ngTemplateOutlet=\"MinInputEdit\">\r\n\r\n </ng-container>\r\n }\r\n\r\n\r\n\r\n </mat-card-content>\r\n</mat-card>\r\n\r\n\r\n\r\n<ng-template #MinInputEdit>\r\n <mat-form-field style=\"margin-bottom: 8px;\" appearance=\"outline\">\r\n <mat-label>Input handling method</mat-label>\r\n <mat-select (selectionChange)=\"minInputValueType($event.value)\" [value]=\"minInputInEdit.type\">\r\n <mat-option [value]=\"minInputTypes.Default\">Default value</mat-option>\r\n <mat-option [value]=\"minInputTypes.MapTo\">Map to a form input</mat-option>\r\n <mat-option [value]=\"minInputTypes.MapDocFilter\">Filter by an input value</mat-option>\r\n </mat-select>\r\n <mat-hint>\r\n Select how this required input should be processed\r\n </mat-hint>\r\n </mat-form-field>\r\n\r\n\r\n\r\n <mat-form-field appearance=\"outline\" *ngIf=\"minInputInEdit?.type === 'default'\">\r\n <mat-label>Enter default value</mat-label>\r\n <input matInput [(ngModel)]=\"minInputInEdit.defaultValue\" placeholder=\"enter default\">\r\n <mat-hint>\r\n Enter a default value for this input\r\n </mat-hint>\r\n </mat-form-field>\r\n\r\n\r\n\r\n\r\n <mat-nav-list *ngIf=\"minInputInEdit?.type === 'mapto' || minInputInEdit?.type === 'mapDocFilter'\">\r\n <h5 mat-subheader>Select a form input to link the required input - {{ activeInput }} to</h5>\r\n @if(!!activatedInputs){\r\n <mat-list-item \r\n [activated]=\"activatedInputs.activated\"\r\n [disabled]=\"inputIsDisabled(activatedInputs)\" (click)=\" mapTo(activatedInputs); $event.stopPropagation()\">\r\n <img matListItemAvatar style=\"margin-left: 8px;\" [src]=\" getInputIllustration(activatedInputs) \"\r\n [alt]=\"activatedInputs.label\">\r\n <div matListItemTitle>{{activatedInputs[\"label\"] }}</div>\r\n <span matListItemMeta>\r\n <mat-icon color=\"primary\">\r\n check_circle\r\n </mat-icon>\r\n </span>\r\n </mat-list-item>\r\n }@else {\r\n\r\n @for(input of formInputsToMapTo;track input.id){\r\n <mat-list-item \r\n \r\n [disabled]=\"inputIsDisabled(input)\" (click)=\" mapTo(input); $event.stopPropagation()\">\r\n <img matListItemAvatar \r\n style=\"margin-left: 8px;background:azure\" [src]=\" getInputIllustration(input) \"\r\n [alt]=\"input.label\">\r\n <div matListItemTitle>{{ input[\"label\"] }}</div>\r\n <div matListItemLine style=\"font-size: 13px; opacity: 0.6;\">{{ input[\"formControlName\"] }}</div>\r\n <span matListItemMeta>\r\n <mat-icon >\r\n radio_button_unchecked\r\n </mat-icon>\r\n </span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n }\r\n }\r\n\r\n\r\n <mat-list-item *ngIf=\"formInputs ? formInputs?.length === 0 : true\">\r\n Add inputs to get started\r\n </mat-list-item>\r\n </mat-nav-list>\r\n\r\n <p *ngIf=\"minInputInEdit?.type ? minInputInEdit?.type === 'bind' : true\">\r\n This input is already linked\r\n </p>\r\n <mat-divider></mat-divider>\r\n <mat-toolbar *ngIf=\"minInputInEdit?.type === 'default'\">\r\n <span class=\"spacer\"></span>\r\n <button mat-raised-button color=\"primary\" (click)=\"save()\">save</button>\r\n </mat-toolbar>\r\n</ng-template>", styles: ["mat-form-field{background:azure;width:100%}mat-card{background:var(--mat-toolbar-container-background-color)}.tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:var(--mdc-elevated-card-container-color, var(--mat-app-surface-container-low));border-radius:4px;margin-bottom:16px}.info-icon{width:38px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i4.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i4$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6$1.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i6$1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i6$1.MatListItemAvatar, selector: "[matListItemAvatar]" }, { kind: "directive", type: i6$1.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "directive", type: i6$1.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i6$1.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i6$1.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "component", type: i3$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i7.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: 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: 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"] }] }); }
|
|
167
167
|
}
|
|
168
168
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: RequiredInputsComponent, decorators: [{
|
|
169
169
|
type: Component,
|
|
@@ -185,4 +185,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
185
185
|
}] } });
|
|
186
186
|
|
|
187
187
|
export { RequiredInputsComponent };
|
|
188
|
-
//# sourceMappingURL=ngx-t-forms-required-inputs.component-
|
|
188
|
+
//# sourceMappingURL=ngx-t-forms-required-inputs.component-BGK3DNu0.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-t-forms-required-inputs.component-zHQPB3m_.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/required-inputs/required-inputs.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/required-inputs/required-inputs.component.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, HostBinding, Input, Optional, Output, Self } from '@angular/core';\r\n\r\n\r\nimport { FormsModule, NgControl } from '@angular/forms';\r\n\r\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\r\nimport { MinimumInputRequiredInterface, MinInputMapInput, MinInputTypes } from 'ngx-t-forms-types';\r\nimport { FormColumnInputs } from 'ngx-t-forms-types';\r\nimport { getInputIllustration } from '../../../../shared/functions/getInputIllustration';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Subject } from 'rxjs';\r\nimport { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\ninterface MapToInputs extends FormColumnInputs {\r\n illustration: string\r\n activated: boolean\r\n}\r\n@Component({\r\n selector: 'app-required-inputs',\r\n standalone: true,\r\n imports: [CommonModule, MatModulesModule, FormsModule],\r\n templateUrl: './required-inputs.component.html',\r\n styleUrl: './required-inputs.component.scss',\r\n providers: [{ provide: MatFormFieldControl, useExisting:RequiredInputsComponent }],\r\n})\r\nexport class RequiredInputsComponent implements MatFormFieldControl<MinimumInputRequiredInterface[]> {\r\n\r\n\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n\r\n @HostBinding() id = `app-required-inputs-${RequiredInputsComponent .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 disabled: boolean = false;\r\n @Input() errors:IConfigElementError[] |undefined = [];\r\nget 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-required-inputs');\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\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n private _value: Array<MinimumInputRequiredInterface> = []\r\n @Input() set value(v: Array<MinimumInputRequiredInterface>) {\r\n const changed = JSON.stringify(this._value) !== JSON.stringify(v)\r\n if (changed) {\r\n this._value = v\r\n }\r\n\r\n }\r\n get value() {\r\n return this._value\r\n }\r\n @Input() formInputs: FormColumnInputs[] = []\r\n @Output() valueChanged = new EventEmitter<any>();\r\n public activeInput: string = '';\r\n\r\n\r\n minInputTypes = MinInputTypes\r\n\r\n minInputValueType(type: MinInputTypes) {\r\n\r\n if (type === \"mapDocFilter\" && !!this.minInputInEdit) {\r\n ((this.minInputInEdit as any).mapTo as MinInputMapInput[]) = []\r\n\r\n }\r\n if (this.minInputInEdit?.type === type) {\r\n this.minInputInEdit.type = undefined;\r\n } else if (this.minInputInEdit) {\r\n this.minInputInEdit.type = type\r\n }\r\n\r\n this.valueChanged.emit(this.value)\r\n\r\n }\r\n get minInputInEdit(): MinimumInputRequiredInterface {\r\n return this.value?.find((v) => v.name === this.activeInput) || {} as MinimumInputRequiredInterface;\r\n }\r\n set minInputInEdit(v: MinimumInputRequiredInterface) {\r\n this.value = this.value.map((val) => {\r\n if (val.name === this.activeInput) {\r\n return v\r\n }\r\n return val\r\n })\r\n }\r\n save() {\r\n this.valueChanged.emit(this.value);\r\n this.activeInput = '';\r\n }\r\n inputIsDisabled(input: FormColumnInputs): boolean {\r\n return input['element'] === 'sectionTitle'\r\n\r\n\r\n\r\n }\r\n mapTo(input: FormColumnInputs) {\r\n\r\n const inp = this.minInputInEdit;\r\n const mapToThis: MinInputMapInput = {\r\n formControlName: input.formControlName,\r\n dataType: input.dataType,\r\n element: input.element,\r\n inputId: input.id\r\n }\r\n\r\n if (!!inp && this.minInputInEdit?.type === MinInputTypes.MapTo) {\r\n (inp.mapTo as MinInputMapInput)?.formControlName === mapToThis.formControlName\r\n ? (inp.mapTo = undefined)\r\n : (inp.mapTo = mapToThis);\r\n }\r\n\r\n if (!!inp && this.minInputInEdit?.type === 'mapDocFilter') {\r\n if (this.inputMappedTo(mapToThis.formControlName)) {\r\n (inp.mapTo as MinInputMapInput[]).splice((inp.mapTo as MinInputMapInput[]).indexOf(mapToThis), 1)\r\n } else if (typeof inp.mapTo === \"string\" || !inp.mapTo || !!(inp.mapTo as MinInputMapInput[]).find(inp => typeof inp === \"string\")) {\r\n inp.mapTo = [mapToThis]\r\n } else {\r\n (inp.mapTo as MinInputMapInput[]).push(mapToThis)\r\n }\r\n }\r\n console.log(this.value)\r\n this.valueChanged.emit(this.value);\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n }\r\n inputMappedTo(formControlName: string): boolean {\r\n if (this.minInputInEdit?.type === 'mapto') {\r\n return (this.minInputInEdit?.mapTo as MinInputMapInput)?.formControlName === formControlName\r\n }\r\n if (this.minInputInEdit?.type === 'mapDocFilter') {\r\n return !!(this.minInputInEdit?.mapTo as MinInputMapInput[])?.find(m => m.formControlName === formControlName)\r\n }\r\n return false\r\n }\r\n\r\n getInputIllustration(input: FormColumnInputs) {\r\n return getInputIllustration(input.element)\r\n }\r\n get formInputsToMapTo(): MapToInputs[] {\r\n return this.formInputs.filter((input) => !this.inputIsDisabled(input)).map((input) => {\r\n return {\r\n ...input,\r\n illustration: this.getInputIllustration(input),\r\n activated: this.inputMappedTo(input.formControlName)\r\n }\r\n })\r\n\r\n }\r\n get activatedInputs() {\r\n return this.formInputsToMapTo.find((input) => input.activated)\r\n }\r\n\r\n}\r\n","<mat-card>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"tree-instructions\" >\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>Ensure all required inputs are linked or have a default value.</span>\r\n </div>\r\n\r\n\r\n <mat-chip-listbox aria-label=\"Input selection\">\r\n <mat-chip-option\r\n [style.background]=\"( input.type === 'mapDocFilter' && !!input.mapTo || input.type === 'default' && !!input.defaultValue || input.type === 'mapto' && !!input.mapTo)&&activeInput !== input['name'] ? 'turquoise' : ''\"\r\n *ngFor=\"let input of value\" [selected]=\"activeInput === input['name']\"\r\n (click)=\"activeInput === input['name']? activeInput = '':activeInput = input['name']\">\r\n {{ input['name'] }}\r\n <mat-icon (click)=\"activeInput === input['name']? activeInput = '':activeInput = input['name']\" matChipRemove>{{\r\n input.type === 'mapDocFilter' && !!input.mapTo || input.type === 'default' && !!input.defaultValue ||\r\n input.type === 'mapto' && !!input.mapTo ? 'link' : 'link_off' }}</mat-icon>\r\n\r\n\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n @if (!!activeInput && activeInput !== '') {\r\n <br>\r\n <ng-container *ngTemplateOutlet=\"MinInputEdit\">\r\n\r\n </ng-container>\r\n }\r\n\r\n\r\n\r\n </mat-card-content>\r\n</mat-card>\r\n\r\n\r\n\r\n<ng-template #MinInputEdit>\r\n <mat-form-field style=\"margin-bottom: 8px;\" appearance=\"outline\">\r\n <mat-label>Input handling method</mat-label>\r\n <mat-select (selectionChange)=\"minInputValueType($event.value)\" [value]=\"minInputInEdit.type\">\r\n <mat-option [value]=\"minInputTypes.Default\">Default value</mat-option>\r\n <mat-option [value]=\"minInputTypes.MapTo\">Map to a form input</mat-option>\r\n <mat-option [value]=\"minInputTypes.MapDocFilter\">Filter by an input value</mat-option>\r\n </mat-select>\r\n <mat-hint>\r\n Select how this required input should be processed\r\n </mat-hint>\r\n </mat-form-field>\r\n\r\n\r\n\r\n <mat-form-field appearance=\"outline\" *ngIf=\"minInputInEdit?.type === 'default'\">\r\n <mat-label>Enter default value</mat-label>\r\n <input matInput [(ngModel)]=\"minInputInEdit.defaultValue\" placeholder=\"enter default\">\r\n <mat-hint>\r\n Enter a default value for this input\r\n </mat-hint>\r\n </mat-form-field>\r\n\r\n\r\n\r\n\r\n <mat-nav-list *ngIf=\"minInputInEdit?.type === 'mapto' || minInputInEdit?.type === 'mapDocFilter'\">\r\n <h5 mat-subheader>Select a form input to link the required input - {{ activeInput }} to</h5>\r\n @if(!!activatedInputs){\r\n <mat-list-item \r\n [activated]=\"activatedInputs.activated\"\r\n [disabled]=\"inputIsDisabled(activatedInputs)\" (click)=\" mapTo(activatedInputs); $event.stopPropagation()\">\r\n <img matListItemAvatar style=\"margin-left: 8px;\" [src]=\" getInputIllustration(activatedInputs) \"\r\n [alt]=\"activatedInputs.label\">\r\n <div matListItemTitle>{{activatedInputs[\"label\"] }}</div>\r\n <span matListItemMeta>\r\n <mat-icon color=\"primary\">\r\n check_circle\r\n </mat-icon>\r\n </span>\r\n </mat-list-item>\r\n }@else {\r\n\r\n @for(input of formInputsToMapTo;track input.id){\r\n <mat-list-item \r\n \r\n [disabled]=\"inputIsDisabled(input)\" (click)=\" mapTo(input); $event.stopPropagation()\">\r\n <img matListItemAvatar \r\n style=\"margin-left: 8px;background:azure\" [src]=\" getInputIllustration(input) \"\r\n [alt]=\"input.label\">\r\n <div matListItemTitle>{{ input[\"label\"] }}</div>\r\n <div matListItemLine style=\"font-size: 13px; opacity: 0.6;\">{{ input[\"formControlName\"] }}</div>\r\n <span matListItemMeta>\r\n <mat-icon >\r\n radio_button_unchecked\r\n </mat-icon>\r\n </span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n }\r\n }\r\n\r\n\r\n <mat-list-item *ngIf=\"formInputs ? formInputs?.length === 0 : true\">\r\n Add inputs to get started\r\n </mat-list-item>\r\n </mat-nav-list>\r\n\r\n <p *ngIf=\"minInputInEdit?.type ? minInputInEdit?.type === 'bind' : true\">\r\n This input is already linked\r\n </p>\r\n <mat-divider></mat-divider>\r\n <mat-toolbar *ngIf=\"minInputInEdit?.type === 'default'\">\r\n <span class=\"spacer\"></span>\r\n <button mat-raised-button color=\"primary\" (click)=\"save()\">save</button>\r\n </mat-toolbar>\r\n</ng-template>"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-t-forms-required-inputs.component-BGK3DNu0.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/required-inputs/required-inputs.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/required-inputs/required-inputs.component.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, HostBinding, Input, Optional, Output, Self } from '@angular/core';\r\n\r\n\r\nimport { FormsModule, NgControl } from '@angular/forms';\r\n\r\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\r\nimport { MinimumInputRequiredInterface, MinInputMapInput, MinInputTypes } from 'ngx-t-forms-types';\r\nimport { FormColumnInputs } from 'ngx-t-forms-types';\r\nimport { getInputIllustration } from '../../../../shared/functions/getInputIllustration';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Subject } from 'rxjs';\r\nimport { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\ninterface MapToInputs extends FormColumnInputs {\r\n illustration: string\r\n activated: boolean\r\n}\r\n@Component({\r\n selector: 'app-required-inputs',\r\n standalone: true,\r\n imports: [CommonModule, MatModulesModule, FormsModule],\r\n templateUrl: './required-inputs.component.html',\r\n styleUrl: './required-inputs.component.scss',\r\n providers: [{ provide: MatFormFieldControl, useExisting:RequiredInputsComponent }],\r\n})\r\nexport class RequiredInputsComponent implements MatFormFieldControl<MinimumInputRequiredInterface[]> {\r\n\r\n\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n\r\n @HostBinding() id = `app-required-inputs-${RequiredInputsComponent .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 disabled: boolean = false;\r\n @Input() errors:IConfigElementError[] |undefined = [];\r\nget 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-required-inputs');\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\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n private _value: Array<MinimumInputRequiredInterface> = []\r\n @Input() set value(v: Array<MinimumInputRequiredInterface>) {\r\n const changed = JSON.stringify(this._value) !== JSON.stringify(v)\r\n if (changed) {\r\n this._value = v\r\n }\r\n\r\n }\r\n get value() {\r\n return this._value\r\n }\r\n @Input() formInputs: FormColumnInputs[] = []\r\n @Output() valueChanged = new EventEmitter<any>();\r\n public activeInput: string = '';\r\n\r\n\r\n minInputTypes = MinInputTypes\r\n\r\n minInputValueType(type: MinInputTypes) {\r\n\r\n if (type === \"mapDocFilter\" && !!this.minInputInEdit) {\r\n ((this.minInputInEdit as any).mapTo as MinInputMapInput[]) = []\r\n\r\n }\r\n if (this.minInputInEdit?.type === type) {\r\n this.minInputInEdit.type = undefined;\r\n } else if (this.minInputInEdit) {\r\n this.minInputInEdit.type = type\r\n }\r\n\r\n this.valueChanged.emit(this.value)\r\n\r\n }\r\n get minInputInEdit(): MinimumInputRequiredInterface {\r\n return this.value?.find((v) => v.name === this.activeInput) || {} as MinimumInputRequiredInterface;\r\n }\r\n set minInputInEdit(v: MinimumInputRequiredInterface) {\r\n this.value = this.value.map((val) => {\r\n if (val.name === this.activeInput) {\r\n return v\r\n }\r\n return val\r\n })\r\n }\r\n save() {\r\n this.valueChanged.emit(this.value);\r\n this.activeInput = '';\r\n }\r\n inputIsDisabled(input: FormColumnInputs): boolean {\r\n return input['element'] === 'sectionTitle'\r\n\r\n\r\n\r\n }\r\n mapTo(input: FormColumnInputs) {\r\n\r\n const inp = this.minInputInEdit;\r\n const mapToThis: MinInputMapInput = {\r\n formControlName: input.formControlName,\r\n dataType: input.dataType,\r\n element: input.element,\r\n inputId: input.id\r\n }\r\n\r\n if (!!inp && this.minInputInEdit?.type === MinInputTypes.MapTo) {\r\n (inp.mapTo as MinInputMapInput)?.formControlName === mapToThis.formControlName\r\n ? (inp.mapTo = undefined)\r\n : (inp.mapTo = mapToThis);\r\n }\r\n\r\n if (!!inp && this.minInputInEdit?.type === 'mapDocFilter') {\r\n if (this.inputMappedTo(mapToThis.formControlName)) {\r\n (inp.mapTo as MinInputMapInput[]).splice((inp.mapTo as MinInputMapInput[]).indexOf(mapToThis), 1)\r\n } else if (typeof inp.mapTo === \"string\" || !inp.mapTo || !!(inp.mapTo as MinInputMapInput[]).find(inp => typeof inp === \"string\")) {\r\n inp.mapTo = [mapToThis]\r\n } else {\r\n (inp.mapTo as MinInputMapInput[]).push(mapToThis)\r\n }\r\n }\r\n console.log(this.value)\r\n this.valueChanged.emit(this.value);\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n }\r\n inputMappedTo(formControlName: string): boolean {\r\n if (this.minInputInEdit?.type === 'mapto') {\r\n return (this.minInputInEdit?.mapTo as MinInputMapInput)?.formControlName === formControlName\r\n }\r\n if (this.minInputInEdit?.type === 'mapDocFilter') {\r\n return !!(this.minInputInEdit?.mapTo as MinInputMapInput[])?.find(m => m.formControlName === formControlName)\r\n }\r\n return false\r\n }\r\n\r\n getInputIllustration(input: FormColumnInputs) {\r\n return getInputIllustration(input.element)\r\n }\r\n get formInputsToMapTo(): MapToInputs[] {\r\n return this.formInputs.filter((input) => !this.inputIsDisabled(input)).map((input) => {\r\n return {\r\n ...input,\r\n illustration: this.getInputIllustration(input),\r\n activated: this.inputMappedTo(input.formControlName)\r\n }\r\n })\r\n\r\n }\r\n get activatedInputs() {\r\n return this.formInputsToMapTo.find((input) => input.activated)\r\n }\r\n\r\n}\r\n","<mat-card>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"tree-instructions\" >\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>Ensure all required inputs are linked or have a default value.</span>\r\n </div>\r\n\r\n\r\n <mat-chip-listbox aria-label=\"Input selection\">\r\n <mat-chip-option\r\n [style.background]=\"( input.type === 'mapDocFilter' && !!input.mapTo || input.type === 'default' && !!input.defaultValue || input.type === 'mapto' && !!input.mapTo)&&activeInput !== input['name'] ? 'turquoise' : ''\"\r\n *ngFor=\"let input of value\" [selected]=\"activeInput === input['name']\"\r\n (click)=\"activeInput === input['name']? activeInput = '':activeInput = input['name']\">\r\n {{ input['name'] }}\r\n <mat-icon (click)=\"activeInput === input['name']? activeInput = '':activeInput = input['name']\" matChipRemove>{{\r\n input.type === 'mapDocFilter' && !!input.mapTo || input.type === 'default' && !!input.defaultValue ||\r\n input.type === 'mapto' && !!input.mapTo ? 'link' : 'link_off' }}</mat-icon>\r\n\r\n\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n @if (!!activeInput && activeInput !== '') {\r\n <br>\r\n <ng-container *ngTemplateOutlet=\"MinInputEdit\">\r\n\r\n </ng-container>\r\n }\r\n\r\n\r\n\r\n </mat-card-content>\r\n</mat-card>\r\n\r\n\r\n\r\n<ng-template #MinInputEdit>\r\n <mat-form-field style=\"margin-bottom: 8px;\" appearance=\"outline\">\r\n <mat-label>Input handling method</mat-label>\r\n <mat-select (selectionChange)=\"minInputValueType($event.value)\" [value]=\"minInputInEdit.type\">\r\n <mat-option [value]=\"minInputTypes.Default\">Default value</mat-option>\r\n <mat-option [value]=\"minInputTypes.MapTo\">Map to a form input</mat-option>\r\n <mat-option [value]=\"minInputTypes.MapDocFilter\">Filter by an input value</mat-option>\r\n </mat-select>\r\n <mat-hint>\r\n Select how this required input should be processed\r\n </mat-hint>\r\n </mat-form-field>\r\n\r\n\r\n\r\n <mat-form-field appearance=\"outline\" *ngIf=\"minInputInEdit?.type === 'default'\">\r\n <mat-label>Enter default value</mat-label>\r\n <input matInput [(ngModel)]=\"minInputInEdit.defaultValue\" placeholder=\"enter default\">\r\n <mat-hint>\r\n Enter a default value for this input\r\n </mat-hint>\r\n </mat-form-field>\r\n\r\n\r\n\r\n\r\n <mat-nav-list *ngIf=\"minInputInEdit?.type === 'mapto' || minInputInEdit?.type === 'mapDocFilter'\">\r\n <h5 mat-subheader>Select a form input to link the required input - {{ activeInput }} to</h5>\r\n @if(!!activatedInputs){\r\n <mat-list-item \r\n [activated]=\"activatedInputs.activated\"\r\n [disabled]=\"inputIsDisabled(activatedInputs)\" (click)=\" mapTo(activatedInputs); $event.stopPropagation()\">\r\n <img matListItemAvatar style=\"margin-left: 8px;\" [src]=\" getInputIllustration(activatedInputs) \"\r\n [alt]=\"activatedInputs.label\">\r\n <div matListItemTitle>{{activatedInputs[\"label\"] }}</div>\r\n <span matListItemMeta>\r\n <mat-icon color=\"primary\">\r\n check_circle\r\n </mat-icon>\r\n </span>\r\n </mat-list-item>\r\n }@else {\r\n\r\n @for(input of formInputsToMapTo;track input.id){\r\n <mat-list-item \r\n \r\n [disabled]=\"inputIsDisabled(input)\" (click)=\" mapTo(input); $event.stopPropagation()\">\r\n <img matListItemAvatar \r\n style=\"margin-left: 8px;background:azure\" [src]=\" getInputIllustration(input) \"\r\n [alt]=\"input.label\">\r\n <div matListItemTitle>{{ input[\"label\"] }}</div>\r\n <div matListItemLine style=\"font-size: 13px; opacity: 0.6;\">{{ input[\"formControlName\"] }}</div>\r\n <span matListItemMeta>\r\n <mat-icon >\r\n radio_button_unchecked\r\n </mat-icon>\r\n </span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n }\r\n }\r\n\r\n\r\n <mat-list-item *ngIf=\"formInputs ? formInputs?.length === 0 : true\">\r\n Add inputs to get started\r\n </mat-list-item>\r\n </mat-nav-list>\r\n\r\n <p *ngIf=\"minInputInEdit?.type ? minInputInEdit?.type === 'bind' : true\">\r\n This input is already linked\r\n </p>\r\n <mat-divider></mat-divider>\r\n <mat-toolbar *ngIf=\"minInputInEdit?.type === 'default'\">\r\n <span class=\"spacer\"></span>\r\n <button mat-raised-button color=\"primary\" (click)=\"save()\">save</button>\r\n </mat-toolbar>\r\n</ng-template>"],"names":[],"mappings":"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"}
|