ea 0.6.3 → 0.6.4
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 +33 -0
- 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/spa/output/single_file_strategy.rb +1 -1
- data/lib/ea/spa/projector.rb +108 -6
- data/lib/ea/version.rb +1 -1
- metadata +1 -1
data/frontend/src/types.ts
CHANGED
|
@@ -1,221 +1,218 @@
|
|
|
1
|
-
export interface
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export interface SpaStatistics {
|
|
2
|
+
packages: number
|
|
3
|
+
classes: number
|
|
4
|
+
attributes: number
|
|
5
|
+
operations: number
|
|
6
|
+
associations: number
|
|
7
|
+
diagrams: number
|
|
4
8
|
}
|
|
5
9
|
|
|
6
|
-
export interface
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
type: string
|
|
10
|
-
visibility?: string
|
|
11
|
-
owner: string
|
|
12
|
-
ownerName: string
|
|
13
|
-
cardinality?: SpaCardinality
|
|
14
|
-
definition?: string
|
|
15
|
-
stereotypes: string[]
|
|
16
|
-
isStatic: boolean
|
|
17
|
-
isReadOnly: boolean
|
|
18
|
-
defaultValue?: string
|
|
10
|
+
export interface SpaLogoVariant {
|
|
11
|
+
path?: string
|
|
12
|
+
url?: string
|
|
19
13
|
}
|
|
20
14
|
|
|
21
|
-
export interface
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
role?: string
|
|
25
|
-
cardinality?: SpaCardinality
|
|
26
|
-
aggregation?: string
|
|
15
|
+
export interface SpaLogoConfig {
|
|
16
|
+
light: SpaLogoVariant
|
|
17
|
+
dark: SpaLogoVariant
|
|
27
18
|
}
|
|
28
19
|
|
|
29
|
-
export interface
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
name: string
|
|
33
|
-
type: string
|
|
34
|
-
definition?: string
|
|
35
|
-
source?: SpaAssociationEnd
|
|
36
|
-
target?: SpaAssociationEnd
|
|
20
|
+
export interface SpaLogos {
|
|
21
|
+
square?: SpaLogoConfig
|
|
22
|
+
long?: SpaLogoConfig
|
|
37
23
|
}
|
|
38
24
|
|
|
39
|
-
export interface
|
|
40
|
-
|
|
41
|
-
name: string
|
|
42
|
-
visibility?: string
|
|
43
|
-
returnType?: string
|
|
44
|
-
owner: string
|
|
45
|
-
ownerName: string
|
|
46
|
-
parameters: SpaParameter[]
|
|
47
|
-
isStatic: boolean
|
|
48
|
-
isAbstract: boolean
|
|
25
|
+
export interface SpaAppearance {
|
|
26
|
+
logos?: SpaLogos
|
|
49
27
|
}
|
|
50
28
|
|
|
51
|
-
export interface
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
29
|
+
export interface SpaMetadata {
|
|
30
|
+
id?: string
|
|
31
|
+
title?: string
|
|
32
|
+
description?: string
|
|
33
|
+
version?: string
|
|
34
|
+
generated?: string
|
|
35
|
+
generator?: string
|
|
36
|
+
createdDate?: string
|
|
37
|
+
modifiedDate?: string
|
|
38
|
+
sourceFormat?: string
|
|
39
|
+
sourceTool?: string
|
|
40
|
+
sourcePath?: string
|
|
41
|
+
appearance?: SpaAppearance
|
|
42
|
+
statistics?: SpaStatistics
|
|
55
43
|
}
|
|
56
44
|
|
|
57
|
-
export interface
|
|
45
|
+
export interface SpaPackageTreeNode {
|
|
46
|
+
id: string
|
|
58
47
|
name: string
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
attributeId: string
|
|
64
|
-
attribute: SpaAttribute
|
|
65
|
-
inheritedFrom: string
|
|
66
|
-
inheritedFromName: string
|
|
67
|
-
parentOrder: number
|
|
48
|
+
parentId?: string
|
|
49
|
+
childIds: string[]
|
|
50
|
+
classifierIds: string[]
|
|
51
|
+
diagramIds: string[]
|
|
68
52
|
}
|
|
69
53
|
|
|
70
|
-
export interface
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
inheritedFromName: string
|
|
74
|
-
parentOrder: number
|
|
75
|
-
localRole: string
|
|
54
|
+
export interface SpaPackageTree {
|
|
55
|
+
rootIds: string[]
|
|
56
|
+
nodes: SpaPackageTreeNode[]
|
|
76
57
|
}
|
|
77
58
|
|
|
78
|
-
export interface
|
|
59
|
+
export interface SpaSkeletonEntry {
|
|
79
60
|
id: string
|
|
80
|
-
xmiId: string
|
|
81
61
|
name: string
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
definition?: string
|
|
87
|
-
attributes: string[]
|
|
88
|
-
operations: string[]
|
|
89
|
-
associations: string[]
|
|
90
|
-
generalizations: string[]
|
|
91
|
-
specializations: string[]
|
|
92
|
-
isAbstract: boolean
|
|
93
|
-
literals: SpaLiteral[]
|
|
94
|
-
inheritedAttributes: SpaInheritedAttribute[]
|
|
95
|
-
inheritedAssociations: SpaInheritedAssociation[]
|
|
62
|
+
kind: string
|
|
63
|
+
packageId?: string
|
|
64
|
+
qualifiedName?: string
|
|
65
|
+
shardUrl: string
|
|
96
66
|
}
|
|
97
67
|
|
|
98
|
-
export interface
|
|
68
|
+
export interface SpaShard {
|
|
99
69
|
id: string
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
path: string
|
|
103
|
-
definition?: string
|
|
104
|
-
stereotypes: string[]
|
|
105
|
-
classes: string[]
|
|
106
|
-
subPackages: string[]
|
|
107
|
-
diagrams: string[]
|
|
108
|
-
parent?: string
|
|
70
|
+
kind: string
|
|
71
|
+
payload: any
|
|
109
72
|
}
|
|
110
73
|
|
|
111
|
-
export interface
|
|
74
|
+
export interface SpaSearchEntry {
|
|
112
75
|
id: string
|
|
76
|
+
kind: string
|
|
113
77
|
name: string
|
|
114
|
-
|
|
78
|
+
qualifiedName: string
|
|
79
|
+
package: string
|
|
80
|
+
content: string
|
|
81
|
+
boost?: number
|
|
115
82
|
}
|
|
116
83
|
|
|
117
|
-
export interface
|
|
84
|
+
export interface SpaSearchIndex {
|
|
85
|
+
version: string
|
|
86
|
+
fields: string[]
|
|
87
|
+
entries: SpaSearchEntry[]
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export interface SpaAnnotation {
|
|
118
91
|
id: string
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
stereotypes: string[]
|
|
122
|
-
classCount: number
|
|
123
|
-
classes: SpaTreeClassRef[]
|
|
124
|
-
children: SpaPackageTreeNode[]
|
|
92
|
+
kind: string
|
|
93
|
+
body?: string
|
|
125
94
|
}
|
|
126
95
|
|
|
127
|
-
export interface
|
|
96
|
+
export interface SpaPropertyPayload {
|
|
128
97
|
id: string
|
|
129
|
-
xmiId: string
|
|
130
98
|
name: string
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
99
|
+
ownerId: string
|
|
100
|
+
typeName?: string
|
|
101
|
+
qualifiedName?: string
|
|
102
|
+
multiplicityLower?: number
|
|
103
|
+
multiplicityUpper?: number
|
|
104
|
+
isDerived: boolean
|
|
105
|
+
isReadonly: boolean
|
|
106
|
+
visibility?: string
|
|
107
|
+
stereotypeRefs: string[]
|
|
108
|
+
annotations: SpaAnnotation[]
|
|
136
109
|
}
|
|
137
110
|
|
|
138
|
-
export interface
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
111
|
+
export interface SpaParameterPayload {
|
|
112
|
+
name?: string
|
|
113
|
+
direction?: string
|
|
114
|
+
typeName?: string
|
|
115
|
+
multiplicityLower?: number
|
|
116
|
+
multiplicityUpper?: number
|
|
117
|
+
defaultValue?: string
|
|
144
118
|
}
|
|
145
119
|
|
|
146
|
-
export interface
|
|
147
|
-
|
|
148
|
-
|
|
120
|
+
export interface SpaOperationPayload {
|
|
121
|
+
id: string
|
|
122
|
+
name: string
|
|
123
|
+
ownerId: string
|
|
124
|
+
qualifiedName?: string
|
|
125
|
+
returnTypeName?: string
|
|
126
|
+
isStatic: boolean
|
|
127
|
+
isAbstract: boolean
|
|
128
|
+
visibility?: string
|
|
129
|
+
parameters: SpaParameterPayload[]
|
|
130
|
+
stereotypeRefs: string[]
|
|
131
|
+
annotations: SpaAnnotation[]
|
|
149
132
|
}
|
|
150
133
|
|
|
151
|
-
export interface
|
|
152
|
-
|
|
153
|
-
|
|
134
|
+
export interface SpaGeneralizationStub {
|
|
135
|
+
id: string
|
|
136
|
+
targetId: string
|
|
154
137
|
}
|
|
155
138
|
|
|
156
|
-
export interface
|
|
157
|
-
|
|
158
|
-
|
|
139
|
+
export interface SpaAssociationStub {
|
|
140
|
+
id: string
|
|
141
|
+
name?: string
|
|
142
|
+
sourceId: string
|
|
143
|
+
targetId: string
|
|
144
|
+
thisEndRoleName?: string
|
|
145
|
+
otherEndRoleName?: string
|
|
146
|
+
otherEndId: string
|
|
147
|
+
otherEndMultiplicity?: [number?, number?]
|
|
148
|
+
otherEndAggregation?: string
|
|
159
149
|
}
|
|
160
150
|
|
|
161
|
-
export interface
|
|
162
|
-
|
|
151
|
+
export interface SpaEnumerationLiteralPayload {
|
|
152
|
+
id: string
|
|
153
|
+
name: string
|
|
154
|
+
value?: string
|
|
155
|
+
ordinal?: number
|
|
163
156
|
}
|
|
164
157
|
|
|
165
|
-
export interface
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
158
|
+
export interface SpaClassifierPayload {
|
|
159
|
+
id: string
|
|
160
|
+
name: string
|
|
161
|
+
qualifiedName: string
|
|
162
|
+
packageId: string
|
|
163
|
+
packageName?: string
|
|
164
|
+
isAbstract: boolean
|
|
165
|
+
visibility?: string
|
|
166
|
+
modelKind: string
|
|
167
|
+
properties: SpaPropertyPayload[]
|
|
168
|
+
operations: SpaOperationPayload[]
|
|
169
|
+
stereotypeRefs: string[]
|
|
170
|
+
taggedValues: any[]
|
|
171
|
+
constraints: any[]
|
|
172
|
+
annotations: SpaAnnotation[]
|
|
173
|
+
literals?: SpaEnumerationLiteralPayload[]
|
|
174
|
+
generalizations?: SpaGeneralizationStub[]
|
|
175
|
+
specializations?: SpaGeneralizationStub[]
|
|
176
|
+
associations?: SpaAssociationStub[]
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export interface SpaPackagePayload {
|
|
180
|
+
id: string
|
|
181
|
+
name: string
|
|
182
|
+
parentId?: string
|
|
183
|
+
subPackageIds: string[]
|
|
184
|
+
classifierIds: string[]
|
|
185
|
+
diagramIds: string[]
|
|
186
|
+
stereotypeRefs: string[]
|
|
187
|
+
taggedValues: any[]
|
|
188
|
+
annotations: SpaAnnotation[]
|
|
178
189
|
}
|
|
179
190
|
|
|
180
|
-
export interface
|
|
191
|
+
export interface SpaDiagramPayload {
|
|
181
192
|
id: string
|
|
182
|
-
type: string
|
|
183
|
-
entityType: string
|
|
184
|
-
entityId: string
|
|
185
193
|
name: string
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
194
|
+
packageId?: string
|
|
195
|
+
diagramType?: string
|
|
196
|
+
elements: any[]
|
|
197
|
+
connectors: any[]
|
|
198
|
+
annotations: SpaAnnotation[]
|
|
199
|
+
svg?: string
|
|
190
200
|
}
|
|
191
201
|
|
|
192
|
-
export interface
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
documentStore: SpaSearchEntry[]
|
|
197
|
-
pipeline: string[]
|
|
202
|
+
export interface SpaViewExtras {
|
|
203
|
+
ui?: Record<string, any>
|
|
204
|
+
appearance?: SpaAppearance
|
|
205
|
+
diagrams?: { enabled?: boolean }
|
|
198
206
|
}
|
|
199
207
|
|
|
200
|
-
export interface
|
|
208
|
+
export interface SpaSkeleton {
|
|
201
209
|
metadata: SpaMetadata
|
|
202
|
-
packageTree:
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
attributes: Record<string, SpaAttribute>
|
|
206
|
-
associations: Record<string, SpaAssociation>
|
|
207
|
-
operations: Record<string, SpaOperation>
|
|
208
|
-
diagrams: Record<string, SpaDiagram>
|
|
210
|
+
packageTree: SpaPackageTree
|
|
211
|
+
entries: SpaSkeletonEntry[]
|
|
212
|
+
viewExtras?: SpaViewExtras
|
|
209
213
|
}
|
|
210
214
|
|
|
211
|
-
export interface SpaData {
|
|
212
|
-
metadata: SpaMetadata
|
|
213
|
-
packageTree: SpaPackageTreeNode
|
|
214
|
-
packages: Record<string, SpaPackage>
|
|
215
|
-
classes: Record<string, SpaClass>
|
|
216
|
-
attributes: Record<string, SpaAttribute>
|
|
217
|
-
associations: Record<string, SpaAssociation>
|
|
218
|
-
operations: Record<string, SpaOperation>
|
|
219
|
-
diagrams: Record<string, SpaDiagram>
|
|
215
|
+
export interface SpaData extends SpaSkeleton {
|
|
220
216
|
searchIndex: SpaSearchIndex
|
|
217
|
+
shards: SpaShard[]
|
|
221
218
|
}
|
data/lib/ea/spa/projector.rb
CHANGED
|
@@ -76,7 +76,22 @@ module Ea
|
|
|
76
76
|
def metadata_hash
|
|
77
77
|
base = document.metadata
|
|
78
78
|
merged = configuration ? configuration.apply_to_metadata(base) : base
|
|
79
|
-
JSON.parse(merged.to_json)
|
|
79
|
+
hash = JSON.parse(merged.to_json)
|
|
80
|
+
hash["statistics"] = statistics_hash
|
|
81
|
+
hash
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def statistics_hash
|
|
85
|
+
{
|
|
86
|
+
"packages" => document.packages.size,
|
|
87
|
+
"classes" => document.classifiers.size,
|
|
88
|
+
"attributes" => document.classifiers.sum { |c| c.properties.size },
|
|
89
|
+
"operations" => document.classifiers.sum { |c| c.operations.size },
|
|
90
|
+
"associations" => document.relationships.count do |r|
|
|
91
|
+
r.is_a?(Ea::Model::Association)
|
|
92
|
+
end,
|
|
93
|
+
"diagrams" => render_diagrams? ? document.diagrams.size : 0
|
|
94
|
+
}
|
|
80
95
|
end
|
|
81
96
|
|
|
82
97
|
def view_extras
|
|
@@ -84,14 +99,16 @@ module Ea
|
|
|
84
99
|
end
|
|
85
100
|
|
|
86
101
|
def build_package_tree
|
|
102
|
+
sub_ids_by_parent = document.packages.group_by(&:parent_id)
|
|
87
103
|
nodes = document.packages.map do |pkg|
|
|
88
104
|
PackageTreeNode.new(
|
|
89
105
|
id: pkg.id,
|
|
90
106
|
name: pkg.name,
|
|
91
107
|
parent_id: pkg.parent_id,
|
|
92
|
-
child_ids: pkg.sub_package_ids
|
|
108
|
+
child_ids: (pkg.sub_package_ids +
|
|
109
|
+
(sub_ids_by_parent[pkg.id] || []).map(&:id)).uniq,
|
|
93
110
|
classifier_ids: classifiers_in_package_ids(pkg.id),
|
|
94
|
-
diagram_ids: pkg.
|
|
111
|
+
diagram_ids: diagram_ids_for_package(pkg.id)
|
|
95
112
|
)
|
|
96
113
|
end
|
|
97
114
|
PackageTree.new(
|
|
@@ -105,7 +122,7 @@ module Ea
|
|
|
105
122
|
end
|
|
106
123
|
|
|
107
124
|
def build_entries
|
|
108
|
-
document.classifiers.map do |c|
|
|
125
|
+
classifier_entries = document.classifiers.map do |c|
|
|
109
126
|
SkeletonEntry.new(
|
|
110
127
|
id: c.id,
|
|
111
128
|
name: c.name,
|
|
@@ -115,6 +132,27 @@ module Ea
|
|
|
115
132
|
shard_url: shard_url_for.call(c)
|
|
116
133
|
)
|
|
117
134
|
end
|
|
135
|
+
package_entries = document.packages.map do |p|
|
|
136
|
+
SkeletonEntry.new(
|
|
137
|
+
id: p.id,
|
|
138
|
+
name: p.name,
|
|
139
|
+
kind: "package",
|
|
140
|
+
package_id: p.parent_id,
|
|
141
|
+
qualified_name: p.qualified_name,
|
|
142
|
+
shard_url: shard_url_for.call(p)
|
|
143
|
+
)
|
|
144
|
+
end
|
|
145
|
+
diagram_entries = render_diagrams? ? document.diagrams.map do |d|
|
|
146
|
+
SkeletonEntry.new(
|
|
147
|
+
id: d.id,
|
|
148
|
+
name: d.name,
|
|
149
|
+
kind: "diagram",
|
|
150
|
+
package_id: d.package_id,
|
|
151
|
+
qualified_name: d.name,
|
|
152
|
+
shard_url: shard_url_for.call(d)
|
|
153
|
+
)
|
|
154
|
+
end : []
|
|
155
|
+
classifier_entries + package_entries + diagram_entries
|
|
118
156
|
end
|
|
119
157
|
|
|
120
158
|
def build_search_entries
|
|
@@ -191,8 +229,72 @@ module Ea
|
|
|
191
229
|
end
|
|
192
230
|
end
|
|
193
231
|
|
|
194
|
-
def payload_for(
|
|
195
|
-
JSON.parse(
|
|
232
|
+
def payload_for(model_element)
|
|
233
|
+
payload = JSON.parse(model_element.to_json)
|
|
234
|
+
case model_element
|
|
235
|
+
when Ea::Model::Classifier
|
|
236
|
+
augment_classifier_payload!(payload, model_element)
|
|
237
|
+
when Ea::Model::Package
|
|
238
|
+
payload["classifierIds"] = classifiers_in_package_ids(model_element.id)
|
|
239
|
+
payload["diagramIds"] = diagram_ids_for_package(model_element.id)
|
|
240
|
+
when Ea::Model::Diagram
|
|
241
|
+
augment_diagram_payload!(payload, model_element)
|
|
242
|
+
end
|
|
243
|
+
payload
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def diagram_ids_for_package(package_id)
|
|
247
|
+
(document.packages.find { |p| p.id == package_id }&.diagram_ids ||
|
|
248
|
+
[]) + document.diagrams.select { |d| d.package_id == package_id }.map(&:id)
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
def augment_classifier_payload!(payload, classifier)
|
|
252
|
+
rels = document.relationships_for(classifier.id)
|
|
253
|
+
payload["generalizations"] = rels
|
|
254
|
+
.select { |r| r.is_a?(Ea::Model::Generalization) && r.specific_id == classifier.id }
|
|
255
|
+
.map { |r| { "id" => r.id, "targetId" => r.general_id } }
|
|
256
|
+
payload["specializations"] = rels
|
|
257
|
+
.select { |r| r.is_a?(Ea::Model::Generalization) && r.general_id == classifier.id }
|
|
258
|
+
.map { |r| { "id" => r.id, "targetId" => r.specific_id } }
|
|
259
|
+
payload["associations"] = rels
|
|
260
|
+
.select { |r| r.is_a?(Ea::Model::Association) }
|
|
261
|
+
.map { |r| association_stub(r, classifier.id) }
|
|
262
|
+
payload
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
def association_stub(assoc, classifier_id)
|
|
266
|
+
{
|
|
267
|
+
"id" => assoc.id,
|
|
268
|
+
"name" => assoc.name,
|
|
269
|
+
"sourceId" => assoc.source_id,
|
|
270
|
+
"targetId" => assoc.target_id,
|
|
271
|
+
"thisEndRoleName" => assoc.source_id == classifier_id ? assoc.source_role_name : assoc.target_role_name,
|
|
272
|
+
"otherEndRoleName" => assoc.source_id == classifier_id ? assoc.target_role_name : assoc.source_role_name,
|
|
273
|
+
"otherEndId" => assoc.source_id == classifier_id ? assoc.target_id : assoc.source_id,
|
|
274
|
+
"otherEndMultiplicity" => cardinality(assoc, classifier_id),
|
|
275
|
+
"otherEndAggregation" => assoc.source_id == classifier_id ? assoc.target_aggregation : assoc.source_aggregation
|
|
276
|
+
}
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
def cardinality(assoc, classifier_id)
|
|
280
|
+
if assoc.source_id == classifier_id
|
|
281
|
+
[assoc.target_multiplicity_lower, assoc.target_multiplicity_upper]
|
|
282
|
+
else
|
|
283
|
+
[assoc.source_multiplicity_lower, assoc.source_multiplicity_upper]
|
|
284
|
+
end
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
def augment_diagram_payload!(payload, diagram)
|
|
288
|
+
payload["svg"] = Ea::Svg::EaEmitter::Document.new(
|
|
289
|
+
diagram,
|
|
290
|
+
model_index: document.index_by_id,
|
|
291
|
+
document: document
|
|
292
|
+
).render
|
|
293
|
+
payload
|
|
294
|
+
rescue StandardError => e
|
|
295
|
+
warn "ea: skipping SVG render for diagram #{diagram.id} " \
|
|
296
|
+
"(#{diagram.name.inspect}): #{e.class}: #{e.message}"
|
|
297
|
+
payload
|
|
196
298
|
end
|
|
197
299
|
end
|
|
198
300
|
end
|
data/lib/ea/version.rb
CHANGED