stats by area
Gitea Actions Demo / build_and_push (push) Failing after 57s Details

This commit is contained in:
artem 2025-03-25 22:35:27 +03:00
parent c0d0a3e8ae
commit 1b7c1bd6ef
1 changed files with 53 additions and 12 deletions

View File

@ -103,6 +103,19 @@
<div class="workout-item-params-pointer" v-else><a @click="showModalLink = !showModalLink">Добавить</a> </div> <div class="workout-item-params-pointer" v-else><a @click="showModalLink = !showModalLink">Добавить</a> </div>
</div> </div>
<div v-if="!isEmpty(areaAvgData)" class="area-data">
<h4>Данные участка</h4>
<div class="workout-item-params" v-for="(item, index) in areaAvgData" :key="item">
<div class="workout-item-params-name">{{index}}:</div>
<div class="workout-item-params-value">{{ item }}</div>
</div>
</div>
<div v-else>
Чтобы увидеть информацию по области, выделите область на графике
</div>
</div> </div>
</div> </div>
<VaButton v-on:click="resetChartZoom()" preset="secondary" color="textPrimary" id="zoom-botton"> <VaButton v-on:click="resetChartZoom()" preset="secondary" color="textPrimary" id="zoom-botton">
@ -186,6 +199,10 @@ interface Props {
isPrivate: boolean, isPrivate: boolean,
dzenLink?: string dzenLink?: string
} }
interface AvgData {
[key: string]: string;
}
const areaAvgData = ref<AvgData>({});
const markedCoordinats = ref<Array<Array<number>>>([]); const markedCoordinats = ref<Array<Array<number>>>([]);
const { workoutItem, data, mapCenter, lineCoordinates, dzenLink: dzenLinkProps } = defineProps<Props>() const { workoutItem, data, mapCenter, lineCoordinates, dzenLink: dzenLinkProps } = defineProps<Props>()
const dzenLink = ref(dzenLinkProps); const dzenLink = ref(dzenLinkProps);
@ -239,6 +256,14 @@ const chartPlugins = [
mapX: mapX, mapX: mapX,
} }
]; ];
function isEmpty(obj: any) {
for (const prop in obj) {
if (Object.hasOwn(obj, prop)) {
return false;
}
}
return true;
}
const chartOptions = { const chartOptions = {
animation: { animation: {
duration: 0 duration: 0
@ -305,18 +330,7 @@ const chartOptions = {
let show_data = []; let show_data = [];
for (let i = 0; i < data.datasets.length; i++) { for (let i = 0; i < data.datasets.length; i++) {
let value = data.datasets[i].label + " :" + Math.floor(data.datasets[i].data[context.dataIndex]) let value = data.datasets[i].label + " :" + Math.floor(data.datasets[i].data[context.dataIndex])
if (data.datasets[i].label == "Скорость") { value += getUnit(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 + " м";
}
show_data.push(value); show_data.push(value);
} }
return show_data; return show_data;
@ -347,6 +361,14 @@ const chartOptions = {
end = lineCoordinates.length; end = lineCoordinates.length;
} }
markedCoordinats.value = lineCoordinates.slice(start, end); 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: { drag: {
enabled: true, 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 axiosAuth = inject('axiosAuth') as AxiosInstance;
const saveLink = (hide: any) => { const saveLink = (hide: any) => {
if (!dzenLink.value) { if (!dzenLink.value) {
@ -430,6 +467,7 @@ const changePublic = (value: boolean) => {
const resetChartZoom = () => { const resetChartZoom = () => {
resetZoom(chart.value.chart); resetZoom(chart.value.chart);
areaAvgData.value = {};
} }
</script> </script>
@ -487,6 +525,9 @@ h3 {
font-family: sans-serif; font-family: sans-serif;
} }
.area-data h4 {
text-decoration: underline;
}
.workout-item-params { .workout-item-params {
display: flex; display: flex;
width: 100%; width: 100%;