diff options
author | Aki <please@ignore.pl> | 2023-09-12 22:32:21 +0200 |
---|---|---|
committer | Aki <please@ignore.pl> | 2023-09-12 22:32:21 +0200 |
commit | ab1cb08298363d429bc811ba2d3375a3fa647065 (patch) | |
tree | 8b501e12215d6fe4d201e426fda096478160ae12 /activity | |
parent | 86e7fa2004c12db0bda8e8fd7697fd8d64b2e4b6 (diff) | |
download | activity-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.lua | 82 |
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 |