repos
/ orchard main

orchard

mirror

Every site I host, in one repo, along with the Cloudflare Tunnel and Caddy that front them. It's all Go, Vite, and SQLite, and it runs on a desktop at home with nothing listening on an inbound port.

blogbuncaddycloudflare-tunneldockergogolanghomelabhtml-templatemonorepoself-hostedseosqlitestatic-sitetypstuptime-monitoringviteweb-analytics

1.7 KB · 54 lines · JavaScript Raw History
 1document.addEventListener("DOMContentLoaded", function () {
 2  const dateRange = document.getElementById("date-range");
 3  const dateStart = document.getElementById("date-start");
 4  const dateEnd = document.getElementById("date-end");
 5  if (!dateRange) return;
 6
 7  const url = new URL(window.location.href);
 8  const date_range = url.searchParams.get("date_range");
 9
10  if (date_range) {
11    dateRange.value = date_range;
12  }
13
14  dateRange.addEventListener("change", function () {
15    const date_range = parseInt(dateRange.value);
16    let dateEndValue = new Date();
17    let dateStartValue = new Date(dateEndValue.getTime() - date_range * 86400000);
18
19    dateEndValue = dateEndValue.toISOString().split("T")[0];
20    dateStartValue = dateStartValue.toISOString().split("T")[0];
21
22    dateEnd.value = dateEndValue;
23    dateStart.value = dateStartValue;
24
25    const form = dateRange.closest("form");
26    form.submit();
27  });
28
29  dateStart.addEventListener("change", function () {
30    if (dateStart.value && dateEnd.value) {
31      if (new Date(dateStart.value) > new Date(dateEnd.value)) {
32        const temp = dateStart.value;
33        dateStart.value = dateEnd.value;
34        dateEnd.value = temp;
35      }
36      dateRange.value = "custom";
37      const form = dateStart.closest("form");
38      form.submit();
39    }
40  });
41  dateEnd.addEventListener("change", function () {
42    if (dateStart.value && dateEnd.value) {
43      if (new Date(dateStart.value) > new Date(dateEnd.value)) {
44        const temp = dateStart.value;
45        dateStart.value = dateEnd.value;
46        dateEnd.value = temp;
47      }
48      dateRange.value = "custom";
49      const form = dateEnd.closest("form");
50      form.submit();
51    }
52  });
53});