pyegeria 5.3.3.12__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.
- pyegeria/commands/tech/list_information_supply_chains.py +5 -4
- pyegeria/commands/tech/work/mermaid_graphs/Clinical Trial Subject Onboarding.html +135 -0
- pyegeria/commands/tech/work/mermaid_graphs/{Clinical Trial Treatment Validation.mmd → Clinical Trial Treatment Validation.html } +127 -41
- pyegeria/commands/tech/work/mermaid_graphs/Employee Expense Payment.html +126 -0
- pyegeria/commands/tech/work/mermaid_graphs/New Drug Product Information Distribution.html +141 -0
- pyegeria/commands/tech/work/mermaid_graphs/New Employee Onboarding.html +138 -0
- pyegeria/commands/tech/work/mermaid_graphs/Personalized Treatment Ordering.html +143 -0
- pyegeria/commands/tech/work/mermaid_graphs/{Physical Inventory Tracking.mmd → Physical Inventory Tracking.html } +114 -28
- pyegeria/commands/tech/work/mermaid_graphs/{Sustainability Reporting.mmd → Sustainability Reporting.html } +112 -26
- pyegeria/commands/tech/work/mermaid_graphs/{{displayName}}.html +115 -0
- pyegeria/mermaid_utilities.py +243 -22
- {pyegeria-5.3.3.12.dist-info → pyegeria-5.3.3.13.dev1.dist-info}/METADATA +1 -1
- {pyegeria-5.3.3.12.dist-info → pyegeria-5.3.3.13.dev1.dist-info}/RECORD +18 -93
- pyegeria/.DS_Store +0 -0
- pyegeria/commands/.DS_Store +0 -0
- pyegeria/commands/__pycache__/__init__.cpython-312.pyc +0 -0
- pyegeria/commands/__pycache__/server_status_widget.cpython-312-pytest-7.4.4.pyc +0 -0
- pyegeria/commands/cat/__pycache__/__init__.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/get_asset_graph.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/get_collection.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/get_project_dependencies.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/get_project_structure.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/get_tech_type_elements.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/glossary_actions.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_assets.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_cert_types.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_collections.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_deployed_catalogs.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_deployed_database_schemas.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_deployed_databases.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_glossaries.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_projects.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_servers_deployed_imp.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_tech_type_elements.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_tech_types.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_terms.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_todos.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_user_ids.cpython-312.pyc +0 -0
- pyegeria/commands/cli/__pycache__/__init__.cpython-312.pyc +0 -0
- pyegeria/commands/cli/__pycache__/egeria_login_tui.cpython-312.pyc +0 -0
- pyegeria/commands/cli/__pycache__/egeria_ops.cpython-312.pyc +0 -0
- pyegeria/commands/cli/__pycache__/ops_config.cpython-312.pyc +0 -0
- pyegeria/commands/doc/.DS_Store +0 -0
- pyegeria/commands/doc/Visual Command Reference/.DS_Store +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/.DS_Store +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/.DS_Store +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/.DS_Store +0 -0
- pyegeria/commands/doc/glossary/.DS_Store +0 -0
- pyegeria/commands/doc/glossary/images/.DS_Store +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/.DS_Store +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/.DS_Store +0 -0
- pyegeria/commands/my/__pycache__/__init__.cpython-312.pyc +0 -0
- pyegeria/commands/my/__pycache__/list_my_profile.cpython-312.pyc +0 -0
- pyegeria/commands/my/__pycache__/list_my_roles.cpython-312.pyc +0 -0
- pyegeria/commands/my/__pycache__/monitor_my_todos.cpython-312.pyc +0 -0
- pyegeria/commands/my/__pycache__/monitor_open_todos.cpython-312.pyc +0 -0
- pyegeria/commands/my/__pycache__/todo_actions.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/__init__.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/gov_server_actions.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/list_archives.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/list_catalog_targets.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/load_archive.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/monitor_engine_activity.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/monitor_engine_activity_c.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/monitor_gov_eng_status.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/monitor_integ_daemon_status.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/monitor_platform_status.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/monitor_server_startup.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/monitor_server_status.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/refresh_integration_daemon.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/restart_integration_daemon.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/table_integ_daemon_status.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/__init__.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/get_element_info.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/get_guid_info.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/get_tech_details.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/get_tech_type_template.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_anchored_elements.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_asset_types.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_elements_by_property_value.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_elements_for_classification.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_gov_action_processes.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_registered_services.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_related_specification.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_relationship_types.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_relationships.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_tech_templates.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_valid_metadata_values.cpython-312.pyc +0 -0
- pyegeria/commands/tech/work/mermaid_graphs/Clinical Trial Subject Onboarding.mmd +0 -49
- pyegeria/commands/tech/work/mermaid_graphs/Employee Expense Payment.mmd +0 -40
- pyegeria/commands/tech/work/mermaid_graphs/New Drug Product Information Distribution.mmd +0 -55
- pyegeria/commands/tech/work/mermaid_graphs/New Employee Onboarding.mmd +0 -52
- pyegeria/commands/tech/work/mermaid_graphs/Personalized Treatment Ordering.mmd +0 -57
- pyegeria/commands/tech/work/mermaid_graphs/{{displayName}}.mmd +0 -29
- /pyegeria/commands/tech/{list_isolution_blueprints.py → list_solution_blueprints.py} +0 -0
- /pyegeria/commands/tech/{list_isolution_blueprints2.py → list_solution_blueprints2.py} +0 -0
- {pyegeria-5.3.3.12.dist-info → pyegeria-5.3.3.13.dev1.dist-info}/LICENSE +0 -0
- {pyegeria-5.3.3.12.dist-info → pyegeria-5.3.3.13.dev1.dist-info}/WHEEL +0 -0
- {pyegeria-5.3.3.12.dist-info → pyegeria-5.3.3.13.dev1.dist-info}/entry_points.txt +0 -0
@@ -46,7 +46,7 @@ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
|
|
46
46
|
EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
|
47
47
|
EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
|
48
48
|
EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "150"))
|
49
|
-
EGERIA_MERMAID_FOLDER = os.environ.get("EGERIA_MERMAID_FOLDER", "
|
49
|
+
EGERIA_MERMAID_FOLDER = os.environ.get("EGERIA_MERMAID_FOLDER", "work/mermaid_graphs")
|
50
50
|
|
51
51
|
def supply_chain_viewer(
|
52
52
|
search_string: str,
|
@@ -99,10 +99,11 @@ def supply_chain_viewer(
|
|
99
99
|
sc_mermaid = sc.get("mermaidGraph",'---')
|
100
100
|
if sc_mermaid != '---':
|
101
101
|
link = save_mermaid_graph(sc_name, sc_mermaid, EGERIA_MERMAID_FOLDER )
|
102
|
-
sc_mermaid_link = f"
|
102
|
+
sc_mermaid_link = f"file://:{link}"
|
103
|
+
# print("Visit my [link=https://www.willmcgugan.com]blog[/link]!")
|
103
104
|
# sc_scope = Text(f"{sc_scope}\n\t\t/\n{sc_mermaid_link}")
|
104
|
-
sc_scope = Text(f"{sc_scope}\n\t\t/\n{sc_mermaid_link}", style="underline")
|
105
|
-
sc_scope.stylize("link " + sc_mermaid_link)
|
105
|
+
sc_scope = Text(f"{sc_scope}\n\t\t/\n[link={sc_mermaid_link}]{sc_mermaid_link}[/link]!", style="underline")
|
106
|
+
# sc_scope.stylize("link =" + sc_mermaid_link)
|
106
107
|
|
107
108
|
table.add_row(sc_name, sc_unique_name, sc_purpose_str, sc_scope, sc_desc)
|
108
109
|
|
@@ -0,0 +1,135 @@
|
|
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
|
+
39a035f0-3b2b-45fe-adb8-ee8a19581f6a@{ shape: flip-tri, label: "*Information Supply Chain*
|
55
|
+
**Clinical Trial Subject Onboarding**"}
|
56
|
+
8a979a84-6175-4595-bf1b-6d16392a4fea@{ shape: text, label: "*Description*
|
57
|
+
**Delivering the data necessary to add a person as a subject in a clinical trial.**"}
|
58
|
+
39a035f0-3b2b-45fe-adb8-ee8a19581f6a~~~8a979a84-6175-4595-bf1b-6d16392a4fea
|
59
|
+
9f334ebf-ea2d-495e-8b8b-b425fbe75697@{ shape: text, label: "*Purpose*
|
60
|
+
**Ensure patient subject is aware of the process and potential risks in participation.**"}
|
61
|
+
8a979a84-6175-4595-bf1b-6d16392a4fea~~~9f334ebf-ea2d-495e-8b8b-b425fbe75697
|
62
|
+
85b23480-45fa-4c6a-b03b-f0d91a1d4575@{ shape: text, label: "*Purpose*
|
63
|
+
**Ensure patient subject has given permission for Coco Pharmaceuticals to acquire, store and process their personal data needed for the clinical trial.**"}
|
64
|
+
9f334ebf-ea2d-495e-8b8b-b425fbe75697~~~85b23480-45fa-4c6a-b03b-f0d91a1d4575
|
65
|
+
a57f263d-2c84-4e3d-af13-406a341f7f84@{ shape: text, label: "*Purpose*
|
66
|
+
**Ensure incoming data is validated and catalogued.**"}
|
67
|
+
85b23480-45fa-4c6a-b03b-f0d91a1d4575~~~a57f263d-2c84-4e3d-af13-406a341f7f84
|
68
|
+
8fe0c8b8-a55a-49c2-a8fa-0ccc47dbd6bf@{ shape: text, label: "*Purpose*
|
69
|
+
**Ensure data and process owners are informed of key milestones and issues requiring attention.**"}
|
70
|
+
a57f263d-2c84-4e3d-af13-406a341f7f84~~~8fe0c8b8-a55a-49c2-a8fa-0ccc47dbd6bf
|
71
|
+
6dda1385-a508-4b64-adf4-839a011bfe33@{ shape: text, label: "*Purpose*
|
72
|
+
**Ensure the process of data capture and validation is transparent and auditable.**"}
|
73
|
+
8fe0c8b8-a55a-49c2-a8fa-0ccc47dbd6bf~~~6dda1385-a508-4b64-adf4-839a011bfe33
|
74
|
+
style 39a035f0-3b2b-45fe-adb8-ee8a19581f6a color:#FFFFFF, fill:#004563, stroke:#b7c0c7
|
75
|
+
style 85b23480-45fa-4c6a-b03b-f0d91a1d4575 color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
76
|
+
style 6dda1385-a508-4b64-adf4-839a011bfe33 color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
77
|
+
style 8a979a84-6175-4595-bf1b-6d16392a4fea color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
78
|
+
style a57f263d-2c84-4e3d-af13-406a341f7f84 color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
79
|
+
style 8fe0c8b8-a55a-49c2-a8fa-0ccc47dbd6bf color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
80
|
+
style 9f334ebf-ea2d-495e-8b8b-b425fbe75697 color:#000000, fill:#F9F7ED, stroke:#b7c0c7`;
|
81
|
+
const {svg} = await mermaid.render('mySvgId', graphDefinition);
|
82
|
+
element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
|
83
|
+
|
84
|
+
var doPan = false;
|
85
|
+
var eventsHandler;
|
86
|
+
var panZoom;
|
87
|
+
var mousepos;
|
88
|
+
|
89
|
+
eventsHandler = {
|
90
|
+
haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
|
91
|
+
|
92
|
+
, mouseDownHandler: function (ev) {
|
93
|
+
if (event.target.className == "[object SVGAnimatedString]") {
|
94
|
+
doPan = true;
|
95
|
+
mousepos = {x: ev.clientX, y: ev.clientY}
|
96
|
+
}
|
97
|
+
;
|
98
|
+
}
|
99
|
+
|
100
|
+
, mouseMoveHandler: function (ev) {
|
101
|
+
if (doPan) {
|
102
|
+
panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
|
103
|
+
mousepos = {x: ev.clientX, y: ev.clientY};
|
104
|
+
window.getSelection().removeAllRanges();
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
, mouseUpHandler: function (ev) {
|
109
|
+
doPan = false;
|
110
|
+
}
|
111
|
+
|
112
|
+
, init: function (options) {
|
113
|
+
options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
|
114
|
+
options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
|
115
|
+
options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
|
116
|
+
}
|
117
|
+
|
118
|
+
, destroy: function (options) {
|
119
|
+
options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
|
120
|
+
options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
|
121
|
+
options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
|
122
|
+
}
|
123
|
+
}
|
124
|
+
panZoom = svgPanZoom('#mySvgId', {
|
125
|
+
zoomEnabled: true
|
126
|
+
, controlIconsEnabled: true
|
127
|
+
, fit: 1
|
128
|
+
, center: 1
|
129
|
+
, customEventsHandler: eventsHandler
|
130
|
+
})
|
131
|
+
};
|
132
|
+
await drawDiagram();
|
133
|
+
</script>
|
134
|
+
</body>
|
135
|
+
|
@@ -1,40 +1,79 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
<
|
4
|
-
<
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
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
|
13
52
|
%%{init: {"flowchart": {"htmlLabels": false}} }%%
|
14
53
|
|
15
54
|
1f71e403-1187-4f03-a1dd-ae7dc105f06f@{ shape: flip-tri, label: "*Information Supply Chain*
|
16
55
|
**Clinical Trial Treatment Validation**"}
|
17
|
-
|
56
|
+
3341af94-352a-40e0-ad6e-e2a1cc84da4f@{ shape: text, label: "*Description*
|
18
57
|
**Delivering data relating to a clinical trial from the hospitals to the Coco Researchers so that they can then determine the efficacy of the treatment to report to the regulators.**"}
|
19
|
-
1f71e403-1187-4f03-a1dd-ae7dc105f06f~~~
|
20
|
-
|
58
|
+
1f71e403-1187-4f03-a1dd-ae7dc105f06f~~~3341af94-352a-40e0-ad6e-e2a1cc84da4f
|
59
|
+
4a162932-19da-408c-9130-90f4feee4c8b@{ shape: text, label: "*Purpose*
|
21
60
|
**Deliver patient measurement data from hospitals to data scientists in research.**"}
|
22
|
-
|
23
|
-
|
61
|
+
3341af94-352a-40e0-ad6e-e2a1cc84da4f~~~4a162932-19da-408c-9130-90f4feee4c8b
|
62
|
+
95071c88-d98d-486c-9843-f85d1577b689@{ shape: text, label: "*Purpose*
|
24
63
|
**Ensure incoming data is only from certified hospitals.**"}
|
25
|
-
|
26
|
-
|
64
|
+
4a162932-19da-408c-9130-90f4feee4c8b~~~95071c88-d98d-486c-9843-f85d1577b689
|
65
|
+
6cb2b6ca-c44a-4c93-9a9d-96c83e448788@{ shape: text, label: "*Purpose*
|
27
66
|
**Ensure incoming data is validated and catalogued.**"}
|
28
|
-
|
29
|
-
|
67
|
+
95071c88-d98d-486c-9843-f85d1577b689~~~6cb2b6ca-c44a-4c93-9a9d-96c83e448788
|
68
|
+
045474d5-f1f8-43da-85b1-4bd00091e9f4@{ shape: text, label: "*Purpose*
|
30
69
|
**Ensure data and process owners are informed of key milestones and issues requiring attention.**"}
|
31
|
-
|
32
|
-
|
70
|
+
6cb2b6ca-c44a-4c93-9a9d-96c83e448788~~~045474d5-f1f8-43da-85b1-4bd00091e9f4
|
71
|
+
82a5a15e-6d6f-427f-9f2b-d004d464a278@{ shape: text, label: "*Purpose*
|
33
72
|
**Ensure the process of data capture and treatment validation is transparent and auditable.**"}
|
34
|
-
|
35
|
-
|
73
|
+
045474d5-f1f8-43da-85b1-4bd00091e9f4~~~82a5a15e-6d6f-427f-9f2b-d004d464a278
|
74
|
+
458c1261-3cd8-4005-8cee-a86944ada370@{ shape: text, label: "*Purpose*
|
36
75
|
**Ensure the treatment validation report is complete and regulatory compliant.**"}
|
37
|
-
|
76
|
+
82a5a15e-6d6f-427f-9f2b-d004d464a278~~~458c1261-3cd8-4005-8cee-a86944ada370
|
38
77
|
38635d38-f728-400d-a8ec-7c26e68b7c0f@{ shape: hex, label: "*Information Supply Chain Segment*
|
39
78
|
**Weekly Measurements Onboarding**"}
|
40
79
|
38635d38-f728-400d-a8ec-7c26e68b7c0f-->|"capture and catalog,
|
@@ -95,14 +134,13 @@ d48f579f-76d3-4c49-b1b4-575f5645a9d0-->|"retrieve patient data,
|
|
95
134
|
**SolutionComponent:Treatment Assessment Report Validation and Delivery:V1.0**"}
|
96
135
|
72a86eec-9734-4bc0-babb-4fec0aa7c9ff-->|"publish results,
|
97
136
|
[Solution Linking Wire]"|0bf2547c-937c-41b6-814f-6284849271a1
|
98
|
-
style 278d35bd-0f2f-4f54-931f-6006d550360c color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
99
137
|
style 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
100
|
-
style
|
101
|
-
style f3d86b7b-0c4e-4f86-83f9-76680539091a color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
102
|
-
style 0b74a538-54cd-4a20-9b6b-88d970361a69 color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
138
|
+
style 6cb2b6ca-c44a-4c93-9a9d-96c83e448788 color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
103
139
|
style e4303326-e418-4f77-b8e7-fd5d34717594 color:#004563, fill:#b7c0c7, stroke:#004563
|
140
|
+
style 4a162932-19da-408c-9130-90f4feee4c8b color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
104
141
|
style 4fc47e60-f1b5-469c-b666-e1f4570e749f color:#004563, fill:#b7c0c7, stroke:#004563
|
105
|
-
style
|
142
|
+
style 045474d5-f1f8-43da-85b1-4bd00091e9f4 color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
143
|
+
style 458c1261-3cd8-4005-8cee-a86944ada370 color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
106
144
|
style 7f5dca65-50b4-4103-9ac7-3a406a09047a color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
107
145
|
style ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
108
146
|
style a5d4d638-6836-47e5-99d0-fdcde637e13f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
@@ -111,19 +149,67 @@ style 38635d38-f728-400d-a8ec-7c26e68b7c0f color:#004563, fill:#b7c0c7, stroke:#
|
|
111
149
|
style 7edca02c-e726-4570-815c-280bdf5498b9 color:#004563, fill:#b7c0c7, stroke:#004563
|
112
150
|
style b5c8da4c-f925-4cf1-8294-e43cd2c1a584 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
113
151
|
style 0bf2547c-937c-41b6-814f-6284849271a1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
152
|
+
style 95071c88-d98d-486c-9843-f85d1577b689 color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
114
153
|
style d48f579f-76d3-4c49-b1b4-575f5645a9d0 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
115
154
|
style 1f71e403-1187-4f03-a1dd-ae7dc105f06f color:#FFFFFF, fill:#004563, stroke:#b7c0c7
|
116
|
-
style
|
155
|
+
style 82a5a15e-6d6f-427f-9f2b-d004d464a278 color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
156
|
+
style 3341af94-352a-40e0-ad6e-e2a1cc84da4f color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
117
157
|
style 04ae768e-3816-47bc-bddb-c9ae25018684 color:#004563, fill:#b7c0c7, stroke:#004563
|
118
158
|
style 26c07ca4-3b8e-484b-812b-36c1ace4b275 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
119
|
-
style 4b99798c-9918-47f0-9bad-3737cab1e07c color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
120
159
|
style 1c150d6e-30cf-481c-9afb-3b06c9c9e78f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
121
|
-
style 07705e15-efff-4f80-8992-f04ac85e0ef1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
160
|
+
style 07705e15-efff-4f80-8992-f04ac85e0ef1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab`;
|
161
|
+
const {svg} = await mermaid.render('mySvgId', graphDefinition);
|
162
|
+
element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
|
163
|
+
|
164
|
+
var doPan = false;
|
165
|
+
var eventsHandler;
|
166
|
+
var panZoom;
|
167
|
+
var mousepos;
|
168
|
+
|
169
|
+
eventsHandler = {
|
170
|
+
haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
|
171
|
+
|
172
|
+
, mouseDownHandler: function (ev) {
|
173
|
+
if (event.target.className == "[object SVGAnimatedString]") {
|
174
|
+
doPan = true;
|
175
|
+
mousepos = {x: ev.clientX, y: ev.clientY}
|
176
|
+
}
|
177
|
+
;
|
178
|
+
}
|
179
|
+
|
180
|
+
, mouseMoveHandler: function (ev) {
|
181
|
+
if (doPan) {
|
182
|
+
panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
|
183
|
+
mousepos = {x: ev.clientX, y: ev.clientY};
|
184
|
+
window.getSelection().removeAllRanges();
|
185
|
+
}
|
186
|
+
}
|
187
|
+
|
188
|
+
, mouseUpHandler: function (ev) {
|
189
|
+
doPan = false;
|
190
|
+
}
|
191
|
+
|
192
|
+
, init: function (options) {
|
193
|
+
options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
|
194
|
+
options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
|
195
|
+
options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
|
196
|
+
}
|
197
|
+
|
198
|
+
, destroy: function (options) {
|
199
|
+
options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
|
200
|
+
options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
|
201
|
+
options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
|
202
|
+
}
|
203
|
+
}
|
204
|
+
panZoom = svgPanZoom('#mySvgId', {
|
205
|
+
zoomEnabled: true
|
206
|
+
, controlIconsEnabled: true
|
207
|
+
, fit: 1
|
208
|
+
, center: 1
|
209
|
+
, customEventsHandler: eventsHandler
|
210
|
+
})
|
211
|
+
};
|
212
|
+
await drawDiagram();
|
213
|
+
</script>
|
214
|
+
</body>
|
215
|
+
|
@@ -0,0 +1,126 @@
|
|
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
|
+
79d1d83f-6a37-4c32-bf3f-eb8b4358027c@{ shape: flip-tri, label: "*Information Supply Chain*
|
55
|
+
**Employee Expense Payment**"}
|
56
|
+
ecd2e143-1430-46df-a366-4643a073f846@{ shape: text, label: "*Description*
|
57
|
+
**Managing the collection of expense data, its approval and the subsequent payment authorization flows.**"}
|
58
|
+
79d1d83f-6a37-4c32-bf3f-eb8b4358027c~~~ecd2e143-1430-46df-a366-4643a073f846
|
59
|
+
7a30a560-1ce4-46c0-805b-d1d717d4880c@{ shape: text, label: "*Purpose*
|
60
|
+
**Ensure employees are reimbursed for their expenses in a timely manner.**"}
|
61
|
+
ecd2e143-1430-46df-a366-4643a073f846~~~7a30a560-1ce4-46c0-805b-d1d717d4880c
|
62
|
+
88c42780-6fb1-49e2-a584-8af90cdc7728@{ shape: rounded, label: "*Software Server*
|
63
|
+
**System:coco-hrim**"}
|
64
|
+
ad8eab54-c2f7-494d-82d0-bf5985e5a58d@{ shape: rounded, label: "*Software Server*
|
65
|
+
**System:coco-expenses**"}
|
66
|
+
88c42780-6fb1-49e2-a584-8af90cdc7728-->|"payment authorization [Data Flow]"|ad8eab54-c2f7-494d-82d0-bf5985e5a58d
|
67
|
+
style 7a30a560-1ce4-46c0-805b-d1d717d4880c color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
68
|
+
style ad8eab54-c2f7-494d-82d0-bf5985e5a58d color:#000000, fill:#e0ab18, stroke:#004563
|
69
|
+
style 79d1d83f-6a37-4c32-bf3f-eb8b4358027c color:#FFFFFF, fill:#004563, stroke:#b7c0c7
|
70
|
+
style 88c42780-6fb1-49e2-a584-8af90cdc7728 color:#000000, fill:#e0ab18, stroke:#004563
|
71
|
+
style ecd2e143-1430-46df-a366-4643a073f846 color:#000000, fill:#F9F7ED, stroke:#b7c0c7`;
|
72
|
+
const {svg} = await mermaid.render('mySvgId', graphDefinition);
|
73
|
+
element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
|
74
|
+
|
75
|
+
var doPan = false;
|
76
|
+
var eventsHandler;
|
77
|
+
var panZoom;
|
78
|
+
var mousepos;
|
79
|
+
|
80
|
+
eventsHandler = {
|
81
|
+
haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
|
82
|
+
|
83
|
+
, mouseDownHandler: function (ev) {
|
84
|
+
if (event.target.className == "[object SVGAnimatedString]") {
|
85
|
+
doPan = true;
|
86
|
+
mousepos = {x: ev.clientX, y: ev.clientY}
|
87
|
+
}
|
88
|
+
;
|
89
|
+
}
|
90
|
+
|
91
|
+
, mouseMoveHandler: function (ev) {
|
92
|
+
if (doPan) {
|
93
|
+
panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
|
94
|
+
mousepos = {x: ev.clientX, y: ev.clientY};
|
95
|
+
window.getSelection().removeAllRanges();
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
, mouseUpHandler: function (ev) {
|
100
|
+
doPan = false;
|
101
|
+
}
|
102
|
+
|
103
|
+
, init: function (options) {
|
104
|
+
options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
|
105
|
+
options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
|
106
|
+
options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
|
107
|
+
}
|
108
|
+
|
109
|
+
, destroy: function (options) {
|
110
|
+
options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
|
111
|
+
options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
|
112
|
+
options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
|
113
|
+
}
|
114
|
+
}
|
115
|
+
panZoom = svgPanZoom('#mySvgId', {
|
116
|
+
zoomEnabled: true
|
117
|
+
, controlIconsEnabled: true
|
118
|
+
, fit: 1
|
119
|
+
, center: 1
|
120
|
+
, customEventsHandler: eventsHandler
|
121
|
+
})
|
122
|
+
};
|
123
|
+
await drawDiagram();
|
124
|
+
</script>
|
125
|
+
</body>
|
126
|
+
|
@@ -0,0 +1,141 @@
|
|
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
|
+
b0491fd4-6324-4ed8-9a1c-7cbd9892e21b@{ shape: flip-tri, label: "*Information Supply Chain*
|
55
|
+
**New Drug Product Information Distribution**"}
|
56
|
+
82a0934c-9b54-4c72-bb95-ddbe85ec02a1@{ shape: text, label: "*Description*
|
57
|
+
**Managing the distribution of information about a new product.**"}
|
58
|
+
b0491fd4-6324-4ed8-9a1c-7cbd9892e21b~~~82a0934c-9b54-4c72-bb95-ddbe85ec02a1
|
59
|
+
f12a37d0-2228-459a-b30b-1d8444b6caea@{ shape: text, label: "*Purpose*
|
60
|
+
**Ensuring information about a new product is distributed to all of the appropriate system so that it is visible for ordering, manufacturing and invoicing.**"}
|
61
|
+
82a0934c-9b54-4c72-bb95-ddbe85ec02a1~~~f12a37d0-2228-459a-b30b-1d8444b6caea
|
62
|
+
c24e9ea0-171a-46d8-a5d8-3fedcfe97aa4@{ shape: rounded, label: "*Software Server*
|
63
|
+
**System:MFCTRL9482**"}
|
64
|
+
987df321-d940-4ce5-9ae1-8258736f0445@{ shape: rounded, label: "*Software Server*
|
65
|
+
**System:KCDEPOT01**"}
|
66
|
+
c24e9ea0-171a-46d8-a5d8-3fedcfe97aa4-->|"order ready [Data Flow]"|987df321-d940-4ce5-9ae1-8258736f0445
|
67
|
+
afefd870-5616-4f35-a557-774b88b96bef@{ shape: rounded, label: "*Software Server*
|
68
|
+
**System:EDDEPOT01**"}
|
69
|
+
c24e9ea0-171a-46d8-a5d8-3fedcfe97aa4-->|"order ready [Data Flow]"|afefd870-5616-4f35-a557-774b88b96bef
|
70
|
+
c7b1467a-dea2-4288-95e5-8e1bc3ab2ed3@{ shape: rounded, label: "*Software Server*
|
71
|
+
**System:WINCHDEPOT01**"}
|
72
|
+
c24e9ea0-171a-46d8-a5d8-3fedcfe97aa4-->|"order ready [Data Flow]"|c7b1467a-dea2-4288-95e5-8e1bc3ab2ed3
|
73
|
+
dd424526-24e9-4a10-a575-0700dfb8743a@{ shape: rounded, label: "*Software Server*
|
74
|
+
**System:cocoProducts**"}
|
75
|
+
a2e43afa-386a-4acd-ba1d-7773b368c34a@{ shape: rounded, label: "*Software Server*
|
76
|
+
**System:globalCRM**"}
|
77
|
+
dd424526-24e9-4a10-a575-0700dfb8743a-->|"new product offering [Data Flow]"|a2e43afa-386a-4acd-ba1d-7773b368c34a
|
78
|
+
style b0491fd4-6324-4ed8-9a1c-7cbd9892e21b color:#FFFFFF, fill:#004563, stroke:#b7c0c7
|
79
|
+
style c24e9ea0-171a-46d8-a5d8-3fedcfe97aa4 color:#000000, fill:#e0ab18, stroke:#004563
|
80
|
+
style a2e43afa-386a-4acd-ba1d-7773b368c34a color:#000000, fill:#e0ab18, stroke:#004563
|
81
|
+
style 987df321-d940-4ce5-9ae1-8258736f0445 color:#000000, fill:#e0ab18, stroke:#004563
|
82
|
+
style c7b1467a-dea2-4288-95e5-8e1bc3ab2ed3 color:#000000, fill:#e0ab18, stroke:#004563
|
83
|
+
style f12a37d0-2228-459a-b30b-1d8444b6caea color:#000000, fill:#F9F7ED, stroke:#b7c0c7
|
84
|
+
style dd424526-24e9-4a10-a575-0700dfb8743a color:#000000, fill:#e0ab18, stroke:#004563
|
85
|
+
style afefd870-5616-4f35-a557-774b88b96bef color:#000000, fill:#e0ab18, stroke:#004563
|
86
|
+
style 82a0934c-9b54-4c72-bb95-ddbe85ec02a1 color:#000000, fill:#F9F7ED, stroke:#b7c0c7`;
|
87
|
+
const {svg} = await mermaid.render('mySvgId', graphDefinition);
|
88
|
+
element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
|
89
|
+
|
90
|
+
var doPan = false;
|
91
|
+
var eventsHandler;
|
92
|
+
var panZoom;
|
93
|
+
var mousepos;
|
94
|
+
|
95
|
+
eventsHandler = {
|
96
|
+
haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
|
97
|
+
|
98
|
+
, mouseDownHandler: function (ev) {
|
99
|
+
if (event.target.className == "[object SVGAnimatedString]") {
|
100
|
+
doPan = true;
|
101
|
+
mousepos = {x: ev.clientX, y: ev.clientY}
|
102
|
+
}
|
103
|
+
;
|
104
|
+
}
|
105
|
+
|
106
|
+
, mouseMoveHandler: function (ev) {
|
107
|
+
if (doPan) {
|
108
|
+
panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
|
109
|
+
mousepos = {x: ev.clientX, y: ev.clientY};
|
110
|
+
window.getSelection().removeAllRanges();
|
111
|
+
}
|
112
|
+
}
|
113
|
+
|
114
|
+
, mouseUpHandler: function (ev) {
|
115
|
+
doPan = false;
|
116
|
+
}
|
117
|
+
|
118
|
+
, init: function (options) {
|
119
|
+
options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
|
120
|
+
options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
|
121
|
+
options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
|
122
|
+
}
|
123
|
+
|
124
|
+
, destroy: function (options) {
|
125
|
+
options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
|
126
|
+
options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
|
127
|
+
options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
|
128
|
+
}
|
129
|
+
}
|
130
|
+
panZoom = svgPanZoom('#mySvgId', {
|
131
|
+
zoomEnabled: true
|
132
|
+
, controlIconsEnabled: true
|
133
|
+
, fit: 1
|
134
|
+
, center: 1
|
135
|
+
, customEventsHandler: eventsHandler
|
136
|
+
})
|
137
|
+
};
|
138
|
+
await drawDiagram();
|
139
|
+
</script>
|
140
|
+
</body>
|
141
|
+
|