Fix typescript errors in Vue files, fix regression in "Recent Commits" chart (#32649)

- Fix all typescript errors in `.vue` files
- Fix regression from https://github.com/go-gitea/gitea/pull/32329 where
"Recent Commits" chart would not render.

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
silverwind 2024-12-08 03:58:18 +01:00 committed by GitHub
parent 96d3a03a08
commit 1518f4ed12
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 59 additions and 37 deletions

View file

@ -7,6 +7,7 @@ import {
LinearScale,
TimeScale,
type ChartOptions,
type ChartData,
} from 'chart.js';
import {GET} from '../modules/fetch.ts';
import {Bar} from 'vue-chartjs';
@ -15,6 +16,7 @@ import {
firstStartDateAfterDate,
fillEmptyStartDaysWithZeroes,
type DayData,
type DayDataObject,
} from '../utils/time.ts';
import {chartJsColors} from '../utils/color.ts';
import {sleep} from '../utils.ts';
@ -61,11 +63,11 @@ async function fetchGraphData() {
}
} while (response.status === 202);
if (response.ok) {
const data = await response.json();
const start = Object.values(data)[0].week;
const dayDataObj: DayDataObject = await response.json();
const start = Object.values(dayDataObj)[0].week;
const end = firstStartDateAfterDate(new Date());
const startDays = startDaysBetween(start, end);
data.value = fillEmptyStartDaysWithZeroes(startDays, data).slice(-52);
data.value = fillEmptyStartDaysWithZeroes(startDays, dayDataObj).slice(-52);
errorText.value = '';
} else {
errorText.value = response.statusText;
@ -77,10 +79,11 @@ async function fetchGraphData() {
}
}
function toGraphData(data) {
function toGraphData(data: DayData[]): ChartData<'bar'> {
return {
datasets: [
{
// @ts-expect-error -- bar chart expects one-dimensional data, but apparently x/y still works
data: data.map((i) => ({x: i.week, y: i.commits})),
label: 'Commits',
backgroundColor: chartJsColors['commits'],
@ -91,10 +94,9 @@ function toGraphData(data) {
};
}
const options = {
const options: ChartOptions<'bar'> = {
responsive: true,
maintainAspectRatio: false,
animation: true,
scales: {
x: {
type: 'time',