Compare commits

...

2 commits

Author SHA1 Message Date
Edward Betts 7dd9881943 No need for pytz 2023-12-23 10:05:24 +00:00
Edward Betts e29c5899aa Add zoom and pan 2023-12-22 19:56:27 +00:00
2 changed files with 17 additions and 4 deletions

View file

@ -7,10 +7,8 @@ import json
import os import os
import sys import sys
import typing import typing
from collections import Counter from datetime import datetime, timezone
from datetime import date, datetime, timedelta
import pytz
import requests import requests
config = configparser.ConfigParser() config = configparser.ConfigParser()
@ -70,7 +68,7 @@ def parse_date(date_str: str | None) -> datetime | None:
return None return None
fmt = "%Y-%m-%dT%H:%M:%SZ" if date_str.endswith("Z") else "%Y-%m-%dT%H:%M:%S%z" fmt = "%Y-%m-%dT%H:%M:%SZ" if date_str.endswith("Z") else "%Y-%m-%dT%H:%M:%S%z"
return datetime.strptime(date_str, fmt).astimezone(pytz.utc) return datetime.strptime(date_str, fmt).astimezone(timezone.utc)
def count_open_bugs(bug_reports: list[Bug]) -> list[tuple[str, int]]: def count_open_bugs(bug_reports: list[Bug]) -> list[tuple[str, int]]:

View file

@ -5,6 +5,8 @@
<title>Open bugs over time</title> <title>Open bugs over time</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.bundle.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.bundle.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/hammerjs@2.0.8"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-zoom/dist/chartjs-plugin-zoom.min.js"></script>
</head> </head>
<body> <body>
@ -31,7 +33,20 @@ document.addEventListener('DOMContentLoaded', function () {
data: data data: data
}] }]
}, },
options: { options: {
plugins: {
zoom: {
pan: {
enabled: true,
},
zoom: {
wheel: { enabled: true },
pinch: { enabled: true },
mode: 'xy',
}
}
},
scales: { scales: {
x: { x: {
type: 'time', type: 'time',