From 85768c10b01253f270d29fa06ca08118dceb99a8 Mon Sep 17 00:00:00 2001
From: Michael Haufe
Date: Fri, 11 Oct 2024 12:37:15 -0500
Subject: [PATCH] Fixed stakeholder map display (#395)
---
.../goals/stakeholders.client.vue | 39 ++++++++++---------
1 file changed, 20 insertions(+), 19 deletions(-)
diff --git a/pages/o/[organization-slug]/[solution-slug]/goals/stakeholders.client.vue b/pages/o/[organization-slug]/[solution-slug]/goals/stakeholders.client.vue
index 158b0342..0736dd7d 100644
--- a/pages/o/[organization-slug]/[solution-slug]/goals/stakeholders.client.vue
+++ b/pages/o/[organization-slug]/[solution-slug]/goals/stakeholders.client.vue
@@ -21,7 +21,7 @@ const config = useAppConfig(),
if (getSolutionError.value)
$eventBus.$emit('page-error', getSolutionError.value);
-const { data: stakeholders, refresh, status, error: getStakeholdersError } = await useFetch(`/api/stakeholders`, {
+const { data: stakeholders, refresh: refreshStakeholders, status, error: getStakeholdersError } = await useFetch(`/api/stakeholders`, {
query: { solutionId },
transform: (data) => data.map((item) => {
item.lastModified = new Date(item.lastModified)
@@ -32,20 +32,6 @@ const { data: stakeholders, refresh, status, error: getStakeholdersError } = awa
if (getStakeholdersError.value)
$eventBus.$emit('page-error', getStakeholdersError.value);
-// watch the stakeholders and re-render the chart
-watch(stakeholders, async () => {
- const groupStakeholders = Object.groupBy(stakeholders.value!, ({ segmentation }) => segmentation ?? 'unknown'),
- clientGroup = groupStakeholders.Client ?? [],
- vendorGroup = groupStakeholders.Vendor ?? [];
-
- clientMap.value!.textContent = chartDefinition(clientGroup, StakeholderSegmentation.CLIENT)
- vendorMap.value!.textContent = chartDefinition(vendorGroup, StakeholderSegmentation.VENDOR)
-
- await mermaid.run({
- nodes: [clientMap.value!, vendorMap.value!]
- })
-});
-
enum themeMap {
light = 'default',
dark = 'dark'
@@ -73,6 +59,21 @@ const chartDefinition = (stakeholders: Stakeholder[], category: StakeholderSegme
const clientMap = ref(),
vendorMap = ref();
+const renderChart = async () => {
+ const groupStakeholders = Object.groupBy(stakeholders.value!, ({ segmentation }) => segmentation ?? 'unknown'),
+ clientGroup = groupStakeholders.Client ?? [],
+ vendorGroup = groupStakeholders.Vendor ?? [];
+
+ clientMap.value!.textContent = chartDefinition(clientGroup, StakeholderSegmentation.CLIENT)
+ vendorMap.value!.textContent = chartDefinition(vendorGroup, StakeholderSegmentation.VENDOR)
+
+ await mermaid.run({
+ nodes: [clientMap.value!, vendorMap.value!]
+ })
+}
+
+watch(stakeholders, renderChart);
+
const onCreate = async (data: Stakeholder) => {
await $fetch(`/api/stakeholders`, {
method: 'POST',
@@ -82,7 +83,7 @@ const onCreate = async (data: Stakeholder) => {
}
}).catch((e) => $eventBus.$emit('page-error', e))
- refresh()
+ refreshStakeholders()
}
const onUpdate = async (data: Stakeholder) => {
@@ -94,7 +95,7 @@ const onUpdate = async (data: Stakeholder) => {
}
}).catch((e) => $eventBus.$emit('page-error', e))
- refresh()
+ refreshStakeholders()
}
const onDelete = async (id: string) => {
@@ -103,7 +104,7 @@ const onDelete = async (id: string) => {
body: { solutionId }
}).catch((e) => $eventBus.$emit('page-error', e))
- refresh()
+ refreshStakeholders()
}
@@ -114,7 +115,7 @@ const onDelete = async (id: string) => {
groups or roles. Example: instead of "Jane Doe", use "Project Manager".
-
+ refreshStakeholders()">