ea 0.6.3 → 0.6.5
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +72 -0
- data/config/themes/119.yml +4 -4
- data/frontend/dist/app.iife.js +8 -8
- data/frontend/src/App.vue +6 -2
- data/frontend/src/components/AppHeader.vue +35 -8
- data/frontend/src/components/AppSidebar.vue +2 -2
- data/frontend/src/components/ClassDetails.vue +103 -120
- data/frontend/src/components/DiagramView.vue +19 -6
- data/frontend/src/components/PackageDetails.vue +67 -26
- data/frontend/src/components/PackageTreeNode.vue +25 -20
- data/frontend/src/components/SearchResults.vue +21 -8
- data/frontend/src/components/WelcomeView.vue +2 -2
- data/frontend/src/stores/dataStore.ts +142 -48
- data/frontend/src/stores/uiStore.ts +3 -4
- data/frontend/src/types.ts +160 -163
- data/lib/ea/model/diagram_connector.rb +9 -0
- data/lib/ea/model/property.rb +6 -1
- data/lib/ea/sources/qea/classifier_builder.rb +3 -1
- data/lib/ea/sources/qea/diagram_builder.rb +91 -9
- data/lib/ea/sources/qea/property_builder.rb +12 -2
- data/lib/ea/spa/output/single_file_strategy.rb +1 -1
- data/lib/ea/spa/projector.rb +108 -6
- data/lib/ea/svg/ea_emitter/compartment/attributes.rb +1 -0
- data/lib/ea/svg/ea_emitter/compartment/constraints.rb +1 -0
- data/lib/ea/svg/ea_emitter/compartment/enum_literals.rb +9 -25
- data/lib/ea/svg/ea_emitter/compartment/header.rb +1 -0
- data/lib/ea/svg/ea_emitter/element/attribute_line_builder.rb +5 -0
- data/lib/ea/svg/ea_emitter/element/attribute_renderer.rb +51 -11
- data/lib/ea/svg/ea_emitter/element/compartment_geometry.rb +12 -10
- data/lib/ea/svg/ea_emitter/element/header_line_provider/name.rb +6 -15
- data/lib/ea/svg/ea_emitter/element/header_line_provider/stereotype_label.rb +25 -8
- data/lib/ea/svg/ea_emitter/element/header_renderer.rb +16 -4
- data/lib/ea/svg/ea_emitter/element/legend_renderer.rb +29 -4
- data/lib/ea/svg/ea_emitter/elements.rb +70 -20
- data/lib/ea/svg/ea_emitter/font_resolver.rb +5 -6
- data/lib/ea/svg/ea_emitter/label/end_label.rb +3 -1
- data/lib/ea/svg/ea_emitter/labels.rb +38 -2
- data/lib/ea/svg/ea_emitter/text_renderer.rb +97 -8
- data/lib/ea/svg/parity/checker.rb +19 -9
- data/lib/ea/svg/parity/corpus_report.rb +83 -0
- data/lib/ea/svg/parity/differ.rb +231 -0
- data/lib/ea/svg/parity.rb +2 -0
- data/lib/ea/theme/definition.rb +3 -3
- data/lib/ea/theme/loader.rb +2 -2
- data/lib/ea/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9d4eb047626f932a223d59f60d7a07ac839542e16f1f08cc1e27f99102592af7
|
|
4
|
+
data.tar.gz: d38407abf49dd80a886269968e944edfa691bc09ca31772556d8d20a89dac294
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 50d22ea166bdb5ee80f60a16d2396dc12b90470d1c9f5048279ee9e9d4233b7778af481f04719618416f59d26ada1ddb750bbda03e8fd9f6c4abc1c279ecd9a1
|
|
7
|
+
data.tar.gz: 9ac1166cc762bce236ca889b8a28f26bb32f3688fa00ce925b53f91adf5999976057aefe91e4b684fdf55adbca352af6bd4f5901e9b5251ba0b29c21999becd5
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,78 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Added
|
|
11
|
+
- `Ea::Model::DiagramConnector` now carries `source_port` / `target_port`
|
|
12
|
+
— the absolute connection points EA docks each connector endpoint
|
|
13
|
+
at, derived from the `t_diagramlinks.Geometry` SX/SY and EX/EY
|
|
14
|
+
offsets by ray-casting from the element center through
|
|
15
|
+
center+offset to the box border (fixes #52; semantics verified
|
|
16
|
+
against EA-published reference SVGs). QEA-built connectors route
|
|
17
|
+
from these ports instead of edge-midpoint guesses, so arrows and
|
|
18
|
+
aggregation diamonds terminate on the element border exactly where
|
|
19
|
+
EA places them.
|
|
20
|
+
- QEA `diagram_builder` maps per-element `font_size` (EA's tenth-point
|
|
21
|
+
`fontsz`, custom values only) and `font_underline` from the
|
|
22
|
+
objectstyle string (fixes #53).
|
|
23
|
+
- `Ea::Svg::Parity::Checker` compares font-family and font-size
|
|
24
|
+
histograms across all emitted text (was: first-text only), so a
|
|
25
|
+
single wrong-size compartment fails the parity check (#54).
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
- QEA diagram coordinates are now mirrored into EA's screen-down
|
|
29
|
+
space at build time (stored t_diagramobjects rects are bottom-up;
|
|
30
|
+
EA's own published SVGs draw the mirrored view). Connector ports,
|
|
31
|
+
Path waypoints, and bend fallbacks flip consistently, so SVG and
|
|
32
|
+
SPA output matches EA's orientation exactly.
|
|
33
|
+
- Element font sizes stored as EA's classic defaults (fontsz 80/90)
|
|
34
|
+
are treated as use-default markers: rendering falls back to the
|
|
35
|
+
7pt theme size EA actually emits, and only genuinely custom sizes
|
|
36
|
+
override it.
|
|
37
|
+
- Attribute multiplicity bounds stored as EA's "n" no longer parse
|
|
38
|
+
to 1 (which silently dropped the `[1..n]` suffix); unbounded
|
|
39
|
+
uppers render as `[1..n]` like EA.
|
|
40
|
+
- `Ea::Svg::EaEmitter::TextRenderer` no longer raises
|
|
41
|
+
`TypeError: can't convert nil into Float` on degenerate placements
|
|
42
|
+
with missing coordinates or font size — it renders at the origin
|
|
43
|
+
with zero-width estimation instead (fixes #51; 297 of 3,702 PLATEAU
|
|
44
|
+
CG3 diagrams previously crashed `ea svg --all` and shipped without
|
|
45
|
+
SVG in SPA output).
|
|
46
|
+
|
|
47
|
+
## [0.6.4]
|
|
48
|
+
|
|
49
|
+
### Added
|
|
50
|
+
- `Ea::Spa::Projector` embeds model statistics (packages, classes,
|
|
51
|
+
attributes, operations, associations, diagrams) in the skeleton
|
|
52
|
+
metadata hash, restoring the stats panels in the SPA sidebar and
|
|
53
|
+
welcome view.
|
|
54
|
+
- Classifier shards now carry relationship stubs — `generalizations`,
|
|
55
|
+
`specializations`, and `associations` (with other-end id, role,
|
|
56
|
+
cardinality, aggregation) — so the SPA can render inheritance and
|
|
57
|
+
association tables without extra round trips.
|
|
58
|
+
- Diagram shards now embed the pre-rendered SVG from
|
|
59
|
+
`Ea::Svg::EaEmitter::Document`, plus skeleton entries for packages
|
|
60
|
+
and diagrams so every shard is addressable by id.
|
|
61
|
+
|
|
62
|
+
### Fixed
|
|
63
|
+
- Sharded SPA output was unbootable: `index.html` published
|
|
64
|
+
`__SPA_SKELETON_URL__`/`__SPA_SEARCH_URL__`/`__SPA_SHARD_BASE__`
|
|
65
|
+
globals that the frontend bundle never read (and no shard loader
|
|
66
|
+
existed). The frontend now boots from skeleton.json + search.json
|
|
67
|
+
and lazily fetches shards with per-request dedupe and bounded
|
|
68
|
+
concurrency.
|
|
69
|
+
- Single-file SPA embedded the skeleton entries under
|
|
70
|
+
`skeletonEntries` while skeleton.json used `entries`; both now
|
|
71
|
+
emit `entries`.
|
|
72
|
+
- Package tree `childIds`/`classifierIds`/`diagramIds` and the
|
|
73
|
+
package shard payload now derive children/classifiers/diagrams
|
|
74
|
+
from the document (`parent_id`, `package_id` links) — the parser
|
|
75
|
+
leaves `Package#sub_package_ids`, `Package#classifier_ids`, and
|
|
76
|
+
`Package#diagram_ids` empty, which flattened the whole tree under
|
|
77
|
+
an empty root.
|
|
78
|
+
- SPA views (class/package/diagram details, tree, search modal) are
|
|
79
|
+
rewired to the `Ea::Model` shard payload shape; the header search
|
|
80
|
+
modal now actually queries the search index.
|
|
81
|
+
|
|
10
82
|
## [0.5.1] — 2026-08-03
|
|
11
83
|
|
|
12
84
|
### Added
|
data/config/themes/119.yml
CHANGED
|
@@ -38,7 +38,7 @@ strokes:
|
|
|
38
38
|
# Text geometry — EA uses GDI text metrics for exact widths. We
|
|
39
39
|
# approximate with character_count * size * factor.
|
|
40
40
|
text_metrics:
|
|
41
|
-
width_factor: 0.
|
|
41
|
+
width_factor: 0.612
|
|
42
42
|
|
|
43
43
|
# Canvas frame insets (EA places element (0,0) at SVG (left, top)).
|
|
44
44
|
canvas:
|
|
@@ -60,10 +60,10 @@ frame:
|
|
|
60
60
|
# diagram byte-diff: element at y=40 size=9, stereotype y=58 →
|
|
61
61
|
# offset = 18 = size * 2; name y=73 → line_h = size + 6).
|
|
62
62
|
compartments:
|
|
63
|
-
header_top_padding:
|
|
63
|
+
header_top_padding: 12
|
|
64
64
|
header_line_offset: 6
|
|
65
65
|
divider_offset: 8
|
|
66
|
-
attr_line_offset:
|
|
66
|
+
attr_line_offset: 6
|
|
67
67
|
attr_first_offset: 7
|
|
68
68
|
op_line_offset: 4
|
|
69
69
|
op_line_offset: 4
|
|
@@ -71,7 +71,7 @@ compartments:
|
|
|
71
71
|
# Attribute text x-offsets within element bounds.
|
|
72
72
|
attribute:
|
|
73
73
|
visibility_x_offset: 5
|
|
74
|
-
content_x_offset:
|
|
74
|
+
content_x_offset: 22
|
|
75
75
|
|
|
76
76
|
# Marker geometry constants.
|
|
77
77
|
markers:
|