@finos/legend-extension-dsl-diagram 1.0.28 → 1.0.29
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/DiagramRenderer.d.ts +1 -1
- package/lib/DiagramRenderer.d.ts.map +1 -1
- package/lib/DiagramRenderer.js +52 -51
- package/lib/DiagramRenderer.js.map +1 -1
- package/lib/components/studio/DiagramEditor.d.ts.map +1 -1
- package/lib/components/studio/DiagramEditor.js +4 -3
- package/lib/components/studio/DiagramEditor.js.map +1 -1
- package/lib/helpers/DiagramHelper.d.ts.map +1 -1
- package/lib/helpers/DiagramHelper.js +4 -3
- package/lib/helpers/DiagramHelper.js.map +1 -1
- package/lib/index.css +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassView.d.ts +0 -3
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassView.d.ts.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassView.js +1 -13
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassView.js.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassViewReference.d.ts +0 -1
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassViewReference.d.ts.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassViewReference.js +1 -6
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassViewReference.js.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_Diagram.d.ts +0 -11
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_Diagram.d.ts.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_Diagram.js +2 -46
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_Diagram.js.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_GraphModifierHelper.d.ts +35 -0
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_GraphModifierHelper.d.ts.map +1 -0
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_GraphModifierHelper.js +118 -0
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_GraphModifierHelper.js.map +1 -0
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipEdgeView.d.ts +0 -2
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipEdgeView.d.ts.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipEdgeView.js +1 -9
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipEdgeView.js.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipView.d.ts +0 -17
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipView.d.ts.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipView.js +6 -109
- package/lib/models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipView.js.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/diagram/geometry/DSLDiagram_PositionedRectangle.d.ts +0 -8
- package/lib/models/metamodels/pure/packageableElements/diagram/geometry/DSLDiagram_PositionedRectangle.d.ts.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/diagram/geometry/DSLDiagram_PositionedRectangle.js +1 -16
- package/lib/models/metamodels/pure/packageableElements/diagram/geometry/DSLDiagram_PositionedRectangle.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/V1_DSLDiagram_GraphBuilderHelper.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/V1_DSLDiagram_GraphBuilderHelper.js +3 -2
- package/lib/models/protocols/pure/v1/transformation/pureGraph/V1_DSLDiagram_GraphBuilderHelper.js.map +1 -1
- package/lib/package.json +4 -4
- package/lib/stores/studio/DSLDiagram_ModifierHelper.d.ts +54 -0
- package/lib/stores/studio/DSLDiagram_ModifierHelper.d.ts.map +1 -0
- package/lib/stores/studio/DSLDiagram_ModifierHelper.js +87 -0
- package/lib/stores/studio/DSLDiagram_ModifierHelper.js.map +1 -0
- package/package.json +10 -10
- package/src/DiagramRenderer.ts +122 -54
- package/src/components/studio/DiagramEditor.tsx +8 -3
- package/src/helpers/DiagramHelper.ts +4 -3
- package/src/index.ts +2 -4
- package/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassView.ts +1 -14
- package/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassViewReference.ts +1 -7
- package/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_Diagram.ts +2 -52
- package/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_GraphModifierHelper.ts +165 -0
- package/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipEdgeView.ts +1 -10
- package/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipView.ts +6 -147
- package/src/models/metamodels/pure/packageableElements/diagram/geometry/DSLDiagram_PositionedRectangle.ts +1 -17
- package/src/models/protocols/pure/v1/transformation/pureGraph/V1_DSLDiagram_GraphBuilderHelper.ts +3 -2
- package/src/stores/studio/DSLDiagram_ModifierHelper.ts +148 -0
- package/tsconfig.json +2 -0
package/src/DiagramRenderer.ts
CHANGED
@@ -45,14 +45,37 @@ import { PositionedRectangle } from './models/metamodels/pure/packageableElement
|
|
45
45
|
import { ClassView } from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassView';
|
46
46
|
import type { PropertyHolderView } from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_PropertyHolderView';
|
47
47
|
import { GeneralizationView } from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_GeneralizationView';
|
48
|
-
import {
|
49
|
-
type RelationshipView,
|
50
|
-
manageInsidePointsDynamically,
|
51
|
-
} from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipView';
|
48
|
+
import type { RelationshipView } from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipView';
|
52
49
|
import { PropertyView } from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_PropertyView';
|
53
50
|
import { getElementPosition } from './helpers/DiagramHelper';
|
54
51
|
import { AssociationView } from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_AssociationView';
|
55
52
|
import { class_addProperty, class_addSuperType } from '@finos/legend-studio';
|
53
|
+
import {
|
54
|
+
classView_setHideProperties,
|
55
|
+
classView_setHideStereotypes,
|
56
|
+
classView_setHideTaggedValues,
|
57
|
+
diagram_addClassView,
|
58
|
+
diagram_addGeneralizationView,
|
59
|
+
diagram_addPropertyView,
|
60
|
+
diagram_deleteAssociationView,
|
61
|
+
diagram_deleteClassView,
|
62
|
+
diagram_deleteGeneralizationView,
|
63
|
+
diagram_deletePropertyView,
|
64
|
+
diagram_setAssociationViews,
|
65
|
+
diagram_setClassViews,
|
66
|
+
diagram_setGeneralizationViews,
|
67
|
+
diagram_setPropertyViews,
|
68
|
+
findOrBuildPoint,
|
69
|
+
positionedRectangle_forceRefreshHash,
|
70
|
+
positionedRectangle_setPosition,
|
71
|
+
positionedRectangle_setRectangle,
|
72
|
+
relationShipEdgeView_setOffsetX,
|
73
|
+
relationShipEdgeView_setOffsetY,
|
74
|
+
relationshipView_changePoint,
|
75
|
+
relationView_possiblyFlattenPath,
|
76
|
+
relationView_setPath,
|
77
|
+
} from './stores/studio/DSLDiagram_ModifierHelper';
|
78
|
+
import { _relationView_manageInsidePointsDynamically } from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_GraphModifierHelper';
|
56
79
|
|
57
80
|
export enum DIAGRAM_INTERACTION_MODE {
|
58
81
|
LAYOUT,
|
@@ -601,7 +624,7 @@ export class DiagramRenderer {
|
|
601
624
|
startClassView,
|
602
625
|
targetClassView,
|
603
626
|
);
|
604
|
-
this.diagram
|
627
|
+
diagram_addGeneralizationView(this.diagram, gview);
|
605
628
|
return gview;
|
606
629
|
}
|
607
630
|
return undefined;
|
@@ -632,7 +655,7 @@ export class DiagramRenderer {
|
|
632
655
|
startClassView,
|
633
656
|
targetClassView,
|
634
657
|
);
|
635
|
-
this.diagram
|
658
|
+
diagram_addPropertyView(this.diagram, pView);
|
636
659
|
return pView;
|
637
660
|
}
|
638
661
|
return undefined;
|
@@ -724,7 +747,7 @@ export class DiagramRenderer {
|
|
724
747
|
.concat(this.diagram.propertyViews);
|
725
748
|
for (const relationshipView of relationshipViews) {
|
726
749
|
let fullPath = relationshipView.buildFullPath();
|
727
|
-
fullPath =
|
750
|
+
fullPath = _relationView_manageInsidePointsDynamically(
|
728
751
|
fullPath,
|
729
752
|
relationshipView.from.classView.value,
|
730
753
|
relationshipView.to.classView.value,
|
@@ -860,7 +883,8 @@ export class DiagramRenderer {
|
|
860
883
|
id,
|
861
884
|
PackageableElementExplicitReference.create(addedClass),
|
862
885
|
);
|
863
|
-
|
886
|
+
positionedRectangle_setPosition(
|
887
|
+
newClassView,
|
864
888
|
classViewModelCoordinate ??
|
865
889
|
this.canvasCoordinateToModelCoordinate(
|
866
890
|
new Point(
|
@@ -871,10 +895,10 @@ export class DiagramRenderer {
|
|
871
895
|
),
|
872
896
|
),
|
873
897
|
);
|
874
|
-
this.diagram
|
898
|
+
diagram_addClassView(this.diagram, newClassView);
|
875
899
|
// Refresh hash since ClassView position is not observable
|
876
900
|
// NOTE: here we refresh after adding the class view to the diagram, that way the diagram hash is refreshed
|
877
|
-
newClassView
|
901
|
+
positionedRectangle_forceRefreshHash(newClassView);
|
878
902
|
this.diagram.classViews
|
879
903
|
.filter((classView) => classView.class.value !== addedClass)
|
880
904
|
.forEach((classView) => {
|
@@ -885,7 +909,8 @@ export class DiagramRenderer {
|
|
885
909
|
.map((generalization) => generalization.value.rawType)
|
886
910
|
.includes(_class)
|
887
911
|
) {
|
888
|
-
|
912
|
+
diagram_addGeneralizationView(
|
913
|
+
this.diagram,
|
889
914
|
new GeneralizationView(this.diagram, newClassView, classView),
|
890
915
|
);
|
891
916
|
}
|
@@ -894,14 +919,18 @@ export class DiagramRenderer {
|
|
894
919
|
.map((generalization) => generalization.value.rawType)
|
895
920
|
.includes(addedClass)
|
896
921
|
) {
|
897
|
-
|
922
|
+
diagram_addGeneralizationView(
|
923
|
+
this.diagram,
|
924
|
+
|
898
925
|
new GeneralizationView(this.diagram, classView, newClassView),
|
899
926
|
);
|
900
927
|
}
|
901
928
|
// Add property view
|
902
929
|
addedClass.getAllOwnedProperties().forEach((property) => {
|
903
930
|
if (property.genericType.value.rawType === _class) {
|
904
|
-
|
931
|
+
diagram_addPropertyView(
|
932
|
+
this.diagram,
|
933
|
+
|
905
934
|
new PropertyView(
|
906
935
|
this.diagram,
|
907
936
|
PropertyExplicitReference.create(property),
|
@@ -913,7 +942,8 @@ export class DiagramRenderer {
|
|
913
942
|
});
|
914
943
|
_class.getAllOwnedProperties().forEach((property) => {
|
915
944
|
if (property.genericType.value.rawType === addedClass) {
|
916
|
-
|
945
|
+
diagram_addPropertyView(
|
946
|
+
this.diagram,
|
917
947
|
new PropertyView(
|
918
948
|
this.diagram,
|
919
949
|
PropertyExplicitReference.create(property),
|
@@ -1452,7 +1482,7 @@ export class DiagramRenderer {
|
|
1452
1482
|
classView.rectangle.height > classMinHeight
|
1453
1483
|
? classView.rectangle.height
|
1454
1484
|
: classMinHeight;
|
1455
|
-
classView
|
1485
|
+
positionedRectangle_setRectangle(classView, new Rectangle(width, height));
|
1456
1486
|
}
|
1457
1487
|
}
|
1458
1488
|
|
@@ -1630,7 +1660,7 @@ export class DiagramRenderer {
|
|
1630
1660
|
// NOTE: force hash reload when we redraw class view; this would help with cases where
|
1631
1661
|
// we auto add new properties to the class view, causing the box to expand, hence we need
|
1632
1662
|
// to recompute hash
|
1633
|
-
classView
|
1663
|
+
positionedRectangle_forceRefreshHash(classView);
|
1634
1664
|
}
|
1635
1665
|
|
1636
1666
|
private drawLinePropertyNameAndMultiplicity(
|
@@ -1794,7 +1824,7 @@ export class DiagramRenderer {
|
|
1794
1824
|
|
1795
1825
|
private drawPropertyOrAssociation(propertyView: PropertyView): void {
|
1796
1826
|
let fullPath = propertyView.buildFullPath();
|
1797
|
-
fullPath =
|
1827
|
+
fullPath = _relationView_manageInsidePointsDynamically(
|
1798
1828
|
fullPath,
|
1799
1829
|
propertyView.from.classView.value,
|
1800
1830
|
propertyView.to.classView.value,
|
@@ -1885,7 +1915,7 @@ export class DiagramRenderer {
|
|
1885
1915
|
private drawInheritance(inheritance: GeneralizationView): void {
|
1886
1916
|
const rect = inheritance.to.classView.value.rectangle;
|
1887
1917
|
let fullPath = inheritance.buildFullPath();
|
1888
|
-
fullPath =
|
1918
|
+
fullPath = _relationView_manageInsidePointsDynamically(
|
1889
1919
|
fullPath,
|
1890
1920
|
inheritance.from.classView.value,
|
1891
1921
|
inheritance.to.classView.value,
|
@@ -2043,7 +2073,8 @@ export class DiagramRenderer {
|
|
2043
2073
|
selectedClasses.indexOf(assoView.from.classView.value) !== -1 &&
|
2044
2074
|
selectedClasses.indexOf(assoView.to.classView.value) !== -1
|
2045
2075
|
) {
|
2046
|
-
|
2076
|
+
relationView_setPath(
|
2077
|
+
assoView,
|
2047
2078
|
assoView.path.map(
|
2048
2079
|
(point) =>
|
2049
2080
|
new Point(point.x - newMovingDeltaX, point.y - newMovingDeltaY),
|
@@ -2058,8 +2089,10 @@ export class DiagramRenderer {
|
|
2058
2089
|
if ('Delete' === e.key) {
|
2059
2090
|
if (!this.isReadOnly) {
|
2060
2091
|
this.selectedClasses.forEach((classView) => {
|
2061
|
-
this.diagram
|
2062
|
-
|
2092
|
+
diagram_deleteClassView(this.diagram, classView);
|
2093
|
+
diagram_setAssociationViews(
|
2094
|
+
this.diagram,
|
2095
|
+
|
2063
2096
|
this.diagram.associationViews.filter(
|
2064
2097
|
(associationView) =>
|
2065
2098
|
!(
|
@@ -2068,7 +2101,9 @@ export class DiagramRenderer {
|
|
2068
2101
|
),
|
2069
2102
|
),
|
2070
2103
|
);
|
2071
|
-
|
2104
|
+
diagram_setGeneralizationViews(
|
2105
|
+
this.diagram,
|
2106
|
+
|
2072
2107
|
this.diagram.generalizationViews.filter(
|
2073
2108
|
(generalizationView) =>
|
2074
2109
|
!(
|
@@ -2077,7 +2112,9 @@ export class DiagramRenderer {
|
|
2077
2112
|
),
|
2078
2113
|
),
|
2079
2114
|
);
|
2080
|
-
|
2115
|
+
diagram_setPropertyViews(
|
2116
|
+
this.diagram,
|
2117
|
+
|
2081
2118
|
this.diagram.propertyViews.filter(
|
2082
2119
|
(propertyView) =>
|
2083
2120
|
!(
|
@@ -2088,11 +2125,16 @@ export class DiagramRenderer {
|
|
2088
2125
|
);
|
2089
2126
|
});
|
2090
2127
|
if (this.selectedPropertyOrAssociation instanceof AssociationView) {
|
2091
|
-
|
2128
|
+
diagram_deleteAssociationView(
|
2129
|
+
this.diagram,
|
2130
|
+
|
2092
2131
|
this.selectedPropertyOrAssociation,
|
2093
2132
|
);
|
2094
2133
|
} else if (this.selectedPropertyOrAssociation instanceof PropertyView) {
|
2095
|
-
|
2134
|
+
diagram_deletePropertyView(
|
2135
|
+
this.diagram,
|
2136
|
+
this.selectedPropertyOrAssociation,
|
2137
|
+
);
|
2096
2138
|
}
|
2097
2139
|
if (this.selectedInheritance) {
|
2098
2140
|
if (
|
@@ -2101,7 +2143,10 @@ export class DiagramRenderer {
|
|
2101
2143
|
generalizationView === this.selectedInheritance,
|
2102
2144
|
)
|
2103
2145
|
) {
|
2104
|
-
|
2146
|
+
diagram_deleteGeneralizationView(
|
2147
|
+
this.diagram,
|
2148
|
+
this.selectedInheritance,
|
2149
|
+
);
|
2105
2150
|
}
|
2106
2151
|
}
|
2107
2152
|
this.selectedClasses = [];
|
@@ -2208,7 +2253,7 @@ export class DiagramRenderer {
|
|
2208
2253
|
if (!this.isReadOnly) {
|
2209
2254
|
if (this.selectedClasses.length !== 0) {
|
2210
2255
|
this.selectedClasses.forEach((classView) => {
|
2211
|
-
classView
|
2256
|
+
classView_setHideProperties(classView, !classView.hideProperties);
|
2212
2257
|
});
|
2213
2258
|
this.drawScreen();
|
2214
2259
|
}
|
@@ -2219,7 +2264,7 @@ export class DiagramRenderer {
|
|
2219
2264
|
if (!this.isReadOnly) {
|
2220
2265
|
if (this.selectedClasses.length !== 0) {
|
2221
2266
|
this.selectedClasses.forEach((classView) => {
|
2222
|
-
classView
|
2267
|
+
classView_setHideStereotypes(classView, !classView.hideStereotypes);
|
2223
2268
|
});
|
2224
2269
|
this.drawScreen();
|
2225
2270
|
}
|
@@ -2230,7 +2275,10 @@ export class DiagramRenderer {
|
|
2230
2275
|
if (!this.isReadOnly) {
|
2231
2276
|
if (this.selectedClasses.length !== 0) {
|
2232
2277
|
this.selectedClasses.forEach((classView) => {
|
2233
|
-
|
2278
|
+
classView_setHideTaggedValues(
|
2279
|
+
classView,
|
2280
|
+
!classView.hideTaggedValues,
|
2281
|
+
);
|
2234
2282
|
});
|
2235
2283
|
this.drawScreen();
|
2236
2284
|
}
|
@@ -2285,8 +2333,8 @@ export class DiagramRenderer {
|
|
2285
2333
|
1,
|
2286
2334
|
);
|
2287
2335
|
const res = this.layoutTaxonomy(views, this.diagram, false, true);
|
2288
|
-
res[0].forEach((cv) => this.diagram
|
2289
|
-
res[1].forEach((gv) => this.diagram
|
2336
|
+
res[0].forEach((cv) => diagram_addClassView(this.diagram, cv));
|
2337
|
+
res[1].forEach((gv) => diagram_addGeneralizationView(this.diagram, gv));
|
2290
2338
|
|
2291
2339
|
this.drawScreen();
|
2292
2340
|
}
|
@@ -2318,8 +2366,8 @@ export class DiagramRenderer {
|
|
2318
2366
|
false,
|
2319
2367
|
false,
|
2320
2368
|
);
|
2321
|
-
res[0].forEach((cv) => this.diagram
|
2322
|
-
res[1].forEach((gv) => this.diagram
|
2369
|
+
res[0].forEach((cv) => diagram_addClassView(this.diagram, cv));
|
2370
|
+
res[1].forEach((gv) => diagram_addGeneralizationView(this.diagram, gv));
|
2323
2371
|
}
|
2324
2372
|
|
2325
2373
|
this.drawScreen();
|
@@ -2331,13 +2379,13 @@ export class DiagramRenderer {
|
|
2331
2379
|
switch (this.interactionMode) {
|
2332
2380
|
case DIAGRAM_INTERACTION_MODE.LAYOUT: {
|
2333
2381
|
this.diagram.generalizationViews.forEach((generalizationView) =>
|
2334
|
-
generalizationView
|
2382
|
+
relationView_possiblyFlattenPath(generalizationView),
|
2335
2383
|
);
|
2336
2384
|
this.diagram.associationViews.forEach((associationView) =>
|
2337
|
-
associationView
|
2385
|
+
relationView_possiblyFlattenPath(associationView),
|
2338
2386
|
);
|
2339
2387
|
this.diagram.propertyViews.forEach((propertyView) =>
|
2340
|
-
propertyView
|
2388
|
+
relationView_possiblyFlattenPath(propertyView),
|
2341
2389
|
);
|
2342
2390
|
break;
|
2343
2391
|
}
|
@@ -2425,28 +2473,32 @@ export class DiagramRenderer {
|
|
2425
2473
|
);
|
2426
2474
|
|
2427
2475
|
if (gview) {
|
2428
|
-
|
2476
|
+
relationShipEdgeView_setOffsetX(
|
2477
|
+
gview.from,
|
2429
2478
|
-(
|
2430
2479
|
this.startClassView.position.x +
|
2431
2480
|
this.startClassView.rectangle.width / 2 -
|
2432
2481
|
this.selectionStart.x
|
2433
2482
|
),
|
2434
2483
|
);
|
2435
|
-
|
2484
|
+
relationShipEdgeView_setOffsetY(
|
2485
|
+
gview.from,
|
2436
2486
|
-(
|
2437
2487
|
this.startClassView.position.y +
|
2438
2488
|
this.startClassView.rectangle.height / 2 -
|
2439
2489
|
this.selectionStart.y
|
2440
2490
|
),
|
2441
2491
|
);
|
2442
|
-
|
2492
|
+
relationShipEdgeView_setOffsetX(
|
2493
|
+
gview.to,
|
2443
2494
|
-(
|
2444
2495
|
targetClassView.position.x +
|
2445
2496
|
targetClassView.rectangle.width / 2 -
|
2446
2497
|
eventPointInModelCoordinate.x
|
2447
2498
|
),
|
2448
2499
|
);
|
2449
|
-
|
2500
|
+
relationShipEdgeView_setOffsetY(
|
2501
|
+
gview.to,
|
2450
2502
|
-(
|
2451
2503
|
targetClassView.position.y +
|
2452
2504
|
targetClassView.rectangle.height / 2 -
|
@@ -2591,7 +2643,8 @@ export class DiagramRenderer {
|
|
2591
2643
|
this.setSelectedClassCorner(this.diagram.classViews[i]);
|
2592
2644
|
if (!this.isReadOnly) {
|
2593
2645
|
// Bring the class view to front
|
2594
|
-
|
2646
|
+
diagram_setClassViews(
|
2647
|
+
this.diagram,
|
2595
2648
|
this.reorderDiagramDomain(
|
2596
2649
|
guaranteeNonNullable(this.selectedClassCorner),
|
2597
2650
|
this.diagram,
|
@@ -2631,7 +2684,9 @@ export class DiagramRenderer {
|
|
2631
2684
|
}
|
2632
2685
|
if (!this.isReadOnly) {
|
2633
2686
|
// Bring the class view to front
|
2634
|
-
|
2687
|
+
diagram_setClassViews(
|
2688
|
+
this.diagram,
|
2689
|
+
|
2635
2690
|
this.reorderDiagramDomain(
|
2636
2691
|
this.selectedClasses[0] as ClassView,
|
2637
2692
|
this.diagram,
|
@@ -2669,7 +2724,8 @@ export class DiagramRenderer {
|
|
2669
2724
|
// check for selection of inheritance view
|
2670
2725
|
for (const generalizationView of this.diagram
|
2671
2726
|
.generalizationViews) {
|
2672
|
-
const val =
|
2727
|
+
const val = findOrBuildPoint(
|
2728
|
+
generalizationView,
|
2673
2729
|
eventPointInModelCoordinate.x,
|
2674
2730
|
eventPointInModelCoordinate.y,
|
2675
2731
|
this.zoom,
|
@@ -2685,7 +2741,8 @@ export class DiagramRenderer {
|
|
2685
2741
|
// check for selection of association view
|
2686
2742
|
if (!this.selectedPoint) {
|
2687
2743
|
for (const associationView of this.diagram.associationViews) {
|
2688
|
-
const val =
|
2744
|
+
const val = findOrBuildPoint(
|
2745
|
+
associationView,
|
2689
2746
|
eventPointInModelCoordinate.x,
|
2690
2747
|
eventPointInModelCoordinate.y,
|
2691
2748
|
this.zoom,
|
@@ -2702,7 +2759,8 @@ export class DiagramRenderer {
|
|
2702
2759
|
// check for selection of property view
|
2703
2760
|
if (!this.selectedPoint) {
|
2704
2761
|
for (const propertyView of this.diagram.propertyViews) {
|
2705
|
-
const val =
|
2762
|
+
const val = findOrBuildPoint(
|
2763
|
+
propertyView,
|
2706
2764
|
eventPointInModelCoordinate.x,
|
2707
2765
|
eventPointInModelCoordinate.y,
|
2708
2766
|
this.zoom,
|
@@ -2810,7 +2868,8 @@ export class DiagramRenderer {
|
|
2810
2868
|
// Resize class view
|
2811
2869
|
if (this.selectedClassCorner) {
|
2812
2870
|
// Make sure width and height are in range!
|
2813
|
-
|
2871
|
+
positionedRectangle_setRectangle(
|
2872
|
+
this.selectedClassCorner,
|
2814
2873
|
new Rectangle(
|
2815
2874
|
eventPointInModelCoordinate.x -
|
2816
2875
|
this.selectedClassCorner.position.x,
|
@@ -2819,7 +2878,7 @@ export class DiagramRenderer {
|
|
2819
2878
|
),
|
2820
2879
|
);
|
2821
2880
|
// Refresh hash since ClassView rectangle is not observable
|
2822
|
-
this.selectedClassCorner
|
2881
|
+
positionedRectangle_forceRefreshHash(this.selectedClassCorner);
|
2823
2882
|
this.drawClassView(this.selectedClassCorner);
|
2824
2883
|
this.drawScreen();
|
2825
2884
|
}
|
@@ -2846,9 +2905,12 @@ export class DiagramRenderer {
|
|
2846
2905
|
(this.clickY - selectedClassOldPosition.oldPos.y);
|
2847
2906
|
newMovingDeltaX = selectedClass.position.x - newMovingX;
|
2848
2907
|
newMovingDeltaY = selectedClass.position.y - newMovingY;
|
2849
|
-
|
2908
|
+
positionedRectangle_setPosition(
|
2909
|
+
selectedClass,
|
2910
|
+
new Point(newMovingX, newMovingY),
|
2911
|
+
);
|
2850
2912
|
// Refresh hash since ClassView position is not observable
|
2851
|
-
selectedClass
|
2913
|
+
positionedRectangle_forceRefreshHash(selectedClass);
|
2852
2914
|
}
|
2853
2915
|
});
|
2854
2916
|
this.potentiallyShiftRelationships(
|
@@ -2876,12 +2938,14 @@ export class DiagramRenderer {
|
|
2876
2938
|
// Change line (add a new point to the line)
|
2877
2939
|
if (this.selectedPoint) {
|
2878
2940
|
if (this.selectedPropertyOrAssociation) {
|
2879
|
-
|
2941
|
+
relationshipView_changePoint(
|
2942
|
+
this.selectedPropertyOrAssociation,
|
2880
2943
|
this.selectedPoint,
|
2881
2944
|
eventPointInModelCoordinate,
|
2882
2945
|
);
|
2883
2946
|
} else if (this.selectedInheritance) {
|
2884
|
-
|
2947
|
+
relationshipView_changePoint(
|
2948
|
+
this.selectedInheritance,
|
2885
2949
|
this.selectedPoint,
|
2886
2950
|
eventPointInModelCoordinate,
|
2887
2951
|
);
|
@@ -3101,7 +3165,7 @@ export class DiagramRenderer {
|
|
3101
3165
|
];
|
3102
3166
|
for (const propertyHolderView of propertyHolderViews) {
|
3103
3167
|
let fullPath = propertyHolderView.buildFullPath();
|
3104
|
-
fullPath =
|
3168
|
+
fullPath = _relationView_manageInsidePointsDynamically(
|
3105
3169
|
fullPath,
|
3106
3170
|
propertyHolderView.from.classView.value,
|
3107
3171
|
propertyHolderView.to.classView.value,
|
@@ -3233,11 +3297,15 @@ export class DiagramRenderer {
|
|
3233
3297
|
|
3234
3298
|
// Set layout of current level
|
3235
3299
|
if (positionInitialClass || currentLevelIndex > 0) {
|
3236
|
-
(
|
3300
|
+
positionedRectangle_setPosition(
|
3301
|
+
levels[0] as ClassView,
|
3302
|
+
new Point(startX, currentLevelY),
|
3303
|
+
);
|
3237
3304
|
levels.forEach((view, idx) => {
|
3238
3305
|
if (idx > 0) {
|
3239
3306
|
const precedent = levels[idx - 1] as ClassView;
|
3240
|
-
|
3307
|
+
positionedRectangle_setPosition(
|
3308
|
+
view,
|
3241
3309
|
new Point(
|
3242
3310
|
precedent.position.x + precedent.rectangle.width + spaceX,
|
3243
3311
|
currentLevelY,
|
@@ -108,6 +108,11 @@ import {
|
|
108
108
|
import { cleanUpDeadReferencesInDiagram } from '../../helpers/DiagramHelper';
|
109
109
|
import { Point } from '../../models/metamodels/pure/packageableElements/diagram/geometry/DSLDiagram_Point';
|
110
110
|
import type { DSLDiagram_LegendStudioPlugin_Extension } from './DSLDiagram_LegendStudioPlugin_Extension';
|
111
|
+
import {
|
112
|
+
classView_setHideProperties,
|
113
|
+
classView_setHideStereotypes,
|
114
|
+
classView_setHideTaggedValues,
|
115
|
+
} from '../../stores/studio/DSLDiagram_ModifierHelper';
|
111
116
|
|
112
117
|
const DiagramEditorContextMenu = observer(
|
113
118
|
forwardRef<
|
@@ -519,21 +524,21 @@ const DiagramEditorClassViewEditor = observer(
|
|
519
524
|
if (isReadOnly) {
|
520
525
|
return;
|
521
526
|
}
|
522
|
-
classView
|
527
|
+
classView_setHideProperties(classView, !classView.hideProperties);
|
523
528
|
diagramEditorState.renderer.render();
|
524
529
|
};
|
525
530
|
const toggleHideTaggedValues = (): void => {
|
526
531
|
if (isReadOnly) {
|
527
532
|
return;
|
528
533
|
}
|
529
|
-
classView
|
534
|
+
classView_setHideTaggedValues(classView, !classView.hideTaggedValues);
|
530
535
|
diagramEditorState.renderer.render();
|
531
536
|
};
|
532
537
|
const toggleHideStereotypes = (): void => {
|
533
538
|
if (isReadOnly) {
|
534
539
|
return;
|
535
540
|
}
|
536
|
-
classView
|
541
|
+
classView_setHideStereotypes(classView, !classView.hideStereotypes);
|
537
542
|
diagramEditorState.renderer.render();
|
538
543
|
};
|
539
544
|
|
@@ -15,6 +15,7 @@
|
|
15
15
|
*/
|
16
16
|
|
17
17
|
import type { PureModel } from '@finos/legend-graph';
|
18
|
+
import { deleteEntry } from '@finos/legend-shared';
|
18
19
|
import type { ClassView } from '../models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassView';
|
19
20
|
import type { Diagram } from '../models/metamodels/pure/packageableElements/diagram/DSLDiagram_Diagram';
|
20
21
|
import { Point } from '../models/metamodels/pure/packageableElements/diagram/geometry/DSLDiagram_Point';
|
@@ -51,14 +52,14 @@ export const cleanUpDeadReferencesInDiagram = (
|
|
51
52
|
.includes(propertyView.property.value.name),
|
52
53
|
);
|
53
54
|
propertyViewsToRemove.forEach((propertyView) =>
|
54
|
-
diagram.
|
55
|
+
deleteEntry(diagram.propertyViews, propertyView),
|
55
56
|
);
|
56
57
|
|
57
58
|
// Fix orphan class views
|
58
59
|
const classViewsToRemove = diagram.classViews.filter(
|
59
60
|
(cv) => !graph.getNullableClass(cv.class.value.path),
|
60
61
|
);
|
61
|
-
classViewsToRemove.forEach((cw) => diagram.
|
62
|
+
classViewsToRemove.forEach((cw) => deleteEntry(diagram.classViews, cw));
|
62
63
|
|
63
64
|
// Fix orphan gneralization views
|
64
65
|
const generalizationViewsToRemove = diagram.generalizationViews.filter(
|
@@ -74,6 +75,6 @@ export const cleanUpDeadReferencesInDiagram = (
|
|
74
75
|
},
|
75
76
|
);
|
76
77
|
generalizationViewsToRemove.forEach((g) =>
|
77
|
-
diagram.
|
78
|
+
deleteEntry(diagram.generalizationViews, g),
|
78
79
|
);
|
79
80
|
};
|
package/src/index.ts
CHANGED
@@ -24,10 +24,8 @@ export { DiagramRenderer, DIAGRAM_INTERACTION_MODE } from './DiagramRenderer';
|
|
24
24
|
|
25
25
|
export { Diagram } from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_Diagram';
|
26
26
|
export { ClassView } from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassView';
|
27
|
-
export {
|
28
|
-
|
29
|
-
manageInsidePointsDynamically,
|
30
|
-
} from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipView';
|
27
|
+
export { RelationshipView } from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipView';
|
28
|
+
export { _relationView_manageInsidePointsDynamically } from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_GraphModifierHelper';
|
31
29
|
export { PropertyHolderView } from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_PropertyHolderView';
|
32
30
|
export { PropertyView } from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_PropertyView';
|
33
31
|
export { AssociationView } from './models/metamodels/pure/packageableElements/diagram/DSLDiagram_AssociationView';
|
@@ -14,7 +14,7 @@
|
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
16
|
|
17
|
-
import { computed, observable,
|
17
|
+
import { computed, observable, makeObservable } from 'mobx';
|
18
18
|
import { hashArray, type Hashable } from '@finos/legend-shared';
|
19
19
|
import { PositionedRectangle } from './geometry/DSLDiagram_PositionedRectangle';
|
20
20
|
import { Rectangle } from './geometry/DSLDiagram_Rectangle';
|
@@ -43,9 +43,6 @@ export class ClassView extends PositionedRectangle implements Hashable {
|
|
43
43
|
hideProperties: observable,
|
44
44
|
hideTaggedValues: observable,
|
45
45
|
hideStereotypes: observable,
|
46
|
-
setHideProperties: action,
|
47
|
-
setHideStereotypes: action,
|
48
|
-
setHideTaggedValues: action,
|
49
46
|
hashCode: computed,
|
50
47
|
});
|
51
48
|
|
@@ -54,16 +51,6 @@ export class ClassView extends PositionedRectangle implements Hashable {
|
|
54
51
|
this.class = _class;
|
55
52
|
}
|
56
53
|
|
57
|
-
setHideProperties(val: boolean): void {
|
58
|
-
this.hideProperties = val;
|
59
|
-
}
|
60
|
-
setHideStereotypes(val: boolean): void {
|
61
|
-
this.hideStereotypes = val;
|
62
|
-
}
|
63
|
-
setHideTaggedValues(val: boolean): void {
|
64
|
-
this.hideTaggedValues = val;
|
65
|
-
}
|
66
|
-
|
67
54
|
override get hashCode(): string {
|
68
55
|
return hashArray([
|
69
56
|
DIAGRAM_HASH_STRUCTURE.CLASS_VIEW,
|
package/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassViewReference.ts
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
16
|
|
17
|
-
import { observable,
|
17
|
+
import { observable, makeObservable } from 'mobx';
|
18
18
|
import type { Diagram } from './DSLDiagram_Diagram';
|
19
19
|
import type { ClassView } from './DSLDiagram_ClassView';
|
20
20
|
import {
|
@@ -36,17 +36,11 @@ export abstract class ClassViewReference extends ReferenceWithOwner {
|
|
36
36
|
|
37
37
|
makeObservable(this, {
|
38
38
|
value: observable,
|
39
|
-
setValue: action,
|
40
39
|
});
|
41
40
|
|
42
41
|
this.ownerReference = ownerReference;
|
43
42
|
this.value = value;
|
44
43
|
}
|
45
|
-
|
46
|
-
setValue(value: ClassView): void {
|
47
|
-
this.value = value;
|
48
|
-
this.ownerReference.value = value.owner;
|
49
|
-
}
|
50
44
|
}
|
51
45
|
|
52
46
|
export class ClassViewExplicitReference extends ClassViewReference {
|