@memberjunction/ng-entity-relationship-diagram 0.0.1 → 2.129.0
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/README.md +754 -27
- package/dist/lib/components/entity-details/entity-details.component.d.ts +70 -0
- package/dist/lib/components/entity-details/entity-details.component.d.ts.map +1 -0
- package/dist/lib/components/entity-details/entity-details.component.js +694 -0
- package/dist/lib/components/entity-details/entity-details.component.js.map +1 -0
- package/dist/lib/components/entity-filter-panel/entity-filter-panel.component.d.ts +48 -0
- package/dist/lib/components/entity-filter-panel/entity-filter-panel.component.d.ts.map +1 -0
- package/dist/lib/components/entity-filter-panel/entity-filter-panel.component.js +179 -0
- package/dist/lib/components/entity-filter-panel/entity-filter-panel.component.js.map +1 -0
- package/dist/lib/components/erd-composite/erd-composite.component.d.ts +170 -0
- package/dist/lib/components/erd-composite/erd-composite.component.d.ts.map +1 -0
- package/dist/lib/components/erd-composite/erd-composite.component.js +391 -0
- package/dist/lib/components/erd-composite/erd-composite.component.js.map +1 -0
- package/dist/lib/components/erd-diagram.component.d.ts +486 -0
- package/dist/lib/components/erd-diagram.component.d.ts.map +1 -0
- package/dist/lib/components/erd-diagram.component.js +1936 -0
- package/dist/lib/components/erd-diagram.component.js.map +1 -0
- package/dist/lib/components/mj-entity-erd.component.d.ts +261 -0
- package/dist/lib/components/mj-entity-erd.component.d.ts.map +1 -0
- package/dist/lib/components/mj-entity-erd.component.js +416 -0
- package/dist/lib/components/mj-entity-erd.component.js.map +1 -0
- package/dist/lib/entity-relationship-diagram.module.d.ts +83 -0
- package/dist/lib/entity-relationship-diagram.module.d.ts.map +1 -0
- package/dist/lib/entity-relationship-diagram.module.js +121 -0
- package/dist/lib/entity-relationship-diagram.module.js.map +1 -0
- package/dist/lib/interfaces/erd-types.d.ts +491 -0
- package/dist/lib/interfaces/erd-types.d.ts.map +1 -0
- package/dist/lib/interfaces/erd-types.js +6 -0
- package/dist/lib/interfaces/erd-types.js.map +1 -0
- package/dist/lib/utils/entity-to-erd-adapter.d.ts +64 -0
- package/dist/lib/utils/entity-to-erd-adapter.d.ts.map +1 -0
- package/dist/lib/utils/entity-to-erd-adapter.js +231 -0
- package/dist/lib/utils/entity-to-erd-adapter.js.map +1 -0
- package/dist/public-api.d.ts +9 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +16 -0
- package/dist/public-api.js.map +1 -0
- package/package.json +45 -6
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts MemberJunction EntityFieldInfo to generic ERDField format.
|
|
3
|
+
*/
|
|
4
|
+
export function entityFieldToERDField(field) {
|
|
5
|
+
const erdField = {
|
|
6
|
+
id: field.ID,
|
|
7
|
+
name: field.Name,
|
|
8
|
+
type: field.Type,
|
|
9
|
+
isPrimaryKey: field.IsPrimaryKey,
|
|
10
|
+
description: field.Description,
|
|
11
|
+
allowsNull: field.AllowsNull,
|
|
12
|
+
defaultValue: field.DefaultValue,
|
|
13
|
+
length: field.Length,
|
|
14
|
+
precision: field.Precision,
|
|
15
|
+
scale: field.Scale,
|
|
16
|
+
isVirtual: field.IsVirtual,
|
|
17
|
+
autoIncrement: field.AutoIncrement
|
|
18
|
+
};
|
|
19
|
+
// Add related entity info for foreign keys
|
|
20
|
+
if (field.RelatedEntityID) {
|
|
21
|
+
erdField.relatedNodeId = field.RelatedEntityID;
|
|
22
|
+
erdField.relatedNodeName = field.RelatedEntity;
|
|
23
|
+
erdField.relatedFieldName = field.RelatedEntityFieldName;
|
|
24
|
+
}
|
|
25
|
+
// Add possible values if they exist
|
|
26
|
+
if (field.EntityFieldValues && field.EntityFieldValues.length > 0) {
|
|
27
|
+
erdField.possibleValues = field.EntityFieldValues.map(v => ({
|
|
28
|
+
id: v.ID,
|
|
29
|
+
value: v.Value,
|
|
30
|
+
code: v.Code,
|
|
31
|
+
description: v.Description,
|
|
32
|
+
sequence: v.Sequence
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
return erdField;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Converts MemberJunction EntityInfo to generic ERDNode format.
|
|
39
|
+
*/
|
|
40
|
+
export function entityInfoToERDNode(entity) {
|
|
41
|
+
return {
|
|
42
|
+
id: entity.ID,
|
|
43
|
+
name: entity.Name,
|
|
44
|
+
schemaName: entity.SchemaName,
|
|
45
|
+
description: entity.Description,
|
|
46
|
+
status: entity.Status,
|
|
47
|
+
baseTable: entity.BaseTable,
|
|
48
|
+
fields: entity.Fields.map(f => entityFieldToERDField(f)),
|
|
49
|
+
customData: {
|
|
50
|
+
// Store original entity for reverse lookup if needed
|
|
51
|
+
originalEntity: entity
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Converts an array of MemberJunction EntityInfo objects to ERDNode format.
|
|
57
|
+
*/
|
|
58
|
+
export function entitiesToERDNodes(entities) {
|
|
59
|
+
return entities.map(e => entityInfoToERDNode(e));
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Extracts the original EntityInfo from an ERDNode's customData.
|
|
63
|
+
* Returns null if not found.
|
|
64
|
+
*/
|
|
65
|
+
export function getOriginalEntityFromERDNode(node) {
|
|
66
|
+
if (node.customData && node.customData['originalEntity']) {
|
|
67
|
+
return node.customData['originalEntity'];
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Finds an EntityInfo by node ID from an array.
|
|
73
|
+
*/
|
|
74
|
+
export function findEntityByNodeId(nodeId, entities) {
|
|
75
|
+
return entities.find(e => e.ID === nodeId);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Builds ERD nodes and links from an array of EntityInfo objects.
|
|
79
|
+
* This handles the transformation and automatic relationship discovery.
|
|
80
|
+
*
|
|
81
|
+
* @param entities - The primary entities to display
|
|
82
|
+
* @param options - Options for relationship discovery
|
|
83
|
+
* @returns Object containing nodes and links arrays
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* // Single entity with all related entities
|
|
88
|
+
* const result = buildERDDataFromEntities([myEntity], {
|
|
89
|
+
* allEntities: metadata.Entities,
|
|
90
|
+
* includeIncoming: true,
|
|
91
|
+
* includeOutgoing: true,
|
|
92
|
+
* depth: 1
|
|
93
|
+
* });
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export function buildERDDataFromEntities(entities, options = {}) {
|
|
97
|
+
const { includeIncoming = true, includeOutgoing = true, allEntities = [], depth = 1 } = options;
|
|
98
|
+
const nodes = [];
|
|
99
|
+
const links = [];
|
|
100
|
+
const addedNodeIds = new Set();
|
|
101
|
+
const addedLinkKeys = new Set();
|
|
102
|
+
// Helper to add a node if not already added
|
|
103
|
+
const addNode = (entity) => {
|
|
104
|
+
if (!addedNodeIds.has(entity.ID)) {
|
|
105
|
+
nodes.push(entityInfoToERDNode(entity));
|
|
106
|
+
addedNodeIds.add(entity.ID);
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
// Helper to add a link if not already added
|
|
110
|
+
const addLink = (link) => {
|
|
111
|
+
const key = `${link.sourceNodeId}->${link.targetNodeId}:${link.sourceField.id}`;
|
|
112
|
+
if (!addedLinkKeys.has(key)) {
|
|
113
|
+
links.push(link);
|
|
114
|
+
addedLinkKeys.add(key);
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
// First, add all primary entities
|
|
118
|
+
for (const entity of entities) {
|
|
119
|
+
addNode(entity);
|
|
120
|
+
}
|
|
121
|
+
// Process relationships for each primary entity
|
|
122
|
+
for (const entity of entities) {
|
|
123
|
+
// Outgoing relationships (this entity references others via FK)
|
|
124
|
+
if (includeOutgoing) {
|
|
125
|
+
for (const field of entity.Fields) {
|
|
126
|
+
if (field.RelatedEntityID) {
|
|
127
|
+
const relatedEntity = allEntities.find(e => e.ID === field.RelatedEntityID);
|
|
128
|
+
if (relatedEntity) {
|
|
129
|
+
addNode(relatedEntity);
|
|
130
|
+
const pkField = relatedEntity.Fields.find(f => f.IsPrimaryKey);
|
|
131
|
+
addLink({
|
|
132
|
+
sourceNodeId: entity.ID,
|
|
133
|
+
targetNodeId: field.RelatedEntityID,
|
|
134
|
+
sourceField: entityFieldToERDField(field),
|
|
135
|
+
targetField: pkField ? entityFieldToERDField(pkField) : undefined,
|
|
136
|
+
isSelfReference: entity.ID === field.RelatedEntityID,
|
|
137
|
+
relationshipType: 'many-to-one'
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Incoming relationships (other entities reference this one)
|
|
144
|
+
if (includeIncoming) {
|
|
145
|
+
for (const rel of entity.RelatedEntities) {
|
|
146
|
+
// rel.RelatedEntity is the entity that has the FK pointing to this entity
|
|
147
|
+
const relEntity = allEntities.find(e => e.Name === rel.RelatedEntity);
|
|
148
|
+
if (relEntity) {
|
|
149
|
+
addNode(relEntity);
|
|
150
|
+
const fkField = relEntity.Fields.find(f => f.Name === rel.RelatedEntityJoinField);
|
|
151
|
+
const pkField = entity.Fields.find(f => f.IsPrimaryKey);
|
|
152
|
+
if (fkField) {
|
|
153
|
+
addLink({
|
|
154
|
+
sourceNodeId: relEntity.ID,
|
|
155
|
+
targetNodeId: entity.ID,
|
|
156
|
+
sourceField: entityFieldToERDField(fkField),
|
|
157
|
+
targetField: pkField ? entityFieldToERDField(pkField) : undefined,
|
|
158
|
+
isSelfReference: relEntity.ID === entity.ID,
|
|
159
|
+
relationshipType: 'many-to-one'
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// If depth > 1, recursively expand relationships
|
|
167
|
+
if (depth > 1) {
|
|
168
|
+
const processedIds = new Set(entities.map(e => e.ID));
|
|
169
|
+
let currentDepthEntities = [...nodes]
|
|
170
|
+
.map(n => getOriginalEntityFromERDNode(n))
|
|
171
|
+
.filter((e) => e !== null && !processedIds.has(e.ID));
|
|
172
|
+
console.log(`[buildERDDataFromEntities] depth=${depth}, starting expansion. Initial nodes=${nodes.length}, currentDepthEntities=${currentDepthEntities.length}`);
|
|
173
|
+
for (let d = 1; d < depth; d++) {
|
|
174
|
+
const nextDepthEntities = [];
|
|
175
|
+
for (const entity of currentDepthEntities) {
|
|
176
|
+
if (processedIds.has(entity.ID))
|
|
177
|
+
continue;
|
|
178
|
+
processedIds.add(entity.ID);
|
|
179
|
+
// Outgoing
|
|
180
|
+
if (includeOutgoing) {
|
|
181
|
+
for (const field of entity.Fields) {
|
|
182
|
+
if (field.RelatedEntityID && !addedNodeIds.has(field.RelatedEntityID)) {
|
|
183
|
+
const relatedEntity = allEntities.find(e => e.ID === field.RelatedEntityID);
|
|
184
|
+
if (relatedEntity) {
|
|
185
|
+
addNode(relatedEntity);
|
|
186
|
+
nextDepthEntities.push(relatedEntity);
|
|
187
|
+
const pkField = relatedEntity.Fields.find(f => f.IsPrimaryKey);
|
|
188
|
+
addLink({
|
|
189
|
+
sourceNodeId: entity.ID,
|
|
190
|
+
targetNodeId: field.RelatedEntityID,
|
|
191
|
+
sourceField: entityFieldToERDField(field),
|
|
192
|
+
targetField: pkField ? entityFieldToERDField(pkField) : undefined,
|
|
193
|
+
isSelfReference: entity.ID === field.RelatedEntityID,
|
|
194
|
+
relationshipType: 'many-to-one'
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// Incoming
|
|
201
|
+
if (includeIncoming) {
|
|
202
|
+
for (const rel of entity.RelatedEntities) {
|
|
203
|
+
// rel.RelatedEntity is the entity that has the FK pointing to this entity
|
|
204
|
+
const relEntity = allEntities.find(e => e.Name === rel.RelatedEntity);
|
|
205
|
+
if (relEntity && !addedNodeIds.has(relEntity.ID)) {
|
|
206
|
+
addNode(relEntity);
|
|
207
|
+
nextDepthEntities.push(relEntity);
|
|
208
|
+
const fkField = relEntity.Fields.find(f => f.Name === rel.RelatedEntityJoinField);
|
|
209
|
+
const pkField = entity.Fields.find(f => f.IsPrimaryKey);
|
|
210
|
+
if (fkField) {
|
|
211
|
+
addLink({
|
|
212
|
+
sourceNodeId: relEntity.ID,
|
|
213
|
+
targetNodeId: entity.ID,
|
|
214
|
+
sourceField: entityFieldToERDField(fkField),
|
|
215
|
+
targetField: pkField ? entityFieldToERDField(pkField) : undefined,
|
|
216
|
+
isSelfReference: relEntity.ID === entity.ID,
|
|
217
|
+
relationshipType: 'many-to-one'
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
console.log(`[buildERDDataFromEntities] d=${d}, processed entities, nextDepthEntities=${nextDepthEntities.length}, total nodes now=${nodes.length}`);
|
|
225
|
+
currentDepthEntities = nextDepthEntities;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
console.log(`[buildERDDataFromEntities] FINAL: nodes=${nodes.length}, links=${links.length}`);
|
|
229
|
+
return { nodes, links };
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=entity-to-erd-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-to-erd-adapter.js","sourceRoot":"","sources":["../../../src/lib/utils/entity-to-erd-adapter.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAsB;IAC1D,MAAM,QAAQ,GAAa;QACzB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;KACnC,CAAC;IAEF,2CAA2C;IAC3C,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC;QAC/C,QAAQ,CAAC,eAAe,GAAG,KAAK,CAAC,aAAa,CAAC;QAC/C,QAAQ,CAAC,gBAAgB,GAAG,KAAK,CAAC,sBAAsB,CAAC;IAC3D,CAAC;IAED,oCAAoC;IACpC,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,QAAQ,CAAC,cAAc,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1D,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACH,CAAA,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAkB;IACpD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACxD,UAAU,EAAE;YACV,qDAAqD;YACrD,cAAc,EAAE,MAAM;SACvB;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAsB;IACvD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAa;IACxD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAe,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,QAAsB;IACvE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;AAC7C,CAAC;AAwBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAAsB,EACtB,UAA+B,EAAE;IAEjC,MAAM,EACJ,eAAe,GAAG,IAAI,EACtB,eAAe,GAAG,IAAI,EACtB,WAAW,GAAG,EAAE,EAChB,KAAK,GAAG,CAAC,EACV,GAAG,OAAO,CAAC;IAEZ,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,4CAA4C;IAC5C,MAAM,OAAO,GAAG,CAAC,MAAkB,EAAQ,EAAE;QAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;YACxC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC;IAEF,4CAA4C;IAC5C,MAAM,OAAO,GAAG,CAAC,IAAa,EAAQ,EAAE;QACtC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;QAChF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IAEF,kCAAkC;IAClC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,gDAAgD;IAChD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,gEAAgE;QAChE,IAAI,eAAe,EAAE,CAAC;YACpB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;oBAC1B,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,eAAe,CAAC,CAAC;oBAC5E,IAAI,aAAa,EAAE,CAAC;wBAClB,OAAO,CAAC,aAAa,CAAC,CAAC;wBAEvB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;wBAC/D,OAAO,CAAC;4BACN,YAAY,EAAE,MAAM,CAAC,EAAE;4BACvB,YAAY,EAAE,KAAK,CAAC,eAAe;4BACnC,WAAW,EAAE,qBAAqB,CAAC,KAAK,CAAC;4BACzC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;4BACjE,eAAe,EAAE,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,eAAe;4BACpD,gBAAgB,EAAE,aAAa;yBAChC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,6DAA6D;QAC7D,IAAI,eAAe,EAAE,CAAC;YACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;gBACzC,0EAA0E;gBAC1E,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,aAAa,CAAC,CAAC;gBACtE,IAAI,SAAS,EAAE,CAAC;oBACd,OAAO,CAAC,SAAS,CAAC,CAAC;oBAEnB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,sBAAsB,CAAC,CAAC;oBAClF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;oBAExD,IAAI,OAAO,EAAE,CAAC;wBACZ,OAAO,CAAC;4BACN,YAAY,EAAE,SAAS,CAAC,EAAE;4BAC1B,YAAY,EAAE,MAAM,CAAC,EAAE;4BACvB,WAAW,EAAE,qBAAqB,CAAC,OAAO,CAAC;4BAC3C,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;4BACjE,eAAe,EAAE,SAAS,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE;4BAC3C,gBAAgB,EAAE,aAAa;yBAChC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,IAAI,oBAAoB,GAAG,CAAC,GAAG,KAAK,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;aACzC,MAAM,CAAC,CAAC,CAAC,EAAmB,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzE,OAAO,CAAC,GAAG,CAAC,oCAAoC,KAAK,uCAAuC,KAAK,CAAC,MAAM,0BAA0B,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC;QAEjK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,iBAAiB,GAAiB,EAAE,CAAC;YAE3C,KAAK,MAAM,MAAM,IAAI,oBAAoB,EAAE,CAAC;gBAC1C,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAAE,SAAS;gBAC1C,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAE5B,WAAW;gBACX,IAAI,eAAe,EAAE,CAAC;oBACpB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBAClC,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;4BACtE,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,eAAe,CAAC,CAAC;4BAC5E,IAAI,aAAa,EAAE,CAAC;gCAClB,OAAO,CAAC,aAAa,CAAC,CAAC;gCACvB,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gCAEtC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;gCAC/D,OAAO,CAAC;oCACN,YAAY,EAAE,MAAM,CAAC,EAAE;oCACvB,YAAY,EAAE,KAAK,CAAC,eAAe;oCACnC,WAAW,EAAE,qBAAqB,CAAC,KAAK,CAAC;oCACzC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;oCACjE,eAAe,EAAE,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,eAAe;oCACpD,gBAAgB,EAAE,aAAa;iCAChC,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,WAAW;gBACX,IAAI,eAAe,EAAE,CAAC;oBACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;wBACzC,0EAA0E;wBAC1E,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,aAAa,CAAC,CAAC;wBACtE,IAAI,SAAS,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;4BACjD,OAAO,CAAC,SAAS,CAAC,CAAC;4BACnB,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;4BAElC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,sBAAsB,CAAC,CAAC;4BAClF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;4BAExD,IAAI,OAAO,EAAE,CAAC;gCACZ,OAAO,CAAC;oCACN,YAAY,EAAE,SAAS,CAAC,EAAE;oCAC1B,YAAY,EAAE,MAAM,CAAC,EAAE;oCACvB,WAAW,EAAE,qBAAqB,CAAC,OAAO,CAAC;oCAC3C,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;oCACjE,eAAe,EAAE,SAAS,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE;oCAC3C,gBAAgB,EAAE,aAAa;iCAChC,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,2CAA2C,iBAAiB,CAAC,MAAM,qBAAqB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACrJ,oBAAoB,GAAG,iBAAiB,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,2CAA2C,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9F,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './lib/entity-relationship-diagram.module';
|
|
2
|
+
export * from './lib/interfaces/erd-types';
|
|
3
|
+
export * from './lib/components/erd-diagram.component';
|
|
4
|
+
export * from './lib/components/mj-entity-erd.component';
|
|
5
|
+
export * from './lib/components/entity-details/entity-details.component';
|
|
6
|
+
export * from './lib/components/entity-filter-panel/entity-filter-panel.component';
|
|
7
|
+
export * from './lib/components/erd-composite/erd-composite.component';
|
|
8
|
+
export * from './lib/utils/entity-to-erd-adapter';
|
|
9
|
+
//# sourceMappingURL=public-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAKA,cAAc,0CAA0C,CAAC;AAGzD,cAAc,4BAA4B,CAAC;AAG3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,0CAA0C,CAAC;AACzD,cAAc,0DAA0D,CAAC;AACzE,cAAc,oEAAoE,CAAC;AACnF,cAAc,wDAAwD,CAAC;AAGvE,cAAc,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of @memberjunction/ng-entity-relationship-diagram
|
|
3
|
+
*/
|
|
4
|
+
// Module
|
|
5
|
+
export * from './lib/entity-relationship-diagram.module';
|
|
6
|
+
// Interfaces and types
|
|
7
|
+
export * from './lib/interfaces/erd-types';
|
|
8
|
+
// Components
|
|
9
|
+
export * from './lib/components/erd-diagram.component';
|
|
10
|
+
export * from './lib/components/mj-entity-erd.component';
|
|
11
|
+
export * from './lib/components/entity-details/entity-details.component';
|
|
12
|
+
export * from './lib/components/entity-filter-panel/entity-filter-panel.component';
|
|
13
|
+
export * from './lib/components/erd-composite/erd-composite.component';
|
|
14
|
+
// Utilities for MJ entity transformation
|
|
15
|
+
export * from './lib/utils/entity-to-erd-adapter';
|
|
16
|
+
//# sourceMappingURL=public-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,SAAS;AACT,cAAc,0CAA0C,CAAC;AAEzD,uBAAuB;AACvB,cAAc,4BAA4B,CAAC;AAE3C,aAAa;AACb,cAAc,wCAAwC,CAAC;AACvD,cAAc,0CAA0C,CAAC;AACzD,cAAc,0DAA0D,CAAC;AACzE,cAAc,oEAAoE,CAAC;AACnF,cAAc,wDAAwD,CAAC;AAEvE,yCAAyC;AACzC,cAAc,mCAAmC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,49 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/ng-entity-relationship-diagram",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.129.0",
|
|
4
|
+
"description": "MemberJunction: Entity Relationship Diagram (ERD) component for visualizing entity relationships using D3.js force-directed graphs",
|
|
5
|
+
"main": "./dist/public-api.js",
|
|
6
|
+
"typings": "./dist/public-api.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"/dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
12
|
+
"build": "ngc"
|
|
13
|
+
},
|
|
5
14
|
"keywords": [
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
|
|
15
|
+
"angular",
|
|
16
|
+
"erd",
|
|
17
|
+
"entity-relationship-diagram",
|
|
18
|
+
"d3",
|
|
19
|
+
"visualization",
|
|
20
|
+
"memberjunction"
|
|
21
|
+
],
|
|
22
|
+
"author": "",
|
|
23
|
+
"license": "ISC",
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@angular/compiler": "18.0.2",
|
|
26
|
+
"@angular/compiler-cli": "18.0.2",
|
|
27
|
+
"sass": "^1.77.2"
|
|
28
|
+
},
|
|
29
|
+
"peerDependencies": {
|
|
30
|
+
"@angular/common": "18.0.2",
|
|
31
|
+
"@angular/core": "18.0.2",
|
|
32
|
+
"@angular/platform-browser": "18.0.2"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@angular/forms": "18.0.2",
|
|
36
|
+
"@dagrejs/dagre": "^1.1.8",
|
|
37
|
+
"@memberjunction/core": "2.129.0",
|
|
38
|
+
"@progress/kendo-angular-layout": "^16.2.0",
|
|
39
|
+
"@types/d3": "^7.4.3",
|
|
40
|
+
"d3": "^7.9.0",
|
|
41
|
+
"rxjs": "^7.8.1",
|
|
42
|
+
"tslib": "^2.3.0"
|
|
43
|
+
},
|
|
44
|
+
"sideEffects": false,
|
|
45
|
+
"repository": {
|
|
46
|
+
"type": "git",
|
|
47
|
+
"url": "https://github.com/MemberJunction/MJ"
|
|
48
|
+
}
|
|
10
49
|
}
|