pyegeria 5.3.3.11__py3-none-any.whl → 5.3.3.13.dev1__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.
Files changed (100) hide show
  1. pyegeria/commands/tech/list_information_supply_chains.py +5 -4
  2. pyegeria/commands/tech/work/mermaid_graphs/Clinical Trial Subject Onboarding.html +135 -0
  3. pyegeria/commands/tech/work/mermaid_graphs/{Clinical Trial Treatment Validation.mmd → Clinical Trial Treatment Validation.html } +127 -41
  4. pyegeria/commands/tech/work/mermaid_graphs/Employee Expense Payment.html +126 -0
  5. pyegeria/commands/tech/work/mermaid_graphs/New Drug Product Information Distribution.html +141 -0
  6. pyegeria/commands/tech/work/mermaid_graphs/New Employee Onboarding.html +138 -0
  7. pyegeria/commands/tech/work/mermaid_graphs/Personalized Treatment Ordering.html +143 -0
  8. pyegeria/commands/tech/work/mermaid_graphs/{Physical Inventory Tracking.mmd → Physical Inventory Tracking.html } +114 -28
  9. pyegeria/commands/tech/work/mermaid_graphs/{Sustainability Reporting.mmd → Sustainability Reporting.html } +112 -26
  10. pyegeria/commands/tech/work/mermaid_graphs/{{displayName}}.html +115 -0
  11. pyegeria/mermaid_utilities.py +243 -22
  12. pyegeria/solution_architect_omvs.py +5 -1
  13. {pyegeria-5.3.3.11.dist-info → pyegeria-5.3.3.13.dev1.dist-info}/METADATA +1 -1
  14. {pyegeria-5.3.3.11.dist-info → pyegeria-5.3.3.13.dev1.dist-info}/RECORD +19 -94
  15. pyegeria/.DS_Store +0 -0
  16. pyegeria/commands/.DS_Store +0 -0
  17. pyegeria/commands/__pycache__/__init__.cpython-312.pyc +0 -0
  18. pyegeria/commands/__pycache__/server_status_widget.cpython-312-pytest-7.4.4.pyc +0 -0
  19. pyegeria/commands/cat/__pycache__/__init__.cpython-312.pyc +0 -0
  20. pyegeria/commands/cat/__pycache__/get_asset_graph.cpython-312.pyc +0 -0
  21. pyegeria/commands/cat/__pycache__/get_collection.cpython-312.pyc +0 -0
  22. pyegeria/commands/cat/__pycache__/get_project_dependencies.cpython-312.pyc +0 -0
  23. pyegeria/commands/cat/__pycache__/get_project_structure.cpython-312.pyc +0 -0
  24. pyegeria/commands/cat/__pycache__/get_tech_type_elements.cpython-312.pyc +0 -0
  25. pyegeria/commands/cat/__pycache__/glossary_actions.cpython-312.pyc +0 -0
  26. pyegeria/commands/cat/__pycache__/list_assets.cpython-312.pyc +0 -0
  27. pyegeria/commands/cat/__pycache__/list_cert_types.cpython-312.pyc +0 -0
  28. pyegeria/commands/cat/__pycache__/list_collections.cpython-312.pyc +0 -0
  29. pyegeria/commands/cat/__pycache__/list_deployed_catalogs.cpython-312.pyc +0 -0
  30. pyegeria/commands/cat/__pycache__/list_deployed_database_schemas.cpython-312.pyc +0 -0
  31. pyegeria/commands/cat/__pycache__/list_deployed_databases.cpython-312.pyc +0 -0
  32. pyegeria/commands/cat/__pycache__/list_glossaries.cpython-312.pyc +0 -0
  33. pyegeria/commands/cat/__pycache__/list_projects.cpython-312.pyc +0 -0
  34. pyegeria/commands/cat/__pycache__/list_servers_deployed_imp.cpython-312.pyc +0 -0
  35. pyegeria/commands/cat/__pycache__/list_tech_type_elements.cpython-312.pyc +0 -0
  36. pyegeria/commands/cat/__pycache__/list_tech_types.cpython-312.pyc +0 -0
  37. pyegeria/commands/cat/__pycache__/list_terms.cpython-312.pyc +0 -0
  38. pyegeria/commands/cat/__pycache__/list_todos.cpython-312.pyc +0 -0
  39. pyegeria/commands/cat/__pycache__/list_user_ids.cpython-312.pyc +0 -0
  40. pyegeria/commands/cli/__pycache__/__init__.cpython-312.pyc +0 -0
  41. pyegeria/commands/cli/__pycache__/egeria_login_tui.cpython-312.pyc +0 -0
  42. pyegeria/commands/cli/__pycache__/egeria_ops.cpython-312.pyc +0 -0
  43. pyegeria/commands/cli/__pycache__/ops_config.cpython-312.pyc +0 -0
  44. pyegeria/commands/doc/.DS_Store +0 -0
  45. pyegeria/commands/doc/Visual Command Reference/.DS_Store +0 -0
  46. pyegeria/commands/doc/Visual Command Reference/cat/.DS_Store +0 -0
  47. pyegeria/commands/doc/Visual Command Reference/cat/show/.DS_Store +0 -0
  48. pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/.DS_Store +0 -0
  49. pyegeria/commands/doc/glossary/.DS_Store +0 -0
  50. pyegeria/commands/doc/glossary/images/.DS_Store +0 -0
  51. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/.DS_Store +0 -0
  52. pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/.DS_Store +0 -0
  53. pyegeria/commands/my/__pycache__/__init__.cpython-312.pyc +0 -0
  54. pyegeria/commands/my/__pycache__/list_my_profile.cpython-312.pyc +0 -0
  55. pyegeria/commands/my/__pycache__/list_my_roles.cpython-312.pyc +0 -0
  56. pyegeria/commands/my/__pycache__/monitor_my_todos.cpython-312.pyc +0 -0
  57. pyegeria/commands/my/__pycache__/monitor_open_todos.cpython-312.pyc +0 -0
  58. pyegeria/commands/my/__pycache__/todo_actions.cpython-312.pyc +0 -0
  59. pyegeria/commands/ops/__pycache__/__init__.cpython-312.pyc +0 -0
  60. pyegeria/commands/ops/__pycache__/gov_server_actions.cpython-312.pyc +0 -0
  61. pyegeria/commands/ops/__pycache__/list_archives.cpython-312.pyc +0 -0
  62. pyegeria/commands/ops/__pycache__/list_catalog_targets.cpython-312.pyc +0 -0
  63. pyegeria/commands/ops/__pycache__/load_archive.cpython-312.pyc +0 -0
  64. pyegeria/commands/ops/__pycache__/monitor_engine_activity.cpython-312.pyc +0 -0
  65. pyegeria/commands/ops/__pycache__/monitor_engine_activity_c.cpython-312.pyc +0 -0
  66. pyegeria/commands/ops/__pycache__/monitor_gov_eng_status.cpython-312.pyc +0 -0
  67. pyegeria/commands/ops/__pycache__/monitor_integ_daemon_status.cpython-312.pyc +0 -0
  68. pyegeria/commands/ops/__pycache__/monitor_platform_status.cpython-312.pyc +0 -0
  69. pyegeria/commands/ops/__pycache__/monitor_server_startup.cpython-312.pyc +0 -0
  70. pyegeria/commands/ops/__pycache__/monitor_server_status.cpython-312.pyc +0 -0
  71. pyegeria/commands/ops/__pycache__/refresh_integration_daemon.cpython-312.pyc +0 -0
  72. pyegeria/commands/ops/__pycache__/restart_integration_daemon.cpython-312.pyc +0 -0
  73. pyegeria/commands/ops/__pycache__/table_integ_daemon_status.cpython-312.pyc +0 -0
  74. pyegeria/commands/tech/__pycache__/__init__.cpython-312.pyc +0 -0
  75. pyegeria/commands/tech/__pycache__/get_element_info.cpython-312.pyc +0 -0
  76. pyegeria/commands/tech/__pycache__/get_guid_info.cpython-312.pyc +0 -0
  77. pyegeria/commands/tech/__pycache__/get_tech_details.cpython-312.pyc +0 -0
  78. pyegeria/commands/tech/__pycache__/get_tech_type_template.cpython-312.pyc +0 -0
  79. pyegeria/commands/tech/__pycache__/list_anchored_elements.cpython-312.pyc +0 -0
  80. pyegeria/commands/tech/__pycache__/list_asset_types.cpython-312.pyc +0 -0
  81. pyegeria/commands/tech/__pycache__/list_elements_by_property_value.cpython-312.pyc +0 -0
  82. pyegeria/commands/tech/__pycache__/list_elements_for_classification.cpython-312.pyc +0 -0
  83. pyegeria/commands/tech/__pycache__/list_gov_action_processes.cpython-312.pyc +0 -0
  84. pyegeria/commands/tech/__pycache__/list_registered_services.cpython-312.pyc +0 -0
  85. pyegeria/commands/tech/__pycache__/list_related_specification.cpython-312.pyc +0 -0
  86. pyegeria/commands/tech/__pycache__/list_relationship_types.cpython-312.pyc +0 -0
  87. pyegeria/commands/tech/__pycache__/list_relationships.cpython-312.pyc +0 -0
  88. pyegeria/commands/tech/__pycache__/list_tech_templates.cpython-312.pyc +0 -0
  89. pyegeria/commands/tech/__pycache__/list_valid_metadata_values.cpython-312.pyc +0 -0
  90. pyegeria/commands/tech/work/mermaid_graphs/Clinical Trial Subject Onboarding.mmd +0 -49
  91. pyegeria/commands/tech/work/mermaid_graphs/Employee Expense Payment.mmd +0 -40
  92. pyegeria/commands/tech/work/mermaid_graphs/New Drug Product Information Distribution.mmd +0 -55
  93. pyegeria/commands/tech/work/mermaid_graphs/New Employee Onboarding.mmd +0 -52
  94. pyegeria/commands/tech/work/mermaid_graphs/Personalized Treatment Ordering.mmd +0 -57
  95. pyegeria/commands/tech/work/mermaid_graphs/{{displayName}}.mmd +0 -29
  96. /pyegeria/commands/tech/{list_isolution_blueprints.py → list_solution_blueprints.py} +0 -0
  97. /pyegeria/commands/tech/{list_isolution_blueprints2.py → list_solution_blueprints2.py} +0 -0
  98. {pyegeria-5.3.3.11.dist-info → pyegeria-5.3.3.13.dev1.dist-info}/LICENSE +0 -0
  99. {pyegeria-5.3.3.11.dist-info → pyegeria-5.3.3.13.dev1.dist-info}/WHEEL +0 -0
  100. {pyegeria-5.3.3.11.dist-info → pyegeria-5.3.3.13.dev1.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,115 @@
1
+
2
+ <html>
3
+ <head>
4
+ <style type="text/css">
5
+ #mySvgId {
6
+ width: 100%;
7
+ height: 100%;
8
+ overflow: hidden;
9
+ border: 1px solid #ccc;
10
+ position: relative;
11
+ margin-bottom: 10px;
12
+ }
13
+ svg {
14
+ cursor: grab;
15
+ }
16
+
17
+ </style>
18
+ </head>
19
+
20
+ <body>
21
+ <div id="graphDiv"></div>
22
+ <script src="https://bumbu.me/svg-pan-zoom/dist/svg-pan-zoom.min.js"></script>
23
+ <script type="module">
24
+ import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
25
+
26
+ mermaid.initialize({startOnLoad: false});
27
+ await mermaid.run({
28
+ querySelector: '.mermaid',
29
+ postRenderCallback: (id) => {
30
+ const container = document.getElementById("diagram-container");
31
+ const svgElement = container.querySelector("svg");
32
+
33
+ // Initialize Panzoom
34
+ const panzoomInstance = Panzoom(svgElement, {
35
+ maxScale: 5,
36
+ minScale: 0.5,
37
+ step: 0.1,
38
+ });
39
+
40
+ // Add mouse wheel zoom
41
+ container.addEventListener("wheel", (event) => {
42
+ panzoomInstance.zoomWithWheel(event);
43
+ });
44
+ }
45
+ });
46
+
47
+
48
+ const drawDiagram = async function () {
49
+ const element = document.querySelector('#graphDiv');
50
+ const graphDefinition = `
51
+ flowchart TD
52
+ %%{init: {"flowchart": {"htmlLabels": false}} }%%
53
+
54
+ ba3ab0dd-3ec5-4ec5-9db9-f3dc56e3a732@{ shape: flip-tri, label: "*Information Supply Chain*
55
+ **{{displayName}}**"}
56
+ bf39a57a-9241-42f8-8ce6-29880175e032@{ shape: text, label: "*Description*
57
+ **{{description}}**"}
58
+ ba3ab0dd-3ec5-4ec5-9db9-f3dc56e3a732~~~bf39a57a-9241-42f8-8ce6-29880175e032
59
+ style ba3ab0dd-3ec5-4ec5-9db9-f3dc56e3a732 color:#FFFFFF, fill:#004563, stroke:#b7c0c7
60
+ style bf39a57a-9241-42f8-8ce6-29880175e032 color:#000000, fill:#F9F7ED, stroke:#b7c0c7`;
61
+ const {svg} = await mermaid.render('mySvgId', graphDefinition);
62
+ element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
63
+
64
+ var doPan = false;
65
+ var eventsHandler;
66
+ var panZoom;
67
+ var mousepos;
68
+
69
+ eventsHandler = {
70
+ haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
71
+
72
+ , mouseDownHandler: function (ev) {
73
+ if (event.target.className == "[object SVGAnimatedString]") {
74
+ doPan = true;
75
+ mousepos = {x: ev.clientX, y: ev.clientY}
76
+ }
77
+ ;
78
+ }
79
+
80
+ , mouseMoveHandler: function (ev) {
81
+ if (doPan) {
82
+ panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
83
+ mousepos = {x: ev.clientX, y: ev.clientY};
84
+ window.getSelection().removeAllRanges();
85
+ }
86
+ }
87
+
88
+ , mouseUpHandler: function (ev) {
89
+ doPan = false;
90
+ }
91
+
92
+ , init: function (options) {
93
+ options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
94
+ options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
95
+ options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
96
+ }
97
+
98
+ , destroy: function (options) {
99
+ options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
100
+ options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
101
+ options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
102
+ }
103
+ }
104
+ panZoom = svgPanZoom('#mySvgId', {
105
+ zoomEnabled: true
106
+ , controlIconsEnabled: true
107
+ , fit: 1
108
+ , center: 1
109
+ , customEventsHandler: eventsHandler
110
+ })
111
+ };
112
+ await drawDiagram();
113
+ </script>
114
+ </body>
115
+
@@ -110,33 +110,254 @@ def render_mermaid(mermaid_code):
110
110
  """
111
111
  display(HTML(mermaid_html))
112
112
 
113
- def save_mermaid_graph(title, mermaid_code, folder:str = EGERIA_MERMAID_FOLDER):
113
+
114
+ def parse_mermaid_code(mermaid_code):
115
+ parts = mermaid_code.split('---', maxsplit=3)
116
+ if len(parts) == 3:
117
+ title = parts[1].strip()
118
+ mermaid_code = parts[2].strip()
119
+ else:
120
+ title = "No Title"
121
+ return title, mermaid_code
122
+
123
+ def construct_mermaid_html(mermaid_str: str) -> str:
124
+ """Function to display a HTML code in a Jupyter notebook"""
125
+ title, mermaid_code = parse_mermaid_code(mermaid_str)
126
+
127
+ html_prefix = """
128
+ <html>
129
+ <head>
130
+ <style type="text/css">
131
+ #mySvgId {
132
+ width: 100%;
133
+ height: 100%;
134
+ overflow: hidden;
135
+ border: 1px solid #ccc;
136
+ position: relative;
137
+ margin-bottom: 10px;
138
+ }
139
+ svg {
140
+ cursor: grab;
141
+ }
142
+
143
+ </style>
144
+ </head>
145
+
146
+ <body>
147
+ <div id="graphDiv"></div>
148
+ <script src="https://bumbu.me/svg-pan-zoom/dist/svg-pan-zoom.min.js"></script>
149
+ <script type="module">
150
+ import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
151
+
152
+ mermaid.initialize({startOnLoad: false});
153
+ await mermaid.run({
154
+ querySelector: '.mermaid',
155
+ postRenderCallback: (id) => {
156
+ const container = document.getElementById("diagram-container");
157
+ const svgElement = container.querySelector("svg");
158
+
159
+ // Initialize Panzoom
160
+ const panzoomInstance = Panzoom(svgElement, {
161
+ maxScale: 5,
162
+ minScale: 0.5,
163
+ step: 0.1,
164
+ });
165
+
166
+ // Add mouse wheel zoom
167
+ container.addEventListener("wheel", (event) => {
168
+ panzoomInstance.zoomWithWheel(event);
169
+ });
170
+ }
171
+ });
172
+
173
+
174
+ const drawDiagram = async function () {
175
+ const element = document.querySelector('#graphDiv');
176
+ const graphDefinition = `
177
+ """
178
+
179
+ html_postfix = """`;
180
+ const {svg} = await mermaid.render('mySvgId', graphDefinition);
181
+ element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
182
+
183
+ var doPan = false;
184
+ var eventsHandler;
185
+ var panZoom;
186
+ var mousepos;
187
+
188
+ eventsHandler = {
189
+ haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
190
+
191
+ , mouseDownHandler: function (ev) {
192
+ if (event.target.className == "[object SVGAnimatedString]") {
193
+ doPan = true;
194
+ mousepos = {x: ev.clientX, y: ev.clientY}
195
+ }
196
+ ;
197
+ }
198
+
199
+ , mouseMoveHandler: function (ev) {
200
+ if (doPan) {
201
+ panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
202
+ mousepos = {x: ev.clientX, y: ev.clientY};
203
+ window.getSelection().removeAllRanges();
204
+ }
205
+ }
206
+
207
+ , mouseUpHandler: function (ev) {
208
+ doPan = false;
209
+ }
210
+
211
+ , init: function (options) {
212
+ options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
213
+ options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
214
+ options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
215
+ }
216
+
217
+ , destroy: function (options) {
218
+ options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
219
+ options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
220
+ options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
221
+ }
222
+ }
223
+ panZoom = svgPanZoom('#mySvgId', {
224
+ zoomEnabled: true
225
+ , controlIconsEnabled: true
226
+ , fit: 1
227
+ , center: 1
228
+ , customEventsHandler: eventsHandler
229
+ })
230
+ };
231
+ await drawDiagram();
232
+ </script>
233
+ </body>
234
+ """
235
+
236
+ return html_prefix + mermaid_code + html_postfix
237
+
238
+
239
+
240
+ def save_mermaid_graph(title, mermaid_str, folder:str = EGERIA_MERMAID_FOLDER):
114
241
  """Save a Mermaid diagram to a file"""
115
242
  if not os.path.exists(folder):
116
243
  os.makedirs(folder)
117
- mermaid_file = os.path.join(folder, title + ".mmd")
118
- mermaid_code = f"""
119
- <!DOCTYPE html>
120
- <html>
121
- <head>
122
- <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
123
- </head>
124
- <body>
125
- <div class="mermaid">
126
- {mermaid_code}
127
- </div>
128
- """ \
129
- + \
130
- """
131
- <script>
132
- mermaid.initialize({startOnLoad:true});
133
- </script>
134
- </body>
135
- </html>
136
- """
244
+ mermaid_file = os.path.join(folder, title + ".html")
245
+
246
+ title, mermaid_code = parse_mermaid_code(mermaid_str)
247
+
248
+ html_prefix = """
249
+ <html>
250
+ <head>
251
+ <style type="text/css">
252
+ #mySvgId {
253
+ width: 100%;
254
+ height: 100%;
255
+ overflow: hidden;
256
+ border: 1px solid #ccc;
257
+ position: relative;
258
+ margin-bottom: 10px;
259
+ }
260
+ svg {
261
+ cursor: grab;
262
+ }
263
+
264
+ </style>
265
+ </head>
266
+
267
+ <body>
268
+ <div id="graphDiv"></div>
269
+ <script src="https://bumbu.me/svg-pan-zoom/dist/svg-pan-zoom.min.js"></script>
270
+ <script type="module">
271
+ import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
272
+
273
+ mermaid.initialize({startOnLoad: false});
274
+ await mermaid.run({
275
+ querySelector: '.mermaid',
276
+ postRenderCallback: (id) => {
277
+ const container = document.getElementById("diagram-container");
278
+ const svgElement = container.querySelector("svg");
279
+
280
+ // Initialize Panzoom
281
+ const panzoomInstance = Panzoom(svgElement, {
282
+ maxScale: 5,
283
+ minScale: 0.5,
284
+ step: 0.1,
285
+ });
286
+
287
+ // Add mouse wheel zoom
288
+ container.addEventListener("wheel", (event) => {
289
+ panzoomInstance.zoomWithWheel(event);
290
+ });
291
+ }
292
+ });
293
+
294
+
295
+ const drawDiagram = async function () {
296
+ const element = document.querySelector('#graphDiv');
297
+ const graphDefinition = `
298
+ """
299
+
300
+ html_postfix = """`;
301
+ const {svg} = await mermaid.render('mySvgId', graphDefinition);
302
+ element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
303
+
304
+ var doPan = false;
305
+ var eventsHandler;
306
+ var panZoom;
307
+ var mousepos;
308
+
309
+ eventsHandler = {
310
+ haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
311
+
312
+ , mouseDownHandler: function (ev) {
313
+ if (event.target.className == "[object SVGAnimatedString]") {
314
+ doPan = true;
315
+ mousepos = {x: ev.clientX, y: ev.clientY}
316
+ }
317
+ ;
318
+ }
319
+
320
+ , mouseMoveHandler: function (ev) {
321
+ if (doPan) {
322
+ panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
323
+ mousepos = {x: ev.clientX, y: ev.clientY};
324
+ window.getSelection().removeAllRanges();
325
+ }
326
+ }
327
+
328
+ , mouseUpHandler: function (ev) {
329
+ doPan = false;
330
+ }
331
+
332
+ , init: function (options) {
333
+ options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
334
+ options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
335
+ options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
336
+ }
337
+
338
+ , destroy: function (options) {
339
+ options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
340
+ options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
341
+ options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
342
+ }
343
+ }
344
+ panZoom = svgPanZoom('#mySvgId', {
345
+ zoomEnabled: true
346
+ , controlIconsEnabled: true
347
+ , fit: 1
348
+ , center: 1
349
+ , customEventsHandler: eventsHandler
350
+ })
351
+ };
352
+ await drawDiagram();
353
+ </script>
354
+ </body>
355
+ """
356
+
357
+ payload = html_prefix + mermaid_code + html_postfix
137
358
 
138
359
  with open(mermaid_file, "w") as f:
139
- f.write(mermaid_code)
360
+ f.write(payload)
140
361
  return mermaid_file
141
362
 
142
363
 
@@ -144,12 +144,12 @@ class SolutionArchitect(Client):
144
144
 
145
145
  possible_query_params = query_string(
146
146
  [
147
+ ("addImplementation", add_implementation),
147
148
  ("startFrom", start_from),
148
149
  ("pageSize", page_size),
149
150
  ("startsWith", starts_with),
150
151
  ("endsWith", ends_with),
151
152
  ("ignoreCase", ignore_case),
152
- ("addImplementation", add_implementation),
153
153
  ]
154
154
  )
155
155
 
@@ -176,6 +176,7 @@ class SolutionArchitect(Client):
176
176
 
177
177
  def find_information_supply_chains(self,
178
178
  filter: str = "*",
179
+ add_implementation: bool = True,
179
180
  starts_with: bool = True,
180
181
  ends_with: bool = False,
181
182
  ignore_case: bool = False,
@@ -190,6 +191,8 @@ class SolutionArchitect(Client):
190
191
  ----------
191
192
  filter: str
192
193
  - search_filterstring to search for.
194
+ add_implementation : bool, [default=True], optional
195
+ - add_implementation flag to include information supply chain implementations details..
193
196
  starts_with : bool, [default=False], optional
194
197
  Starts with the supplied string.
195
198
  ends_with : bool, [default=False], optional
@@ -218,6 +221,7 @@ class SolutionArchitect(Client):
218
221
  response = loop.run_until_complete(
219
222
  self._async_find_information_supply_chains(
220
223
  filter,
224
+ add_implementation,
221
225
  starts_with,
222
226
  ends_with,
223
227
  ignore_case,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyegeria
3
- Version: 5.3.3.11
3
+ Version: 5.3.3.13.dev1
4
4
  Summary: A python client for Egeria
5
5
  License: Apache 2.0
6
6
  Keywords: egeria,metadata,governance