diff --git a/fittrackee_client/src/components/Workout/WorkoutChart.vue b/fittrackee_client/src/components/Workout/WorkoutChart/index.vue
similarity index 88%
rename from fittrackee_client/src/components/Workout/WorkoutChart.vue
rename to fittrackee_client/src/components/Workout/WorkoutChart/index.vue
index 54f477ad..9ed7a09e 100644
--- a/fittrackee_client/src/components/Workout/WorkoutChart.vue
+++ b/fittrackee_client/src/components/Workout/WorkoutChart/index.vue
@@ -23,6 +23,7 @@
             {{ $t('workouts.DURATION') }}
           
         
+        
          {
+  const legendContainer = document.getElementById(id)
+  if (legendContainer) {
+    let listContainer = legendContainer.querySelector('ul')
+    if (!listContainer) {
+      listContainer = document.createElement('ul')
+      legendContainer.appendChild(listContainer)
+    }
+    return listContainer
+  }
+  throw new Error('No legend container')
+}
+
+export const htmlLegendPlugin = {
+  id: 'htmlLegend',
+  afterUpdate(
+    chart: Chart,
+    args: Record,
+    options: Record
+  ): void {
+    const ul = getOrCreateLegendList(options.containerID)
+    while (ul.firstChild) {
+      ul.firstChild.remove()
+    }
+
+    const legendItems = chart.options.plugins?.legend?.labels?.generateLabels
+      ? chart.options.plugins?.legend?.labels?.generateLabels(chart)
+      : []
+
+    legendItems.forEach((item: LegendItem) => {
+      const li = document.createElement('li')
+      li.onclick = () => {
+        chart.setDatasetVisibility(
+          item.datasetIndex,
+          !chart.isDatasetVisible(item.datasetIndex)
+        )
+        chart.update()
+      }
+
+      const checkBox = document.createElement('input')
+      if (checkBox) {
+        checkBox.type = 'checkbox'
+        checkBox.id = item.text
+        checkBox.checked = !item.hidden
+      }
+
+      const text = document.createTextNode(item.text)
+
+      const boxSpan = document.createElement('span')
+      if (boxSpan) {
+        boxSpan.style.background = `${item.fillStyle}`
+        boxSpan.style.borderColor = `${item.strokeStyle}`
+      }
+
+      li.appendChild(checkBox)
+      li.appendChild(text)
+      li.appendChild(boxSpan)
+      ul.appendChild(li)
+    })
+  },
+}
diff --git a/fittrackee_client/src/views/workouts/Workout.vue b/fittrackee_client/src/views/workouts/Workout.vue
index 4743185e..d717470d 100644
--- a/fittrackee_client/src/views/workouts/Workout.vue
+++ b/fittrackee_client/src/views/workouts/Workout.vue
@@ -52,7 +52,7 @@
   import { useRoute } from 'vue-router'
 
   import NotFound from '@/components/Common/NotFound.vue'
-  import WorkoutChart from '@/components/Workout/WorkoutChart.vue'
+  import WorkoutChart from '@/components/Workout/WorkoutChart/index.vue'
   import WorkoutDetail from '@/components/Workout/WorkoutDetail/index.vue'
   import WorkoutNotes from '@/components/Workout/WorkoutNotes.vue'
   import WorkoutSegments from '@/components/Workout/WorkoutSegments.vue'