diff --git a/content/posts/2023-04-14-emacs.md b/content/posts/2023-04-14-emacs.md index 64c7797..d62e74a 100644 --- a/content/posts/2023-04-14-emacs.md +++ b/content/posts/2023-04-14-emacs.md @@ -9,4 +9,4 @@ scripts = ["/js/chart.js", "/js/chartjs-adapter-date-fns.bundle.min.js", "/js/ch Hello world - \ No newline at end of file + diff --git a/static/js/2023-04-14-emacs.js b/static/js/2023-04-14-emacs.js index 3468942..d357071 100644 --- a/static/js/2023-04-14-emacs.js +++ b/static/js/2023-04-14-emacs.js @@ -1,8 +1,38 @@ const TODAY = new Date("2023-04-14"); const TODAY_LOCALE = TODAY.toLocaleDateString("en-GB"); +const EMACS_ITEM = { + backgroundColor: "#8261bb", + borderColor: "black", + borderWidth: 0, + borderSkipped: false, + borderRadius: 0, + datalabels: { + color: "white", + }, +}; + +const COLORS = [ + "#77bceb", + "#ff6384", + "#77c0c0", + "#ff9f40", + "#ffcd56", + "#c9cbcf", +]; + +let i = 0; + const EMACS_DATA = { - labels: ["Editor/IDE", "File manager"], + labels: [ + "Editor/IDE", + "File manager", + "Email", + "RSS", + "Passwords", + "Multimedia", + "WM", + ], datasets: [ { label: "Jupyter", @@ -43,6 +73,7 @@ const EMACS_DATA = { }, ], yAxisID: "yAxis1", + ...EMACS_ITEM, }, { label: "vifm", @@ -63,8 +94,160 @@ const EMACS_DATA = { }, ], yAxisID: "yAxis2", + ...EMACS_ITEM, }, - ], + { + label: "Mailspring", + data: [ + { + name: "Email", + span: [new Date("2019-01-28"), new Date("2021-01-29")], + }, + ], + yAxisID: "yAxis3", + }, + { + label: "notmuch", + data: [ + { + name: "Email", + span: [new Date("2021-01-29"), TODAY], + }, + ], + yAxisID: "yAxis3", + ...EMACS_ITEM, + }, + { + label: "newsboat", + data: [ + { + name: "RSS", + span: [new Date("2021-01-22"), new Date("2021-05-24")], + }, + ], + yAxisID: "yAxis4", + }, + { + label: "elfeed", + data: [ + { + name: "RSS", + span: [new Date("2021-05-24"), TODAY], + }, + ], + yAxisID: "yAxis4", + ...EMACS_ITEM, + }, + { + label: "Tiny Tiny RSS", + data: [ + { + name: "RSS", + span: [new Date("2022-05-28"), TODAY], + hint: "Sync with elfeed", + }, + ], + yAxisID: "yAxis4", + }, + { + label: "KeePassXC", + data: [ + { + name: "Passwords", + span: [new Date("2019-01-31"), new Date("2021-07-26")], + }, + ], + yAxisID: "yAxis5", + }, + { + label: "password-store & pass.el", + data: [ + { + name: "Passwords", + span: [new Date("2021-07-26"), TODAY], + }, + ], + yAxisID: "yAxis5", + }, + { + label: "MPD", + data: [ + { + name: "Multimedia", + span: [new Date("2020-07-26"), TODAY], + }, + ], + yAxisID: "yAxis6", + }, + { + label: "ncmpcpp", + data: [ + { + name: "Multimedia", + span: [new Date("2020-07-26"), new Date("2021-07-31")], + }, + ], + yAxisID: "yAxis6", + }, + { + label: "EMMS", + data: [ + { + name: "Multimedia", + span: [new Date("2021-07-31"), TODAY], + }, + ], + yAxisID: "yAxis6", + ...EMACS_ITEM, + }, + { + label: "MPV", + data: [ + { + name: "Multimedia", + span: [new Date("2021-09-07"), TODAY], + }, + ], + yAxisID: "yAxis6", + }, + { + label: "Cinnamon", + data: [ + { + name: "WM", + span: [new Date("2018-08-01"), new Date("2020-05-08")], + }, + ], + yAxisID: "yAxis7", + }, + { + label: "i3(-gaps)", + data: [ + { + name: "WM", + span: [new Date("2020-05-08"), new Date("2021-11-14")], + }, + ], + yAxisID: "yAxis7", + }, + { + label: "EXWM", + data: [ + { + name: "WM", + span: [new Date("2021-11-14"), TODAY], + }, + ], + yAxisID: "yAxis7", + ...EMACS_ITEM, + }, + ].map((d) => { + if (!d.backgroundColor) { + d.backgroundColor = COLORS[i]; + } + i = (i + 1) % COLORS.length; + return d; + }), }; function emacsChart() { @@ -76,6 +259,7 @@ function emacsChart() { options: { indexAxis: "y", grouped: true, + aspectRatio: 1.2, parsing: { yAxisKey: "name", xAxisKey: "span", @@ -86,23 +270,29 @@ function emacsChart() { scales: { x: { type: "time", - min: new Date("2018-06"), - }, - yAxis1: { - ticks: { - display: false, - }, - }, - yAxis2: { - ticks: { - // display: false - }, + min: new Date("2018-09"), }, + ...Object.fromEntries( + [1, 2, 3, 4, 5, 6].map((i) => [ + `yAxis${i}`, + { + display: false, + }, + ]) + ), }, plugins: { legend: { display: false, }, + title: { + display: true, + text: "Everything goes into Emacs", + color: "black", + font: { + size: 15 + } + }, datalabels: { formatter: function (value, context) { return context.dataset.label;