summaryrefslogtreecommitdiff
path: root/activity
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2023-09-12 22:32:21 +0200
committerAki <please@ignore.pl>2023-09-12 22:32:21 +0200
commitab1cb08298363d429bc811ba2d3375a3fa647065 (patch)
tree8b501e12215d6fe4d201e426fda096478160ae12 /activity
parent86e7fa2004c12db0bda8e8fd7697fd8d64b2e4b6 (diff)
downloadactivity-ab1cb08298363d429bc811ba2d3375a3fa647065.zip
activity-ab1cb08298363d429bc811ba2d3375a3fa647065.tar.gz
activity-ab1cb08298363d429bc811ba2d3375a3fa647065.tar.bz2
Extracted output format to own module for potential later expansion
Diffstat (limited to 'activity')
-rw-r--r--activity/formats/html5.lua82
1 files changed, 82 insertions, 0 deletions
diff --git a/activity/formats/html5.lua b/activity/formats/html5.lua
new file mode 100644
index 0000000..8e6e4fd
--- /dev/null
+++ b/activity/formats/html5.lua
@@ -0,0 +1,82 @@
+local stringx = require "pl.stringx"
+local html5 = {}
+
+
+function html5.start_document (title)
+ return stringx.dedent[[
+ <!doctype html>
+ <html lang="en">
+ <meta charset="utf-8">
+ <style>
+ table.activity-chart { border-spacing: 4px; }
+ table.activity-chart tr { height: 11px; }
+ td.activity-chart-label {
+ position: relative;
+ font-size: 12px;
+ min-width: 2em;
+ }
+ td.activity-chart-label span {
+ position: absolute;
+ top: -3px;
+ }
+ td[data-activity-level] {
+ box-sizing: border-box;
+ outline-width: 1px;
+ outline-style: solid;
+ outline-offset: -1px;
+ outline-color: rgba(27, 31, 35, 0.06);
+ border-radius: 2px;
+ height: 11px;
+ min-width: 11px;
+ }
+ td[data-activity-level="0"] { background-color: #ccc; }
+ td[data-activity-level="1"] { background-color: #9be9a8; }
+ td[data-activity-level="2"] { background-color: #40c463; }
+ td[data-activity-level="3"] { background-color: #30a14e; }
+ td[data-activity-level="4"] { background-color: #216e39; }
+ </style>
+ <title>%s</title>]]:format(title) -- dedent appends trailing newline.
+end
+
+
+function html5.end_document ()
+ return "\n"
+end
+
+
+function html5.start_table ()
+ return [[<table class="activity-chart">]] .. "\n"
+end
+
+
+function html5.end_table ()
+ return "</table>"
+end
+
+
+function html5.start_row ()
+ return "<tr>"
+end
+
+
+function html5.end_row ()
+ return "\n"
+end
+
+
+function html5.label (name)
+ return ([[<td class="activity-chart-label"><span>%s</span>]]):format(name)
+end
+
+
+function html5.spot ()
+ return "<td>"
+end
+
+
+function html5.cell (level)
+ return ([[<td data-activity-level="%d">]]):format(level)
+end
+
+
+return html5