@memberjunction/ng-record-process-studio 6.2.0-edge.0 → 6.2.0-edge.1
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/dist/lib/feature-pipeline-builder/feature-pipeline-builder.component.d.ts +100 -10
- package/dist/lib/feature-pipeline-builder/feature-pipeline-builder.component.d.ts.map +1 -1
- package/dist/lib/feature-pipeline-builder/feature-pipeline-builder.component.js +246 -66
- package/dist/lib/feature-pipeline-builder/feature-pipeline-builder.component.js.map +1 -1
- package/dist/lib/record-process-editor/record-process-editor.component.d.ts +10 -0
- package/dist/lib/record-process-editor/record-process-editor.component.d.ts.map +1 -1
- package/dist/lib/record-process-editor/record-process-editor.component.js +25 -5
- package/dist/lib/record-process-editor/record-process-editor.component.js.map +1 -1
- package/dist/lib/record-process-history/record-process-history.component.d.ts +10 -0
- package/dist/lib/record-process-history/record-process-history.component.d.ts.map +1 -1
- package/dist/lib/record-process-history/record-process-history.component.js +30 -10
- package/dist/lib/record-process-history/record-process-history.component.js.map +1 -1
- package/dist/lib/record-process-studio/record-process-studio.component.d.ts +12 -0
- package/dist/lib/record-process-studio/record-process-studio.component.d.ts.map +1 -1
- package/dist/lib/record-process-studio/record-process-studio.component.js +31 -7
- package/dist/lib/record-process-studio/record-process-studio.component.js.map +1 -1
- package/dist/lib/run-detail.d.ts +4 -0
- package/dist/lib/run-detail.d.ts.map +1 -1
- package/dist/lib/run-detail.js +10 -2
- package/dist/lib/run-detail.js.map +1 -1
- package/package.json +10 -10
|
@@ -406,28 +406,108 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
406
406
|
Outputs: [],
|
|
407
407
|
Caching: { Cacheable: false },
|
|
408
408
|
};
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
409
|
+
AvailablePrompts = [];
|
|
410
|
+
/** @deprecated Use {@link AvailablePrompts}. */
|
|
411
|
+
get availablePrompts() {
|
|
412
|
+
return this.AvailablePrompts;
|
|
413
|
+
}
|
|
414
|
+
/** @deprecated Use {@link AvailablePrompts}. */
|
|
415
|
+
set availablePrompts(value) {
|
|
416
|
+
this.AvailablePrompts = value;
|
|
417
|
+
}
|
|
418
|
+
AvailableDocs = [];
|
|
419
|
+
/** @deprecated Use {@link AvailableDocs}. */
|
|
420
|
+
get availableDocs() {
|
|
421
|
+
return this.AvailableDocs;
|
|
422
|
+
}
|
|
423
|
+
/** @deprecated Use {@link AvailableDocs}. */
|
|
424
|
+
set availableDocs(value) {
|
|
425
|
+
this.AvailableDocs = value;
|
|
426
|
+
}
|
|
427
|
+
AvailableEntities = [];
|
|
428
|
+
/** @deprecated Use {@link AvailableEntities}. */
|
|
429
|
+
get availableEntities() {
|
|
430
|
+
return this.AvailableEntities;
|
|
431
|
+
}
|
|
432
|
+
/** @deprecated Use {@link AvailableEntities}. */
|
|
433
|
+
set availableEntities(value) {
|
|
434
|
+
this.AvailableEntities = value;
|
|
435
|
+
}
|
|
436
|
+
EntityFields = [];
|
|
437
|
+
/** @deprecated Use {@link EntityFields}. */
|
|
438
|
+
get entityFields() {
|
|
439
|
+
return this.EntityFields;
|
|
440
|
+
}
|
|
441
|
+
/** @deprecated Use {@link EntityFields}. */
|
|
442
|
+
set entityFields(value) {
|
|
443
|
+
this.EntityFields = value;
|
|
444
|
+
}
|
|
445
|
+
SelectedPrompt = null;
|
|
446
|
+
/** @deprecated Use {@link SelectedPrompt}. */
|
|
447
|
+
get selectedPrompt() {
|
|
448
|
+
return this.SelectedPrompt;
|
|
449
|
+
}
|
|
450
|
+
/** @deprecated Use {@link SelectedPrompt}. */
|
|
451
|
+
set selectedPrompt(value) {
|
|
452
|
+
this.SelectedPrompt = value;
|
|
453
|
+
}
|
|
454
|
+
ContextMode = 'fields';
|
|
455
|
+
/** @deprecated Use {@link ContextMode}. */
|
|
456
|
+
get contextMode() {
|
|
457
|
+
return this.ContextMode;
|
|
458
|
+
}
|
|
459
|
+
/** @deprecated Use {@link ContextMode}. */
|
|
460
|
+
set contextMode(value) {
|
|
461
|
+
this.ContextMode = value;
|
|
462
|
+
}
|
|
463
|
+
FieldsCsv = '';
|
|
464
|
+
/** @deprecated Use {@link FieldsCsv}. */
|
|
465
|
+
get fieldsCsv() {
|
|
466
|
+
return this.FieldsCsv;
|
|
467
|
+
}
|
|
468
|
+
/** @deprecated Use {@link FieldsCsv}. */
|
|
469
|
+
set fieldsCsv(value) {
|
|
470
|
+
this.FieldsCsv = value;
|
|
471
|
+
}
|
|
472
|
+
CacheKeyFieldsCsv = '';
|
|
473
|
+
/** @deprecated Use {@link CacheKeyFieldsCsv}. */
|
|
474
|
+
get cacheKeyFieldsCsv() {
|
|
475
|
+
return this.CacheKeyFieldsCsv;
|
|
476
|
+
}
|
|
477
|
+
/** @deprecated Use {@link CacheKeyFieldsCsv}. */
|
|
478
|
+
set cacheKeyFieldsCsv(value) {
|
|
479
|
+
this.CacheKeyFieldsCsv = value;
|
|
480
|
+
}
|
|
481
|
+
ValidationErrors = [];
|
|
482
|
+
/** @deprecated Use {@link ValidationErrors}. */
|
|
483
|
+
get validationErrors() {
|
|
484
|
+
return this.ValidationErrors;
|
|
485
|
+
}
|
|
486
|
+
/** @deprecated Use {@link ValidationErrors}. */
|
|
487
|
+
set validationErrors(value) {
|
|
488
|
+
this.ValidationErrors = value;
|
|
489
|
+
}
|
|
490
|
+
RenderedConstraintPreview = '';
|
|
491
|
+
/** @deprecated Use {@link RenderedConstraintPreview}. */
|
|
492
|
+
get renderedConstraintPreview() {
|
|
493
|
+
return this.RenderedConstraintPreview;
|
|
494
|
+
}
|
|
495
|
+
/** @deprecated Use {@link RenderedConstraintPreview}. */
|
|
496
|
+
set renderedConstraintPreview(value) {
|
|
497
|
+
this.RenderedConstraintPreview = value;
|
|
498
|
+
}
|
|
419
499
|
async ngOnInit() {
|
|
420
|
-
this.
|
|
500
|
+
this.AvailableEntities = [...this.ProviderToUse.Entities].sort((a, b) => (a.DisplayName || a.Name).localeCompare(b.DisplayName || b.Name));
|
|
421
501
|
await this.loadPrompts();
|
|
422
502
|
await this.loadEntityDocs();
|
|
423
|
-
this.
|
|
503
|
+
this.SyncFromRecord();
|
|
424
504
|
}
|
|
425
505
|
ngOnChanges(changes) {
|
|
426
506
|
if (changes['Record'] || changes['EntityID']) {
|
|
427
|
-
this.
|
|
507
|
+
this.SyncFromRecord();
|
|
428
508
|
}
|
|
429
509
|
}
|
|
430
|
-
|
|
510
|
+
SyncFromRecord() {
|
|
431
511
|
if (this.Record) {
|
|
432
512
|
this.spec.Name = this.Record.Name || '';
|
|
433
513
|
this.spec.Description = this.Record.Description || '';
|
|
@@ -449,30 +529,34 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
449
529
|
this.spec.Context = {};
|
|
450
530
|
}
|
|
451
531
|
if (this.spec.Context.EntityDocumentID) {
|
|
452
|
-
this.
|
|
532
|
+
this.ContextMode = 'document';
|
|
453
533
|
}
|
|
454
534
|
else if (this.spec.Context.QueryID) {
|
|
455
|
-
this.
|
|
535
|
+
this.ContextMode = 'query';
|
|
456
536
|
}
|
|
457
537
|
else {
|
|
458
|
-
this.
|
|
538
|
+
this.ContextMode = 'fields';
|
|
459
539
|
}
|
|
460
|
-
this.
|
|
461
|
-
this.
|
|
540
|
+
this.FieldsCsv = (this.spec.Context.Fields ?? []).join(', ');
|
|
541
|
+
this.CacheKeyFieldsCsv = (this.spec.Caching.KeyFields ?? []).join(', ');
|
|
462
542
|
const targetEntityID = this.Record?.EntityID || this.EntityID;
|
|
463
543
|
if (targetEntityID) {
|
|
464
544
|
const entity = this.ProviderToUse.EntityByID(targetEntityID);
|
|
465
|
-
this.
|
|
545
|
+
this.EntityFields = entity?.Fields ? [...entity.Fields].sort((a, b) => a.Name.localeCompare(b.Name)) : [];
|
|
466
546
|
}
|
|
467
547
|
else {
|
|
468
|
-
this.
|
|
548
|
+
this.EntityFields = [];
|
|
469
549
|
}
|
|
470
550
|
if (this.Record?.PromptID) {
|
|
471
|
-
this.
|
|
551
|
+
this.SelectedPrompt = this.AvailablePrompts.find((p) => UUIDsEqual(p.ID, this.Record?.PromptID)) ?? null;
|
|
472
552
|
}
|
|
473
553
|
this.recomputeValidation();
|
|
474
554
|
this.cdr.detectChanges();
|
|
475
555
|
}
|
|
556
|
+
/** @deprecated Use {@link SyncFromRecord}. */
|
|
557
|
+
syncFromRecord() {
|
|
558
|
+
return this.SyncFromRecord();
|
|
559
|
+
}
|
|
476
560
|
async loadPrompts() {
|
|
477
561
|
try {
|
|
478
562
|
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
@@ -482,15 +566,15 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
482
566
|
ResultType: 'simple',
|
|
483
567
|
});
|
|
484
568
|
if (res.Success && Array.isArray(res.Results)) {
|
|
485
|
-
this.
|
|
569
|
+
this.AvailablePrompts = res.Results;
|
|
486
570
|
}
|
|
487
571
|
else {
|
|
488
|
-
this.
|
|
572
|
+
this.AvailablePrompts = [];
|
|
489
573
|
LogError(`Failed to load AI Prompts: ${res.ErrorMessage || 'unknown error'}`);
|
|
490
574
|
}
|
|
491
575
|
}
|
|
492
576
|
catch (error) {
|
|
493
|
-
this.
|
|
577
|
+
this.AvailablePrompts = [];
|
|
494
578
|
LogError('Error loading AI Prompts', undefined, error);
|
|
495
579
|
}
|
|
496
580
|
}
|
|
@@ -503,49 +587,61 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
503
587
|
ResultType: 'simple',
|
|
504
588
|
});
|
|
505
589
|
if (res.Success && Array.isArray(res.Results)) {
|
|
506
|
-
this.
|
|
590
|
+
this.AvailableDocs = res.Results;
|
|
507
591
|
}
|
|
508
592
|
else {
|
|
509
|
-
this.
|
|
593
|
+
this.AvailableDocs = [];
|
|
510
594
|
LogError(`Failed to load Entity Documents: ${res.ErrorMessage || 'unknown error'}`);
|
|
511
595
|
}
|
|
512
596
|
}
|
|
513
597
|
catch (error) {
|
|
514
|
-
this.
|
|
598
|
+
this.AvailableDocs = [];
|
|
515
599
|
LogError('Error loading Entity Documents', undefined, error);
|
|
516
600
|
}
|
|
517
601
|
}
|
|
518
|
-
|
|
519
|
-
this.
|
|
602
|
+
OnContextModeChange(event) {
|
|
603
|
+
this.ContextMode = event.target.value;
|
|
520
604
|
if (!this.spec.Context)
|
|
521
605
|
this.spec.Context = {};
|
|
522
|
-
if (this.
|
|
606
|
+
if (this.ContextMode === 'fields') {
|
|
523
607
|
this.spec.Context.EntityDocumentID = undefined;
|
|
524
608
|
this.spec.Context.QueryID = undefined;
|
|
525
609
|
}
|
|
526
|
-
else if (this.
|
|
610
|
+
else if (this.ContextMode === 'document') {
|
|
527
611
|
this.spec.Context.QueryID = undefined;
|
|
528
612
|
}
|
|
529
|
-
else if (this.
|
|
613
|
+
else if (this.ContextMode === 'query') {
|
|
530
614
|
this.spec.Context.EntityDocumentID = undefined;
|
|
531
615
|
}
|
|
532
616
|
this.emitChanges();
|
|
533
617
|
}
|
|
534
|
-
|
|
618
|
+
/** @deprecated Use {@link OnContextModeChange}. */
|
|
619
|
+
onContextModeChange(event) {
|
|
620
|
+
return this.OnContextModeChange(event);
|
|
621
|
+
}
|
|
622
|
+
OnEntityDocChange(event) {
|
|
535
623
|
if (!this.spec.Context)
|
|
536
624
|
this.spec.Context = {};
|
|
537
625
|
this.spec.Context.EntityDocumentID = event.target.value;
|
|
538
626
|
this.emitChanges();
|
|
539
627
|
}
|
|
540
|
-
|
|
628
|
+
/** @deprecated Use {@link OnEntityDocChange}. */
|
|
629
|
+
onEntityDocChange(event) {
|
|
630
|
+
return this.OnEntityDocChange(event);
|
|
631
|
+
}
|
|
632
|
+
OnQueryIDChange(event) {
|
|
541
633
|
if (!this.spec.Context)
|
|
542
634
|
this.spec.Context = {};
|
|
543
635
|
this.spec.Context.QueryID = event.target.value;
|
|
544
636
|
this.emitChanges();
|
|
545
637
|
}
|
|
546
|
-
|
|
638
|
+
/** @deprecated Use {@link OnQueryIDChange}. */
|
|
639
|
+
onQueryIDChange(event) {
|
|
640
|
+
return this.OnQueryIDChange(event);
|
|
641
|
+
}
|
|
642
|
+
OnFieldsCsvChange(event) {
|
|
547
643
|
const val = event.target.value;
|
|
548
|
-
this.
|
|
644
|
+
this.FieldsCsv = val;
|
|
549
645
|
if (!this.spec.Context)
|
|
550
646
|
this.spec.Context = {};
|
|
551
647
|
this.spec.Context.Fields = val
|
|
@@ -554,49 +650,65 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
554
650
|
.filter((s) => s.length > 0);
|
|
555
651
|
this.emitChanges();
|
|
556
652
|
}
|
|
557
|
-
|
|
653
|
+
/** @deprecated Use {@link OnFieldsCsvChange}. */
|
|
654
|
+
onFieldsCsvChange(event) {
|
|
655
|
+
return this.OnFieldsCsvChange(event);
|
|
656
|
+
}
|
|
657
|
+
OnPromptChange(event) {
|
|
558
658
|
const promptID = event.target.value;
|
|
559
659
|
if (this.Record) {
|
|
560
660
|
this.Record.PromptID = promptID;
|
|
561
661
|
}
|
|
562
662
|
this.spec.PromptID = promptID;
|
|
563
|
-
this.
|
|
663
|
+
this.SelectedPrompt = this.AvailablePrompts.find((p) => UUIDsEqual(p.ID, promptID)) ?? null;
|
|
564
664
|
this.emitChanges();
|
|
565
665
|
}
|
|
666
|
+
/** @deprecated Use {@link OnPromptChange}. */
|
|
667
|
+
onPromptChange(event) {
|
|
668
|
+
return this.OnPromptChange(event);
|
|
669
|
+
}
|
|
566
670
|
addOutput() {
|
|
567
671
|
const newOutput = {
|
|
568
672
|
Name: `Output_${this.spec.Outputs.length + 1}`,
|
|
569
673
|
Ref: '$',
|
|
570
674
|
Target: {
|
|
571
675
|
Mode: 'field',
|
|
572
|
-
EntityFieldName: this.
|
|
676
|
+
EntityFieldName: this.EntityFields.length > 0 ? this.EntityFields[0].Name : '',
|
|
573
677
|
},
|
|
574
678
|
};
|
|
575
679
|
this.spec.Outputs.push(newOutput);
|
|
576
680
|
this.emitChanges();
|
|
577
681
|
}
|
|
578
|
-
|
|
682
|
+
RemoveOutput(index) {
|
|
579
683
|
this.spec.Outputs.splice(index, 1);
|
|
580
684
|
this.emitChanges();
|
|
581
685
|
}
|
|
582
|
-
|
|
686
|
+
/** @deprecated Use {@link RemoveOutput}. */
|
|
687
|
+
removeOutput(index) {
|
|
688
|
+
return this.RemoveOutput(index);
|
|
689
|
+
}
|
|
690
|
+
UpdateOutputProp(index, prop, event) {
|
|
583
691
|
const val = event.target.value;
|
|
584
692
|
this.spec.Outputs[index][prop] = val;
|
|
585
693
|
this.emitChanges();
|
|
586
694
|
}
|
|
587
|
-
|
|
695
|
+
/** @deprecated Use {@link UpdateOutputProp}. */
|
|
696
|
+
updateOutputProp(index, prop, event) {
|
|
697
|
+
return this.UpdateOutputProp(index, prop, event);
|
|
698
|
+
}
|
|
699
|
+
UpdateTargetMode(index, event) {
|
|
588
700
|
const mode = event.target.value;
|
|
589
701
|
const current = this.spec.Outputs[index];
|
|
590
702
|
if (mode === 'field') {
|
|
591
703
|
current.Target = {
|
|
592
704
|
Mode: 'field',
|
|
593
|
-
EntityFieldName: this.
|
|
705
|
+
EntityFieldName: this.EntityFields.length > 0 ? this.EntityFields[0].Name : '',
|
|
594
706
|
};
|
|
595
707
|
}
|
|
596
708
|
else if (mode === 'child') {
|
|
597
709
|
current.Target = {
|
|
598
710
|
Mode: 'child',
|
|
599
|
-
EntityName: this.
|
|
711
|
+
EntityName: this.AvailableEntities.length > 0 ? this.AvailableEntities[0].Name : '',
|
|
600
712
|
ParentField: 'ParentID',
|
|
601
713
|
Map: {},
|
|
602
714
|
};
|
|
@@ -609,7 +721,11 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
609
721
|
}
|
|
610
722
|
this.emitChanges();
|
|
611
723
|
}
|
|
612
|
-
|
|
724
|
+
/** @deprecated Use {@link UpdateTargetMode}. */
|
|
725
|
+
updateTargetMode(index, event) {
|
|
726
|
+
return this.UpdateTargetMode(index, event);
|
|
727
|
+
}
|
|
728
|
+
UpdateFieldTarget(index, event) {
|
|
613
729
|
const fieldName = event.target.value;
|
|
614
730
|
const target = this.spec.Outputs[index].Target;
|
|
615
731
|
if (target.Mode === 'field') {
|
|
@@ -617,7 +733,11 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
617
733
|
}
|
|
618
734
|
this.emitChanges();
|
|
619
735
|
}
|
|
620
|
-
|
|
736
|
+
/** @deprecated Use {@link UpdateFieldTarget}. */
|
|
737
|
+
updateFieldTarget(index, event) {
|
|
738
|
+
return this.UpdateFieldTarget(index, event);
|
|
739
|
+
}
|
|
740
|
+
UpdateChildTargetEntity(index, event) {
|
|
621
741
|
const entityName = event.target.value;
|
|
622
742
|
const target = this.spec.Outputs[index].Target;
|
|
623
743
|
if (target.Mode === 'child') {
|
|
@@ -625,7 +745,11 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
625
745
|
}
|
|
626
746
|
this.emitChanges();
|
|
627
747
|
}
|
|
628
|
-
|
|
748
|
+
/** @deprecated Use {@link UpdateChildTargetEntity}. */
|
|
749
|
+
updateChildTargetEntity(index, event) {
|
|
750
|
+
return this.UpdateChildTargetEntity(index, event);
|
|
751
|
+
}
|
|
752
|
+
UpdateConstraintType(index, event) {
|
|
629
753
|
const type = event.target.value;
|
|
630
754
|
const output = this.spec.Outputs[index];
|
|
631
755
|
if (type === 'none') {
|
|
@@ -645,26 +769,46 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
645
769
|
}
|
|
646
770
|
this.emitChanges();
|
|
647
771
|
}
|
|
648
|
-
|
|
772
|
+
/** @deprecated Use {@link UpdateConstraintType}. */
|
|
773
|
+
updateConstraintType(index, event) {
|
|
774
|
+
return this.UpdateConstraintType(index, event);
|
|
775
|
+
}
|
|
776
|
+
UpdateViolationPolicy(index, event) {
|
|
649
777
|
const policy = event.target.value;
|
|
650
778
|
if (this.spec.Outputs[index].Constraint) {
|
|
651
779
|
this.spec.Outputs[index].Constraint.OnViolation = policy;
|
|
652
780
|
}
|
|
653
781
|
this.emitChanges();
|
|
654
782
|
}
|
|
655
|
-
|
|
783
|
+
/** @deprecated Use {@link UpdateViolationPolicy}. */
|
|
784
|
+
updateViolationPolicy(index, event) {
|
|
785
|
+
return this.UpdateViolationPolicy(index, event);
|
|
786
|
+
}
|
|
787
|
+
GetEnumValuesCsv(constraint) {
|
|
656
788
|
if (!constraint || constraint.Type !== 'enum' || !Array.isArray(constraint.Values)) {
|
|
657
789
|
return '';
|
|
658
790
|
}
|
|
659
791
|
return constraint.Values.join(', ');
|
|
660
792
|
}
|
|
661
|
-
|
|
793
|
+
/** @deprecated Use {@link GetEnumValuesCsv}. */
|
|
794
|
+
getEnumValuesCsv(constraint) {
|
|
795
|
+
return this.GetEnumValuesCsv(constraint);
|
|
796
|
+
}
|
|
797
|
+
GetNumericMin(constraint) {
|
|
662
798
|
return constraint && constraint.Type === 'numeric' && constraint.Min !== undefined ? constraint.Min : '';
|
|
663
799
|
}
|
|
664
|
-
|
|
800
|
+
/** @deprecated Use {@link GetNumericMin}. */
|
|
801
|
+
getNumericMin(constraint) {
|
|
802
|
+
return this.GetNumericMin(constraint);
|
|
803
|
+
}
|
|
804
|
+
GetNumericMax(constraint) {
|
|
665
805
|
return constraint && constraint.Type === 'numeric' && constraint.Max !== undefined ? constraint.Max : '';
|
|
666
806
|
}
|
|
667
|
-
|
|
807
|
+
/** @deprecated Use {@link GetNumericMax}. */
|
|
808
|
+
getNumericMax(constraint) {
|
|
809
|
+
return this.GetNumericMax(constraint);
|
|
810
|
+
}
|
|
811
|
+
UpdateEnumValues(index, event) {
|
|
668
812
|
const val = event.target.value;
|
|
669
813
|
const output = this.spec.Outputs[index];
|
|
670
814
|
if (!output.Constraint || output.Constraint.Type !== 'enum') {
|
|
@@ -676,7 +820,11 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
676
820
|
.filter((s) => s.length > 0);
|
|
677
821
|
this.emitChanges();
|
|
678
822
|
}
|
|
679
|
-
|
|
823
|
+
/** @deprecated Use {@link UpdateEnumValues}. */
|
|
824
|
+
updateEnumValues(index, event) {
|
|
825
|
+
return this.UpdateEnumValues(index, event);
|
|
826
|
+
}
|
|
827
|
+
UpdateNumericMin(index, event) {
|
|
680
828
|
const val = parseFloat(event.target.value);
|
|
681
829
|
const output = this.spec.Outputs[index];
|
|
682
830
|
if (output.Constraint && output.Constraint.Type === 'numeric') {
|
|
@@ -684,7 +832,11 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
684
832
|
}
|
|
685
833
|
this.emitChanges();
|
|
686
834
|
}
|
|
687
|
-
|
|
835
|
+
/** @deprecated Use {@link UpdateNumericMin}. */
|
|
836
|
+
updateNumericMin(index, event) {
|
|
837
|
+
return this.UpdateNumericMin(index, event);
|
|
838
|
+
}
|
|
839
|
+
UpdateNumericMax(index, event) {
|
|
688
840
|
const val = parseFloat(event.target.value);
|
|
689
841
|
const output = this.spec.Outputs[index];
|
|
690
842
|
if (output.Constraint && output.Constraint.Type === 'numeric') {
|
|
@@ -692,25 +844,41 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
692
844
|
}
|
|
693
845
|
this.emitChanges();
|
|
694
846
|
}
|
|
695
|
-
|
|
847
|
+
/** @deprecated Use {@link UpdateNumericMax}. */
|
|
848
|
+
updateNumericMax(index, event) {
|
|
849
|
+
return this.UpdateNumericMax(index, event);
|
|
850
|
+
}
|
|
851
|
+
UpdateWatermarkStrategy(event) {
|
|
696
852
|
if (this.Record) {
|
|
697
853
|
this.Record.WatermarkStrategy = event.target.value;
|
|
698
854
|
}
|
|
699
855
|
}
|
|
700
|
-
|
|
856
|
+
/** @deprecated Use {@link UpdateWatermarkStrategy}. */
|
|
857
|
+
updateWatermarkStrategy(event) {
|
|
858
|
+
return this.UpdateWatermarkStrategy(event);
|
|
859
|
+
}
|
|
860
|
+
UpdateSkipUnchanged(event) {
|
|
701
861
|
if (this.Record) {
|
|
702
862
|
this.Record.SkipUnchanged = event.target.value === 'true';
|
|
703
863
|
}
|
|
704
864
|
}
|
|
705
|
-
|
|
865
|
+
/** @deprecated Use {@link UpdateSkipUnchanged}. */
|
|
866
|
+
updateSkipUnchanged(event) {
|
|
867
|
+
return this.UpdateSkipUnchanged(event);
|
|
868
|
+
}
|
|
869
|
+
UpdateCacheable(event) {
|
|
706
870
|
if (!this.spec.Caching)
|
|
707
871
|
this.spec.Caching = { Cacheable: false };
|
|
708
872
|
this.spec.Caching.Cacheable = event.target.value === 'true';
|
|
709
873
|
this.emitChanges();
|
|
710
874
|
}
|
|
711
|
-
|
|
875
|
+
/** @deprecated Use {@link UpdateCacheable}. */
|
|
876
|
+
updateCacheable(event) {
|
|
877
|
+
return this.UpdateCacheable(event);
|
|
878
|
+
}
|
|
879
|
+
UpdateCacheKeyFields(event) {
|
|
712
880
|
const val = event.target.value;
|
|
713
|
-
this.
|
|
881
|
+
this.CacheKeyFieldsCsv = val;
|
|
714
882
|
if (!this.spec.Caching)
|
|
715
883
|
this.spec.Caching = { Cacheable: true };
|
|
716
884
|
this.spec.Caching.KeyFields = val
|
|
@@ -719,20 +887,32 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
719
887
|
.filter((s) => s.length > 0);
|
|
720
888
|
this.emitChanges();
|
|
721
889
|
}
|
|
722
|
-
|
|
890
|
+
/** @deprecated Use {@link UpdateCacheKeyFields}. */
|
|
891
|
+
updateCacheKeyFields(event) {
|
|
892
|
+
return this.UpdateCacheKeyFields(event);
|
|
893
|
+
}
|
|
894
|
+
UpdateCacheTTL(event) {
|
|
723
895
|
const val = parseInt(event.target.value, 10);
|
|
724
896
|
if (!this.spec.Caching)
|
|
725
897
|
this.spec.Caching = { Cacheable: true };
|
|
726
898
|
this.spec.Caching.TTLSeconds = isNaN(val) ? 86400 : val;
|
|
727
899
|
this.emitChanges();
|
|
728
900
|
}
|
|
729
|
-
|
|
901
|
+
/** @deprecated Use {@link UpdateCacheTTL}. */
|
|
902
|
+
updateCacheTTL(event) {
|
|
903
|
+
return this.UpdateCacheTTL(event);
|
|
904
|
+
}
|
|
905
|
+
UpdateCacheScope(event) {
|
|
730
906
|
const val = event.target.value;
|
|
731
907
|
if (!this.spec.Caching)
|
|
732
908
|
this.spec.Caching = { Cacheable: true };
|
|
733
909
|
this.spec.Caching.Scope = val;
|
|
734
910
|
this.emitChanges();
|
|
735
911
|
}
|
|
912
|
+
/** @deprecated Use {@link UpdateCacheScope}. */
|
|
913
|
+
updateCacheScope(event) {
|
|
914
|
+
return this.UpdateCacheScope(event);
|
|
915
|
+
}
|
|
736
916
|
emitChanges() {
|
|
737
917
|
if (this.Record) {
|
|
738
918
|
this.spec.Name = this.Record.Name || '';
|
|
@@ -761,7 +941,7 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
761
941
|
this.Record.OutputMapping = JSON.stringify({ fields });
|
|
762
942
|
}
|
|
763
943
|
recomputeValidation() {
|
|
764
|
-
this.
|
|
944
|
+
this.RenderedConstraintPreview = renderConstraintBlock(this.spec.Outputs);
|
|
765
945
|
const entity = this.Record?.EntityID ? this.ProviderToUse.EntityByID(this.Record.EntityID) : null;
|
|
766
946
|
if (entity) {
|
|
767
947
|
const stub = {
|
|
@@ -776,10 +956,10 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
776
956
|
EntityFieldValues: f.EntityFieldValues ? f.EntityFieldValues.map((v) => ({ Value: v.Value, Code: v.Code })) : undefined,
|
|
777
957
|
})),
|
|
778
958
|
};
|
|
779
|
-
this.
|
|
959
|
+
this.ValidationErrors = validateSpec(this.spec, stub);
|
|
780
960
|
}
|
|
781
961
|
else {
|
|
782
|
-
this.
|
|
962
|
+
this.ValidationErrors = this.spec.Outputs.length === 0
|
|
783
963
|
? [{
|
|
784
964
|
Path: 'Outputs',
|
|
785
965
|
Severity: 'error',
|
|
@@ -788,7 +968,7 @@ export class FeaturePipelineBuilderComponent extends BaseAngularComponent {
|
|
|
788
968
|
}]
|
|
789
969
|
: [];
|
|
790
970
|
}
|
|
791
|
-
const hasErrors = this.
|
|
971
|
+
const hasErrors = this.ValidationErrors.some((i) => i.Severity === 'error');
|
|
792
972
|
this.ValidChange.emit(!hasErrors);
|
|
793
973
|
}
|
|
794
974
|
static ɵfac = /*@__PURE__*/ (() => { let ɵFeaturePipelineBuilderComponent_BaseFactory; return function FeaturePipelineBuilderComponent_Factory(__ngFactoryType__) { return (ɵFeaturePipelineBuilderComponent_BaseFactory || (ɵFeaturePipelineBuilderComponent_BaseFactory = i0.ɵɵgetInheritedFactory(FeaturePipelineBuilderComponent)))(__ngFactoryType__ || FeaturePipelineBuilderComponent); }; })();
|