diff --git a/src/pages/workouts/components/WorkoutItem.vue b/src/pages/workouts/components/WorkoutItem.vue index 3906cda..d90960d 100644 --- a/src/pages/workouts/components/WorkoutItem.vue +++ b/src/pages/workouts/components/WorkoutItem.vue @@ -103,6 +103,19 @@
Добавить
+
+

Данные участка

+
+
{{index}}:
+
{{ item }}
+
+ +
+
+ Чтобы увидеть информацию по области, выделите область на графике +
+ + @@ -186,6 +199,10 @@ interface Props { isPrivate: boolean, dzenLink?: string } +interface AvgData { + [key: string]: string; +} +const areaAvgData = ref({}); const markedCoordinats = ref>>([]); const { workoutItem, data, mapCenter, lineCoordinates, dzenLink: dzenLinkProps } = defineProps() const dzenLink = ref(dzenLinkProps); @@ -239,6 +256,14 @@ const chartPlugins = [ mapX: mapX, } ]; +function isEmpty(obj: any) { + for (const prop in obj) { + if (Object.hasOwn(obj, prop)) { + return false; + } + } + return true; +} const chartOptions = { animation: { duration: 0 @@ -305,18 +330,7 @@ const chartOptions = { let show_data = []; for (let i = 0; i < data.datasets.length; i++) { let value = data.datasets[i].label + " :" + Math.floor(data.datasets[i].data[context.dataIndex]) - if (data.datasets[i].label == "Скорость") { - value = value + " км/ч"; - } - if (data.datasets[i].label == "Пульс") { - value = value + " уд/мин"; - } - if (data.datasets[i].label == "Мощность") { - value = value + " Ватт"; - } - if (data.datasets[i].label == "Подъем") { - value = value + " м"; - } + value += getUnit(data.datasets[i].label) show_data.push(value); } return show_data; @@ -347,6 +361,14 @@ const chartOptions = { end = lineCoordinates.length; } markedCoordinats.value = lineCoordinates.slice(start, end); + let avgData: AvgData = {} + for (var key in data.datasets) { + const array = data.datasets[key].data.slice(start, end) + let sum = array.reduce((accumulator, currentValue) => accumulator + currentValue, 0); + let average = sum / array.length; + avgData[data.datasets[key].label] = Math.floor(average).toString() + getUnit(data.datasets[key].label); + } + areaAvgData.value = avgData; }, drag: { enabled: true, @@ -359,6 +381,21 @@ const chartOptions = { } } } +const getUnit = (label: string) => { + + if (label == "Скорость") { + return " км/ч"; + } + if (label == "Пульс") { + return " уд/мин"; + } + if (label == "Мощность") { + return " Ватт"; + } + if (label == "Подъем") { + return " м"; + } +} const axiosAuth = inject('axiosAuth') as AxiosInstance; const saveLink = (hide: any) => { if (!dzenLink.value) { @@ -430,6 +467,7 @@ const changePublic = (value: boolean) => { const resetChartZoom = () => { resetZoom(chart.value.chart); + areaAvgData.value = {}; } @@ -487,6 +525,9 @@ h3 { font-family: sans-serif; } +.area-data h4 { + text-decoration: underline; +} .workout-item-params { display: flex; width: 100%;