pyegeria 5.3.3.14.dev2__py3-none-any.whl → 5.3.3.14.dev4__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.
@@ -104,7 +104,7 @@ def supply_chain_viewer(
104
104
  sc_mermaid_link = f"file://:{link}"
105
105
  # print("Visit my [link=https://www.willmcgugan.com]blog[/link]!")
106
106
  # sc_scope = Text(f"{sc_scope}\n\t\t/\n{sc_mermaid_link}")
107
- sc_scope = Text(f"{sc_scope}\n\t\t/\n[link={sc_mermaid_link}]{sc_mermaid_link}[/link]!", style="underline")
107
+ sc_scope = f"{sc_scope}\n\t\t/\n![{sc_mermaid_link}]({sc_mermaid_link})"
108
108
  # sc_scope.stylize("link =" + sc_mermaid_link)
109
109
 
110
110
  table.add_row(sc_name, sc_unique_name, sc_purpose_str, sc_scope, sc_desc)
@@ -19,12 +19,14 @@ from rich.prompt import Prompt
19
19
  from rich.table import Table
20
20
  from rich.text import Text
21
21
  from rich.tree import Tree
22
+
23
+ from pyegeria.mermaid_utilities import EGERIA_MERMAID_FOLDER
22
24
  from pyegeria.solution_architect_omvs import SolutionArchitect
23
25
  from pyegeria import (
24
26
  ProjectManager,
25
27
  UserNotAuthorizedException,
26
28
  PropertyServerException,
27
- InvalidParameterException,
29
+ InvalidParameterException, save_mermaid_html,
28
30
  )
29
31
 
30
32
  from pyegeria._exceptions import (
@@ -46,7 +48,7 @@ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
46
48
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
47
49
  EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
48
50
  EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "150"))
49
-
51
+ EGERIA_MERMAID_FOLDER = os.environ.get("EGERIA_MERMAID_FOLDER", "work/mermaid_graphs")
50
52
 
