pyegeria 5.3.4.18__py3-none-any.whl → 5.3.4.20__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/__init__.py +2 -1
- pyegeria/m_test.py +8 -3
- pyegeria/mermaid_utilities.py +147 -4
- pyegeria/test_j.html +223 -0
- pyegeria/test_m.html +182 -191
- pyegeria/test_w.html +213 -0
- {pyegeria-5.3.4.18.dist-info → pyegeria-5.3.4.20.dist-info}/METADATA +1 -1
- {pyegeria-5.3.4.18.dist-info → pyegeria-5.3.4.20.dist-info}/RECORD +11 -9
- {pyegeria-5.3.4.18.dist-info → pyegeria-5.3.4.20.dist-info}/LICENSE +0 -0
- {pyegeria-5.3.4.18.dist-info → pyegeria-5.3.4.20.dist-info}/WHEEL +0 -0
- {pyegeria-5.3.4.18.dist-info → pyegeria-5.3.4.20.dist-info}/entry_points.txt +0 -0
pyegeria/__init__.py
CHANGED
@@ -69,7 +69,8 @@ from .full_omag_server_config import FullServerConfig
|
|
69
69
|
from .glossary_browser_omvs import GlossaryBrowser
|
70
70
|
from .glossary_manager_omvs import GlossaryManager
|
71
71
|
from .mermaid_utilities import (
|
72
|
-
|
72
|
+
construct_mermaid_web,
|
73
|
+
construct_mermaid_jup,
|
73
74
|
generate_process_graph,
|
74
75
|
load_mermaid,
|
75
76
|
parse_mermaid_code,
|
pyegeria/m_test.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
from pyegeria.mermaid_utilities import
|
1
|
+
from pyegeria.mermaid_utilities import construct_mermaid_web, construct_mermaid_jup
|
2
2
|
|
3
3
|
m = """
|
4
4
|
---
|
@@ -107,7 +107,12 @@ style f37f3735-28a1-4e03-9ff5-3fe2f137f661 color:#FFFFFF, fill:#AA00FF, stroke:#
|
|
107
107
|
style fb32bef2-e79f-4893-b500-2e547f24d482 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
108
108
|
"""
|
109
109
|
|
110
|
-
h =
|
110
|
+
h = construct_mermaid_web(m)
|
111
111
|
print(h)
|
112
|
-
with open("
|
112
|
+
with open("test_w.html", "w") as f:
|
113
113
|
f.write(h)
|
114
|
+
|
115
|
+
h = construct_mermaid_jup(m)
|
116
|
+
print(h)
|
117
|
+
with open("test_j.html", "w") as f:
|
118
|
+
f.write(h)
|
pyegeria/mermaid_utilities.py
CHANGED
@@ -63,7 +63,7 @@ def load_mermaid():
|
|
63
63
|
|
64
64
|
|
65
65
|
def render_mermaid(mermaid_code):
|
66
|
-
return display(HTML(
|
66
|
+
return display(HTML(construct_mermaid_jup(mermaid_code)))
|
67
67
|
|
68
68
|
|
69
69
|
def parse_mermaid_code(mermaid_code):
|
@@ -85,7 +85,7 @@ def parse_mermaid_code(mermaid_code):
|
|
85
85
|
return title, guid, mermaid_code
|
86
86
|
|
87
87
|
|
88
|
-
def
|
88
|
+
def construct_mermaid_web(mermaid_str: str) -> str:
|
89
89
|
"""Function to display a HTML code in a Jupyter notebook"""
|
90
90
|
title_label, guid, mermaid_code = parse_mermaid_code(mermaid_str)
|
91
91
|
|
@@ -209,8 +209,151 @@ def old_construct_mermaid_html(mermaid_str: str) -> str:
|
|
209
209
|
|
210
210
|
return html_section1 + html_section2 + html_section3 + mermaid_code + html_section4
|
211
211
|
|
212
|
+
def construct_mermaid_jup(mermaid_str: str) -> str:
|
213
|
+
"""Function to display a HTML code in a Jupyter notebook
|
214
|
+
|
215
|
+
Constructs HTML for a single Mermaid graph with pan and zoom support.
|
216
|
+
Each call overwrites the previous graph.
|
217
|
+
|
218
|
+
:param mermaid_code: The Mermaid code for the graph.
|
219
|
+
:param graph_id: An optional unique graph ID (default is 'mermaid-graph').
|
220
|
+
:return: The HTML content for the Mermaid graph with pan and zoom enabled.
|
221
|
+
|
222
|
+
"""
|
223
|
+
title_label, guid, mermaid_code = parse_mermaid_code(mermaid_str)
|
224
|
+
|
225
|
+
graph_id = f"mermaid-graph-{guid}-{str(uuid.uuid4())[:4]}"
|
226
|
+
escaped_header = html.escape(title_label) if title_label else "" # Sanitize the header safely
|
227
|
+
escaped_mermaid_code = html.escape(mermaid_code)
|
228
|
+
header_html = f"""
|
229
|
+
<h3 id="{graph_id}-heading" style="margin: 20px 0; font-size: 1.5em; text-align: center;">
|
230
|
+
{escaped_header}
|
231
|
+
</h3>
|
232
|
+
<p id="{graph_id}-subheading" style="margin: 0; padding: 5px; font-size: 1em; text-align: center; color: gray; flex: 0 0 auto;">
|
233
|
+
GUID: {guid}
|
234
|
+
</p>
|
235
|
+
""" if title_label else ""
|
236
|
+
|
237
|
+
html_content = f"""
|
238
|
+
<style>
|
239
|
+
/* Style for the diagram container */
|
240
|
+
.diagram-container {{
|
241
|
+
position: relative;
|
242
|
+
width: 100%; /* Adjust the diagram container width */
|
243
|
+
height: 500px; /* Set a fixed height for the container */
|
244
|
+
margin: 0 auto;
|
245
|
+
border: 1px solid #ccc; /* Optional border for visualization */
|
246
|
+
overflow: hidden; /* Prevent content overflow outside the container */
|
247
|
+
}}
|
248
|
+
|
249
|
+
/* Style for zoom controls */
|
250
|
+
.svg-pan-zoom_controls {{
|
251
|
+
position: absolute;
|
252
|
+
top: 10px;
|
253
|
+
right: 10px;
|
254
|
+
display: flex;
|
255
|
+
flex-direction: column;
|
256
|
+
gap: 5px;
|
257
|
+
}}
|
258
|
+
.svg-pan-zoom_controls button {{
|
259
|
+
background-color: #007bff;
|
260
|
+
color: white;
|
261
|
+
border: none;
|
262
|
+
padding: 5px 10px;
|
263
|
+
border-radius: 3px;
|
264
|
+
cursor: pointer;
|
265
|
+
font-size: 14px;
|
266
|
+
}}
|
267
|
+
.svg-pan-zoom_controls button:hover {{
|
268
|
+
background-color: #0056b3;
|
269
|
+
}}
|
270
|
+
</style>
|
271
|
+
|
272
|
+
<div id="{graph_id}-container" class="diagram-container">
|
273
|
+
<!-- Mermaid diagram will be dynamically rendered here -->
|
274
|
+
{header_html}
|
275
|
+
<div id="{graph_id}" class="mermaid">
|
276
|
+
{escaped_mermaid_code}
|
277
|
+
</div>
|
278
|
+
</div>
|
279
|
+
|
280
|
+
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
|
281
|
+
<script src="https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js"></script>
|
282
|
+
<script>
|
283
|
+
document.addEventListener("DOMContentLoaded", () => {{
|
284
|
+
// Initialize Mermaid and Pan-Zoom functionality
|
285
|
+
const graph_id = "{graph_id}";
|
286
|
+
|
287
|
+
function initializeMermaid(graph_id) {{
|
288
|
+
const containerElement = document.getElementById(`${{graph_id}}-container`);
|
289
|
+
|
290
|
+
if (!containerElement) {{
|
291
|
+
console.error(`Container with ID "${{graph_id}}-container" not found.`);
|
292
|
+
return;
|
293
|
+
}}
|
294
|
+
|
295
|
+
// Configure Mermaid
|
296
|
+
mermaid.initialize({{ startOnLoad: false, logLevel: "debug" }});
|
297
|
+
mermaid.init(undefined, `#${{graph_id}}`);
|
298
|
+
|
299
|
+
setTimeout(() => {{
|
300
|
+
const svg = containerElement.querySelector("svg");
|
301
|
+
if (!svg) {{
|
302
|
+
console.error(`SVG not rendered for ID "${{graph_id}}".`);
|
303
|
+
return;
|
304
|
+
}}
|
305
|
+
|
306
|
+
// Set initial size
|
307
|
+
svg.setAttribute("width", "100%");
|
308
|
+
svg.setAttribute("height", "100%");
|
309
|
+
|
310
|
+
// Initialize Pan-Zoom
|
311
|
+
const panZoom = svgPanZoom(svg, {{
|
312
|
+
zoomEnabled: true,
|
313
|
+
controlIconsEnabled: false,
|
314
|
+
fit: true,
|
315
|
+
center: true,
|
316
|
+
minZoom: 0.5,
|
317
|
+
maxZoom: 10,
|
318
|
+
contain: true
|
319
|
+
}});
|
320
|
+
|
321
|
+
// Add custom controls
|
322
|
+
const controlsContainer = document.createElement("div");
|
323
|
+
controlsContainer.className = "svg-pan-zoom_controls";
|
324
|
+
controlsContainer.innerHTML = `
|
325
|
+
<button id="${{graph_id}}-zoom-in">+</button>
|
326
|
+
<button id="${{graph_id}}-zoom-out">-</button>
|
327
|
+
<button id="${{graph_id}}-reset">Reset</button>
|
328
|
+
`;
|
329
|
+
containerElement.appendChild(controlsContainer);
|
330
|
+
|
331
|
+
// Handle controls
|
332
|
+
document.getElementById(`${{graph_id}}-zoom-in`).addEventListener("click", () => panZoom.zoomIn());
|
333
|
+
document.getElementById(`${{graph_id}}-zoom-out`).addEventListener("click", () => panZoom.zoomOut());
|
334
|
+
document.getElementById(`${{graph_id}}-reset`).addEventListener("click", () => {{
|
335
|
+
panZoom.resetZoom();
|
336
|
+
panZoom.center();
|
337
|
+
}});
|
338
|
+
}}, 500);
|
339
|
+
}}
|
340
|
+
|
341
|
+
if (typeof mermaid === "undefined") {{
|
342
|
+
const script = document.createElement('script');
|
343
|
+
script.src = "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js";
|
344
|
+
script.onload = () => initializeMermaid(graph_id);
|
345
|
+
document.head.appendChild(script);
|
346
|
+
}} else {{
|
347
|
+
initializeMermaid(graph_id);
|
348
|
+
}}
|
349
|
+
}});
|
350
|
+
</script>
|
351
|
+
|
352
|
+
"""
|
353
|
+
return html_content
|
354
|
+
|
212
355
|
|
213
|
-
def
|
356
|
+
def not_working_construct_mermaid_html(mermaid_str: str) -> str:
|
214
357
|
"""Function to display a HTML code in a Jupyter notebook
|
215
358
|
|
216
359
|
Constructs HTML for a single Mermaid graph with pan and zoom support.
|
@@ -947,7 +1090,7 @@ def save_mermaid_html(
|
|
947
1090
|
os.makedirs(folder)
|
948
1091
|
mermaid_file = os.path.join(folder, title + ".html")
|
949
1092
|
|
950
|
-
payload =
|
1093
|
+
payload = construct_mermaid_web(mermaid_str)
|
951
1094
|
|
952
1095
|
with open(mermaid_file, "w") as f:
|
953
1096
|
f.write(payload)
|
pyegeria/test_j.html
ADDED
@@ -0,0 +1,223 @@
|
|
1
|
+
|
2
|
+
<style>
|
3
|
+
/* Style for the diagram container */
|
4
|
+
.diagram-container {
|
5
|
+
position: relative;
|
6
|
+
width: 100%; /* Adjust the diagram container width */
|
7
|
+
height: 500px; /* Set a fixed height for the container */
|
8
|
+
margin: 0 auto;
|
9
|
+
border: 1px solid #ccc; /* Optional border for visualization */
|
10
|
+
overflow: hidden; /* Prevent content overflow outside the container */
|
11
|
+
}
|
12
|
+
|
13
|
+
/* Style for zoom controls */
|
14
|
+
.svg-pan-zoom_controls {
|
15
|
+
position: absolute;
|
16
|
+
top: 10px;
|
17
|
+
right: 10px;
|
18
|
+
display: flex;
|
19
|
+
flex-direction: column;
|
20
|
+
gap: 5px;
|
21
|
+
}
|
22
|
+
.svg-pan-zoom_controls button {
|
23
|
+
background-color: #007bff;
|
24
|
+
color: white;
|
25
|
+
border: none;
|
26
|
+
padding: 5px 10px;
|
27
|
+
border-radius: 3px;
|
28
|
+
cursor: pointer;
|
29
|
+
font-size: 14px;
|
30
|
+
}
|
31
|
+
.svg-pan-zoom_controls button:hover {
|
32
|
+
background-color: #0056b3;
|
33
|
+
}
|
34
|
+
</style>
|
35
|
+
|
36
|
+
<div id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-54cd-container" class="diagram-container">
|
37
|
+
<!-- Mermaid diagram will be dynamically rendered here -->
|
38
|
+
|
39
|
+
<h3 id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-54cd-heading" style="margin: 20px 0; font-size: 1.5em; text-align: center;">
|
40
|
+
Component for Solution Blueprint - Clinical Trial Management Solution Blueprint
|
41
|
+
</h3>
|
42
|
+
<p id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-54cd-subheading" style="margin: 0; padding: 5px; font-size: 1em; text-align: center; color: gray; flex: 0 0 auto;">
|
43
|
+
GUID: c4f8d707-7c85-4125-b5fd-c3257a2ef2ef
|
44
|
+
</p>
|
45
|
+
|
46
|
+
<div id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-54cd" class="mermaid">
|
47
|
+
flowchart TD
|
48
|
+
%%{init: {"flowchart": {"htmlLabels": false}} }%%
|
49
|
+
|
50
|
+
subgraph c4f8d707-7c85-4125-b5fd-c3257a2ef2ef [Components and Actors]
|
51
|
+
fc2de77f-7320-48ea-8750-d434c6e870db@{ shape: text, label: "*Description*
|
52
|
+
**A description of how a clinical trial is managed in Coco Pharmaceuticals.**"}
|
53
|
+
37b8560d-84d4-434b-9b0d-105420fcc924@{ shape: subproc, label: "*Solution Component*
|
54
|
+
**Certify Hospital**"}
|
55
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661@{ shape: trap-t, label: "*Solution Actor Role*
|
56
|
+
**Clinical Trial Manager**"}
|
57
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Certifier"|37b8560d-84d4-434b-9b0d-105420fcc924
|
58
|
+
72a86eec-9734-4bc0-babb-4fec0aa7c9ff@{ shape: docs, label: "*Solution Component*
|
59
|
+
**Assemble Treatment Assessment Report**"}
|
60
|
+
48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5@{ shape: rect, label: "*Solution Component*
|
61
|
+
**Treatment Efficacy Evidence**"}
|
62
|
+
48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5-->|"Solution Linking Wire"|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
|
63
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Author"|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
|
64
|
+
b5c8da4c-f925-4cf1-8294-e43cd2c1a584@{ shape: rect, label: "*Solution Component*
|
65
|
+
**Analyse Patient Data**"}
|
66
|
+
b5c8da4c-f925-4cf1-8294-e43cd2c1a584-->|"Solution Linking Wire"|48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5
|
67
|
+
7f5dca65-50b4-4103-9ac7-3a406a09047a@{ shape: subproc, label: "*Solution Component*
|
68
|
+
**Weekly Measurements Onboarding Pipeline**"}
|
69
|
+
07705e15-efff-4f80-8992-f04ac85e0ef1@{ shape: rect, label: "*Solution Component*
|
70
|
+
**Landing Folder Cataloguer**"}
|
71
|
+
07705e15-efff-4f80-8992-f04ac85e0ef1-->|"Solution Linking Wire"|7f5dca65-50b4-4103-9ac7-3a406a09047a
|
72
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Steward"|7f5dca65-50b4-4103-9ac7-3a406a09047a
|
73
|
+
b0290339-c96c-4b05-904f-12fc98e54e14@{ shape: trap-t, label: "*Solution Actor Role*
|
74
|
+
**Certified Data Engineer**"}
|
75
|
+
b0290339-c96c-4b05-904f-12fc98e54e14-->|"Steward"|7f5dca65-50b4-4103-9ac7-3a406a09047a
|
76
|
+
d48f579f-76d3-4c49-b1b4-575f5645a9d0@{ shape: lin-cyl, label: "*Solution Component*
|
77
|
+
**Treatment Validation Sandbox**"}
|
78
|
+
26c07ca4-3b8e-484b-812b-36c1ace4b275@{ shape: rect, label: "*Solution Component*
|
79
|
+
**Populate Sandbox**"}
|
80
|
+
26c07ca4-3b8e-484b-812b-36c1ace4b275-->|"Solution Linking Wire"|d48f579f-76d3-4c49-b1b4-575f5645a9d0
|
81
|
+
ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec@{ shape: processes, label: "*Solution Component*
|
82
|
+
**Hospital Processes**"}
|
83
|
+
a8bd84ca-0aae-4534-b0e8-87e8659467a6@{ shape: trap-t, label: "*Solution Actor Role*
|
84
|
+
**Clinical Trial Participating Hospital Coordinator**"}
|
85
|
+
a8bd84ca-0aae-4534-b0e8-87e8659467a6-->|"Coordinator on behalf of hospital"|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
|
86
|
+
30adaab5-8870-47a8-8ae9-facbf84cb05a@{ shape: trap-t, label: "*Solution Actor Role*
|
87
|
+
**Clinical Trial Participating Hospital**"}
|
88
|
+
30adaab5-8870-47a8-8ae9-facbf84cb05a-->|"Owner"|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
|
89
|
+
d48f579f-76d3-4c49-b1b4-575f5645a9d0-->|"Solution Linking Wire"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
|
90
|
+
ece17806-836c-4756-b3a2-2d12dde215f6@{ shape: trap-t, label: "*Solution Actor Role*
|
91
|
+
**New Treatment Data Scientist**"}
|
92
|
+
ece17806-836c-4756-b3a2-2d12dde215f6-->|"Data Analyser"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
|
93
|
+
0c757e35-8a42-4d5f-b01b-c72a6cea65cc@{ shape: trap-t, label: "*Solution Actor Role*
|
94
|
+
**New Treatment Researcher.**"}
|
95
|
+
0c757e35-8a42-4d5f-b01b-c72a6cea65cc-->|"Results Interpreter"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
|
96
|
+
e9c2f911-ffcb-40c6-aeee-8c4d43811576@{ shape: subproc, label: "*Solution Component*
|
97
|
+
**Onboard Hospital**"}
|
98
|
+
b0290339-c96c-4b05-904f-12fc98e54e14-->|"Initiator"|e9c2f911-ffcb-40c6-aeee-8c4d43811576
|
99
|
+
849b0b42-f465-452b-813c-477d6398e082@{ shape: subproc, label: "*Solution Component*
|
100
|
+
**Set up clinical trial**"}
|
101
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Initiator"|849b0b42-f465-452b-813c-477d6398e082
|
102
|
+
a5d4d638-6836-47e5-99d0-fdcde637e13f@{ shape: lin-cyl, label: "*Solution Component*
|
103
|
+
**Weekly Measurements Data Lake Folder**"}
|
104
|
+
7f5dca65-50b4-4103-9ac7-3a406a09047a-->|"Solution Linking Wire"|a5d4d638-6836-47e5-99d0-fdcde637e13f
|
105
|
+
0bf2547c-937c-41b6-814f-6284849271a1@{ shape: odd, label: "*Solution Component*
|
106
|
+
**Treatment Assessment Report Validation and Delivery**"}
|
107
|
+
72a86eec-9734-4bc0-babb-4fec0aa7c9ff-->|"Solution Linking Wire"|0bf2547c-937c-41b6-814f-6284849271a1
|
108
|
+
f6bc847b-868d-43cc-b767-41f5fe3e47d1@{ shape: trap-t, label: "*Solution Actor Role*
|
109
|
+
**Clinical Trial Sponsor**"}
|
110
|
+
f6bc847b-868d-43cc-b767-41f5fe3e47d1-->|"Reviewer"|0bf2547c-937c-41b6-814f-6284849271a1
|
111
|
+
a5d4d638-6836-47e5-99d0-fdcde637e13f-->|"Solution Linking Wire"|26c07ca4-3b8e-484b-812b-36c1ace4b275
|
112
|
+
fb32bef2-e79f-4893-b500-2e547f24d482@{ shape: subproc, label: "*Solution Component*
|
113
|
+
**Set up Data Lake Folder**"}
|
114
|
+
b0290339-c96c-4b05-904f-12fc98e54e14-->|"Initiator"|fb32bef2-e79f-4893-b500-2e547f24d482
|
115
|
+
1c150d6e-30cf-481c-9afb-3b06c9c9e78f@{ shape: lin-cyl, label: "*Solution Component*
|
116
|
+
**Hospital Landing Area Folder**"}
|
117
|
+
ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec-->|"Solution Linking Wire"|1c150d6e-30cf-481c-9afb-3b06c9c9e78f
|
118
|
+
1c150d6e-30cf-481c-9afb-3b06c9c9e78f-->|"Solution Linking Wire"|07705e15-efff-4f80-8992-f04ac85e0ef1
|
119
|
+
11c7c850-c67c-41cc-9423-d74db47cbf3a@{ shape: subproc, label: "*Solution Component*
|
120
|
+
**Nominate Hospital**"}
|
121
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Initiator"|11c7c850-c67c-41cc-9423-d74db47cbf3a
|
122
|
+
end
|
123
|
+
style 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
124
|
+
style ece17806-836c-4756-b3a2-2d12dde215f6 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
125
|
+
style e9c2f911-ffcb-40c6-aeee-8c4d43811576 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
126
|
+
style a5d4d638-6836-47e5-99d0-fdcde637e13f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
127
|
+
style 0bf2547c-937c-41b6-814f-6284849271a1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
128
|
+
style 30adaab5-8870-47a8-8ae9-facbf84cb05a color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
129
|
+
style b0290339-c96c-4b05-904f-12fc98e54e14 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
130
|
+
style 26c07ca4-3b8e-484b-812b-36c1ace4b275 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
131
|
+
style 1c150d6e-30cf-481c-9afb-3b06c9c9e78f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
132
|
+
style 07705e15-efff-4f80-8992-f04ac85e0ef1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
133
|
+
style a8bd84ca-0aae-4534-b0e8-87e8659467a6 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
134
|
+
style 0c757e35-8a42-4d5f-b01b-c72a6cea65cc color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
135
|
+
style c4f8d707-7c85-4125-b5fd-c3257a2ef2ef color:#3079ab, fill:#b7c0c7, stroke:#3079ab
|
136
|
+
style 37b8560d-84d4-434b-9b0d-105420fcc924 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
137
|
+
style 11c7c850-c67c-41cc-9423-d74db47cbf3a color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
138
|
+
style fc2de77f-7320-48ea-8750-d434c6e870db color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
139
|
+
style 849b0b42-f465-452b-813c-477d6398e082 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
140
|
+
style 7f5dca65-50b4-4103-9ac7-3a406a09047a color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
141
|
+
style ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
142
|
+
style 72a86eec-9734-4bc0-babb-4fec0aa7c9ff color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
143
|
+
style b5c8da4c-f925-4cf1-8294-e43cd2c1a584 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
144
|
+
style f6bc847b-868d-43cc-b767-41f5fe3e47d1 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
145
|
+
style d48f579f-76d3-4c49-b1b4-575f5645a9d0 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
146
|
+
style f37f3735-28a1-4e03-9ff5-3fe2f137f661 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
147
|
+
style fb32bef2-e79f-4893-b500-2e547f24d482 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
148
|
+
</div>
|
149
|
+
</div>
|
150
|
+
|
151
|
+
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
|
152
|
+
<script src="https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js"></script>
|
153
|
+
<script>
|
154
|
+
document.addEventListener("DOMContentLoaded", () => {
|
155
|
+
// Initialize Mermaid and Pan-Zoom functionality
|
156
|
+
const graph_id = "mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-54cd";
|
157
|
+
|
158
|
+
function initializeMermaid(graph_id) {
|
159
|
+
const containerElement = document.getElementById(`${graph_id}-container`);
|
160
|
+
|
161
|
+
if (!containerElement) {
|
162
|
+
console.error(`Container with ID "${graph_id}-container" not found.`);
|
163
|
+
return;
|
164
|
+
}
|
165
|
+
|
166
|
+
// Configure Mermaid
|
167
|
+
mermaid.initialize({ startOnLoad: false, logLevel: "debug" });
|
168
|
+
mermaid.init(undefined, `#${graph_id}`);
|
169
|
+
|
170
|
+
setTimeout(() => {
|
171
|
+
const svg = containerElement.querySelector("svg");
|
172
|
+
if (!svg) {
|
173
|
+
console.error(`SVG not rendered for ID "${graph_id}".`);
|
174
|
+
return;
|
175
|
+
}
|
176
|
+
|
177
|
+
// Set initial size
|
178
|
+
svg.setAttribute("width", "100%");
|
179
|
+
svg.setAttribute("height", "100%");
|
180
|
+
|
181
|
+
// Initialize Pan-Zoom
|
182
|
+
const panZoom = svgPanZoom(svg, {
|
183
|
+
zoomEnabled: true,
|
184
|
+
controlIconsEnabled: false,
|
185
|
+
fit: true,
|
186
|
+
center: true,
|
187
|
+
minZoom: 0.5,
|
188
|
+
maxZoom: 10,
|
189
|
+
contain: true
|
190
|
+
});
|
191
|
+
|
192
|
+
// Add custom controls
|
193
|
+
const controlsContainer = document.createElement("div");
|
194
|
+
controlsContainer.className = "svg-pan-zoom_controls";
|
195
|
+
controlsContainer.innerHTML = `
|
196
|
+
<button id="${graph_id}-zoom-in">+</button>
|
197
|
+
<button id="${graph_id}-zoom-out">-</button>
|
198
|
+
<button id="${graph_id}-reset">Reset</button>
|
199
|
+
`;
|
200
|
+
containerElement.appendChild(controlsContainer);
|
201
|
+
|
202
|
+
// Handle controls
|
203
|
+
document.getElementById(`${graph_id}-zoom-in`).addEventListener("click", () => panZoom.zoomIn());
|
204
|
+
document.getElementById(`${graph_id}-zoom-out`).addEventListener("click", () => panZoom.zoomOut());
|
205
|
+
document.getElementById(`${graph_id}-reset`).addEventListener("click", () => {
|
206
|
+
panZoom.resetZoom();
|
207
|
+
panZoom.center();
|
208
|
+
});
|
209
|
+
}, 500);
|
210
|
+
}
|
211
|
+
|
212
|
+
if (typeof mermaid === "undefined") {
|
213
|
+
const script = document.createElement('script');
|
214
|
+
script.src = "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js";
|
215
|
+
script.onload = () => initializeMermaid(graph_id);
|
216
|
+
document.head.appendChild(script);
|
217
|
+
} else {
|
218
|
+
initializeMermaid(graph_id);
|
219
|
+
}
|
220
|
+
});
|
221
|
+
</script>
|
222
|
+
|
223
|
+
|
pyegeria/test_m.html
CHANGED
@@ -1,124 +1,135 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
color: white;
|
25
|
-
border: none;
|
26
|
-
padding: 5px 10px;
|
27
|
-
border-radius: 3px;
|
28
|
-
cursor: pointer;
|
29
|
-
font-size: 14px;
|
30
|
-
}
|
31
|
-
.svg-pan-zoom_controls button:hover {
|
32
|
-
background-color: #0056b3;
|
33
|
-
}
|
34
|
-
</style>
|
2
|
+
<!DOCTYPE html>
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<style type="text/css">
|
6
|
+
#mySvgId {
|
7
|
+
width: 100%;
|
8
|
+
height: 600px;
|
9
|
+
overflow: scroll;
|
10
|
+
border: 2px solid #ccc;
|
11
|
+
position: relative;
|
12
|
+
margin-bottom: 10px;
|
13
|
+
}
|
14
|
+
svg {
|
15
|
+
cursor: grab;
|
16
|
+
}
|
17
|
+
|
18
|
+
</style>
|
19
|
+
</head>
|
20
|
+
|
21
|
+
<title>Component for Solution Blueprint - Clinical Trial Management Solution Blueprint </title>
|
22
|
+
<h3>Component for Solution Blueprint - Clinical Trial Management Solution Blueprint </h3>
|
23
|
+
GUID : c4f8d707-7c85-4125-b5fd-c3257a2ef2ef
|
35
24
|
|
36
|
-
<div id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-2bd0-container" class="diagram-container">
|
37
|
-
<!-- Mermaid diagram will be dynamically rendered here -->
|
38
25
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
26
|
+
<body>
|
27
|
+
|
28
|
+
<div id="graphDiv"></div>
|
29
|
+
<script src="https://bumbu.me/svg-pan-zoom/dist/svg-pan-zoom.min.js"></script>
|
30
|
+
<script type="module">
|
31
|
+
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
|
32
|
+
|
33
|
+
mermaid.initialize({startOnLoad: false});
|
34
|
+
await mermaid.run({
|
35
|
+
querySelector: '.mermaid',
|
36
|
+
postRenderCallback: (id) => {
|
37
|
+
const container = document.getElementById("diagram-container");
|
38
|
+
const svgElement = container.querySelector("svg");
|
39
|
+
|
40
|
+
// Initialize Panzoom
|
41
|
+
const panzoomInstance = Panzoom(svgElement, {
|
42
|
+
maxScale: 5,
|
43
|
+
minScale: 0.5,
|
44
|
+
step: 0.1,
|
45
|
+
});
|
46
|
+
|
47
|
+
// Add mouse wheel zoom
|
48
|
+
container.addEventListener("wheel", (event) => {
|
49
|
+
panzoomInstance.zoomWithWheel(event);
|
50
|
+
});
|
51
|
+
}
|
52
|
+
});
|
53
|
+
|
54
|
+
|
55
|
+
const drawDiagram = async function () {
|
56
|
+
const element = document.querySelector('#graphDiv');
|
57
|
+
const graphDefinition = `
|
58
|
+
flowchart TD
|
59
|
+
%%{init: {"flowchart": {"htmlLabels": false}} }%%
|
49
60
|
|
50
61
|
subgraph c4f8d707-7c85-4125-b5fd-c3257a2ef2ef [Components and Actors]
|
51
|
-
fc2de77f-7320-48ea-8750-d434c6e870db@{ shape: text, label:
|
52
|
-
**A description of how a clinical trial is managed in Coco Pharmaceuticals
|
53
|
-
37b8560d-84d4-434b-9b0d-105420fcc924@{ shape: subproc, label:
|
54
|
-
**Certify Hospital
|
55
|
-
f37f3735-28a1-4e03-9ff5-3fe2f137f661@{ shape: trap-t, label:
|
56
|
-
**Clinical Trial Manager
|
57
|
-
f37f3735-28a1-4e03-9ff5-3fe2f137f661
|
58
|
-
72a86eec-9734-4bc0-babb-4fec0aa7c9ff@{ shape: docs, label:
|
59
|
-
**Assemble Treatment Assessment Report
|
60
|
-
48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5@{ shape: rect, label:
|
61
|
-
**Treatment Efficacy Evidence
|
62
|
-
48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5
|
63
|
-
f37f3735-28a1-4e03-9ff5-3fe2f137f661
|
64
|
-
b5c8da4c-f925-4cf1-8294-e43cd2c1a584@{ shape: rect, label:
|
65
|
-
**Analyse Patient Data
|
66
|
-
b5c8da4c-f925-4cf1-8294-e43cd2c1a584
|
67
|
-
7f5dca65-50b4-4103-9ac7-3a406a09047a@{ shape: subproc, label:
|
68
|
-
**Weekly Measurements Onboarding Pipeline
|
69
|
-
07705e15-efff-4f80-8992-f04ac85e0ef1@{ shape: rect, label:
|
70
|
-
**Landing Folder Cataloguer
|
71
|
-
07705e15-efff-4f80-8992-f04ac85e0ef1
|
72
|
-
f37f3735-28a1-4e03-9ff5-3fe2f137f661
|
73
|
-
b0290339-c96c-4b05-904f-12fc98e54e14@{ shape: trap-t, label:
|
74
|
-
**Certified Data Engineer
|
75
|
-
b0290339-c96c-4b05-904f-12fc98e54e14
|
76
|
-
d48f579f-76d3-4c49-b1b4-575f5645a9d0@{ shape: lin-cyl, label:
|
77
|
-
**Treatment Validation Sandbox
|
78
|
-
26c07ca4-3b8e-484b-812b-36c1ace4b275@{ shape: rect, label:
|
79
|
-
**Populate Sandbox
|
80
|
-
26c07ca4-3b8e-484b-812b-36c1ace4b275
|
81
|
-
ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec@{ shape: processes, label:
|
82
|
-
**Hospital Processes
|
83
|
-
a8bd84ca-0aae-4534-b0e8-87e8659467a6@{ shape: trap-t, label:
|
84
|
-
**Clinical Trial Participating Hospital Coordinator
|
85
|
-
a8bd84ca-0aae-4534-b0e8-87e8659467a6
|
86
|
-
30adaab5-8870-47a8-8ae9-facbf84cb05a@{ shape: trap-t, label:
|
87
|
-
**Clinical Trial Participating Hospital
|
88
|
-
30adaab5-8870-47a8-8ae9-facbf84cb05a
|
89
|
-
d48f579f-76d3-4c49-b1b4-575f5645a9d0
|
90
|
-
ece17806-836c-4756-b3a2-2d12dde215f6@{ shape: trap-t, label:
|
91
|
-
**New Treatment Data Scientist
|
92
|
-
ece17806-836c-4756-b3a2-2d12dde215f6
|
93
|
-
0c757e35-8a42-4d5f-b01b-c72a6cea65cc@{ shape: trap-t, label:
|
94
|
-
**New Treatment Researcher
|
95
|
-
0c757e35-8a42-4d5f-b01b-c72a6cea65cc
|
96
|
-
e9c2f911-ffcb-40c6-aeee-8c4d43811576@{ shape: subproc, label:
|
97
|
-
**Onboard Hospital
|
98
|
-
b0290339-c96c-4b05-904f-12fc98e54e14
|
99
|
-
849b0b42-f465-452b-813c-477d6398e082@{ shape: subproc, label:
|
100
|
-
**Set up clinical trial
|
101
|
-
f37f3735-28a1-4e03-9ff5-3fe2f137f661
|
102
|
-
a5d4d638-6836-47e5-99d0-fdcde637e13f@{ shape: lin-cyl, label:
|
103
|
-
**Weekly Measurements Data Lake Folder
|
104
|
-
7f5dca65-50b4-4103-9ac7-3a406a09047a
|
105
|
-
0bf2547c-937c-41b6-814f-6284849271a1@{ shape: odd, label:
|
106
|
-
**Treatment Assessment Report Validation and Delivery
|
107
|
-
72a86eec-9734-4bc0-babb-4fec0aa7c9ff
|
108
|
-
f6bc847b-868d-43cc-b767-41f5fe3e47d1@{ shape: trap-t, label:
|
109
|
-
**Clinical Trial Sponsor
|
110
|
-
f6bc847b-868d-43cc-b767-41f5fe3e47d1
|
111
|
-
a5d4d638-6836-47e5-99d0-fdcde637e13f
|
112
|
-
fb32bef2-e79f-4893-b500-2e547f24d482@{ shape: subproc, label:
|
113
|
-
**Set up Data Lake Folder
|
114
|
-
b0290339-c96c-4b05-904f-12fc98e54e14
|
115
|
-
1c150d6e-30cf-481c-9afb-3b06c9c9e78f@{ shape: lin-cyl, label:
|
116
|
-
**Hospital Landing Area Folder
|
117
|
-
ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
|
118
|
-
1c150d6e-30cf-481c-9afb-3b06c9c9e78f
|
119
|
-
11c7c850-c67c-41cc-9423-d74db47cbf3a@{ shape: subproc, label:
|
120
|
-
**Nominate Hospital
|
121
|
-
f37f3735-28a1-4e03-9ff5-3fe2f137f661
|
62
|
+
fc2de77f-7320-48ea-8750-d434c6e870db@{ shape: text, label: "*Description*
|
63
|
+
**A description of how a clinical trial is managed in Coco Pharmaceuticals.**"}
|
64
|
+
37b8560d-84d4-434b-9b0d-105420fcc924@{ shape: subproc, label: "*Solution Component*
|
65
|
+
**Certify Hospital**"}
|
66
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661@{ shape: trap-t, label: "*Solution Actor Role*
|
67
|
+
**Clinical Trial Manager**"}
|
68
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Certifier"|37b8560d-84d4-434b-9b0d-105420fcc924
|
69
|
+
72a86eec-9734-4bc0-babb-4fec0aa7c9ff@{ shape: docs, label: "*Solution Component*
|
70
|
+
**Assemble Treatment Assessment Report**"}
|
71
|
+
48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5@{ shape: rect, label: "*Solution Component*
|
72
|
+
**Treatment Efficacy Evidence**"}
|
73
|
+
48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5-->|"Solution Linking Wire"|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
|
74
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Author"|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
|
75
|
+
b5c8da4c-f925-4cf1-8294-e43cd2c1a584@{ shape: rect, label: "*Solution Component*
|
76
|
+
**Analyse Patient Data**"}
|
77
|
+
b5c8da4c-f925-4cf1-8294-e43cd2c1a584-->|"Solution Linking Wire"|48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5
|
78
|
+
7f5dca65-50b4-4103-9ac7-3a406a09047a@{ shape: subproc, label: "*Solution Component*
|
79
|
+
**Weekly Measurements Onboarding Pipeline**"}
|
80
|
+
07705e15-efff-4f80-8992-f04ac85e0ef1@{ shape: rect, label: "*Solution Component*
|
81
|
+
**Landing Folder Cataloguer**"}
|
82
|
+
07705e15-efff-4f80-8992-f04ac85e0ef1-->|"Solution Linking Wire"|7f5dca65-50b4-4103-9ac7-3a406a09047a
|
83
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Steward"|7f5dca65-50b4-4103-9ac7-3a406a09047a
|
84
|
+
b0290339-c96c-4b05-904f-12fc98e54e14@{ shape: trap-t, label: "*Solution Actor Role*
|
85
|
+
**Certified Data Engineer**"}
|
86
|
+
b0290339-c96c-4b05-904f-12fc98e54e14-->|"Steward"|7f5dca65-50b4-4103-9ac7-3a406a09047a
|
87
|
+
d48f579f-76d3-4c49-b1b4-575f5645a9d0@{ shape: lin-cyl, label: "*Solution Component*
|
88
|
+
**Treatment Validation Sandbox**"}
|
89
|
+
26c07ca4-3b8e-484b-812b-36c1ace4b275@{ shape: rect, label: "*Solution Component*
|
90
|
+
**Populate Sandbox**"}
|
91
|
+
26c07ca4-3b8e-484b-812b-36c1ace4b275-->|"Solution Linking Wire"|d48f579f-76d3-4c49-b1b4-575f5645a9d0
|
92
|
+
ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec@{ shape: processes, label: "*Solution Component*
|
93
|
+
**Hospital Processes**"}
|
94
|
+
a8bd84ca-0aae-4534-b0e8-87e8659467a6@{ shape: trap-t, label: "*Solution Actor Role*
|
95
|
+
**Clinical Trial Participating Hospital Coordinator**"}
|
96
|
+
a8bd84ca-0aae-4534-b0e8-87e8659467a6-->|"Coordinator on behalf of hospital"|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
|
97
|
+
30adaab5-8870-47a8-8ae9-facbf84cb05a@{ shape: trap-t, label: "*Solution Actor Role*
|
98
|
+
**Clinical Trial Participating Hospital**"}
|
99
|
+
30adaab5-8870-47a8-8ae9-facbf84cb05a-->|"Owner"|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
|
100
|
+
d48f579f-76d3-4c49-b1b4-575f5645a9d0-->|"Solution Linking Wire"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
|
101
|
+
ece17806-836c-4756-b3a2-2d12dde215f6@{ shape: trap-t, label: "*Solution Actor Role*
|
102
|
+
**New Treatment Data Scientist**"}
|
103
|
+
ece17806-836c-4756-b3a2-2d12dde215f6-->|"Data Analyser"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
|
104
|
+
0c757e35-8a42-4d5f-b01b-c72a6cea65cc@{ shape: trap-t, label: "*Solution Actor Role*
|
105
|
+
**New Treatment Researcher.**"}
|
106
|
+
0c757e35-8a42-4d5f-b01b-c72a6cea65cc-->|"Results Interpreter"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
|
107
|
+
e9c2f911-ffcb-40c6-aeee-8c4d43811576@{ shape: subproc, label: "*Solution Component*
|
108
|
+
**Onboard Hospital**"}
|
109
|
+
b0290339-c96c-4b05-904f-12fc98e54e14-->|"Initiator"|e9c2f911-ffcb-40c6-aeee-8c4d43811576
|
110
|
+
849b0b42-f465-452b-813c-477d6398e082@{ shape: subproc, label: "*Solution Component*
|
111
|
+
**Set up clinical trial**"}
|
112
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Initiator"|849b0b42-f465-452b-813c-477d6398e082
|
113
|
+
a5d4d638-6836-47e5-99d0-fdcde637e13f@{ shape: lin-cyl, label: "*Solution Component*
|
114
|
+
**Weekly Measurements Data Lake Folder**"}
|
115
|
+
7f5dca65-50b4-4103-9ac7-3a406a09047a-->|"Solution Linking Wire"|a5d4d638-6836-47e5-99d0-fdcde637e13f
|
116
|
+
0bf2547c-937c-41b6-814f-6284849271a1@{ shape: odd, label: "*Solution Component*
|
117
|
+
**Treatment Assessment Report Validation and Delivery**"}
|
118
|
+
72a86eec-9734-4bc0-babb-4fec0aa7c9ff-->|"Solution Linking Wire"|0bf2547c-937c-41b6-814f-6284849271a1
|
119
|
+
f6bc847b-868d-43cc-b767-41f5fe3e47d1@{ shape: trap-t, label: "*Solution Actor Role*
|
120
|
+
**Clinical Trial Sponsor**"}
|
121
|
+
f6bc847b-868d-43cc-b767-41f5fe3e47d1-->|"Reviewer"|0bf2547c-937c-41b6-814f-6284849271a1
|
122
|
+
a5d4d638-6836-47e5-99d0-fdcde637e13f-->|"Solution Linking Wire"|26c07ca4-3b8e-484b-812b-36c1ace4b275
|
123
|
+
fb32bef2-e79f-4893-b500-2e547f24d482@{ shape: subproc, label: "*Solution Component*
|
124
|
+
**Set up Data Lake Folder**"}
|
125
|
+
b0290339-c96c-4b05-904f-12fc98e54e14-->|"Initiator"|fb32bef2-e79f-4893-b500-2e547f24d482
|
126
|
+
1c150d6e-30cf-481c-9afb-3b06c9c9e78f@{ shape: lin-cyl, label: "*Solution Component*
|
127
|
+
**Hospital Landing Area Folder**"}
|
128
|
+
ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec-->|"Solution Linking Wire"|1c150d6e-30cf-481c-9afb-3b06c9c9e78f
|
129
|
+
1c150d6e-30cf-481c-9afb-3b06c9c9e78f-->|"Solution Linking Wire"|07705e15-efff-4f80-8992-f04ac85e0ef1
|
130
|
+
11c7c850-c67c-41cc-9423-d74db47cbf3a@{ shape: subproc, label: "*Solution Component*
|
131
|
+
**Nominate Hospital**"}
|
132
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Initiator"|11c7c850-c67c-41cc-9423-d74db47cbf3a
|
122
133
|
end
|
123
134
|
style 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
124
135
|
style ece17806-836c-4756-b3a2-2d12dde215f6 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
@@ -144,79 +155,59 @@ style b5c8da4c-f925-4cf1-8294-e43cd2c1a584 color:#FFFFFF, fill:#838cc7, stroke:#
|
|
144
155
|
style f6bc847b-868d-43cc-b767-41f5fe3e47d1 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
145
156
|
style d48f579f-76d3-4c49-b1b4-575f5645a9d0 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
146
157
|
style f37f3735-28a1-4e03-9ff5-3fe2f137f661 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
147
|
-
style fb32bef2-e79f-4893-b500-2e547f24d482 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
158
|
+
style fb32bef2-e79f-4893-b500-2e547f24d482 color:#FFFFFF, fill:#838cc7, stroke:#3079ab`;
|
159
|
+
const {svg} = await mermaid.render('mySvgId', graphDefinition);
|
160
|
+
element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
|
161
|
+
|
162
|
+
var doPan = false;
|
163
|
+
var eventsHandler;
|
164
|
+
var panZoom;
|
165
|
+
var mousepos;
|
166
|
+
|
167
|
+
eventsHandler = {
|
168
|
+
haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
|
169
|
+
|
170
|
+
, mouseDownHandler: function (ev) {
|
171
|
+
if (event.target.className == "[object SVGAnimatedString]") {
|
172
|
+
doPan = true;
|
173
|
+
mousepos = {x: ev.clientX, y: ev.clientY}
|
174
|
+
}
|
175
|
+
;
|
164
176
|
}
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
// Handle controls
|
203
|
-
document.getElementById(`${graph_id}-zoom-in`).addEventListener("click", () => panZoom.zoomIn());
|
204
|
-
document.getElementById(`${graph_id}-zoom-out`).addEventListener("click", () => panZoom.zoomOut());
|
205
|
-
document.getElementById(`${graph_id}-reset`).addEventListener("click", () => {
|
206
|
-
panZoom.resetZoom();
|
207
|
-
panZoom.center();
|
208
|
-
});
|
209
|
-
}, 500);
|
210
|
-
}
|
211
|
-
|
212
|
-
if (typeof mermaid === "undefined") {
|
213
|
-
const script = document.createElement('script');
|
214
|
-
script.src = "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js";
|
215
|
-
script.onload = () => initializeMermaid(graph_id);
|
216
|
-
document.head.appendChild(script);
|
217
|
-
} else {
|
218
|
-
initializeMermaid(graph_id);
|
219
|
-
}
|
220
|
-
});
|
221
|
-
</script>
|
222
|
-
|
177
|
+
|
178
|
+
, mouseMoveHandler: function (ev) {
|
179
|
+
if (doPan) {
|
180
|
+
panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
|
181
|
+
mousepos = {x: ev.clientX, y: ev.clientY};
|
182
|
+
window.getSelection().removeAllRanges();
|
183
|
+
}
|
184
|
+
}
|
185
|
+
|
186
|
+
, mouseUpHandler: function (ev) {
|
187
|
+
doPan = false;
|
188
|
+
}
|
189
|
+
|
190
|
+
, init: function (options) {
|
191
|
+
options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
|
192
|
+
options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
|
193
|
+
options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
|
194
|
+
}
|
195
|
+
|
196
|
+
, destroy: function (options) {
|
197
|
+
options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
|
198
|
+
options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
|
199
|
+
options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
|
200
|
+
}
|
201
|
+
}
|
202
|
+
panZoom = svgPanZoom('#mySvgId', {
|
203
|
+
zoomEnabled: true
|
204
|
+
, controlIconsEnabled: true
|
205
|
+
, fit: 1
|
206
|
+
, center: 1
|
207
|
+
, customEventsHandler: eventsHandler
|
208
|
+
})
|
209
|
+
};
|
210
|
+
await drawDiagram();
|
211
|
+
</script>
|
212
|
+
</body>
|
213
|
+
|
pyegeria/test_w.html
ADDED
@@ -0,0 +1,213 @@
|
|
1
|
+
|
2
|
+
<!DOCTYPE html>
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<style type="text/css">
|
6
|
+
#mySvgId {
|
7
|
+
width: 100%;
|
8
|
+
height: 600px;
|
9
|
+
overflow: scroll;
|
10
|
+
border: 2px solid #ccc;
|
11
|
+
position: relative;
|
12
|
+
margin-bottom: 10px;
|
13
|
+
}
|
14
|
+
svg {
|
15
|
+
cursor: grab;
|
16
|
+
}
|
17
|
+
|
18
|
+
</style>
|
19
|
+
</head>
|
20
|
+
|
21
|
+
<title>Component for Solution Blueprint - Clinical Trial Management Solution Blueprint </title>
|
22
|
+
<h3>Component for Solution Blueprint - Clinical Trial Management Solution Blueprint </h3>
|
23
|
+
GUID : c4f8d707-7c85-4125-b5fd-c3257a2ef2ef
|
24
|
+
|
25
|
+
|
26
|
+
<body>
|
27
|
+
|
28
|
+
<div id="graphDiv"></div>
|
29
|
+
<script src="https://bumbu.me/svg-pan-zoom/dist/svg-pan-zoom.min.js"></script>
|
30
|
+
<script type="module">
|
31
|
+
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
|
32
|
+
|
33
|
+
mermaid.initialize({startOnLoad: false});
|
34
|
+
await mermaid.run({
|
35
|
+
querySelector: '.mermaid',
|
36
|
+
postRenderCallback: (id) => {
|
37
|
+
const container = document.getElementById("diagram-container");
|
38
|
+
const svgElement = container.querySelector("svg");
|
39
|
+
|
40
|
+
// Initialize Panzoom
|
41
|
+
const panzoomInstance = Panzoom(svgElement, {
|
42
|
+
maxScale: 5,
|
43
|
+
minScale: 0.5,
|
44
|
+
step: 0.1,
|
45
|
+
});
|
46
|
+
|
47
|
+
// Add mouse wheel zoom
|
48
|
+
container.addEventListener("wheel", (event) => {
|
49
|
+
panzoomInstance.zoomWithWheel(event);
|
50
|
+
});
|
51
|
+
}
|
52
|
+
});
|
53
|
+
|
54
|
+
|
55
|
+
const drawDiagram = async function () {
|
56
|
+
const element = document.querySelector('#graphDiv');
|
57
|
+
const graphDefinition = `
|
58
|
+
flowchart TD
|
59
|
+
%%{init: {"flowchart": {"htmlLabels": false}} }%%
|
60
|
+
|
61
|
+
subgraph c4f8d707-7c85-4125-b5fd-c3257a2ef2ef [Components and Actors]
|
62
|
+
fc2de77f-7320-48ea-8750-d434c6e870db@{ shape: text, label: "*Description*
|
63
|
+
**A description of how a clinical trial is managed in Coco Pharmaceuticals.**"}
|
64
|
+
37b8560d-84d4-434b-9b0d-105420fcc924@{ shape: subproc, label: "*Solution Component*
|
65
|
+
**Certify Hospital**"}
|
66
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661@{ shape: trap-t, label: "*Solution Actor Role*
|
67
|
+
**Clinical Trial Manager**"}
|
68
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Certifier"|37b8560d-84d4-434b-9b0d-105420fcc924
|
69
|
+
72a86eec-9734-4bc0-babb-4fec0aa7c9ff@{ shape: docs, label: "*Solution Component*
|
70
|
+
**Assemble Treatment Assessment Report**"}
|
71
|
+
48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5@{ shape: rect, label: "*Solution Component*
|
72
|
+
**Treatment Efficacy Evidence**"}
|
73
|
+
48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5-->|"Solution Linking Wire"|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
|
74
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Author"|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
|
75
|
+
b5c8da4c-f925-4cf1-8294-e43cd2c1a584@{ shape: rect, label: "*Solution Component*
|
76
|
+
**Analyse Patient Data**"}
|
77
|
+
b5c8da4c-f925-4cf1-8294-e43cd2c1a584-->|"Solution Linking Wire"|48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5
|
78
|
+
7f5dca65-50b4-4103-9ac7-3a406a09047a@{ shape: subproc, label: "*Solution Component*
|
79
|
+
**Weekly Measurements Onboarding Pipeline**"}
|
80
|
+
07705e15-efff-4f80-8992-f04ac85e0ef1@{ shape: rect, label: "*Solution Component*
|
81
|
+
**Landing Folder Cataloguer**"}
|
82
|
+
07705e15-efff-4f80-8992-f04ac85e0ef1-->|"Solution Linking Wire"|7f5dca65-50b4-4103-9ac7-3a406a09047a
|
83
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Steward"|7f5dca65-50b4-4103-9ac7-3a406a09047a
|
84
|
+
b0290339-c96c-4b05-904f-12fc98e54e14@{ shape: trap-t, label: "*Solution Actor Role*
|
85
|
+
**Certified Data Engineer**"}
|
86
|
+
b0290339-c96c-4b05-904f-12fc98e54e14-->|"Steward"|7f5dca65-50b4-4103-9ac7-3a406a09047a
|
87
|
+
d48f579f-76d3-4c49-b1b4-575f5645a9d0@{ shape: lin-cyl, label: "*Solution Component*
|
88
|
+
**Treatment Validation Sandbox**"}
|
89
|
+
26c07ca4-3b8e-484b-812b-36c1ace4b275@{ shape: rect, label: "*Solution Component*
|
90
|
+
**Populate Sandbox**"}
|
91
|
+
26c07ca4-3b8e-484b-812b-36c1ace4b275-->|"Solution Linking Wire"|d48f579f-76d3-4c49-b1b4-575f5645a9d0
|
92
|
+
ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec@{ shape: processes, label: "*Solution Component*
|
93
|
+
**Hospital Processes**"}
|
94
|
+
a8bd84ca-0aae-4534-b0e8-87e8659467a6@{ shape: trap-t, label: "*Solution Actor Role*
|
95
|
+
**Clinical Trial Participating Hospital Coordinator**"}
|
96
|
+
a8bd84ca-0aae-4534-b0e8-87e8659467a6-->|"Coordinator on behalf of hospital"|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
|
97
|
+
30adaab5-8870-47a8-8ae9-facbf84cb05a@{ shape: trap-t, label: "*Solution Actor Role*
|
98
|
+
**Clinical Trial Participating Hospital**"}
|
99
|
+
30adaab5-8870-47a8-8ae9-facbf84cb05a-->|"Owner"|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
|
100
|
+
d48f579f-76d3-4c49-b1b4-575f5645a9d0-->|"Solution Linking Wire"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
|
101
|
+
ece17806-836c-4756-b3a2-2d12dde215f6@{ shape: trap-t, label: "*Solution Actor Role*
|
102
|
+
**New Treatment Data Scientist**"}
|
103
|
+
ece17806-836c-4756-b3a2-2d12dde215f6-->|"Data Analyser"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
|
104
|
+
0c757e35-8a42-4d5f-b01b-c72a6cea65cc@{ shape: trap-t, label: "*Solution Actor Role*
|
105
|
+
**New Treatment Researcher.**"}
|
106
|
+
0c757e35-8a42-4d5f-b01b-c72a6cea65cc-->|"Results Interpreter"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
|
107
|
+
e9c2f911-ffcb-40c6-aeee-8c4d43811576@{ shape: subproc, label: "*Solution Component*
|
108
|
+
**Onboard Hospital**"}
|
109
|
+
b0290339-c96c-4b05-904f-12fc98e54e14-->|"Initiator"|e9c2f911-ffcb-40c6-aeee-8c4d43811576
|
110
|
+
849b0b42-f465-452b-813c-477d6398e082@{ shape: subproc, label: "*Solution Component*
|
111
|
+
**Set up clinical trial**"}
|
112
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Initiator"|849b0b42-f465-452b-813c-477d6398e082
|
113
|
+
a5d4d638-6836-47e5-99d0-fdcde637e13f@{ shape: lin-cyl, label: "*Solution Component*
|
114
|
+
**Weekly Measurements Data Lake Folder**"}
|
115
|
+
7f5dca65-50b4-4103-9ac7-3a406a09047a-->|"Solution Linking Wire"|a5d4d638-6836-47e5-99d0-fdcde637e13f
|
116
|
+
0bf2547c-937c-41b6-814f-6284849271a1@{ shape: odd, label: "*Solution Component*
|
117
|
+
**Treatment Assessment Report Validation and Delivery**"}
|
118
|
+
72a86eec-9734-4bc0-babb-4fec0aa7c9ff-->|"Solution Linking Wire"|0bf2547c-937c-41b6-814f-6284849271a1
|
119
|
+
f6bc847b-868d-43cc-b767-41f5fe3e47d1@{ shape: trap-t, label: "*Solution Actor Role*
|
120
|
+
**Clinical Trial Sponsor**"}
|
121
|
+
f6bc847b-868d-43cc-b767-41f5fe3e47d1-->|"Reviewer"|0bf2547c-937c-41b6-814f-6284849271a1
|
122
|
+
a5d4d638-6836-47e5-99d0-fdcde637e13f-->|"Solution Linking Wire"|26c07ca4-3b8e-484b-812b-36c1ace4b275
|
123
|
+
fb32bef2-e79f-4893-b500-2e547f24d482@{ shape: subproc, label: "*Solution Component*
|
124
|
+
**Set up Data Lake Folder**"}
|
125
|
+
b0290339-c96c-4b05-904f-12fc98e54e14-->|"Initiator"|fb32bef2-e79f-4893-b500-2e547f24d482
|
126
|
+
1c150d6e-30cf-481c-9afb-3b06c9c9e78f@{ shape: lin-cyl, label: "*Solution Component*
|
127
|
+
**Hospital Landing Area Folder**"}
|
128
|
+
ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec-->|"Solution Linking Wire"|1c150d6e-30cf-481c-9afb-3b06c9c9e78f
|
129
|
+
1c150d6e-30cf-481c-9afb-3b06c9c9e78f-->|"Solution Linking Wire"|07705e15-efff-4f80-8992-f04ac85e0ef1
|
130
|
+
11c7c850-c67c-41cc-9423-d74db47cbf3a@{ shape: subproc, label: "*Solution Component*
|
131
|
+
**Nominate Hospital**"}
|
132
|
+
f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Initiator"|11c7c850-c67c-41cc-9423-d74db47cbf3a
|
133
|
+
end
|
134
|
+
style 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
135
|
+
style ece17806-836c-4756-b3a2-2d12dde215f6 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
136
|
+
style e9c2f911-ffcb-40c6-aeee-8c4d43811576 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
137
|
+
style a5d4d638-6836-47e5-99d0-fdcde637e13f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
138
|
+
style 0bf2547c-937c-41b6-814f-6284849271a1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
139
|
+
style 30adaab5-8870-47a8-8ae9-facbf84cb05a color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
140
|
+
style b0290339-c96c-4b05-904f-12fc98e54e14 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
141
|
+
style 26c07ca4-3b8e-484b-812b-36c1ace4b275 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
142
|
+
style 1c150d6e-30cf-481c-9afb-3b06c9c9e78f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
143
|
+
style 07705e15-efff-4f80-8992-f04ac85e0ef1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
144
|
+
style a8bd84ca-0aae-4534-b0e8-87e8659467a6 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
145
|
+
style 0c757e35-8a42-4d5f-b01b-c72a6cea65cc color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
146
|
+
style c4f8d707-7c85-4125-b5fd-c3257a2ef2ef color:#3079ab, fill:#b7c0c7, stroke:#3079ab
|
147
|
+
style 37b8560d-84d4-434b-9b0d-105420fcc924 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
148
|
+
style 11c7c850-c67c-41cc-9423-d74db47cbf3a color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
149
|
+
style fc2de77f-7320-48ea-8750-d434c6e870db color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
150
|
+
style 849b0b42-f465-452b-813c-477d6398e082 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
151
|
+
style 7f5dca65-50b4-4103-9ac7-3a406a09047a color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
152
|
+
style ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
153
|
+
style 72a86eec-9734-4bc0-babb-4fec0aa7c9ff color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
154
|
+
style b5c8da4c-f925-4cf1-8294-e43cd2c1a584 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
155
|
+
style f6bc847b-868d-43cc-b767-41f5fe3e47d1 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
156
|
+
style d48f579f-76d3-4c49-b1b4-575f5645a9d0 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
157
|
+
style f37f3735-28a1-4e03-9ff5-3fe2f137f661 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
|
158
|
+
style fb32bef2-e79f-4893-b500-2e547f24d482 color:#FFFFFF, fill:#838cc7, stroke:#3079ab`;
|
159
|
+
const {svg} = await mermaid.render('mySvgId', graphDefinition);
|
160
|
+
element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
|
161
|
+
|
162
|
+
var doPan = false;
|
163
|
+
var eventsHandler;
|
164
|
+
var panZoom;
|
165
|
+
var mousepos;
|
166
|
+
|
167
|
+
eventsHandler = {
|
168
|
+
haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
|
169
|
+
|
170
|
+
, mouseDownHandler: function (ev) {
|
171
|
+
if (event.target.className == "[object SVGAnimatedString]") {
|
172
|
+
doPan = true;
|
173
|
+
mousepos = {x: ev.clientX, y: ev.clientY}
|
174
|
+
}
|
175
|
+
;
|
176
|
+
}
|
177
|
+
|
178
|
+
, mouseMoveHandler: function (ev) {
|
179
|
+
if (doPan) {
|
180
|
+
panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
|
181
|
+
mousepos = {x: ev.clientX, y: ev.clientY};
|
182
|
+
window.getSelection().removeAllRanges();
|
183
|
+
}
|
184
|
+
}
|
185
|
+
|
186
|
+
, mouseUpHandler: function (ev) {
|
187
|
+
doPan = false;
|
188
|
+
}
|
189
|
+
|
190
|
+
, init: function (options) {
|
191
|
+
options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
|
192
|
+
options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
|
193
|
+
options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
|
194
|
+
}
|
195
|
+
|
196
|
+
, destroy: function (options) {
|
197
|
+
options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
|
198
|
+
options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
|
199
|
+
options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
|
200
|
+
}
|
201
|
+
}
|
202
|
+
panZoom = svgPanZoom('#mySvgId', {
|
203
|
+
zoomEnabled: true
|
204
|
+
, controlIconsEnabled: true
|
205
|
+
, fit: 1
|
206
|
+
, center: 1
|
207
|
+
, customEventsHandler: eventsHandler
|
208
|
+
})
|
209
|
+
};
|
210
|
+
await drawDiagram();
|
211
|
+
</script>
|
212
|
+
</body>
|
213
|
+
|
@@ -1,5 +1,5 @@
|
|
1
1
|
pyegeria/README.md,sha256=PwX5OC7-YSZUCIsoyHh1O-WBM2hE84sm3Bd4O353NOk,1464
|
2
|
-
pyegeria/__init__.py,sha256=
|
2
|
+
pyegeria/__init__.py,sha256=TSKn_aAdx8EUgbDq_H61w2LNcVuO5bR8gAWYtyR7d9g,22293
|
3
3
|
pyegeria/_client.py,sha256=bijHmo21ZooY0KeWCSRvTIxp1fztM4up0Q6xDYYIg1k,30935
|
4
4
|
pyegeria/_deprecated_gov_engine.py,sha256=dWNcwVsE5__dF2u4QiIyQrssozzzOjBbLld8MdpmVCQ,17264
|
5
5
|
pyegeria/_exceptions.py,sha256=1SrnV194V4_YJNnNAU0myTHQ3dhLn4GF2B2gZcj1u90,18153
|
@@ -244,8 +244,8 @@ pyegeria/feedback_manager_omvs.py,sha256=0xBs0p54vmdfVYYgQ8pOanLC4fxfgTk1Z61Y6D1
|
|
244
244
|
pyegeria/full_omag_server_config.py,sha256=CQqLCy_3DZFvJZEOcGf50HWdFaWpiAIs6z-kKyjvpDA,47464
|
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
|
-
pyegeria/m_test.py,sha256=
|
248
|
-
pyegeria/mermaid_utilities.py,sha256=
|
247
|
+
pyegeria/m_test.py,sha256=R2FofK2G09TXt1S8OCWiRMEn4LDwm7uHSKejInA-i8I,7769
|
248
|
+
pyegeria/mermaid_utilities.py,sha256=WTRTeaCIPMyus6wj8XrrCtOD4cYNsOttG7IRzXUnCa4,53169
|
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,16 @@ 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/
|
258
|
+
pyegeria/test_j.html,sha256=6kZ1KNfi5RR62HQIHvlKFTNLc4M0bN1ZsIWAXJBDBeA,13363
|
259
|
+
pyegeria/test_m.html,sha256=q9HCstV2Ar-QiAqswte6hQ8EJuKqr5s99MUuXSxs7a8,11461
|
259
260
|
pyegeria/test_m1.html,sha256=XS_1IAtfG4ZlZk45QTkrFWWpjQMVlO21ScDMX2Frl3g,14086
|
260
261
|
pyegeria/test_mer.ipynb,sha256=G7hpHn07IXnt_VKvnTDvljwwHB7RfC0etOMyZKt1icQ,30809
|
262
|
+
pyegeria/test_w.html,sha256=q9HCstV2Ar-QiAqswte6hQ8EJuKqr5s99MUuXSxs7a8,11461
|
261
263
|
pyegeria/utils.py,sha256=GCt1C0bp0Xng1ahzbZhzV9qQwH7Dj93IaCt2dvWb-sg,5417
|
262
264
|
pyegeria/valid_metadata_omvs.py,sha256=kL3bEkoBtNCaQKjziFwRAqQyleu-i2ua_REIogfulFw,65031
|
263
265
|
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.
|
266
|
+
pyegeria-5.3.4.20.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
267
|
+
pyegeria-5.3.4.20.dist-info/METADATA,sha256=kIX24FwVvXN35ohQmXP1R-4Bx0KQKVX0ugjhXDy35DE,2736
|
268
|
+
pyegeria-5.3.4.20.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
269
|
+
pyegeria-5.3.4.20.dist-info/entry_points.txt,sha256=LS9g5JPSBL0whnyAcGhLZCAyUp6PkPU6fjHP9Aso1V4,6176
|
270
|
+
pyegeria-5.3.4.20.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|