pyegeria 5.3.4.14__py3-none-any.whl → 5.3.4.16__py3-none-any.whl
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.
- pyegeria/mermaid_utilities.py +46 -28
- pyegeria/test_m.html +119 -103
- {pyegeria-5.3.4.14.dist-info → pyegeria-5.3.4.16.dist-info}/METADATA +1 -1
- {pyegeria-5.3.4.14.dist-info → pyegeria-5.3.4.16.dist-info}/RECORD +7 -7
- {pyegeria-5.3.4.14.dist-info → pyegeria-5.3.4.16.dist-info}/LICENSE +0 -0
- {pyegeria-5.3.4.14.dist-info → pyegeria-5.3.4.16.dist-info}/WHEEL +0 -0
- {pyegeria-5.3.4.14.dist-info → pyegeria-5.3.4.16.dist-info}/entry_points.txt +0 -0
pyegeria/mermaid_utilities.py
CHANGED
@@ -223,7 +223,7 @@ def construct_mermaid_html(mermaid_str: str) -> str:
|
|
223
223
|
"""
|
224
224
|
title_label, guid, mermaid_code = parse_mermaid_code(mermaid_str)
|
225
225
|
|
226
|
-
graph_id = f"mermaid-graph-{guid}"
|
226
|
+
graph_id = f"mermaid-graph-{guid}-{str(uuid.uuid4())[:4]}"
|
227
227
|
escaped_header = html.escape(title_label) if title_label else "" # Sanitize the header safely
|
228
228
|
escaped_mermaid_code = html.escape(mermaid_code)
|
229
229
|
header_html = f"""
|
@@ -236,18 +236,16 @@ def construct_mermaid_html(mermaid_str: str) -> str:
|
|
236
236
|
""" if title_label else ""
|
237
237
|
|
238
238
|
html_content = f"""
|
239
|
-
|
240
|
-
/* Style the diagram container */
|
239
|
+
<style>
|
241
240
|
.diagram-container {{
|
242
241
|
position: relative;
|
243
242
|
width: 90%; /* Adjust container width */
|
244
243
|
height: 500px; /* Fixed height */
|
245
|
-
margin:
|
244
|
+
margin: 20px auto;
|
246
245
|
border: 1px solid #ccc;
|
247
246
|
overflow: hidden; /* Prevents content overflow */
|
248
247
|
}}
|
249
248
|
|
250
|
-
/* Style custom zoom controls */
|
251
249
|
.svg-pan-zoom-controls {{
|
252
250
|
position: absolute;
|
253
251
|
top: 10px;
|
@@ -255,7 +253,7 @@ def construct_mermaid_html(mermaid_str: str) -> str:
|
|
255
253
|
display: flex;
|
256
254
|
flex-direction: column;
|
257
255
|
gap: 5px;
|
258
|
-
z-index: 10;
|
256
|
+
z-index: 10;
|
259
257
|
}}
|
260
258
|
|
261
259
|
.svg-pan-zoom-controls button {{
|
@@ -273,23 +271,17 @@ def construct_mermaid_html(mermaid_str: str) -> str:
|
|
273
271
|
</style>
|
274
272
|
|
275
273
|
<div id="{graph_id}-container" class="diagram-container">
|
276
|
-
<!-- Title/Heading (optional; include as needed) -->
|
277
274
|
{header_html}
|
278
|
-
<!-- Mermaid rendering area -->
|
279
275
|
<div id="{graph_id}" class="mermaid">
|
280
|
-
{
|
276
|
+
{escaped_mermaid_code}
|
281
277
|
</div>
|
282
278
|
</div>
|
283
279
|
|
284
|
-
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
|
285
|
-
<script src="https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js"></script>
|
286
|
-
|
287
280
|
<script>
|
288
281
|
(function() {{
|
289
282
|
const graph_id = "{graph_id}";
|
290
|
-
let panZoomInstance; //
|
283
|
+
let panZoomInstance; // Reference for svg-pan-zoom instance
|
291
284
|
|
292
|
-
// Function to initialize Mermaid
|
293
285
|
function initializeMermaid(graph_id) {{
|
294
286
|
const container = document.getElementById(`${{graph_id}}-container`);
|
295
287
|
const diagram = document.getElementById(`${{graph_id}}`);
|
@@ -303,15 +295,16 @@ def construct_mermaid_html(mermaid_str: str) -> str:
|
|
303
295
|
mermaid.initialize({{ startOnLoad: false }});
|
304
296
|
mermaid.init(undefined, diagram);
|
305
297
|
|
306
|
-
// Set a small delay to allow Mermaid rendering to complete
|
298
|
+
// Set a small delay to allow Mermaid rendering to complete
|
307
299
|
setTimeout(() => {{
|
308
300
|
const svg = container.querySelector("svg");
|
301
|
+
|
309
302
|
if (!svg) {{
|
310
303
|
console.error(`SVG not found for graph ID "${{graph_id}}"`);
|
311
304
|
return;
|
312
305
|
}}
|
313
306
|
|
314
|
-
// Force
|
307
|
+
// Force SVG to fit the container
|
315
308
|
svg.setAttribute("width", "100%");
|
316
309
|
svg.setAttribute("height", "100%");
|
317
310
|
svg.setAttribute("preserveAspectRatio", "xMidYMid meet");
|
@@ -322,10 +315,10 @@ def construct_mermaid_html(mermaid_str: str) -> str:
|
|
322
315
|
svg.setAttribute("viewBox", `0 0 ${{bbox.width}} ${{bbox.height}}`);
|
323
316
|
}}
|
324
317
|
|
325
|
-
// Initialize Pan-Zoom
|
318
|
+
// Initialize Pan-Zoom
|
326
319
|
panZoomInstance = svgPanZoom(svg, {{
|
327
320
|
zoomEnabled: true,
|
328
|
-
controlIconsEnabled: false, //
|
321
|
+
controlIconsEnabled: false, // Custom controls
|
329
322
|
fit: true,
|
330
323
|
center: true,
|
331
324
|
contain: true,
|
@@ -333,7 +326,7 @@ def construct_mermaid_html(mermaid_str: str) -> str:
|
|
333
326
|
maxZoom: 10
|
334
327
|
}});
|
335
328
|
|
336
|
-
// Add
|
329
|
+
// Add controls
|
337
330
|
const controlsContainer = document.createElement("div");
|
338
331
|
controlsContainer.className = "svg-pan-zoom-controls";
|
339
332
|
controlsContainer.innerHTML = `
|
@@ -343,7 +336,7 @@ def construct_mermaid_html(mermaid_str: str) -> str:
|
|
343
336
|
`;
|
344
337
|
container.appendChild(controlsContainer);
|
345
338
|
|
346
|
-
//
|
339
|
+
// Attach control event listeners
|
347
340
|
document.getElementById(`${{graph_id}}-zoom-in`).addEventListener("click", () => {{
|
348
341
|
if (panZoomInstance) panZoomInstance.zoomIn();
|
349
342
|
}});
|
@@ -356,21 +349,46 @@ def construct_mermaid_html(mermaid_str: str) -> str:
|
|
356
349
|
panZoomInstance.center();
|
357
350
|
}}
|
358
351
|
}});
|
359
|
-
}}, 500); // Delay
|
352
|
+
}}, 500); // Delay for Mermaid and SVG rendering
|
360
353
|
}}
|
361
354
|
|
362
|
-
//
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
355
|
+
// Check if Mermaid and SVG-Pan-Zoom are loaded
|
356
|
+
const loadMermaid = typeof mermaid === "undefined";
|
357
|
+
const loadSvgPanZoom = typeof svgPanZoom === "undefined";
|
358
|
+
|
359
|
+
if (loadMermaid || loadSvgPanZoom) {{
|
360
|
+
const promises = [];
|
361
|
+
|
362
|
+
// Load Mermaid.js if not already loaded
|
363
|
+
if (loadMermaid) {{
|
364
|
+
promises.push(new Promise((resolve) => {{
|
365
|
+
const script = document.createElement("script");
|
366
|
+
script.src = "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js";
|
367
|
+
script.onload = resolve;
|
368
|
+
document.head.appendChild(script);
|
369
|
+
}}));
|
370
|
+
}}
|
371
|
+
|
372
|
+
// Load SVG-Pan-Zoom if not already loaded
|
373
|
+
if (loadSvgPanZoom) {{
|
374
|
+
promises.push(new Promise((resolve) => {{
|
375
|
+
const script = document.createElement("script");
|
376
|
+
script.src = "https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js";
|
377
|
+
script.onload = resolve;
|
378
|
+
document.head.appendChild(script);
|
379
|
+
}}));
|
380
|
+
}}
|
381
|
+
|
382
|
+
Promise.all(promises).then(() => initializeMermaid(graph_id));
|
368
383
|
}} else {{
|
369
384
|
initializeMermaid(graph_id);
|
370
385
|
}}
|
371
386
|
}})();
|
372
387
|
</script>
|
373
|
-
|
388
|
+
|
389
|
+
"""
|
390
|
+
|
391
|
+
|
374
392
|
|
375
393
|
|
376
394
|
return html_content
|
pyegeria/test_m.html
CHANGED
@@ -1,16 +1,14 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
/* Style the diagram container */
|
2
|
+
<style>
|
4
3
|
.diagram-container {
|
5
4
|
position: relative;
|
6
5
|
width: 90%; /* Adjust container width */
|
7
6
|
height: 500px; /* Fixed height */
|
8
|
-
margin:
|
7
|
+
margin: 20px auto;
|
9
8
|
border: 1px solid #ccc;
|
10
9
|
overflow: hidden; /* Prevents content overflow */
|
11
10
|
}
|
12
11
|
|
13
|
-
/* Style custom zoom controls */
|
14
12
|
.svg-pan-zoom-controls {
|
15
13
|
position: absolute;
|
16
14
|
top: 10px;
|
@@ -18,7 +16,7 @@
|
|
18
16
|
display: flex;
|
19
17
|
flex-direction: column;
|
20
18
|
gap: 5px;
|
21
|
-
z-index: 10;
|
19
|
+
z-index: 10;
|
22
20
|
}
|
23
21
|
|
24
22
|
.svg-pan-zoom-controls button {
|
@@ -35,93 +33,91 @@
|
|
35
33
|
}
|
36
34
|
</style>
|
37
35
|
|
38
|
-
<div id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-container" class="diagram-container">
|
39
|
-
<!-- Title/Heading (optional; include as needed) -->
|
36
|
+
<div id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-1569-container" class="diagram-container">
|
40
37
|
|
41
|
-
<h3 id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-heading" style="margin: 20px 0; font-size: 1.5em; text-align: center;">
|
38
|
+
<h3 id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-1569-heading" style="margin: 20px 0; font-size: 1.5em; text-align: center;">
|
42
39
|
Component for Solution Blueprint - Clinical Trial Management Solution Blueprint
|
43
40
|
</h3>
|
44
|
-
<p id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-subheading" style="margin: 0; padding: 5px; font-size: 1em; text-align: center; color: gray; flex: 0 0 auto;">
|
41
|
+
<p id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-1569-subheading" style="margin: 0; padding: 5px; font-size: 1em; text-align: center; color: gray; flex: 0 0 auto;">
|
45
42
|
GUID: c4f8d707-7c85-4125-b5fd-c3257a2ef2ef
|
46
43
|
</p>
|
47
44
|
|
48
|
-
|
49
|
-
<div id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef" class="mermaid">
|
45
|
+
<div id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-1569" class="mermaid">
|
50
46
|
flowchart TD
|
51
|
-
%%{init: {
|
47
|
+
%%{init: {"flowchart": {"htmlLabels": false}} }%%
|
52
48
|
|
53
49
|
subgraph c4f8d707-7c85-4125-b5fd-c3257a2ef2ef [Components and Actors]
|
54
|
-
fc2de77f-7320-48ea-8750-d434c6e870db@{ shape: text, label:
|
55
|
-
**A description of how a clinical trial is managed in Coco Pharmaceuticals
|
56
|
-
37b8560d-84d4-434b-9b0d-105420fcc924@{ shape: subproc, label:
|
57
|
-
**Certify Hospital
|
58
|
-
f37f3735-28a1-4e03-9ff5-3fe2f137f661@{ shape: trap-t, label:
|
59
|
-
**Clinical Trial Manager
|
60
|
-
f37f3735-28a1-4e03-9ff5-3fe2f137f661
|
61
|
-
72a86eec-9734-4bc0-babb-4fec0aa7c9ff@{ shape: docs, label:
|
62
|
-
**Assemble Treatment Assessment Report
|
63
|
-
48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5@{ shape: rect, label:
|
64
|
-
**Treatment Efficacy Evidence
|
65
|
-
48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5
|
66
|
-
f37f3735-28a1-4e03-9ff5-3fe2f137f661
|
67
|
-
b5c8da4c-f925-4cf1-8294-e43cd2c1a584@{ shape: rect, label:
|
68
|
-
**Analyse Patient Data
|
69
|
-
b5c8da4c-f925-4cf1-8294-e43cd2c1a584
|
70
|
-
7f5dca65-50b4-4103-9ac7-3a406a09047a@{ shape: subproc, label:
|
71
|
-
**Weekly Measurements Onboarding Pipeline
|
72
|
-
07705e15-efff-4f80-8992-f04ac85e0ef1@{ shape: rect, label:
|
73
|
-
**Landing Folder Cataloguer
|
74
|
-
07705e15-efff-4f80-8992-f04ac85e0ef1
|
75
|
-
f37f3735-28a1-4e03-9ff5-3fe2f137f661
|
76
|
-
b0290339-c96c-4b05-904f-12fc98e54e14@{ shape: trap-t, label:
|
77
|
-
**Certified Data Engineer
|
78
|
-
b0290339-c96c-4b05-904f-12fc98e54e14
|
79
|
-
d48f579f-76d3-4c49-b1b4-575f5645a9d0@{ shape: lin-cyl, label:
|
80
|
-
**Treatment Validation Sandbox
|
81
|
-
26c07ca4-3b8e-484b-812b-36c1ace4b275@{ shape: rect, label:
|
82
|
-
**Populate Sandbox
|
83
|
-
26c07ca4-3b8e-484b-812b-36c1ace4b275
|
84
|
-
ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec@{ shape: processes, label:
|
85
|
-
**Hospital Processes
|
86
|
-
a8bd84ca-0aae-4534-b0e8-87e8659467a6@{ shape: trap-t, label:
|
87
|
-
**Clinical Trial Participating Hospital Coordinator
|
88
|
-
a8bd84ca-0aae-4534-b0e8-87e8659467a6
|
89
|
-
30adaab5-8870-47a8-8ae9-facbf84cb05a@{ shape: trap-t, label:
|
90
|
-
**Clinical Trial Participating Hospital
|
91
|
-
30adaab5-8870-47a8-8ae9-facbf84cb05a
|
92
|
-
d48f579f-76d3-4c49-b1b4-575f5645a9d0
|
93
|
-
ece17806-836c-4756-b3a2-2d12dde215f6@{ shape: trap-t, label:
|
94
|
-
**New Treatment Data Scientist
|
95
|
-
ece17806-836c-4756-b3a2-2d12dde215f6
|
96
|
-
0c757e35-8a42-4d5f-b01b-c72a6cea65cc@{ shape: trap-t, label:
|
97
|
-
**New Treatment Researcher
|
98
|
-
0c757e35-8a42-4d5f-b01b-c72a6cea65cc
|
99
|
-
e9c2f911-ffcb-40c6-aeee-8c4d43811576@{ shape: subproc, label:
|
100
|
-
**Onboard Hospital
|
101
|
-
b0290339-c96c-4b05-904f-12fc98e54e14
|
102
|
-
849b0b42-f465-452b-813c-477d6398e082@{ shape: subproc, label:
|
103
|
-
**Set up clinical trial
|
104
|
-
f37f3735-28a1-4e03-9ff5-3fe2f137f661
|
105
|
-
a5d4d638-6836-47e5-99d0-fdcde637e13f@{ shape: lin-cyl, label:
|
106
|
-
**Weekly Measurements Data Lake Folder
|
107
|
-
7f5dca65-50b4-4103-9ac7-3a406a09047a
|
108
|
-
0bf2547c-937c-41b6-814f-6284849271a1@{ shape: odd, label:
|
109
|
-
**Treatment Assessment Report Validation and Delivery
|
110
|
-
72a86eec-9734-4bc0-babb-4fec0aa7c9ff
|
111
|
-
f6bc847b-868d-43cc-b767-41f5fe3e47d1@{ shape: trap-t, label:
|
112
|
-
**Clinical Trial Sponsor
|
113
|
-
f6bc847b-868d-43cc-b767-41f5fe3e47d1
|
114
|
-
a5d4d638-6836-47e5-99d0-fdcde637e13f
|
115
|
-
fb32bef2-e79f-4893-b500-2e547f24d482@{ shape: subproc, label:
|
116
|
-
**Set up Data Lake Folder
|
117
|
-
b0290339-c96c-4b05-904f-12fc98e54e14
|
118
|
-
1c150d6e-30cf-481c-9afb-3b06c9c9e78f@{ shape: lin-cyl, label:
|
119
|
-
**Hospital Landing Area Folder
|
120
|
-
ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
|
121
|
-
1c150d6e-30cf-481c-9afb-3b06c9c9e78f
|
122
|
-
11c7c850-c67c-41cc-9423-d74db47cbf3a@{ shape: subproc, label:
|
123
|
-
**Nominate Hospital
|
124
|
-
f37f3735-28a1-4e03-9ff5-3fe2f137f661
|
50
|
+
fc2de77f-7320-48ea-8750-d434c6e870db@{ shape: text, label: "*Description*
|
51
|
+
**A description of how a clinical trial is managed in Coco Pharmaceuticals.**"}
|
52
|
+
37b8560d-84d4-434b-9b0d-105420fcc924@{ shape: subproc, label: "*Solution Component*
|
53
|
+
**Certify Hospital**"}
|
54
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661@{ shape: trap-t, label: "*Solution Actor Role*
|
55
|
+
**Clinical Trial Manager**"}
|
56
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Certifier"|37b8560d-84d4-434b-9b0d-105420fcc924
|
57
|
+
72a86eec-9734-4bc0-babb-4fec0aa7c9ff@{ shape: docs, label: "*Solution Component*
|
58
|
+
**Assemble Treatment Assessment Report**"}
|
59
|
+
48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5@{ shape: rect, label: "*Solution Component*
|
60
|
+
**Treatment Efficacy Evidence**"}
|
61
|
+
48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5-->|"Solution Linking Wire"|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
|
62
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Author"|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
|
63
|
+
b5c8da4c-f925-4cf1-8294-e43cd2c1a584@{ shape: rect, label: "*Solution Component*
|
64
|
+
**Analyse Patient Data**"}
|
65
|
+
b5c8da4c-f925-4cf1-8294-e43cd2c1a584-->|"Solution Linking Wire"|48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5
|
66
|
+
7f5dca65-50b4-4103-9ac7-3a406a09047a@{ shape: subproc, label: "*Solution Component*
|
67
|
+
**Weekly Measurements Onboarding Pipeline**"}
|
68
|
+
07705e15-efff-4f80-8992-f04ac85e0ef1@{ shape: rect, label: "*Solution Component*
|
69
|
+
**Landing Folder Cataloguer**"}
|
70
|
+
07705e15-efff-4f80-8992-f04ac85e0ef1-->|"Solution Linking Wire"|7f5dca65-50b4-4103-9ac7-3a406a09047a
|
71
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Steward"|7f5dca65-50b4-4103-9ac7-3a406a09047a
|
72
|
+
b0290339-c96c-4b05-904f-12fc98e54e14@{ shape: trap-t, label: "*Solution Actor Role*
|
73
|
+
**Certified Data Engineer**"}
|
74
|
+
b0290339-c96c-4b05-904f-12fc98e54e14-->|"Steward"|7f5dca65-50b4-4103-9ac7-3a406a09047a
|
75
|
+
d48f579f-76d3-4c49-b1b4-575f5645a9d0@{ shape: lin-cyl, label: "*Solution Component*
|
76
|
+
**Treatment Validation Sandbox**"}
|
77
|
+
26c07ca4-3b8e-484b-812b-36c1ace4b275@{ shape: rect, label: "*Solution Component*
|
78
|
+
**Populate Sandbox**"}
|
79
|
+
26c07ca4-3b8e-484b-812b-36c1ace4b275-->|"Solution Linking Wire"|d48f579f-76d3-4c49-b1b4-575f5645a9d0
|
80
|
+
ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec@{ shape: processes, label: "*Solution Component*
|
81
|
+
**Hospital Processes**"}
|
82
|
+
a8bd84ca-0aae-4534-b0e8-87e8659467a6@{ shape: trap-t, label: "*Solution Actor Role*
|
83
|
+
**Clinical Trial Participating Hospital Coordinator**"}
|
84
|
+
a8bd84ca-0aae-4534-b0e8-87e8659467a6-->|"Coordinator on behalf of hospital"|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
|
85
|
+
30adaab5-8870-47a8-8ae9-facbf84cb05a@{ shape: trap-t, label: "*Solution Actor Role*
|
86
|
+
**Clinical Trial Participating Hospital**"}
|
87
|
+
30adaab5-8870-47a8-8ae9-facbf84cb05a-->|"Owner"|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
|
88
|
+
d48f579f-76d3-4c49-b1b4-575f5645a9d0-->|"Solution Linking Wire"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
|
89
|
+
ece17806-836c-4756-b3a2-2d12dde215f6@{ shape: trap-t, label: "*Solution Actor Role*
|
90
|
+
**New Treatment Data Scientist**"}
|
91
|
+
ece17806-836c-4756-b3a2-2d12dde215f6-->|"Data Analyser"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
|
92
|
+
0c757e35-8a42-4d5f-b01b-c72a6cea65cc@{ shape: trap-t, label: "*Solution Actor Role*
|
93
|
+
**New Treatment Researcher.**"}
|
94
|
+
0c757e35-8a42-4d5f-b01b-c72a6cea65cc-->|"Results Interpreter"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
|
95
|
+
e9c2f911-ffcb-40c6-aeee-8c4d43811576@{ shape: subproc, label: "*Solution Component*
|
96
|
+
**Onboard Hospital**"}
|
97
|
+
b0290339-c96c-4b05-904f-12fc98e54e14-->|"Initiator"|e9c2f911-ffcb-40c6-aeee-8c4d43811576
|
98
|
+
849b0b42-f465-452b-813c-477d6398e082@{ shape: subproc, label: "*Solution Component*
|
99
|
+
**Set up clinical trial**"}
|
100
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Initiator"|849b0b42-f465-452b-813c-477d6398e082
|
101
|
+
a5d4d638-6836-47e5-99d0-fdcde637e13f@{ shape: lin-cyl, label: "*Solution Component*
|
102
|
+
**Weekly Measurements Data Lake Folder**"}
|
103
|
+
7f5dca65-50b4-4103-9ac7-3a406a09047a-->|"Solution Linking Wire"|a5d4d638-6836-47e5-99d0-fdcde637e13f
|
104
|
+
0bf2547c-937c-41b6-814f-6284849271a1@{ shape: odd, label: "*Solution Component*
|
105
|
+
**Treatment Assessment Report Validation and Delivery**"}
|
106
|
+
72a86eec-9734-4bc0-babb-4fec0aa7c9ff-->|"Solution Linking Wire"|0bf2547c-937c-41b6-814f-6284849271a1
|
107
|
+
f6bc847b-868d-43cc-b767-41f5fe3e47d1@{ shape: trap-t, label: "*Solution Actor Role*
|
108
|
+
**Clinical Trial Sponsor**"}
|
109
|
+
f6bc847b-868d-43cc-b767-41f5fe3e47d1-->|"Reviewer"|0bf2547c-937c-41b6-814f-6284849271a1
|
110
|
+
a5d4d638-6836-47e5-99d0-fdcde637e13f-->|"Solution Linking Wire"|26c07ca4-3b8e-484b-812b-36c1ace4b275
|
111
|
+
fb32bef2-e79f-4893-b500-2e547f24d482@{ shape: subproc, label: "*Solution Component*
|
112
|
+
**Set up Data Lake Folder**"}
|
113
|
+
b0290339-c96c-4b05-904f-12fc98e54e14-->|"Initiator"|fb32bef2-e79f-4893-b500-2e547f24d482
|
114
|
+
1c150d6e-30cf-481c-9afb-3b06c9c9e78f@{ shape: lin-cyl, label: "*Solution Component*
|
115
|
+
**Hospital Landing Area Folder**"}
|
116
|
+
ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec-->|"Solution Linking Wire"|1c150d6e-30cf-481c-9afb-3b06c9c9e78f
|
117
|
+
1c150d6e-30cf-481c-9afb-3b06c9c9e78f-->|"Solution Linking Wire"|07705e15-efff-4f80-8992-f04ac85e0ef1
|
118
|
+
11c7c850-c67c-41cc-9423-d74db47cbf3a@{ shape: subproc, label: "*Solution Component*
|
119
|
+
**Nominate Hospital**"}
|
120
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Initiator"|11c7c850-c67c-41cc-9423-d74db47cbf3a
|
125
121
|
end
|
126
122
|
style 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
127
123
|
style ece17806-836c-4756-b3a2-2d12dde215f6 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
@@ -151,15 +147,11 @@ style fb32bef2-e79f-4893-b500-2e547f24d482 color:#FFFFFF, fill:#838cc7, stroke:#
|
|
151
147
|
</div>
|
152
148
|
</div>
|
153
149
|
|
154
|
-
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
|
155
|
-
<script src="https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js"></script>
|
156
|
-
|
157
150
|
<script>
|
158
151
|
(function() {
|
159
|
-
const graph_id = "mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef";
|
160
|
-
let panZoomInstance; //
|
152
|
+
const graph_id = "mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-1569";
|
153
|
+
let panZoomInstance; // Reference for svg-pan-zoom instance
|
161
154
|
|
162
|
-
// Function to initialize Mermaid
|
163
155
|
function initializeMermaid(graph_id) {
|
164
156
|
const container = document.getElementById(`${graph_id}-container`);
|
165
157
|
const diagram = document.getElementById(`${graph_id}`);
|
@@ -173,15 +165,16 @@ style fb32bef2-e79f-4893-b500-2e547f24d482 color:#FFFFFF, fill:#838cc7, stroke:#
|
|
173
165
|
mermaid.initialize({ startOnLoad: false });
|
174
166
|
mermaid.init(undefined, diagram);
|
175
167
|
|
176
|
-
// Set a small delay to allow Mermaid rendering to complete
|
168
|
+
// Set a small delay to allow Mermaid rendering to complete
|
177
169
|
setTimeout(() => {
|
178
170
|
const svg = container.querySelector("svg");
|
171
|
+
|
179
172
|
if (!svg) {
|
180
173
|
console.error(`SVG not found for graph ID "${graph_id}"`);
|
181
174
|
return;
|
182
175
|
}
|
183
176
|
|
184
|
-
// Force
|
177
|
+
// Force SVG to fit the container
|
185
178
|
svg.setAttribute("width", "100%");
|
186
179
|
svg.setAttribute("height", "100%");
|
187
180
|
svg.setAttribute("preserveAspectRatio", "xMidYMid meet");
|
@@ -192,10 +185,10 @@ style fb32bef2-e79f-4893-b500-2e547f24d482 color:#FFFFFF, fill:#838cc7, stroke:#
|
|
192
185
|
svg.setAttribute("viewBox", `0 0 ${bbox.width} ${bbox.height}`);
|
193
186
|
}
|
194
187
|
|
195
|
-
// Initialize Pan-Zoom
|
188
|
+
// Initialize Pan-Zoom
|
196
189
|
panZoomInstance = svgPanZoom(svg, {
|
197
190
|
zoomEnabled: true,
|
198
|
-
controlIconsEnabled: false, //
|
191
|
+
controlIconsEnabled: false, // Custom controls
|
199
192
|
fit: true,
|
200
193
|
center: true,
|
201
194
|
contain: true,
|
@@ -203,7 +196,7 @@ style fb32bef2-e79f-4893-b500-2e547f24d482 color:#FFFFFF, fill:#838cc7, stroke:#
|
|
203
196
|
maxZoom: 10
|
204
197
|
});
|
205
198
|
|
206
|
-
// Add
|
199
|
+
// Add controls
|
207
200
|
const controlsContainer = document.createElement("div");
|
208
201
|
controlsContainer.className = "svg-pan-zoom-controls";
|
209
202
|
controlsContainer.innerHTML = `
|
@@ -213,7 +206,7 @@ style fb32bef2-e79f-4893-b500-2e547f24d482 color:#FFFFFF, fill:#838cc7, stroke:#
|
|
213
206
|
`;
|
214
207
|
container.appendChild(controlsContainer);
|
215
208
|
|
216
|
-
//
|
209
|
+
// Attach control event listeners
|
217
210
|
document.getElementById(`${graph_id}-zoom-in`).addEventListener("click", () => {
|
218
211
|
if (panZoomInstance) panZoomInstance.zoomIn();
|
219
212
|
});
|
@@ -226,18 +219,41 @@ style fb32bef2-e79f-4893-b500-2e547f24d482 color:#FFFFFF, fill:#838cc7, stroke:#
|
|
226
219
|
panZoomInstance.center();
|
227
220
|
}
|
228
221
|
});
|
229
|
-
}, 500); // Delay
|
222
|
+
}, 500); // Delay for Mermaid and SVG rendering
|
230
223
|
}
|
231
224
|
|
232
|
-
//
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
225
|
+
// Check if Mermaid and SVG-Pan-Zoom are loaded
|
226
|
+
const loadMermaid = typeof mermaid === "undefined";
|
227
|
+
const loadSvgPanZoom = typeof svgPanZoom === "undefined";
|
228
|
+
|
229
|
+
if (loadMermaid || loadSvgPanZoom) {
|
230
|
+
const promises = [];
|
231
|
+
|
232
|
+
// Load Mermaid.js if not already loaded
|
233
|
+
if (loadMermaid) {
|
234
|
+
promises.push(new Promise((resolve) => {
|
235
|
+
const script = document.createElement("script");
|
236
|
+
script.src = "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js";
|
237
|
+
script.onload = resolve;
|
238
|
+
document.head.appendChild(script);
|
239
|
+
}));
|
240
|
+
}
|
241
|
+
|
242
|
+
// Load SVG-Pan-Zoom if not already loaded
|
243
|
+
if (loadSvgPanZoom) {
|
244
|
+
promises.push(new Promise((resolve) => {
|
245
|
+
const script = document.createElement("script");
|
246
|
+
script.src = "https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js";
|
247
|
+
script.onload = resolve;
|
248
|
+
document.head.appendChild(script);
|
249
|
+
}));
|
250
|
+
}
|
251
|
+
|
252
|
+
Promise.all(promises).then(() => initializeMermaid(graph_id));
|
238
253
|
} else {
|
239
254
|
initializeMermaid(graph_id);
|
240
255
|
}
|
241
256
|
})();
|
242
257
|
</script>
|
243
|
-
|
258
|
+
|
259
|
+
|
@@ -245,7 +245,7 @@ pyegeria/full_omag_server_config.py,sha256=CQqLCy_3DZFvJZEOcGf50HWdFaWpiAIs6z-kK
|
|
245
245
|
pyegeria/glossary_browser_omvs.py,sha256=ci57LXFjIAXWw6XXFu8pIbeR_3y4hl_x4F2-HHdy7VM,93585
|
246
246
|
pyegeria/glossary_manager_omvs.py,sha256=GJQo5E3bxv8JL84wTGqJKMrMo7QqNAPtyJJgvGpI_lU,132558
|
247
247
|
pyegeria/m_test.py,sha256=BDKRLsHsAWnwCbzHkkvfsc8ZIJ0k-jmwPPNuTSgW6Qo,7659
|
248
|
-
pyegeria/mermaid_utilities.py,sha256=
|
248
|
+
pyegeria/mermaid_utilities.py,sha256=ePS5eO2BWkfj_FkvnUrYyMFS8YxSCL31vgXouc9cx_o,40705
|
249
249
|
pyegeria/metadata_explorer_omvs.py,sha256=xHnZTQKbd6XwOhYia-RiIisrvZcqHi0SL1l6OCf04Gk,86911
|
250
250
|
pyegeria/my_profile_omvs.py,sha256=d0oJYCJG7pS9BINPuGciVa00ac0jwPHNANXDCLginEc,34720
|
251
251
|
pyegeria/platform_services.py,sha256=xlF5p5HPKDGTFFDsuxm2RLhr8vjZPv4T7e2qCkDgKXE,41654
|
@@ -255,14 +255,14 @@ pyegeria/runtime_manager_omvs.py,sha256=Z5wY9ignNjil8O6yjihZftxkGoh9A4PQDcXhoIsO
|
|
255
255
|
pyegeria/server_operations.py,sha256=vmiUDU_Xa0U8pa0Fdb-QKkoeSqs7WfMwIpG_XU3xgeI,16784
|
256
256
|
pyegeria/solution_architect_omvs.py,sha256=x6CfPTyn1l2DFYVEFP0t_rT9uVjoFr596hBBeuVaMRg,22093
|
257
257
|
pyegeria/template_manager_omvs.py,sha256=PfJ9dOfmBvf59DgRdZ9Dl1Kl_UYqjF-JncXVnbCqLZU,42408
|
258
|
-
pyegeria/test_m.html,sha256=
|
258
|
+
pyegeria/test_m.html,sha256=KIhpa43T1bL3621oNfJ9iEl9nkc3lPMUEjDdNieYYzo,14497
|
259
259
|
pyegeria/test_m1.html,sha256=XS_1IAtfG4ZlZk45QTkrFWWpjQMVlO21ScDMX2Frl3g,14086
|
260
260
|
pyegeria/test_mer.ipynb,sha256=G7hpHn07IXnt_VKvnTDvljwwHB7RfC0etOMyZKt1icQ,30809
|
261
261
|
pyegeria/utils.py,sha256=GCt1C0bp0Xng1ahzbZhzV9qQwH7Dj93IaCt2dvWb-sg,5417
|
262
262
|
pyegeria/valid_metadata_omvs.py,sha256=kL3bEkoBtNCaQKjziFwRAqQyleu-i2ua_REIogfulFw,65031
|
263
263
|
pyegeria/x_action_author_omvs.py,sha256=6b725SPsC52AI7ols7Qq8MsBlZuAXr_BgJ_-ychVRCw,6386
|
264
|
-
pyegeria-5.3.4.
|
265
|
-
pyegeria-5.3.4.
|
266
|
-
pyegeria-5.3.4.
|
267
|
-
pyegeria-5.3.4.
|
268
|
-
pyegeria-5.3.4.
|
264
|
+
pyegeria-5.3.4.16.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
265
|
+
pyegeria-5.3.4.16.dist-info/METADATA,sha256=eGmKFjzIJrGY9h2jVOib_5mrXCePwP-597ozj1coWbg,2736
|
266
|
+
pyegeria-5.3.4.16.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
267
|
+
pyegeria-5.3.4.16.dist-info/entry_points.txt,sha256=LS9g5JPSBL0whnyAcGhLZCAyUp6PkPU6fjHP9Aso1V4,6176
|
268
|
+
pyegeria-5.3.4.16.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|