svg-heatmap 2.1.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/svg.d.ts +18 -2
- package/lib/svg.js +42 -27
- package/lib/types.d.ts +10 -2
- package/lib/types.js +1 -1
- package/package.json +3 -3
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright © 2020, 2021 Jayden Chan. All rights reserved.
|
|
2
|
+
* Copyright © 2020, 2021, 2024 Jayden Chan. All rights reserved.
|
|
3
3
|
*
|
|
4
4
|
* svg-heatmap is free software: you can redistribute it and/or modify
|
|
5
5
|
* it under the terms of the GNU General Public License version 3
|
package/lib/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PalettePresets = exports.generate = void 0;
|
|
4
4
|
/**
|
|
5
|
-
* Copyright © 2020, 2021 Jayden Chan. All rights reserved.
|
|
5
|
+
* Copyright © 2020, 2021, 2024 Jayden Chan. All rights reserved.
|
|
6
6
|
*
|
|
7
7
|
* svg-heatmap is free software: you can redistribute it and/or modify
|
|
8
8
|
* it under the terms of the GNU General Public License version 3
|
package/lib/svg.d.ts
CHANGED
|
@@ -1,8 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2020, 2021, 2024 Jayden Chan. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* svg-heatmap is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License version 3
|
|
6
|
+
* as published by the Free Software Foundation.
|
|
7
|
+
*
|
|
8
|
+
* svg-heatmap is distributed in the hope that it will be useful,
|
|
9
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
+
* GNU General Public License for more details.
|
|
12
|
+
*
|
|
13
|
+
* You should have received a copy of the GNU General Public License
|
|
14
|
+
* along with svg-heatmap. If not, see <https://www.gnu.org/licenses/>.
|
|
15
|
+
*/
|
|
16
|
+
import { GenerateOptions } from "./types";
|
|
1
17
|
/**
|
|
2
18
|
* @param {number[]} data The heatmap data, 0-indexed to Jan 1
|
|
3
19
|
* @param {number} year The year of the data. Used for day-of-week alignment
|
|
4
|
-
* @param {
|
|
20
|
+
* @param {GenerateOptions} [opts] Generation options
|
|
5
21
|
*
|
|
6
22
|
* @return {string} The SVG heatmap string
|
|
7
23
|
*/
|
|
8
|
-
export declare function generate(data: number[], year: number,
|
|
24
|
+
export declare function generate(data: number[], year: number, opts?: GenerateOptions): string;
|
package/lib/svg.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generate =
|
|
3
|
+
exports.generate = generate;
|
|
4
4
|
const date_fns_1 = require("date-fns");
|
|
5
5
|
const SQUARE_SIZE = 20;
|
|
6
6
|
const SQUARE_RX = 2;
|
|
@@ -30,45 +30,47 @@ const FOOTER = "</svg>";
|
|
|
30
30
|
/**
|
|
31
31
|
* @param {number[]} data The heatmap data, 0-indexed to Jan 1
|
|
32
32
|
* @param {number} year The year of the data. Used for day-of-week alignment
|
|
33
|
-
* @param {
|
|
33
|
+
* @param {GenerateOptions} [opts] Generation options
|
|
34
34
|
*
|
|
35
35
|
* @return {string} The SVG heatmap string
|
|
36
36
|
*/
|
|
37
|
-
function generate(data, year,
|
|
37
|
+
function generate(data, year, opts) {
|
|
38
|
+
var _a, _b, _c, _d;
|
|
38
39
|
const svg = [];
|
|
39
|
-
const p = palette !== null &&
|
|
40
|
-
const textColor = (darkMode !== null &&
|
|
41
|
-
|
|
40
|
+
const p = (_a = opts === null || opts === void 0 ? void 0 : opts.palette) !== null && _a !== void 0 ? _a : genPalette();
|
|
41
|
+
const textColor = ((_b = opts === null || opts === void 0 ? void 0 : opts.darkMode) !== null && _b !== void 0 ? _b : false) ? "#FFFFFF" : "#000000";
|
|
42
|
+
const headerAndFooter = (_c = opts === null || opts === void 0 ? void 0 : opts.headerAndFooter) !== null && _c !== void 0 ? _c : true;
|
|
43
|
+
const padSquareColor = (_d = opts === null || opts === void 0 ? void 0 : opts.padSquareColor) !== null && _d !== void 0 ? _d : "#222222";
|
|
44
|
+
if (headerAndFooter) {
|
|
45
|
+
svg.push(HEADER);
|
|
46
|
+
}
|
|
42
47
|
svg.push(`<style>
|
|
43
48
|
.outline { fill: none; stroke: #DDD; stroke-width: 2px }
|
|
44
|
-
.lbl { font-family: sans-serif; fill: ${textColor} }
|
|
49
|
+
.lbl { font-family: sans-serif; fill: ${textColor} }
|
|
50
|
+
.pad-square { fill: ${padSquareColor}; stroke: none }\n`);
|
|
45
51
|
svg.push(genPaletteClasses(p));
|
|
46
52
|
svg.push("\n</style>\n");
|
|
47
53
|
svg.push(outline());
|
|
48
|
-
svg.push(legend(palette));
|
|
49
|
-
|
|
50
|
-
svg.push(label([X_OFFSET, getSquareCoord(0)[1] + yLabelPad], "Sun", "end"));
|
|
51
|
-
svg.push(label([X_OFFSET, getSquareCoord(1)[1] + yLabelPad], "Mon", "end"));
|
|
52
|
-
svg.push(label([X_OFFSET, getSquareCoord(2)[1] + yLabelPad], "Tue", "end"));
|
|
53
|
-
svg.push(label([X_OFFSET, getSquareCoord(3)[1] + yLabelPad], "Wed", "end"));
|
|
54
|
-
svg.push(label([X_OFFSET, getSquareCoord(4)[1] + yLabelPad], "Thu", "end"));
|
|
55
|
-
svg.push(label([X_OFFSET, getSquareCoord(5)[1] + yLabelPad], "Fri", "end"));
|
|
56
|
-
svg.push(label([X_OFFSET, getSquareCoord(6)[1] + yLabelPad], "Sat", "end"));
|
|
54
|
+
svg.push(legend(opts === null || opts === void 0 ? void 0 : opts.palette));
|
|
55
|
+
["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"].forEach((day, i) => svg.push(label([X_OFFSET, getSquareCoord(i)[1] + SQUARE_SIZE * 0.78], day, "end")));
|
|
57
56
|
for (let i = 0; i < 12; i++) {
|
|
58
57
|
const date = new Date(year, i, 1);
|
|
59
|
-
const [x] = getSquareCoord((Number(date_fns_1.format(date, "w")) - 1) * 7);
|
|
60
|
-
svg.push(label([x, Y_OFFSET], date_fns_1.format(date, "MMM")));
|
|
58
|
+
const [x] = getSquareCoord((Number((0, date_fns_1.format)(date, "w")) - 1) * 7);
|
|
59
|
+
svg.push(label([x, Y_OFFSET], (0, date_fns_1.format)(date, "MMM")));
|
|
61
60
|
}
|
|
62
61
|
const max = Math.max(...data);
|
|
63
|
-
const paddingBefore = Number(date_fns_1.format(new Date(year, 0, 1), "e")) - 1;
|
|
62
|
+
const paddingBefore = Number((0, date_fns_1.format)(new Date(year, 0, 1), "e")) - 1;
|
|
64
63
|
Array(paddingBefore)
|
|
65
|
-
.fill(
|
|
66
|
-
.concat(data.concat(Array(53 * 7 - data.length - paddingBefore).fill(
|
|
67
|
-
.forEach((
|
|
68
|
-
|
|
64
|
+
.fill(-1)
|
|
65
|
+
.concat(data.concat(Array(53 * 7 - data.length - paddingBefore).fill(-1)))
|
|
66
|
+
.forEach((value, i) => svg.push(dataSquare(getSquareCoord(i), (opts === null || opts === void 0 ? void 0 : opts.palette)
|
|
67
|
+
? value
|
|
68
|
+
: Math.floor((value / max) * (AUTO_PALETTE_SIZE - 1)), i - paddingBefore, year, value, opts)));
|
|
69
|
+
if (headerAndFooter) {
|
|
70
|
+
svg.push(FOOTER);
|
|
71
|
+
}
|
|
69
72
|
return svg.join("");
|
|
70
73
|
}
|
|
71
|
-
exports.generate = generate;
|
|
72
74
|
function genPalette() {
|
|
73
75
|
const palette = ["#eeeeee"];
|
|
74
76
|
for (let i = 0; i < 99; i++) {
|
|
@@ -136,8 +138,15 @@ function getSquareCoord(i) {
|
|
|
136
138
|
function label([x, y], text, anchor) {
|
|
137
139
|
return `<text x="${x}" y="${y}" class="lbl" text-anchor="${anchor !== null && anchor !== void 0 ? anchor : "start"}">${text}</text>`;
|
|
138
140
|
}
|
|
139
|
-
function dataSquare([x, y], p, i, year,
|
|
140
|
-
|
|
141
|
+
function dataSquare([x, y], p, i, year, value, opts) {
|
|
142
|
+
const onMouseOver = (opts === null || opts === void 0 ? void 0 : opts.onSquareMouseOver)
|
|
143
|
+
? ` onmouseover="${templateReplaceEventHandler(opts.onSquareMouseOver, year, i, value)}"`
|
|
144
|
+
: "";
|
|
145
|
+
const onClick = (opts === null || opts === void 0 ? void 0 : opts.onSquareClick)
|
|
146
|
+
? ` onclick="${templateReplaceEventHandler(opts.onSquareClick, year, i, value)}"`
|
|
147
|
+
: "";
|
|
148
|
+
const className = value === -1 ? "pad-square" : `p${p}`;
|
|
149
|
+
return `<rect${onMouseOver}${onClick} x="${x}" y="${y}" width="${SQUARE_SIZE}" height="${SQUARE_SIZE}" rx="${SQUARE_RX}" class="${className}"/>`;
|
|
141
150
|
}
|
|
142
151
|
function pSquare([x, y], p) {
|
|
143
152
|
return `<rect x="${x}" y="${y}" width="${SQUARE_SIZE}" height="${SQUARE_SIZE}" rx="${SQUARE_RX}" class="p${p}"/>`;
|
|
@@ -145,4 +154,10 @@ function pSquare([x, y], p) {
|
|
|
145
154
|
function outline() {
|
|
146
155
|
return `<rect x="0" y="0" width="${WIDTH}" height="${HEIGHT}" rx="${OUTLINE_RX}" class="outline"/>`;
|
|
147
156
|
}
|
|
148
|
-
|
|
157
|
+
function templateReplaceEventHandler(input, year, i, value) {
|
|
158
|
+
return input
|
|
159
|
+
.replaceAll("%year", year.toString())
|
|
160
|
+
.replaceAll("%i", i.toString())
|
|
161
|
+
.replaceAll("%value", value.toString());
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N2Zy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXVEQSw0QkFnRUM7QUF2R0QsdUNBQWtDO0FBRWxDLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFDcEIsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUN0QixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDeEIsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNwQixNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDM0IsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBQzNCLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQzlCLE1BQU0sS0FBSyxHQUNULENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEVBQUU7SUFDbEMsYUFBYTtJQUNiLFlBQVksR0FBRyxDQUFDO0lBQ2hCLFFBQVEsQ0FBQztBQUNYLE1BQU0sTUFBTSxHQUNWLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUM7SUFDakMsYUFBYTtJQUNiLFlBQVksR0FBRyxDQUFDO0lBQ2hCLFFBQVE7SUFDUixpQkFBaUIsQ0FBQztBQUVwQixNQUFNLE1BQU0sR0FBRyxrREFBa0QsS0FBSyxhQUFhLE1BQU07OztDQUd4RixDQUFDO0FBRUYsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBRXhCOzs7Ozs7R0FNRztBQUNILFNBQWdCLFFBQVEsQ0FDdEIsSUFBYyxFQUNkLElBQVksRUFDWixJQUFzQjs7SUFFdEIsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ2YsTUFBTSxDQUFDLEdBQUcsTUFBQSxJQUFJLGFB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
|
package/lib/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright © 2020, 2021 Jayden Chan. All rights reserved.
|
|
2
|
+
* Copyright © 2020, 2021, 2024 Jayden Chan. All rights reserved.
|
|
3
3
|
*
|
|
4
4
|
* svg-heatmap is free software: you can redistribute it and/or modify
|
|
5
5
|
* it under the terms of the GNU General Public License version 3
|
|
@@ -13,7 +13,15 @@
|
|
|
13
13
|
* You should have received a copy of the GNU General Public License
|
|
14
14
|
* along with svg-heatmap. If not, see <https://www.gnu.org/licenses/>.
|
|
15
15
|
*/
|
|
16
|
-
export
|
|
16
|
+
export type Coord = [number, number];
|
|
17
|
+
export type GenerateOptions = {
|
|
18
|
+
palette?: string[];
|
|
19
|
+
padSquareColor?: string;
|
|
20
|
+
darkMode?: boolean;
|
|
21
|
+
headerAndFooter?: boolean;
|
|
22
|
+
onSquareMouseOver?: string;
|
|
23
|
+
onSquareClick?: string;
|
|
24
|
+
};
|
|
17
25
|
export declare const PalettePresets: {
|
|
18
26
|
gitHubOld: string[];
|
|
19
27
|
gitHub: string[];
|
package/lib/types.js
CHANGED
|
@@ -29,4 +29,4 @@ exports.PalettePresets = {
|
|
|
29
29
|
"#1f1d42",
|
|
30
30
|
],
|
|
31
31
|
};
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMEJhLFFBQUEsY0FBYyxHQUFHO0lBQzVCLGtCQUFrQjtJQUNsQixTQUFTLEVBQUU7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVjtJQUNELGtCQUFrQjtJQUNsQixNQUFNLEVBQUU7UUFDTixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWO0lBQ0QsSUFBSSxFQUFFO1FBQ0osU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWO0NBQ0YsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svg-heatmap",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Generate GitHub-like heatmap graphs with SVG",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"files": [
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
},
|
|
29
29
|
"homepage": "https://github.com/jayden-chan/svg-heatmap#readme",
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@types/node": "
|
|
32
|
-
"typescript": "^
|
|
31
|
+
"@types/node": "20",
|
|
32
|
+
"typescript": "^5.7.2"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"date-fns": "^2.16.1"
|