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.
@@ -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
- <style>
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: 0 auto;
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; /* Ensures controls are above other elements */
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
- {mermaid_code}
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; // Store reference to the panZoom instance
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 before initializing Pan-Zoom
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 the SVG to fit the container by setting width, height, and viewBox
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 functionality
318
+ // Initialize Pan-Zoom
326
319
  panZoomInstance = svgPanZoom(svg, {{
327
320
  zoomEnabled: true,
328
- controlIconsEnabled: false, // Use custom controls
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 custom controls
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
- // Add event listeners for the controls
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 of 500ms for Mermaid and SVG rendering
352
+ }}, 500); // Delay for Mermaid and SVG rendering
360
353
  }}
361
354
 
362
- // Load Mermaid.js if not already loaded
363
- if (typeof mermaid === "undefined") {{
364
- const script = document.createElement("script");
365
- script.src = "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js";
366
- script.onload = () => initializeMermaid(graph_id);
367
- document.head.appendChild(script);
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
- <style>
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: 0 auto;
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; /* Ensures controls are above other elements */
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
- <!-- Mermaid rendering area -->
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: {"flowchart": {"htmlLabels": false}} }%%
47
+ %%{init: {&quot;flowchart&quot;: {&quot;htmlLabels&quot;: false}} }%%
52
48
 
53
49
  subgraph c4f8d707-7c85-4125-b5fd-c3257a2ef2ef [Components and Actors]
54
- fc2de77f-7320-48ea-8750-d434c6e870db@{ shape: text, label: "*Description*
55
- **A description of how a clinical trial is managed in Coco Pharmaceuticals.**"}
56
- 37b8560d-84d4-434b-9b0d-105420fcc924@{ shape: subproc, label: "*Solution Component*
57
- **Certify Hospital**"}
58
- f37f3735-28a1-4e03-9ff5-3fe2f137f661@{ shape: trap-t, label: "*Solution Actor Role*
59
- **Clinical Trial Manager**"}
60
- f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Certifier"|37b8560d-84d4-434b-9b0d-105420fcc924
61
- 72a86eec-9734-4bc0-babb-4fec0aa7c9ff@{ shape: docs, label: "*Solution Component*
62
- **Assemble Treatment Assessment Report**"}
63
- 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5@{ shape: rect, label: "*Solution Component*
64
- **Treatment Efficacy Evidence**"}
65
- 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5-->|"Solution Linking Wire"|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
66
- f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Author"|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
67
- b5c8da4c-f925-4cf1-8294-e43cd2c1a584@{ shape: rect, label: "*Solution Component*
68
- **Analyse Patient Data**"}
69
- b5c8da4c-f925-4cf1-8294-e43cd2c1a584-->|"Solution Linking Wire"|48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5
70
- 7f5dca65-50b4-4103-9ac7-3a406a09047a@{ shape: subproc, label: "*Solution Component*
71
- **Weekly Measurements Onboarding Pipeline**"}
72
- 07705e15-efff-4f80-8992-f04ac85e0ef1@{ shape: rect, label: "*Solution Component*
73
- **Landing Folder Cataloguer**"}
74
- 07705e15-efff-4f80-8992-f04ac85e0ef1-->|"Solution Linking Wire"|7f5dca65-50b4-4103-9ac7-3a406a09047a
75
- f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Steward"|7f5dca65-50b4-4103-9ac7-3a406a09047a
76
- b0290339-c96c-4b05-904f-12fc98e54e14@{ shape: trap-t, label: "*Solution Actor Role*
77
- **Certified Data Engineer**"}
78
- b0290339-c96c-4b05-904f-12fc98e54e14-->|"Steward"|7f5dca65-50b4-4103-9ac7-3a406a09047a
79
- d48f579f-76d3-4c49-b1b4-575f5645a9d0@{ shape: lin-cyl, label: "*Solution Component*
80
- **Treatment Validation Sandbox**"}
81
- 26c07ca4-3b8e-484b-812b-36c1ace4b275@{ shape: rect, label: "*Solution Component*
82
- **Populate Sandbox**"}
83
- 26c07ca4-3b8e-484b-812b-36c1ace4b275-->|"Solution Linking Wire"|d48f579f-76d3-4c49-b1b4-575f5645a9d0
84
- ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec@{ shape: processes, label: "*Solution Component*
85
- **Hospital Processes**"}
86
- a8bd84ca-0aae-4534-b0e8-87e8659467a6@{ shape: trap-t, label: "*Solution Actor Role*
87
- **Clinical Trial Participating Hospital Coordinator**"}
88
- a8bd84ca-0aae-4534-b0e8-87e8659467a6-->|"Coordinator on behalf of hospital"|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
89
- 30adaab5-8870-47a8-8ae9-facbf84cb05a@{ shape: trap-t, label: "*Solution Actor Role*
90
- **Clinical Trial Participating Hospital**"}
91
- 30adaab5-8870-47a8-8ae9-facbf84cb05a-->|"Owner"|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
92
- d48f579f-76d3-4c49-b1b4-575f5645a9d0-->|"Solution Linking Wire"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
93
- ece17806-836c-4756-b3a2-2d12dde215f6@{ shape: trap-t, label: "*Solution Actor Role*
94
- **New Treatment Data Scientist**"}
95
- ece17806-836c-4756-b3a2-2d12dde215f6-->|"Data Analyser"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
96
- 0c757e35-8a42-4d5f-b01b-c72a6cea65cc@{ shape: trap-t, label: "*Solution Actor Role*
97
- **New Treatment Researcher.**"}
98
- 0c757e35-8a42-4d5f-b01b-c72a6cea65cc-->|"Results Interpreter"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
99
- e9c2f911-ffcb-40c6-aeee-8c4d43811576@{ shape: subproc, label: "*Solution Component*
100
- **Onboard Hospital**"}
101
- b0290339-c96c-4b05-904f-12fc98e54e14-->|"Initiator"|e9c2f911-ffcb-40c6-aeee-8c4d43811576
102
- 849b0b42-f465-452b-813c-477d6398e082@{ shape: subproc, label: "*Solution Component*
103
- **Set up clinical trial**"}
104
- f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Initiator"|849b0b42-f465-452b-813c-477d6398e082
105
- a5d4d638-6836-47e5-99d0-fdcde637e13f@{ shape: lin-cyl, label: "*Solution Component*
106
- **Weekly Measurements Data Lake Folder**"}
107
- 7f5dca65-50b4-4103-9ac7-3a406a09047a-->|"Solution Linking Wire"|a5d4d638-6836-47e5-99d0-fdcde637e13f
108
- 0bf2547c-937c-41b6-814f-6284849271a1@{ shape: odd, label: "*Solution Component*
109
- **Treatment Assessment Report Validation and Delivery**"}
110
- 72a86eec-9734-4bc0-babb-4fec0aa7c9ff-->|"Solution Linking Wire"|0bf2547c-937c-41b6-814f-6284849271a1
111
- f6bc847b-868d-43cc-b767-41f5fe3e47d1@{ shape: trap-t, label: "*Solution Actor Role*
112
- **Clinical Trial Sponsor**"}
113
- f6bc847b-868d-43cc-b767-41f5fe3e47d1-->|"Reviewer"|0bf2547c-937c-41b6-814f-6284849271a1
114
- a5d4d638-6836-47e5-99d0-fdcde637e13f-->|"Solution Linking Wire"|26c07ca4-3b8e-484b-812b-36c1ace4b275
115
- fb32bef2-e79f-4893-b500-2e547f24d482@{ shape: subproc, label: "*Solution Component*
116
- **Set up Data Lake Folder**"}
117
- b0290339-c96c-4b05-904f-12fc98e54e14-->|"Initiator"|fb32bef2-e79f-4893-b500-2e547f24d482
118
- 1c150d6e-30cf-481c-9afb-3b06c9c9e78f@{ shape: lin-cyl, label: "*Solution Component*
119
- **Hospital Landing Area Folder**"}
120
- ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec-->|"Solution Linking Wire"|1c150d6e-30cf-481c-9afb-3b06c9c9e78f
121
- 1c150d6e-30cf-481c-9afb-3b06c9c9e78f-->|"Solution Linking Wire"|07705e15-efff-4f80-8992-f04ac85e0ef1
122
- 11c7c850-c67c-41cc-9423-d74db47cbf3a@{ shape: subproc, label: "*Solution Component*
123
- **Nominate Hospital**"}
124
- f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Initiator"|11c7c850-c67c-41cc-9423-d74db47cbf3a
50
+ fc2de77f-7320-48ea-8750-d434c6e870db@{ shape: text, label: &quot;*Description*
51
+ **A description of how a clinical trial is managed in Coco Pharmaceuticals.**&quot;}
52
+ 37b8560d-84d4-434b-9b0d-105420fcc924@{ shape: subproc, label: &quot;*Solution Component*
53
+ **Certify Hospital**&quot;}
54
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661@{ shape: trap-t, label: &quot;*Solution Actor Role*
55
+ **Clinical Trial Manager**&quot;}
56
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661--&gt;|&quot;Certifier&quot;|37b8560d-84d4-434b-9b0d-105420fcc924
57
+ 72a86eec-9734-4bc0-babb-4fec0aa7c9ff@{ shape: docs, label: &quot;*Solution Component*
58
+ **Assemble Treatment Assessment Report**&quot;}
59
+ 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5@{ shape: rect, label: &quot;*Solution Component*
60
+ **Treatment Efficacy Evidence**&quot;}
61
+ 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5--&gt;|&quot;Solution Linking Wire&quot;|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
62
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661--&gt;|&quot;Author&quot;|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
63
+ b5c8da4c-f925-4cf1-8294-e43cd2c1a584@{ shape: rect, label: &quot;*Solution Component*
64
+ **Analyse Patient Data**&quot;}
65
+ b5c8da4c-f925-4cf1-8294-e43cd2c1a584--&gt;|&quot;Solution Linking Wire&quot;|48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5
66
+ 7f5dca65-50b4-4103-9ac7-3a406a09047a@{ shape: subproc, label: &quot;*Solution Component*
67
+ **Weekly Measurements Onboarding Pipeline**&quot;}
68
+ 07705e15-efff-4f80-8992-f04ac85e0ef1@{ shape: rect, label: &quot;*Solution Component*
69
+ **Landing Folder Cataloguer**&quot;}
70
+ 07705e15-efff-4f80-8992-f04ac85e0ef1--&gt;|&quot;Solution Linking Wire&quot;|7f5dca65-50b4-4103-9ac7-3a406a09047a
71
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661--&gt;|&quot;Steward&quot;|7f5dca65-50b4-4103-9ac7-3a406a09047a
72
+ b0290339-c96c-4b05-904f-12fc98e54e14@{ shape: trap-t, label: &quot;*Solution Actor Role*
73
+ **Certified Data Engineer**&quot;}
74
+ b0290339-c96c-4b05-904f-12fc98e54e14--&gt;|&quot;Steward&quot;|7f5dca65-50b4-4103-9ac7-3a406a09047a
75
+ d48f579f-76d3-4c49-b1b4-575f5645a9d0@{ shape: lin-cyl, label: &quot;*Solution Component*
76
+ **Treatment Validation Sandbox**&quot;}
77
+ 26c07ca4-3b8e-484b-812b-36c1ace4b275@{ shape: rect, label: &quot;*Solution Component*
78
+ **Populate Sandbox**&quot;}
79
+ 26c07ca4-3b8e-484b-812b-36c1ace4b275--&gt;|&quot;Solution Linking Wire&quot;|d48f579f-76d3-4c49-b1b4-575f5645a9d0
80
+ ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec@{ shape: processes, label: &quot;*Solution Component*
81
+ **Hospital Processes**&quot;}
82
+ a8bd84ca-0aae-4534-b0e8-87e8659467a6@{ shape: trap-t, label: &quot;*Solution Actor Role*
83
+ **Clinical Trial Participating Hospital Coordinator**&quot;}
84
+ a8bd84ca-0aae-4534-b0e8-87e8659467a6--&gt;|&quot;Coordinator on behalf of hospital&quot;|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
85
+ 30adaab5-8870-47a8-8ae9-facbf84cb05a@{ shape: trap-t, label: &quot;*Solution Actor Role*
86
+ **Clinical Trial Participating Hospital**&quot;}
87
+ 30adaab5-8870-47a8-8ae9-facbf84cb05a--&gt;|&quot;Owner&quot;|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
88
+ d48f579f-76d3-4c49-b1b4-575f5645a9d0--&gt;|&quot;Solution Linking Wire&quot;|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
89
+ ece17806-836c-4756-b3a2-2d12dde215f6@{ shape: trap-t, label: &quot;*Solution Actor Role*
90
+ **New Treatment Data Scientist**&quot;}
91
+ ece17806-836c-4756-b3a2-2d12dde215f6--&gt;|&quot;Data Analyser&quot;|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
92
+ 0c757e35-8a42-4d5f-b01b-c72a6cea65cc@{ shape: trap-t, label: &quot;*Solution Actor Role*
93
+ **New Treatment Researcher.**&quot;}
94
+ 0c757e35-8a42-4d5f-b01b-c72a6cea65cc--&gt;|&quot;Results Interpreter&quot;|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
95
+ e9c2f911-ffcb-40c6-aeee-8c4d43811576@{ shape: subproc, label: &quot;*Solution Component*
96
+ **Onboard Hospital**&quot;}
97
+ b0290339-c96c-4b05-904f-12fc98e54e14--&gt;|&quot;Initiator&quot;|e9c2f911-ffcb-40c6-aeee-8c4d43811576
98
+ 849b0b42-f465-452b-813c-477d6398e082@{ shape: subproc, label: &quot;*Solution Component*
99
+ **Set up clinical trial**&quot;}
100
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661--&gt;|&quot;Initiator&quot;|849b0b42-f465-452b-813c-477d6398e082
101
+ a5d4d638-6836-47e5-99d0-fdcde637e13f@{ shape: lin-cyl, label: &quot;*Solution Component*
102
+ **Weekly Measurements Data Lake Folder**&quot;}
103
+ 7f5dca65-50b4-4103-9ac7-3a406a09047a--&gt;|&quot;Solution Linking Wire&quot;|a5d4d638-6836-47e5-99d0-fdcde637e13f
104
+ 0bf2547c-937c-41b6-814f-6284849271a1@{ shape: odd, label: &quot;*Solution Component*
105
+ **Treatment Assessment Report Validation and Delivery**&quot;}
106
+ 72a86eec-9734-4bc0-babb-4fec0aa7c9ff--&gt;|&quot;Solution Linking Wire&quot;|0bf2547c-937c-41b6-814f-6284849271a1
107
+ f6bc847b-868d-43cc-b767-41f5fe3e47d1@{ shape: trap-t, label: &quot;*Solution Actor Role*
108
+ **Clinical Trial Sponsor**&quot;}
109
+ f6bc847b-868d-43cc-b767-41f5fe3e47d1--&gt;|&quot;Reviewer&quot;|0bf2547c-937c-41b6-814f-6284849271a1
110
+ a5d4d638-6836-47e5-99d0-fdcde637e13f--&gt;|&quot;Solution Linking Wire&quot;|26c07ca4-3b8e-484b-812b-36c1ace4b275
111
+ fb32bef2-e79f-4893-b500-2e547f24d482@{ shape: subproc, label: &quot;*Solution Component*
112
+ **Set up Data Lake Folder**&quot;}
113
+ b0290339-c96c-4b05-904f-12fc98e54e14--&gt;|&quot;Initiator&quot;|fb32bef2-e79f-4893-b500-2e547f24d482
114
+ 1c150d6e-30cf-481c-9afb-3b06c9c9e78f@{ shape: lin-cyl, label: &quot;*Solution Component*
115
+ **Hospital Landing Area Folder**&quot;}
116
+ ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec--&gt;|&quot;Solution Linking Wire&quot;|1c150d6e-30cf-481c-9afb-3b06c9c9e78f
117
+ 1c150d6e-30cf-481c-9afb-3b06c9c9e78f--&gt;|&quot;Solution Linking Wire&quot;|07705e15-efff-4f80-8992-f04ac85e0ef1
118
+ 11c7c850-c67c-41cc-9423-d74db47cbf3a@{ shape: subproc, label: &quot;*Solution Component*
119
+ **Nominate Hospital**&quot;}
120
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661--&gt;|&quot;Initiator&quot;|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; // Store reference to the panZoom instance
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 before initializing Pan-Zoom
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 the SVG to fit the container by setting width, height, and viewBox
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 functionality
188
+ // Initialize Pan-Zoom
196
189
  panZoomInstance = svgPanZoom(svg, {
197
190
  zoomEnabled: true,
198
- controlIconsEnabled: false, // Use custom controls
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 custom controls
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
- // Add event listeners for the controls
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 of 500ms for Mermaid and SVG rendering
222
+ }, 500); // Delay for Mermaid and SVG rendering
230
223
  }
231
224
 
232
- // Load Mermaid.js if not already loaded
233
- if (typeof mermaid === "undefined") {
234
- const script = document.createElement("script");
235
- script.src = "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js";
236
- script.onload = () => initializeMermaid(graph_id);
237
- document.head.appendChild(script);
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
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyegeria
3
- Version: 5.3.4.14
3
+ Version: 5.3.4.16
4
4
  Summary: A python client for Egeria
5
5
  License: Apache 2.0
6
6
  Keywords: egeria,metadata,governance
@@ -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=hDLpCOmLDsh9gkqmx2jTEXRjUGYgN3wkkWzpmiN-HoA,40281
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=equ-hAZ8yn8g5pzzmslQaO_k75GWaWg9OxeHpCBG_4U,13531
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.14.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
265
- pyegeria-5.3.4.14.dist-info/METADATA,sha256=FftxyngR6Meq7NLfYJODC0jOAA3LLqja0sulciEPzcs,2736
266
- pyegeria-5.3.4.14.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
267
- pyegeria-5.3.4.14.dist-info/entry_points.txt,sha256=LS9g5JPSBL0whnyAcGhLZCAyUp6PkPU6fjHP9Aso1V4,6176
268
- pyegeria-5.3.4.14.dist-info/RECORD,,
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,,