51
53
  def blueprint_list(
52
54
  search_string: str,
@@ -74,10 +76,10 @@ def blueprint_list(
74
76
  caption=f"View Server '{server_name}' @ Platform - {platform_url}",
75
77
  expand=True,
76
78
  )
77
- table.add_column("Blueprint Name")
78
- table.add_column("Qualified Name \n/\n GUID\n/\nVersion", width=38, no_wrap=False)
79
- table.add_column("Description")
80
- table.add_column("Solution Components")
79
+ table.add_column("Blueprint Name / Diagram Link", justify="center")
80
+ table.add_column("Qualified Name / GUID / Version", justify="center", width=38, no_wrap=False)
81
+ table.add_column("Description", justify="center")
82
+ table.add_column("Solution Components", justify="center")
81
83
 
82
84
  blueprints = client.find_solution_blueprints(search_string)
83
85
  if isinstance(blueprints, list) is False:
@@ -89,7 +91,11 @@ def blueprint_list(
89
91
  bp_guid = bp["elementHeader"]["guid"]
90
92
  bp_desc = bp["properties"].get("description",'---')
91
93
  bp_unique_name = f"{bp_qname}\n\n\t\t/\n\n{bp_guid}"
92
- bp_mermaid = bp.get("mermaid",'---')
94
+ bp_mermaid = bp.get("mermaidGraph",'---')
95
+ if bp_mermaid != '---':
96
+ link = save_mermaid_html(bp_name, bp_mermaid, EGERIA_MERMAID_FOLDER)
97
+ bp_mermaid = f"![{bp_name}]({link})"
98
+ bp_mermaid_label = f"{bp_name}\n\n\t\t/\n\n{bp_mermaid}"
93
99
 
94
100
  bp_components = bp.get("solutionComponents",[])
95
101
  comp_md=""
@@ -103,6 +109,7 @@ def blueprint_list(
103
109
  comp_description = comp_props.get("description",'---')
104
110
  comp_planned = comp_props['extendedProperties'].get("plannedDeployedImplementationType",'---')
105
111
  comp_type = comp_props.get('solutionComponentType','---')
112
+
106
113
  comp_actors = comp_props.get('actors', [])
107
114
  comp_actors_list = ""
108
115
  for actor in comp_actors:
@@ -121,7 +128,7 @@ def blueprint_list(
121
128
  comp_md += f"* Planned Deployment: {comp_planned}\n"
122
129
  comp_md += f"* Actors: {comp_actors_list}\n"
123
130
  comp_out = Markdown(comp_md)
124
- table.add_row(bp_name, bp_unique_name, bp_desc, comp_out)
131
+ table.add_row(bp_mermaid_label, bp_unique_name, bp_desc, comp_out)
125
132
 
126
133
  return table
127
134
 
@@ -0,0 +1,121 @@
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 - Automated Manufacturing Control </title>
22
+ <h3 style="text-align: center;">Component for Solution Blueprint - Automated Manufacturing Control </h3>
23
+ GUID : 8a222c5d-b206-454f-b861-2b803cfe3cbd
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 8a222c5d-b206-454f-b861-2b803cfe3cbd [Components and Actors]
62
+ c3967953-fb5a-45a4-8d89-bcc62962e1da@{ shape: text, label: "*Description*
63
+ **A description of how the new industry 4.0 manufacturing control system operates.**"}
64
+ end
65
+ style c3967953-fb5a-45a4-8d89-bcc62962e1da color:#000000, fill:#F9F7ED, stroke:#b7c0c7
66
+ style 8a222c5d-b206-454f-b861-2b803cfe3cbd color:#3079ab, fill:#b7c0c7, stroke:#3079ab`;
67
+ const {svg} = await mermaid.render('mySvgId', graphDefinition);
68
+ element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
69
+
70
+ var doPan = false;
71
+ var eventsHandler;
72
+ var panZoom;
73
+ var mousepos;
74
+
75
+ eventsHandler = {
76
+ haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
77
+
78
+ , mouseDownHandler: function (ev) {
79
+ if (event.target.className == "[object SVGAnimatedString]") {
80
+ doPan = true;
81
+ mousepos = {x: ev.clientX, y: ev.clientY}
82
+ }
83
+ ;
84
+ }
85
+
86
+ , mouseMoveHandler: function (ev) {
87
+ if (doPan) {
88
+ panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
89
+ mousepos = {x: ev.clientX, y: ev.clientY};
90
+ window.getSelection().removeAllRanges();
91
+ }
92
+ }
93
+
94
+ , mouseUpHandler: function (ev) {
95
+ doPan = false;
96
+ }
97
+
98
+ , init: function (options) {
99
+ options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
100
+ options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
101
+ options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
102
+ }
103
+
104
+ , destroy: function (options) {
105
+ options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
106
+ options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
107
+ options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
108
+ }
109
+ }
110
+ panZoom = svgPanZoom('#mySvgId', {
111
+ zoomEnabled: true
112
+ , controlIconsEnabled: true
113
+ , fit: 1
114
+ , center: 1
115
+ , customEventsHandler: eventsHandler
116
+ })
117
+ };
118
+ await drawDiagram();
119
+ </script>
120
+ </body>
121
+
@@ -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 style="text-align: center;">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
+ 6bd76008-d1ad-4ace-8a88-3505fbb71caa@{ 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 6bd76008-d1ad-4ace-8a88-3505fbb71caa color:#000000, fill:#F9F7ED, stroke:#b7c0c7
138
+ style a5d4d638-6836-47e5-99d0-fdcde637e13f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
139
+ style 0bf2547c-937c-41b6-814f-6284849271a1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
140
+ style 30adaab5-8870-47a8-8ae9-facbf84cb05a color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
141
+ style b0290339-c96c-4b05-904f-12fc98e54e14 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
142
+ style 26c07ca4-3b8e-484b-812b-36c1ace4b275 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
143
+ style 1c150d6e-30cf-481c-9afb-3b06c9c9e78f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
144
+ style 07705e15-efff-4f80-8992-f04ac85e0ef1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
145
+ style a8bd84ca-0aae-4534-b0e8-87e8659467a6 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
146
+ style 0c757e35-8a42-4d5f-b01b-c72a6cea65cc color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
147
+ style c4f8d707-7c85-4125-b5fd-c3257a2ef2ef color:#3079ab, fill:#b7c0c7, stroke:#3079ab
148
+ style 37b8560d-84d4-434b-9b0d-105420fcc924 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
149
+ style 11c7c850-c67c-41cc-9423-d74db47cbf3a color:#FFFFFF, fill:#838cc7, stroke:#3079ab
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
+
@@ -0,0 +1,124 @@
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 - Employee Management Solution Blueprint </title>
22
+ <h3 style="text-align: center;">Component for Solution Blueprint - Employee Management Solution Blueprint </h3>
23
+ GUID : 4558ef22-9cde-4dcb-aebe-45d5acfa818a
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 4558ef22-9cde-4dcb-aebe-45d5acfa818a [Components and Actors]
62
+ 6783d689-9efb-4b90-9269-c00acacdc7d2@{ shape: text, label: "*Description*
63
+ **A description of how information about Coco Pharmaceuticals employees is managed.**"}
64
+ 02cdce9a-7630-479a-90de-fd7698d098f1@{ shape: subproc, label: "*Solution Component*
65
+ **Employee Expense Tool**"}
66
+ end
67
+ style 4558ef22-9cde-4dcb-aebe-45d5acfa818a color:#3079ab, fill:#b7c0c7, stroke:#3079ab
68
+ style 02cdce9a-7630-479a-90de-fd7698d098f1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
69
+ style 6783d689-9efb-4b90-9269-c00acacdc7d2 color:#000000, fill:#F9F7ED, stroke:#b7c0c7`;
70
+ const {svg} = await mermaid.render('mySvgId', graphDefinition);
71
+ element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
72
+
73
+ var doPan = false;
74
+ var eventsHandler;
75
+ var panZoom;
76
+ var mousepos;
77
+
78
+ eventsHandler = {
79
+ haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
80
+
81
+ , mouseDownHandler: function (ev) {
82
+ if (event.target.className == "[object SVGAnimatedString]") {
83
+ doPan = true;
84
+ mousepos = {x: ev.clientX, y: ev.clientY}
85
+ }
86
+ ;
87
+ }
88
+
89
+ , mouseMoveHandler: function (ev) {
90
+ if (doPan) {
91
+ panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
92
+ mousepos = {x: ev.clientX, y: ev.clientY};
93
+ window.getSelection().removeAllRanges();
94
+ }
95
+ }
96
+
97
+ , mouseUpHandler: function (ev) {
98
+ doPan = false;
99
+ }
100
+
101
+ , init: function (options) {
102
+ options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
103
+ options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
104
+ options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
105
+ }
106
+
107
+ , destroy: function (options) {
108
+ options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
109
+ options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
110
+ options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
111
+ }
112
+ }
113
+ panZoom = svgPanZoom('#mySvgId', {
114
+ zoomEnabled: true
115
+ , controlIconsEnabled: true
116
+ , fit: 1
117
+ , center: 1
118
+ , customEventsHandler: eventsHandler
119
+ })
120
+ };
121
+ await drawDiagram();
122
+ </script>
123
+ </body>
124
+
@@ -0,0 +1,124 @@
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 - Hazardous Material Management Solution Blueprint </title>
22
+ <h3 style="text-align: center;">Component for Solution Blueprint - Hazardous Material Management Solution Blueprint </h3>
23
+ GUID : f1a008b9-bace-4d37-8dd8-d24fb45477e2
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 f1a008b9-bace-4d37-8dd8-d24fb45477e2 [Components and Actors]
62
+ 2f10d3e1-3537-4f91-a02d-d8da04c3fc48@{ shape: text, label: "*Description*
63
+ **A description of how hazardous material is handled, tracked and any incidents reported/managed.**"}
64
+ 25fd5be7-692d-4752-9dc7-30068a7d665e@{ shape: subproc, label: "*Solution Component*
65
+ **Hazardous Materials (HazMat) Inventory**"}
66
+ end
67
+ style 2f10d3e1-3537-4f91-a02d-d8da04c3fc48 color:#000000, fill:#F9F7ED, stroke:#b7c0c7
68
+ style 25fd5be7-692d-4752-9dc7-30068a7d665e color:#FFFFFF, fill:#838cc7, stroke:#3079ab
69
+ style f1a008b9-bace-4d37-8dd8-d24fb45477e2 color:#3079ab, fill:#b7c0c7, stroke:#3079ab`;
70
+ const {svg} = await mermaid.render('mySvgId', graphDefinition);
71
+ element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
72
+
73
+ var doPan = false;
74
+ var eventsHandler;
75
+ var panZoom;
76
+ var mousepos;
77
+
78
+ eventsHandler = {
79
+ haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
80
+
81
+ , mouseDownHandler: function (ev) {
82
+ if (event.target.className == "[object SVGAnimatedString]") {
83
+ doPan = true;
84
+ mousepos = {x: ev.clientX, y: ev.clientY}
85
+ }
86
+ ;
87
+ }
88
+
89
+ , mouseMoveHandler: function (ev) {
90
+ if (doPan) {
91
+ panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
92
+ mousepos = {x: ev.clientX, y: ev.clientY};
93
+ window.getSelection().removeAllRanges();
94
+ }
95
+ }
96
+
97
+ , mouseUpHandler: function (ev) {
98
+ doPan = false;
99
+ }
100
+
101
+ , init: function (options) {
102
+ options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
103
+ options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
104
+ options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
105
+ }
106
+
107
+ , destroy: function (options) {
108
+ options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
109
+ options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
110
+ options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
111
+ }
112
+ }
113
+ panZoom = svgPanZoom('#mySvgId', {
114
+ zoomEnabled: true
115
+ , controlIconsEnabled: true
116
+ , fit: 1
117
+ , center: 1
118
+ , customEventsHandler: eventsHandler
119
+ })
120
+ };
121
+ await drawDiagram();
122
+ </script>
123
+ </body>
124
+
@@ -0,0 +1,124 @@
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 - Inventory Management </title>
22
+ <h3 style="text-align: center;">Component for Solution Blueprint - Inventory Management </h3>
23
+ GUID : d0af5eeb-b341-4046-a336-938b88761719
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 d0af5eeb-b341-4046-a336-938b88761719 [Components and Actors]
62
+ 6f08613f-731b-4881-aa40-06f6dba863e6@{ shape: text, label: "*Description*
63
+ **A description of how physical inventory is managed between procurement, the distribution centres, manufacturing and finance.**"}
64
+ 50768e61-43b6-4241-96a3-4c413582ec1f@{ shape: subproc, label: "*Solution Component*
65
+ **Goods Inventory**"}
66
+ end
67
+ style 50768e61-43b6-4241-96a3-4c413582ec1f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
68
+ style d0af5eeb-b341-4046-a336-938b88761719 color:#3079ab, fill:#b7c0c7, stroke:#3079ab
69
+ style 6f08613f-731b-4881-aa40-06f6dba863e6 color:#000000, fill:#F9F7ED, stroke:#b7c0c7`;
70
+ const {svg} = await mermaid.render('mySvgId', graphDefinition);
71
+ element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
72
+
73
+ var doPan = false;
74
+ var eventsHandler;
75
+ var panZoom;
76
+ var mousepos;
77
+
78
+ eventsHandler = {
79
+ haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
80
+
81
+ , mouseDownHandler: function (ev) {
82
+ if (event.target.className == "[object SVGAnimatedString]") {
83
+ doPan = true;
84
+ mousepos = {x: ev.clientX, y: ev.clientY}
85
+ }
86
+ ;
87
+ }
88
+
89
+ , mouseMoveHandler: function (ev) {
90
+ if (doPan) {
91
+ panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
92
+ mousepos = {x: ev.clientX, y: ev.clientY};
93
+ window.getSelection().removeAllRanges();
94
+ }
95
+ }
96
+
97
+ , mouseUpHandler: function (ev) {
98
+ doPan = false;
99
+ }
100
+
101
+ , init: function (options) {
102
+ options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
103
+ options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
104
+ options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
105
+ }
106
+
107
+ , destroy: function (options) {
108
+ options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
109
+ options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
110
+ options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
111
+ }
112
+ }
113
+ panZoom = svgPanZoom('#mySvgId', {
114
+ zoomEnabled: true
115
+ , controlIconsEnabled: true
116
+ , fit: 1
117
+ , center: 1
118
+ , customEventsHandler: eventsHandler
119
+ })
120
+ };
121
+ await drawDiagram();
122
+ </script>
123
+ </body>
124
+
@@ -0,0 +1,124 @@
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 - Personalized Medicine Order Fulfillment Solution Blueprint </title>
22
+ <h3 style="text-align: center;">Component for Solution Blueprint - Personalized Medicine Order Fulfillment Solution Blueprint </h3>
23
+ GUID : 9b1d5648-58b9-4fc8-959c-ed0316068d75
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 9b1d5648-58b9-4fc8-959c-ed0316068d75 [Components and Actors]
62
+ 7262ee8e-49ec-4b5f-a7ee-d34a3848aebe@{ shape: text, label: "*Description*
63
+ **A description of how an order for a personalized medicine prescription is fulfilled by Coco Pharmaceuticals.**"}
64
+ 2c0f5a4e-bb02-4081-a80e-3072ca99a1aa@{ shape: subproc, label: "*Solution Component*
65
+ **Accounting ledgers**"}
66
+ end
67
+ style 9b1d5648-58b9-4fc8-959c-ed0316068d75 color:#3079ab, fill:#b7c0c7, stroke:#3079ab
68
+ style 2c0f5a4e-bb02-4081-a80e-3072ca99a1aa color:#FFFFFF, fill:#838cc7, stroke:#3079ab
69
+ style 7262ee8e-49ec-4b5f-a7ee-d34a3848aebe color:#000000, fill:#F9F7ED, stroke:#b7c0c7`;
70
+ const {svg} = await mermaid.render('mySvgId', graphDefinition);
71
+ element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
72
+
73
+ var doPan = false;
74
+ var eventsHandler;
75
+ var panZoom;
76
+ var mousepos;
77
+
78
+ eventsHandler = {
79
+ haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
80
+
81
+ , mouseDownHandler: function (ev) {
82
+ if (event.target.className == "[object SVGAnimatedString]") {
83
+ doPan = true;
84
+ mousepos = {x: ev.clientX, y: ev.clientY}
85
+ }
86
+ ;
87
+ }
88
+
89
+ , mouseMoveHandler: function (ev) {
90
+ if (doPan) {
91
+ panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
92
+ mousepos = {x: ev.clientX, y: ev.clientY};
93
+ window.getSelection().removeAllRanges();
94
+ }
95
+ }
96
+
97
+ , mouseUpHandler: function (ev) {
98
+ doPan = false;
99
+ }
100
+
101
+ , init: function (options) {
102
+ options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
103
+ options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
104
+ options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
105
+ }
106
+
107
+ , destroy: function (options) {
108
+ options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
109
+ options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
110
+ options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
111
+ }
112
+ }
113
+ panZoom = svgPanZoom('#mySvgId', {
114
+ zoomEnabled: true
115
+ , controlIconsEnabled: true
116
+ , fit: 1
117
+ , center: 1
118
+ , customEventsHandler: eventsHandler
119
+ })
120
+ };
121
+ await drawDiagram();
122
+ </script>
123
+ </body>
124
+
@@ -0,0 +1,149 @@
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 - Sustainability Reporting Solution Blueprint </title>
22
+ <h3 style="text-align: center;">Component for Solution Blueprint - Sustainability Reporting Solution Blueprint </h3>
23
+ GUID : aed5c289-6e81-4cf8-8852-752005eee0c4
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 aed5c289-6e81-4cf8-8852-752005eee0c4 [Components and Actors]
62
+ a8421819-5075-414f-bde0-7f6135a50b2e@{ shape: text, label: "*Description*
63
+ **A description of how data is gathered to support sustainability reporting in Coco Pharmaceuticals.**"}
64
+ fc55ef2d-a88d-44ee-94cb-3fca9b9af8b4@{ shape: subproc, label: "*Solution Component*
65
+ **Sustainability Operational Data Store (ODS)**"}
66
+ 2c0f5a4e-bb02-4081-a80e-3072ca99a1aa@{ shape: rect, label: "*Solution Component*
67
+ **Accounting ledgers**"}
68
+ 2c0f5a4e-bb02-4081-a80e-3072ca99a1aa-->|"Solution Linking Wire"|fc55ef2d-a88d-44ee-94cb-3fca9b9af8b4
69
+ 06edd666-06fd-43ef-b7bd-22e2651c334f@{ shape: rect, label: "*Solution Component*
70
+ **Sustainability Calculators**"}
71
+ 06edd666-06fd-43ef-b7bd-22e2651c334f-->|"Solution Linking Wire"|fc55ef2d-a88d-44ee-94cb-3fca9b9af8b4
72
+ 25fd5be7-692d-4752-9dc7-30068a7d665e@{ shape: rect, label: "*Solution Component*
73
+ **Hazardous Materials (HazMat) Inventory**"}
74
+ 25fd5be7-692d-4752-9dc7-30068a7d665e-->|"Solution Linking Wire"|fc55ef2d-a88d-44ee-94cb-3fca9b9af8b4
75
+ 50768e61-43b6-4241-96a3-4c413582ec1f@{ shape: rect, label: "*Solution Component*
76
+ **Goods Inventory**"}
77
+ 50768e61-43b6-4241-96a3-4c413582ec1f-->|"Solution Linking Wire"|fc55ef2d-a88d-44ee-94cb-3fca9b9af8b4
78
+ 02cdce9a-7630-479a-90de-fd7698d098f1@{ shape: rect, label: "*Solution Component*
79
+ **Employee Expense Tool**"}
80
+ 02cdce9a-7630-479a-90de-fd7698d098f1-->|"Solution Linking Wire"|fc55ef2d-a88d-44ee-94cb-3fca9b9af8b4
81
+ fc55ef2d-a88d-44ee-94cb-3fca9b9af8b4-->|"Solution Linking Wire"|06edd666-06fd-43ef-b7bd-22e2651c334f
82
+ d50a6f1f-49d2-47c3-a55e-5844464bd26f@{ shape: subproc, label: "*Solution Component*
83
+ **Sustainability Dashboards**"}
84
+ fc55ef2d-a88d-44ee-94cb-3fca9b9af8b4-->|"Solution Linking Wire"|d50a6f1f-49d2-47c3-a55e-5844464bd26f
85
+ end
86
+ style d50a6f1f-49d2-47c3-a55e-5844464bd26f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
87
+ style aed5c289-6e81-4cf8-8852-752005eee0c4 color:#3079ab, fill:#b7c0c7, stroke:#3079ab
88
+ style 50768e61-43b6-4241-96a3-4c413582ec1f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
89
+ style fc55ef2d-a88d-44ee-94cb-3fca9b9af8b4 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
90
+ style 25fd5be7-692d-4752-9dc7-30068a7d665e color:#FFFFFF, fill:#838cc7, stroke:#3079ab
91
+ style 06edd666-06fd-43ef-b7bd-22e2651c334f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
92
+ style 02cdce9a-7630-479a-90de-fd7698d098f1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
93
+ style 2c0f5a4e-bb02-4081-a80e-3072ca99a1aa color:#FFFFFF, fill:#838cc7, stroke:#3079ab
94
+ style a8421819-5075-414f-bde0-7f6135a50b2e color:#000000, fill:#F9F7ED, stroke:#b7c0c7`;
95
+ const {svg} = await mermaid.render('mySvgId', graphDefinition);
96
+ element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
97
+
98
+ var doPan = false;
99
+ var eventsHandler;
100
+ var panZoom;
101
+ var mousepos;
102
+
103
+ eventsHandler = {
104
+ haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
105
+
106
+ , mouseDownHandler: function (ev) {
107
+ if (event.target.className == "[object SVGAnimatedString]") {
108
+ doPan = true;
109
+ mousepos = {x: ev.clientX, y: ev.clientY}
110
+ }
111
+ ;
112
+ }
113
+
114
+ , mouseMoveHandler: function (ev) {
115
+ if (doPan) {
116
+ panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
117
+ mousepos = {x: ev.clientX, y: ev.clientY};
118
+ window.getSelection().removeAllRanges();
119
+ }
120
+ }
121
+
122
+ , mouseUpHandler: function (ev) {
123
+ doPan = false;
124
+ }
125
+
126
+ , init: function (options) {
127
+ options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
128
+ options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
129
+ options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
130
+ }
131
+
132
+ , destroy: function (options) {
133
+ options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
134
+ options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
135
+ options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
136
+ }
137
+ }
138
+ panZoom = svgPanZoom('#mySvgId', {
139
+ zoomEnabled: true
140
+ , controlIconsEnabled: true
141
+ , fit: 1
142
+ , center: 1
143
+ , customEventsHandler: eventsHandler
144
+ })
145
+ };
146
+ await drawDiagram();
147
+ </script>
148
+ </body>
149
+
@@ -18,9 +18,9 @@
18
18
  </style>
19
19
  </head>
20
20
 
21
- <title>Information Supply Chain - {{displayName}} </title>
22
- <h3 style="text-align: center;">Information Supply Chain - {{displayName}} </h3>
23
- GUID : ba3ab0dd-3ec5-4ec5-9db9-f3dc56e3a732
21
+ <title>Component for Solution Blueprint - {{displayName}} </title>
22
+ <h3 style="text-align: center;">Component for Solution Blueprint - {{displayName}} </h3>
23
+ GUID : ff8e9750-182c-4f0d-b432-c7a48b8d660b
24
24
 
25
25
 
26
26
  <body>
@@ -58,13 +58,12 @@
58
58
  flowchart TD
59
59
  %%{init: {"flowchart": {"htmlLabels": false}} }%%
60
60
 
61
- ba3ab0dd-3ec5-4ec5-9db9-f3dc56e3a732@{ shape: flip-tri, label: "*Information Supply Chain*
62
- **{{displayName}}**"}
63
- 7c5a4139-7d56-46f1-9cc5-92a2cf709903@{ shape: text, label: "*Description*
61
+ subgraph ff8e9750-182c-4f0d-b432-c7a48b8d660b [Components and Actors]
62
+ 0a1113cd-593d-49e5-8ba2-af3faca46ac3@{ shape: text, label: "*Description*
64
63
  **{{description}}**"}
65
- ba3ab0dd-3ec5-4ec5-9db9-f3dc56e3a732~~~7c5a4139-7d56-46f1-9cc5-92a2cf709903
66
- style 7c5a4139-7d56-46f1-9cc5-92a2cf709903 color:#000000, fill:#F9F7ED, stroke:#b7c0c7
67
- style ba3ab0dd-3ec5-4ec5-9db9-f3dc56e3a732 color:#FFFFFF, fill:#004563, stroke:#b7c0c7`;
64
+ end
65
+ style ff8e9750-182c-4f0d-b432-c7a48b8d660b color:#3079ab, fill:#b7c0c7, stroke:#3079ab
66
+ style 0a1113cd-593d-49e5-8ba2-af3faca46ac3 color:#000000, fill:#F9F7ED, stroke:#b7c0c7`;
68
67
  const {svg} = await mermaid.render('mySvgId', graphDefinition);
69
68
  element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
70
69
 
@@ -86,8 +86,8 @@ def parse_mermaid_code(mermaid_code):
86
86
  guid = full_title.split('[')[1].split(']')[0]
87
87
  mermaid_code = parts[2].strip()
88
88
  else:
89
- title = "No Title"
90
- guid = "No GUID"
89
+ title = ""
90
+ guid = ""
91
91
  return title, guid, mermaid_code
92
92
 
93
93
  def construct_mermaid_html(mermaid_str: str) -> str:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyegeria
3
- Version: 5.3.3.14.dev2
3
+ Version: 5.3.3.14.dev4
4
4
  Summary: A python client for Egeria
5
5
  License: Apache 2.0
6
6
  Keywords: egeria,metadata,governance
@@ -45,7 +45,7 @@ pyegeria/commands/cat/get_project_dependencies.py,sha256=NCUTAHAzScjQwoAHLf1DC9r
45
45
  pyegeria/commands/cat/get_project_structure.py,sha256=h6q5Ps3xRhV2Zqh6295nDCgVThUrWX5O-JC0qaSIM5s,5976
46
46
  pyegeria/commands/cat/get_tech_type_elements.py,sha256=9F0wBy8ireLFHLNChxkM4A7xJ4uFL4XKdXlm6roDk2I,6185
47
47
  pyegeria/commands/cat/glossary_actions.py,sha256=MjKHzmJXoF6t9wsjg4h3T3JxQPdADoH6CwuLBjv0MnY,12678
48
- pyegeria/commands/cat/link-test.py,sha256=WwZSPpe6kRbM7u2X1VVrGyOh_WsG8UORrkNvXDC8eGY,6685
48
+ pyegeria/commands/cat/link-check.py,sha256=WwZSPpe6kRbM7u2X1VVrGyOh_WsG8UORrkNvXDC8eGY,6685
49
49
  pyegeria/commands/cat/list_assets.py,sha256=2fUlV-VL5vXb4T9wD87gusylY0O9wLRujDWPmaQJkNI,6277
50
50
  pyegeria/commands/cat/list_cert_types.py,sha256=WOtUQWGtqFUvV3-pQh5iy4dDaESMfxER6DmOo8gzPtY,7130
51
51
  pyegeria/commands/cat/list_collections.py,sha256=hP0j6R0oJfnT_KDT5MyR74RmWuXaHFs2VszHnZ-C8VU,5989
@@ -274,26 +274,33 @@ pyegeria/commands/tech/list_elements_by_property_value.py,sha256=3OG8uyPKY3zX-K_
274
274
  pyegeria/commands/tech/list_elements_by_property_value_x.py,sha256=y77Nszqg5XtyQXwKm3XjB38gwmlpiULEn4NLr_SnRug,7065
275
275
  pyegeria/commands/tech/list_elements_for_classification.py,sha256=jck8bPQHiS61IKslmA2a_B1iopHZ0cE50vAs6Ud2Gkc,6207
276
276
  pyegeria/commands/tech/list_gov_action_processes.py,sha256=NaoZ3t5n1uXcLI0OdUAgMTuzDrEkptY9w7uQeZ4KZP8,4587
277
- pyegeria/commands/tech/list_information_supply_chains.py,sha256=1upwBKbQKagu0S048RUHHVolHWJyMH-cHPViHwnyp8A,5630
277
+ pyegeria/commands/tech/list_information_supply_chains.py,sha256=L0paK02j3Qq4VhhNUVtrHmuZO6MOt-SrS5Bce2JkSrs,5595
278
278
  pyegeria/commands/tech/list_registered_services.py,sha256=fNh21Acd5bCbOQmxpDMOH6QNT5GkiGPLZpadbzIA8F8,6541
279
279
  pyegeria/commands/tech/list_related_elements_with_prop_value.py,sha256=NhWSfJmtBIUN5IBWEK_uQn0OxpCeWnVhy0kaZ_gyEGw,8157
280
280
  pyegeria/commands/tech/list_related_specification.py,sha256=aMUZBiQcTMaNTvSgGUsRjqvqhmebP9iO0eAlbJsDWBk,5925
281
281
  pyegeria/commands/tech/list_relationship_types.py,sha256=VgErUNsCKZ77wyg56U0v1fIUqC0MxHE_qi9A2b2csWo,5791
282
282
  pyegeria/commands/tech/list_relationships.py,sha256=lKZBQleZRK9qDCAUOExejl5gtYb0XyXygTgIcbW5Igk,5933
283
283
  pyegeria/commands/tech/list_solution_blueprints.py,sha256=PDU1QCnE44r0cMAgUHJ49RpTK-rbgiy7Gzh9GOlMSBk,6285
284
- pyegeria/commands/tech/list_solution_blueprints2.py,sha256=Aa95dlVUq_5wsltb4TB-48CvLXKtfMS8I_I5RBrkgtU,6325
284
+ pyegeria/commands/tech/list_solution_blueprints2.py,sha256=t-Ce30_bWaeNByObrV0bj4HOJeI44EzNcP3jO7anvJs,6838
285
285
  pyegeria/commands/tech/list_tech_templates.py,sha256=FvJ2qAHo7yoCdd9LnZtvWjd3DQEvD0P5wfz5-D5qjmw,14153
286
286
  pyegeria/commands/tech/list_valid_metadata_values.py,sha256=Mv4eSHCR_pR0llWRrpMIzNKA6_QEr8qccAv4NQv4dg0,6340
287
287
  pyegeria/commands/tech/table_tech_templates.py,sha256=kv9VWhZ6pEN-1vEjo6IprliwFTjumjdVV3IWQB2HzI4,9503
288
+ pyegeria/commands/tech/work/mermaid_graphs/Automated Manufacturing Control.html,sha256=bfWsVHwr77sEllGjS7IJnIWQkL2hEXgpSWjIUo29R4w,4578
289
+ pyegeria/commands/tech/work/mermaid_graphs/Clinical Trial Management Solution Blueprint.html,sha256=M32ZeZpQAGW-fNayuFT0LIt7jEXJwweTfEo3vgYZFao,11490
288
290
  pyegeria/commands/tech/work/mermaid_graphs/Clinical Trial Subject Onboarding.html,sha256=c2wTgRgJ3llwIjhdKK_Ef7AU8sH1yw9N3gbLHP3v7O8,6352
289
291
  pyegeria/commands/tech/work/mermaid_graphs/Clinical Trial Treatment Validation.html,sha256=FjYkJl7c14czTe-bACAdVYiD3yHc9hK-Epih2MQ00Bs,11999
290
292
  pyegeria/commands/tech/work/mermaid_graphs/Employee Expense Payment.html,sha256=g2GWeQU8XGuRlT4T4eB3X_-sMbGBGPjT8KDMDmlNCb4,5502
293
+ pyegeria/commands/tech/work/mermaid_graphs/Employee Management Solution Blueprint.html,sha256=XmfOxRsuCGj6I73HprQOPYcxc_XUL3EE0OZoTpyU24A,4792
294
+ pyegeria/commands/tech/work/mermaid_graphs/Hazardous Material Management Solution Blueprint.html,sha256=ky62Q6hFFTV_7FXuaDazvv9J3qkN6R6kkR0ZcbdVmpI,4843
295
+ pyegeria/commands/tech/work/mermaid_graphs/Inventory Management.html,sha256=FICJvj3b9IWEZ1c1yjs7OpCPuSXzQEpze5UY95mNSwM,4793
291
296
  pyegeria/commands/tech/work/mermaid_graphs/New Drug Product Information Distribution.html,sha256=lbgvDcmctARBxOl-EBTrPmy7L9VAObn1w3G_5X4anOM,6671
292
297
  pyegeria/commands/tech/work/mermaid_graphs/New Employee Onboarding.html,sha256=X3jru3F094j0xCUdSbKgTD3zR1_fIyPFO9ijiHJ2X2Y,6401
298
+ pyegeria/commands/tech/work/mermaid_graphs/Personalized Medicine Order Fulfillment Solution Blueprint.html,sha256=F8Ll7wnfI_mreCOhUvTv2cbsczwi8jl_4AXN-KeQQds,4856
293
299
  pyegeria/commands/tech/work/mermaid_graphs/Personalized Treatment Ordering.html,sha256=inCsequyo4XzR8H9QyovUH-_AAvohQLeYkGJla5ah4k,6826
294
300
  pyegeria/commands/tech/work/mermaid_graphs/Physical Inventory Tracking.html,sha256=EtIuFUimWnLYorok_i3WuezH5pdh34aPCYDecxpcuy4,9752
301
+ pyegeria/commands/tech/work/mermaid_graphs/Sustainability Reporting Solution Blueprint.html,sha256=lXRIGydJ2JmQ_IbPETDgS6fl77wudTxml5qfBKbQOS0,6744
295
302
  pyegeria/commands/tech/work/mermaid_graphs/Sustainability Reporting.html,sha256=-D4PhD_Jm3829cK2Yyx1IQBS4XGhEIpNDGsEgoss5-A,10980
296
- pyegeria/commands/tech/work/mermaid_graphs/{{displayName}}.html,sha256=DFD_F-a2THfEOBBICrvVn8XYehQxvpzBuu2tbxOODTs,4580
303
+ pyegeria/commands/tech/work/mermaid_graphs/{{displayName}}.html,sha256=EicHFfzy7KdttHaO_VB0hhqrmMwB_SpgHteFEGAG8NM,4481
297
304
  pyegeria/commands/tech/x_list_related_elements.py,sha256=viUFq_G52CvLO_RJsgN8fkLeIF89Tb8Gvl-nNfeDPSI,5871
298
305
  pyegeria/core_omag_server_config.py,sha256=ej0oNpGelSTTm2oERS86LpgT9O9E5CZFbUm2Iek8f1E,97764
299
306
  pyegeria/create_tech_guid_lists.py,sha256=mI__-i9U01emyqQMdPK2miealwQNiZfB23iiFGmrH0g,4640
@@ -306,7 +313,7 @@ pyegeria/feedback_manager_omvs.py,sha256=B66e3ZCaC_dirb0mcb2Nz3PYh2ZKsoMAYNOb3eu
306
313
  pyegeria/full_omag_server_config.py,sha256=k3fUfopAFAE3OKkFR7zZPiki_FYj6j2xQ4oD2SVaefQ,47350
307
314
  pyegeria/glossary_browser_omvs.py,sha256=NcitYaZJqwVODBO5zBtWpXPNUJJ3DKzEbRaOFSAyUlg,93554
308
315
  pyegeria/glossary_manager_omvs.py,sha256=tBjoHrrHJLasXoeQSpW-KpF3vEQdN_GR3jfcceTjt_c,132444
309
- pyegeria/mermaid_utilities.py,sha256=pnCRvmAxJK8IRTN2Bxj03Rm4IbFtjo2BMymn33-DC1c,18089
316
+ pyegeria/mermaid_utilities.py,sha256=E0PbkCICbING_Ib5huTYRWeW3LNVZe95VarlyWxFtSc,18074
310
317
  pyegeria/metadata_explorer_omvs.py,sha256=XBg6q-JXOA8UYsT85nlpBVe4EQ6jxwj70MvE7tkVvH0,86905
311
318
  pyegeria/my_profile_omvs.py,sha256=DyECbUFEcgokrIbzdMMNljC3bqfqKGXAF2wZEpzvRYs,34666
312
319
  pyegeria/platform_services.py,sha256=CJIOYIFEbcIGwdWlApAQcXxZTsdrhFtpJcm4O3p7dG0,41646
@@ -319,8 +326,8 @@ pyegeria/template_manager_omvs.py,sha256=Sw5xsQAhy7a48xFCg59mg9_nqyhawoS9v4WyF-P
319
326
  pyegeria/utils.py,sha256=1h6bwveadd6GpbnGLTmqPBmBk68QvxdjGTI9RfbrgKY,5415
320
327
  pyegeria/valid_metadata_omvs.py,sha256=cCt5CCLv6BdzCu90n68r_PkG_PEQJjrtwCxio7K6yko,65034
321
328
  pyegeria/x_action_author_omvs.py,sha256=xu1IQ0YbhIKi17C5a7Aq9u1Az2czwahNPpX9czmyVxE,6454
322
- pyegeria-5.3.3.14.dev2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
323
- pyegeria-5.3.3.14.dev2.dist-info/METADATA,sha256=_1IbggzL52J5468P1pzM99Hbe75D9aSDk644dFbeVnA,2741
324
- pyegeria-5.3.3.14.dev2.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
325
- pyegeria-5.3.3.14.dev2.dist-info/entry_points.txt,sha256=GUgzn0Xpl5o66CcocUIMXNigfevO4fKSl4EbBTJzuRA,6003
326
- pyegeria-5.3.3.14.dev2.dist-info/RECORD,,
329
+ pyegeria-5.3.3.14.dev4.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
330
+ pyegeria-5.3.3.14.dev4.dist-info/METADATA,sha256=4_PQYb1divBoGXCKSUFHgn0HuURQeBELyi670wUhTAg,2741
331
+ pyegeria-5.3.3.14.dev4.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
332
+ pyegeria-5.3.3.14.dev4.dist-info/entry_points.txt,sha256=GKJVtenRbMm8bgZ3XusHnxtN4auo917VbXofEEe9itY,6005
333
+ pyegeria-5.3.3.14.dev4.dist-info/RECORD,,
@@ -22,7 +22,7 @@ hey_egeria_cat=pyegeria.commands.cli.egeria_cat:cli
22
22
  hey_egeria_my=pyegeria.commands.cli.egeria_my:cli
23
23
  hey_egeria_ops=pyegeria.commands.cli.egeria_ops:cli
24
24
  hey_egeria_tech=pyegeria.commands.cli.egeria_tech:cli
25
- link_test=pyegeria.commands.cat.link_test:main
25
+ link_check=pyegeria.commands.cat.link-check:main
26
26
  list_all_related_elements=pyegeria.commands.tech.list_all_related_elements:main
27
27
  list_anchored_elements=pyegeria.commands.tech.list_anchored_elements:main
28
28
  list_archives=pyegeria.commands.ops.list_archives:main
File without changes