@finos/legend-application-studio 28.19.19 → 28.19.20
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/lib/application/LegendStudioApplicationConfig.d.ts +1 -6
- package/lib/application/LegendStudioApplicationConfig.d.ts.map +1 -1
- package/lib/application/LegendStudioApplicationConfig.js +1 -9
- package/lib/application/LegendStudioApplicationConfig.js.map +1 -1
- package/lib/components/editor/editor-group/dataProduct/DataPoductEditor.d.ts.map +1 -1
- package/lib/components/editor/editor-group/dataProduct/DataPoductEditor.js +10 -9
- package/lib/components/editor/editor-group/dataProduct/DataPoductEditor.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.d.ts +1 -0
- package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.d.ts.map +1 -1
- package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js +10 -1
- package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js.map +1 -1
- package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.d.ts +1 -0
- package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.d.ts.map +1 -1
- package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js +3 -0
- package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js.map +1 -1
- package/package.json +9 -9
- package/src/application/LegendStudioApplicationConfig.ts +1 -12
- package/src/components/editor/editor-group/dataProduct/DataPoductEditor.tsx +67 -41
- package/src/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.ts +14 -3
- package/src/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.ts +6 -0
@@ -63,6 +63,7 @@ import {
|
|
63
63
|
BuildingIcon,
|
64
64
|
Tooltip,
|
65
65
|
InfoCircleIcon,
|
66
|
+
Checkbox,
|
66
67
|
} from '@finos/legend-art';
|
67
68
|
import React, {
|
68
69
|
useRef,
|
@@ -97,6 +98,7 @@ import {
|
|
97
98
|
supportInfo_addEmail,
|
98
99
|
supportInfo_deleteEmail,
|
99
100
|
accessPoint_setClassification,
|
101
|
+
accessPoint_setReproducible,
|
100
102
|
} from '../../../../stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js';
|
101
103
|
import { LEGEND_STUDIO_TEST_ID } from '../../../../__lib__/LegendStudioTesting.js';
|
102
104
|
import { LEGEND_STUDIO_APPLICATION_NAVIGATION_CONTEXT_KEY } from '../../../../__lib__/LegendStudioApplicationNavigationContext.js';
|
@@ -438,46 +440,28 @@ export const LakehouseDataProductAcccessPointEditor = observer(
|
|
438
440
|
<div style={{ flex: 1 }}>
|
439
441
|
<div className="access-point-editor__metadata">
|
440
442
|
<AccessPointTitle accessPoint={accessPoint} />
|
441
|
-
{editingDescription ? (
|
442
|
-
<textarea
|
443
|
-
className="panel__content__form__section__input"
|
444
|
-
spellCheck={false}
|
445
|
-
value={accessPoint.description ?? ''}
|
446
|
-
onChange={updateAccessPointDescription}
|
447
|
-
placeholder="Access Point description"
|
448
|
-
onBlur={handleDescriptionBlur}
|
449
|
-
style={{
|
450
|
-
overflow: 'hidden',
|
451
|
-
resize: 'none',
|
452
|
-
padding: '0.25rem',
|
453
|
-
}}
|
454
|
-
/>
|
455
|
-
) : (
|
456
|
-
<div
|
457
|
-
onClick={handleDescriptionEdit}
|
458
|
-
title="Click to edit access point description"
|
459
|
-
className="access-point-editor__description-container"
|
460
|
-
>
|
461
|
-
{accessPoint.description ? (
|
462
|
-
<HoverTextArea
|
463
|
-
text={accessPoint.description}
|
464
|
-
handleMouseOver={handleMouseOver}
|
465
|
-
handleMouseOut={handleMouseOut}
|
466
|
-
/>
|
467
|
-
) : (
|
468
|
-
<div
|
469
|
-
className="access-point-editor__group-container__description--warning"
|
470
|
-
onMouseOver={handleMouseOver}
|
471
|
-
onMouseOut={handleMouseOut}
|
472
|
-
>
|
473
|
-
<WarningIcon />
|
474
|
-
{AP_EMPTY_DESC_WARNING}
|
475
|
-
</div>
|
476
|
-
)}
|
477
|
-
{isHovering && hoverIcon()}
|
478
|
-
</div>
|
479
|
-
)}
|
480
443
|
<div className="access-point-editor__info">
|
444
|
+
<div className="access-point-editor__reproducible">
|
445
|
+
<Checkbox
|
446
|
+
disabled={groupState.state.isReadOnly}
|
447
|
+
checked={accessPoint.reproducible ?? false}
|
448
|
+
onChange={() =>
|
449
|
+
accessPoint_setReproducible(
|
450
|
+
accessPoint,
|
451
|
+
!accessPoint.reproducible,
|
452
|
+
)
|
453
|
+
}
|
454
|
+
size="small"
|
455
|
+
style={{ padding: 0, margin: 0 }}
|
456
|
+
/>
|
457
|
+
<Tooltip
|
458
|
+
title="This access point is reproducible based on a specific Lakehouse batch in time"
|
459
|
+
arrow={true}
|
460
|
+
placement={'top'}
|
461
|
+
>
|
462
|
+
<div>Reproducible</div>
|
463
|
+
</Tooltip>
|
464
|
+
</div>
|
481
465
|
{editorStore.applicationStore.config.options
|
482
466
|
.dataProductConfig && (
|
483
467
|
<AccessPointClassification
|
@@ -485,7 +469,6 @@ export const LakehouseDataProductAcccessPointEditor = observer(
|
|
485
469
|
groupState={groupState}
|
486
470
|
/>
|
487
471
|
)}
|
488
|
-
|
489
472
|
<div
|
490
473
|
className={clsx('access-point-editor__type')}
|
491
474
|
title={'Change target environment'}
|
@@ -528,6 +511,46 @@ export const LakehouseDataProductAcccessPointEditor = observer(
|
|
528
511
|
</div>
|
529
512
|
</div>
|
530
513
|
</div>
|
514
|
+
{editingDescription ? (
|
515
|
+
<textarea
|
516
|
+
className="panel__content__form__section__input"
|
517
|
+
spellCheck={false}
|
518
|
+
value={accessPoint.description ?? ''}
|
519
|
+
onChange={updateAccessPointDescription}
|
520
|
+
placeholder="Access Point description"
|
521
|
+
onBlur={handleDescriptionBlur}
|
522
|
+
style={{
|
523
|
+
overflow: 'hidden',
|
524
|
+
resize: 'none',
|
525
|
+
padding: '0.25rem',
|
526
|
+
marginLeft: '0.5rem',
|
527
|
+
}}
|
528
|
+
/>
|
529
|
+
) : (
|
530
|
+
<div
|
531
|
+
onClick={handleDescriptionEdit}
|
532
|
+
title="Click to edit access point description"
|
533
|
+
className="access-point-editor__description-container"
|
534
|
+
>
|
535
|
+
{accessPoint.description ? (
|
536
|
+
<HoverTextArea
|
537
|
+
text={accessPoint.description}
|
538
|
+
handleMouseOver={handleMouseOver}
|
539
|
+
handleMouseOut={handleMouseOut}
|
540
|
+
/>
|
541
|
+
) : (
|
542
|
+
<div
|
543
|
+
className="access-point-editor__group-container__description--warning"
|
544
|
+
onMouseOver={handleMouseOver}
|
545
|
+
onMouseOut={handleMouseOut}
|
546
|
+
>
|
547
|
+
<WarningIcon />
|
548
|
+
{AP_EMPTY_DESC_WARNING}
|
549
|
+
</div>
|
550
|
+
)}
|
551
|
+
{isHovering && hoverIcon()}
|
552
|
+
</div>
|
553
|
+
)}
|
531
554
|
<div className="access-point-editor__content">
|
532
555
|
<div className="access-point-editor__generic-entry">
|
533
556
|
<div className="access-point-editor__entry__container">
|
@@ -841,7 +864,10 @@ const AccessPointGroupEditor = observer(
|
|
841
864
|
</PanelHeaderActions>
|
842
865
|
</PanelHeader>
|
843
866
|
{groupState.accessPointStates.length === 0 && (
|
844
|
-
<div
|
867
|
+
<div
|
868
|
+
className="access-point-editor__group-container__description--warning"
|
869
|
+
style={{ color: 'var(--color-red-300)' }}
|
870
|
+
>
|
845
871
|
<WarningIcon />
|
846
872
|
This group needs at least one access point defined.
|
847
873
|
</div>
|
package/src/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.ts
CHANGED
@@ -120,6 +120,10 @@ export class AccessPointLambdaEditorState extends LambdaEditorState {
|
|
120
120
|
return this.val.accessPoint.id;
|
121
121
|
}
|
122
122
|
|
123
|
+
override get fullLambdaString(): string {
|
124
|
+
return `${this.lambdaString}`;
|
125
|
+
}
|
126
|
+
|
123
127
|
*convertLambdaGrammarStringToObject(): GeneratorFn<void> {
|
124
128
|
const emptyLambda = stub_RawLambda();
|
125
129
|
if (this.lambdaString) {
|
@@ -431,9 +435,16 @@ export class DataProductEditorState extends ElementEditorState {
|
|
431
435
|
)) as Map<string, string>;
|
432
436
|
isolatedLambdas.forEach((grammarText, key) => {
|
433
437
|
const purePropertyMapping = index.get(key);
|
434
|
-
|
435
|
-
purePropertyMapping
|
436
|
-
|
438
|
+
if (
|
439
|
+
purePropertyMapping?.lambdaState.lambdaPrefix &&
|
440
|
+
grammarText.startsWith(purePropertyMapping.lambdaState.lambdaPrefix)
|
441
|
+
) {
|
442
|
+
purePropertyMapping.lambdaState.setLambdaString(
|
443
|
+
purePropertyMapping.lambdaState.extractLambdaString(grammarText),
|
444
|
+
);
|
445
|
+
} else {
|
446
|
+
purePropertyMapping?.lambdaState.setLambdaString(grammarText);
|
447
|
+
}
|
437
448
|
});
|
438
449
|
} catch (error) {
|
439
450
|
assertErrorThrown(error);
|
@@ -47,6 +47,12 @@ export const accessPoint_setClassification = action(
|
|
47
47
|
},
|
48
48
|
);
|
49
49
|
|
50
|
+
export const accessPoint_setReproducible = action(
|
51
|
+
(accessPoint: LakehouseAccessPoint, reproducible: boolean | undefined) => {
|
52
|
+
accessPoint.reproducible = reproducible;
|
53
|
+
},
|
54
|
+
);
|
55
|
+
|
50
56
|
export const accessPointGroup_setDescription = action(
|
51
57
|
(group: AccessPointGroup, description: string) => {
|
52
58
|
group.description = description;
|