Skip to content

Commit 1fb04a6

Browse files
authored
Fix Entity instance in collapse mode, fix and improve tooltip (#195)
* fix tooltip * add samm version and aspect version in tooltip * fix github action error * fix entity intance name when collapsed * remove console logs * fix code review comments
1 parent 1283d56 commit 1fb04a6

File tree

7 files changed

+44
-10
lines changed

7 files changed

+44
-10
lines changed

core/libs/loader-filters/src/lib/filters/properties-filter.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import {
2323
DefaultUnit,
2424
} from '@ame/meta-model';
2525
import {ArrowStyle, ChildrenArray, FilterLoader, ModelFilter, ModelTree, ModelTreeOptions} from '../models';
26-
import {ShapeGeometry, basicShapeGeometry, circleShapeGeometry} from '@ame/shared';
26+
import {ShapeGeometry, basicShapeGeometry, smallCircleShapeGeometry} from '@ame/shared';
2727
import {MxGraphHelper} from '@ame/mx-graph';
2828
import {Injector} from '@angular/core';
2929
import {ShapeSettingsStateService} from '@ame/editor';
@@ -140,8 +140,8 @@ export class PropertiesFilterLoader implements FilterLoader {
140140
if (element instanceof DefaultAspect) {
141141
return basicShapeGeometry;
142142
}
143-
144-
return element instanceof DefaultProperty ? basicShapeGeometry : circleShapeGeometry;
143+
144+
return element instanceof DefaultProperty ? basicShapeGeometry : smallCircleShapeGeometry;
145145
}
146146

147147
getMxGraphStyle(element: BaseMetaModelElement): string {

core/libs/mx-graph/src/lib/helpers/mx-graph-helper.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ export class MxGraphHelper {
144144
.some(firstEdge =>
145145
graph
146146
.getIncomingEdges(firstEdge.source)
147-
.some(secondEdge => MxGraphHelper.getModelElement(secondEdge.source) instanceof DefaultStructuredValue),
147+
.some(secondEdge => MxGraphHelper.getModelElement(secondEdge.source) instanceof DefaultStructuredValue)
148148
);
149149
}
150150

@@ -332,11 +332,27 @@ export class MxGraphHelper {
332332
title.style.width = cell.geometry.width + 'px';
333333
}
334334
title.title = isSmallShape ? '' : modelElement.name;
335+
335336
title.innerText = modelElement.name?.length > 24 ? modelElement.name?.substring(0, 21) + '...' : modelElement.name;
337+
if (cell.collapsed) {
338+
const isEntityInstance = modelElement instanceof DefaultEntityInstance;
339+
if (isEntityInstance) {
340+
title.innerText = this.formatSmallName(modelElement.name);
341+
}
342+
}
343+
336344
title.classList.add('element-name');
337345
return title;
338346
}
339347

348+
private static formatSmallName(name: string) {
349+
if (name.length < 4) {
350+
return name;
351+
} else {
352+
return name.charAt(0) + '..' + name.charAt(name.length - 1);
353+
}
354+
}
355+
340356
static createPropertiesLabel(cell: mxgraph.mxCell) {
341357
const modelElement = MxGraphHelper.getModelElement(cell);
342358
if (!modelElement) {

core/libs/mx-graph/src/lib/helpers/mx-graph-visitor-helper.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -480,8 +480,14 @@ export class MxGraphVisitorHelper {
480480
const aspectVersionedNamespace = rdfModel.getAspectModelUrn().replace('#', '');
481481
const [elementVersionedNamespace] = modelElement.aspectModelUrn.split('#');
482482

483+
let metaModelVersion = modelElement.metaModelVersion;
484+
if(modelElement instanceof DefaultEntityInstance){
485+
metaModelVersion = modelElement.entity.metaModelVersion;
486+
}
487+
483488
return {
484-
version: modelElement.metaModelVersion,
489+
version: RdfModelUtil.getNamespaceVersionFromRdf(rdfModel.absoluteAspectModelFileName),
490+
sammVersion: metaModelVersion,
485491
namespace: elementNamespace,
486492
external: modelElement.isExternalReference(),
487493
predefined: !!(modelElement as DefaultCharacteristic)?.isPredefined?.(),
@@ -494,4 +500,5 @@ export class MxGraphVisitorHelper {
494500
return null;
495501
}
496502
}
503+
497504
}

core/libs/mx-graph/src/lib/models/model-style.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export enum ModelStyle {
4040
ENTITY = 'entity',
4141
UNIT = 'unit',
4242
TRAIT = 'trait',
43-
ENTITY_VALUE = 'entityValue',
43+
ENTITY_INSTANCE = 'entityInstance',
4444
ABSTRACT_ENTITY = 'abstractEntity',
4545
EVENT = 'event',
4646
}
@@ -76,7 +76,7 @@ export class ModelStyleResolver {
7676
} else if (metaModelElement instanceof DefaultUnit) {
7777
return ModelStyle.UNIT;
7878
} else if (metaModelElement instanceof DefaultEntityInstance) {
79-
return ModelStyle.ENTITY_VALUE;
79+
return ModelStyle.ENTITY_INSTANCE;
8080
} else if (metaModelElement instanceof DefaultEvent) {
8181
return ModelStyle.EVENT;
8282
}
@@ -93,4 +93,5 @@ export interface ModelBaseProperties {
9393
sameNamespace: boolean;
9494
sameVersionedNamespace: boolean;
9595
isAbstract: boolean;
96+
sammVersion: string;
9697
}

core/libs/mx-graph/src/lib/services/mx-graph-setup.service.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ export class MxGraphSetupService {
129129
const table = document.createElement('table');
130130
if (!configuration?.baseProperties.isPredefined) {
131131
table.innerHTML += `<tr><td>Namespace</td><td>${configuration?.baseProperties.namespace}</td></tr>`;
132-
table.innerHTML += `<tr><td>Version</td><td>${configuration?.baseProperties.version}</td></tr>`;
132+
table.innerHTML += `<tr><td>SAMM Version</td><td>${configuration?.baseProperties.sammVersion}</td></tr>`;
133+
table.innerHTML += `<tr><td>Model Version</td><td>${configuration?.baseProperties.version}</td></tr>`;
133134

134135
if (configuration?.baseProperties.fileName) {
135136
table.innerHTML += `<tr><td>File</td><td>${configuration?.baseProperties.fileName}</td></tr>`;

core/libs/mx-graph/src/lib/services/mx-graph.service.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,7 @@ export class MxGraphService {
320320
if (MxGraphHelper.isComplexEnumeration(modelElement)) {
321321
this.mxGraphShapeOverlayService.removeOverlay(cell, MxGraphHelper.getRightOverlayButton(cell));
322322
}
323+
323324
cell.overlays?.forEach(overlay => {
324325
overlay.image.width = overlayGeometry.collapsedWidth;
325326
overlay.image.height = overlayGeometry.collapsedHeight;

core/libs/shared/src/lib/constants/shape-geometry.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*/
1313

1414
export type ShapeGeometry = {
15-
type: 'basic' | 'circle' | 'small' | 'overlay';
15+
type: 'basic' | 'circle' | 'small' | 'overlay'| 'smallCircle';
1616
expandedWith: number;
1717
expandedHeight: number;
1818
collapsedWidth: number;
@@ -40,7 +40,7 @@ export const smallBasicShapeGeometry: ShapeGeometry = {
4040
type: 'small',
4141
expandedWith: 80,
4242
expandedHeight: 35,
43-
collapsedWidth: 30,
43+
collapsedWidth: 46,
4444
collapsedHeight: 30,
4545
};
4646

@@ -52,6 +52,14 @@ export const overlayGeometry: ShapeGeometry = {
5252
collapsedHeight: 16,
5353
};
5454

55+
export const smallCircleShapeGeometry: ShapeGeometry = {
56+
type: 'smallCircle',
57+
expandedWith: 45,
58+
expandedHeight: 45,
59+
collapsedWidth: 20,
60+
collapsedHeight: 20,
61+
};
62+
5563
export enum ModelHierarchicalLayout {
5664
expandedIntraCellSpacing = 30,
5765
expandedInterRankCellSpacing = 30,

0 commit comments

Comments
 (0)