yeri 0.13.0 → 0.15.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/README.md +1 -1
- package/lib/arrays.js +10 -22
- package/lib/arrays.js.map +1 -1
- package/lib/cli.js +22 -30
- package/lib/cli.js.map +1 -1
- package/lib/csv.js +8 -11
- package/lib/csv.js.map +1 -1
- package/lib/rgb.js +6 -8
- package/lib/rgb.js.map +1 -1
- package/lib/rrd.js +22 -25
- package/lib/rrd.js.map +1 -1
- package/lib/svg.js +31 -25
- package/lib/svg.js.map +1 -1
- package/lib/svg_graph.js +51 -42
- package/lib/svg_graph.js.map +1 -1
- package/lib/text_graph.d.ts +3 -5
- package/lib/text_graph.js +56 -56
- package/lib/text_graph.js.map +1 -1
- package/lib/themes.js +2 -5
- package/lib/themes.js.map +1 -1
- package/lib/time.d.ts +1 -6
- package/lib/time.js +43 -56
- package/lib/time.js.map +1 -1
- package/lib/time_series.d.ts +1 -8
- package/lib/time_series.js +31 -43
- package/lib/time_series.js.map +1 -1
- package/lib/time_series_list.js +11 -9
- package/lib/time_series_list.js.map +1 -1
- package/lib/web/fetch.js +1 -4
- package/lib/web/fetch.js.map +1 -1
- package/lib/web/graph.js +11 -16
- package/lib/web/graph.js.map +1 -1
- package/lib/web/index.js +3 -13
- package/lib/web/index.js.map +1 -1
- package/lib/web/tooltip.d.ts +2 -9
- package/lib/web/tooltip.js +17 -31
- package/lib/web/tooltip.js.map +1 -1
- package/lib/yeri-browser.js +1 -1
- package/lib/yeri-browser.js.map +1 -1
- package/lib/yeri.js +11 -32
- package/lib/yeri.js.map +1 -1
- package/package.json +9 -10
- package/lib/oof.d.ts +0 -1
- package/lib/oof.js +0 -4
- package/lib/oof.js.map +0 -1
- package/lib/test/test_arrays.d.ts +0 -2
- package/lib/test/test_arrays.js +0 -18
- package/lib/test/test_arrays.js.map +0 -1
- package/lib/test/test_rgb.d.ts +0 -2
- package/lib/test/test_rgb.js +0 -64
- package/lib/test/test_rgb.js.map +0 -1
- package/lib/test/test_rrd.d.ts +0 -2
- package/lib/test/test_rrd.js +0 -77
- package/lib/test/test_rrd.js.map +0 -1
- package/lib/test/test_svg.d.ts +0 -2
- package/lib/test/test_svg.js +0 -96
- package/lib/test/test_svg.js.map +0 -1
- package/lib/test/test_svg_graph.d.ts +0 -2
- package/lib/test/test_svg_graph.js +0 -127
- package/lib/test/test_svg_graph.js.map +0 -1
- package/lib/test/test_text_graph.d.ts +0 -2
- package/lib/test/test_text_graph.js +0 -86
- package/lib/test/test_text_graph.js.map +0 -1
- package/lib/test/test_time.d.ts +0 -2
- package/lib/test/test_time.js +0 -187
- package/lib/test/test_time.js.map +0 -1
- package/lib/test/test_time_series.d.ts +0 -2
- package/lib/test/test_time_series.js +0 -130
- package/lib/test/test_time_series.js.map +0 -1
- package/lib/test/test_time_series_list.d.ts +0 -2
- package/lib/test/test_time_series_list.js +0 -48
- package/lib/test/test_time_series_list.js.map +0 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Yeri is used by [netgraph](https://code.lag.net/robey/netgraph) to make simple n
|
|
|
8
8
|
|
|
9
9
|

|
|
10
10
|
|
|
11
|
-
Yeri is short for "iyeriwok", an Inuit word meaning "to stare at".
|
|
11
|
+
Yeri is short for "iyeriwok", an Inuit word meaning "to stare at", the way I tend to stare at graphs. 😬
|
|
12
12
|
|
|
13
13
|
A time series graph shows time along the X axis, and some value along the Y axis. The time range is set by the range of the `TimeSeries` being drawn. Markers along the left and bottom edges are called "labels". Soft guide lines will be automatically generated in both dimensions. An optional title runs across the top, and an optional "legend" along the bottom can map each color to a time series name.
|
|
14
14
|
|
package/lib/arrays.js
CHANGED
|
@@ -1,25 +1,13 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// basic collection functions that should have been part of the standard library.
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.arrayGrouped = arrayGrouped;
|
|
5
|
-
exports.average = average;
|
|
6
|
-
exports.binarySearch = binarySearch;
|
|
7
|
-
exports.flatMap = flatMap;
|
|
8
|
-
exports.flatten = flatten;
|
|
9
|
-
exports.flattenIterable = flattenIterable;
|
|
10
|
-
exports.groupBy = groupBy;
|
|
11
|
-
exports.partition = partition;
|
|
12
|
-
exports.range = range;
|
|
13
|
-
exports.generate = generate;
|
|
14
2
|
// break a list into several lists, all (except the last) `groupSize` in length
|
|
15
|
-
function arrayGrouped(array, groupSize) {
|
|
3
|
+
export function arrayGrouped(array, groupSize) {
|
|
16
4
|
return range(0, array.length, groupSize).map(i => array.slice(i, i + groupSize));
|
|
17
5
|
}
|
|
18
|
-
function average(array) {
|
|
6
|
+
export function average(array) {
|
|
19
7
|
return array.reduce((sum, n) => sum + n) / array.length;
|
|
20
8
|
}
|
|
21
9
|
// return the index of the first element where test returns true, or length.
|
|
22
|
-
function binarySearch(array, test) {
|
|
10
|
+
export function binarySearch(array, test) {
|
|
23
11
|
let lo = -1, hi = array.length;
|
|
24
12
|
while (lo + 1 < hi) {
|
|
25
13
|
const m = lo + ((hi - lo) >> 1);
|
|
@@ -32,17 +20,17 @@ function binarySearch(array, test) {
|
|
|
32
20
|
}
|
|
33
21
|
return hi;
|
|
34
22
|
}
|
|
35
|
-
function flatMap(array, f) {
|
|
23
|
+
export function flatMap(array, f) {
|
|
36
24
|
return flatten(array.map(f));
|
|
37
25
|
}
|
|
38
|
-
function flatten(array) {
|
|
26
|
+
export function flatten(array) {
|
|
39
27
|
return Array.prototype.concat.apply([], array);
|
|
40
28
|
}
|
|
41
|
-
function* flattenIterable(array) {
|
|
29
|
+
export function* flattenIterable(array) {
|
|
42
30
|
for (const x of array)
|
|
43
31
|
yield* x;
|
|
44
32
|
}
|
|
45
|
-
function groupBy(array, grouper) {
|
|
33
|
+
export function groupBy(array, grouper) {
|
|
46
34
|
const rv = {};
|
|
47
35
|
array.forEach(a => {
|
|
48
36
|
const key = grouper(a);
|
|
@@ -53,19 +41,19 @@ function groupBy(array, grouper) {
|
|
|
53
41
|
return rv;
|
|
54
42
|
}
|
|
55
43
|
// return two lists: the first is every item where `f` returned true, the second is every item where `f` returned false
|
|
56
|
-
function partition(array, f) {
|
|
44
|
+
export function partition(array, f) {
|
|
57
45
|
const left = [];
|
|
58
46
|
const right = [];
|
|
59
47
|
array.forEach(item => (f(item) ? left : right).push(item));
|
|
60
48
|
return [left, right];
|
|
61
49
|
}
|
|
62
50
|
// return a list of every number from `start` (inclusive) to `end` (exclusive), incremented by `step`
|
|
63
|
-
function range(start, end, step = 1) {
|
|
51
|
+
export function range(start, end, step = 1) {
|
|
64
52
|
return [...Array(Math.ceil((end - start) / step)).keys()].map(i => i * step + start);
|
|
65
53
|
}
|
|
66
54
|
// generate a list of numbers starting at `start`. each subsequent item is
|
|
67
55
|
// supplied by `next`, until `condition` returns false
|
|
68
|
-
function generate(start, next, condition) {
|
|
56
|
+
export function generate(start, next, condition) {
|
|
69
57
|
const rv = [];
|
|
70
58
|
let current = start;
|
|
71
59
|
do {
|
package/lib/arrays.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrays.js","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"arrays.js","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":"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"}
|
package/lib/cli.js
CHANGED
|
@@ -1,28 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const yeri_1 = require("./yeri");
|
|
10
|
-
require("source-map-support/register");
|
|
11
|
-
async function main() {
|
|
12
|
-
commander_1.program
|
|
1
|
+
import { Option, program } from "commander";
|
|
2
|
+
import * as fs from "fs";
|
|
3
|
+
import { csvToTimeSeriesList } from "./csv";
|
|
4
|
+
import { DARK_THEME, LIGHT_THEME } from "./themes";
|
|
5
|
+
import { buildTextGraph } from "./yeri";
|
|
6
|
+
import "source-map-support/register";
|
|
7
|
+
export async function main() {
|
|
8
|
+
program
|
|
13
9
|
.description("draw a graph from text blocks, using CSV data")
|
|
14
|
-
.addOption(new
|
|
10
|
+
.addOption(new Option("-c, --column <#>", "specify column with the timestamp")
|
|
15
11
|
.default(1).argParser(s => parseInt(s)))
|
|
16
12
|
.option("-e, --epoch", "timestamp column is in epoch (unix) seconds, not an ISO string")
|
|
17
13
|
.option("--interpolate", "interpolate any missing data")
|
|
18
14
|
.option("--fill", "fill in the area below the graph line")
|
|
19
|
-
.addOption(new
|
|
15
|
+
.addOption(new Option("-w, --width <#>", "graph width in character cells")
|
|
20
16
|
.default(78).argParser(s => parseInt(s)))
|
|
21
|
-
.addOption(new
|
|
17
|
+
.addOption(new Option("-h, --height <#>", "graph height in character cells")
|
|
22
18
|
.default(24).argParser(s => parseInt(s)))
|
|
23
|
-
.addOption(new
|
|
19
|
+
.addOption(new Option("--block <size>", "block glyph size")
|
|
24
20
|
.choices(["full", "half", "quarter"]).default("quarter"))
|
|
25
|
-
.addOption(new
|
|
21
|
+
.addOption(new Option("--theme <theme>", "choose overall color theme")
|
|
26
22
|
.choices(["light", "dark"]).default("light"))
|
|
27
23
|
.option("--colors <hex-colors>", "set line colors, separated by commas")
|
|
28
24
|
.option("--bg <hex-color>", "set background color")
|
|
@@ -30,24 +26,20 @@ async function main() {
|
|
|
30
26
|
.option("--no-legend", "omit legend at the bottom of the graph")
|
|
31
27
|
.option("--tz <zone>", "set time zone for time labels", "local")
|
|
32
28
|
.argument("<filename>");
|
|
33
|
-
|
|
34
|
-
const options =
|
|
35
|
-
let res =
|
|
29
|
+
program.parse();
|
|
30
|
+
const options = program.opts();
|
|
31
|
+
let res = "quarter";
|
|
36
32
|
switch (options.block) {
|
|
37
33
|
case "full":
|
|
38
|
-
res = text_graph_1.TextGraphResolution.FULL;
|
|
39
|
-
break;
|
|
40
34
|
case "half":
|
|
41
|
-
res = text_graph_1.TextGraphResolution.HALF;
|
|
42
|
-
break;
|
|
43
35
|
case "quarter":
|
|
44
|
-
res =
|
|
36
|
+
res = options.block;
|
|
45
37
|
break;
|
|
46
38
|
default:
|
|
47
39
|
console.log("ERROR: --block must be full, half, or quarter");
|
|
48
40
|
process.exit(1);
|
|
49
41
|
}
|
|
50
|
-
for (const filename of
|
|
42
|
+
for (const filename of program.args) {
|
|
51
43
|
let data;
|
|
52
44
|
try {
|
|
53
45
|
data = (filename == "-") ? process.stdin.read(1024 * 1024 * 1024) : fs.readFileSync(filename);
|
|
@@ -58,7 +50,7 @@ async function main() {
|
|
|
58
50
|
}
|
|
59
51
|
let list;
|
|
60
52
|
try {
|
|
61
|
-
list =
|
|
53
|
+
list = csvToTimeSeriesList(data, {
|
|
62
54
|
interpolateMissing: options.interpolate,
|
|
63
55
|
timestampColumn: options.column - 1,
|
|
64
56
|
timestampIsString: !options.epoch,
|
|
@@ -84,13 +76,13 @@ async function main() {
|
|
|
84
76
|
graphOptions.backgroundColor = options.bg;
|
|
85
77
|
if (options.graphBg)
|
|
86
78
|
graphOptions.graphBackgroundColor = options.graphBg;
|
|
87
|
-
let theme =
|
|
79
|
+
let theme = LIGHT_THEME;
|
|
88
80
|
switch (options.theme) {
|
|
89
81
|
case "dark":
|
|
90
|
-
theme =
|
|
82
|
+
theme = DARK_THEME;
|
|
91
83
|
break;
|
|
92
84
|
}
|
|
93
|
-
process.stdout.write(
|
|
85
|
+
process.stdout.write(buildTextGraph(list, Object.assign({}, theme, graphOptions)));
|
|
94
86
|
}
|
|
95
87
|
}
|
|
96
88
|
//# sourceMappingURL=cli.js.map
|
package/lib/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/lib/csv.js
CHANGED
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.csvToTimeSeriesList = csvToTimeSeriesList;
|
|
4
1
|
// webpack will omit this:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
import * as csv from "csv-parse/sync";
|
|
3
|
+
import { range } from "./arrays";
|
|
4
|
+
import { TimeSeries } from "./time_series";
|
|
5
|
+
import { TimeSeriesList } from "./time_series_list";
|
|
9
6
|
const DEFAULT_CONFIG = {
|
|
10
7
|
interpolateMissing: false,
|
|
11
8
|
timestampColumn: 0,
|
|
12
9
|
timestampIsString: true,
|
|
13
10
|
hasHeader: true,
|
|
14
11
|
};
|
|
15
|
-
const FAKE_COLUMNS = ["Time", ...
|
|
12
|
+
const FAKE_COLUMNS = ["Time", ...range(1, 100).map(i => `Series ${i}`)];
|
|
16
13
|
// convert a CSV file into a TimeSeriesList
|
|
17
|
-
function csvToTimeSeriesList(data, options = {}) {
|
|
14
|
+
export function csvToTimeSeriesList(data, options = {}) {
|
|
18
15
|
const config = Object.assign({}, DEFAULT_CONFIG, options);
|
|
19
16
|
const stringData = new TextDecoder().decode(data);
|
|
20
17
|
const parser = csv.parse;
|
|
@@ -51,8 +48,8 @@ function csvToTimeSeriesList(data, options = {}) {
|
|
|
51
48
|
const data_columns = column_names.filter(n => n != ts_name);
|
|
52
49
|
const series_list = data_columns.map(name => {
|
|
53
50
|
const values = records.map((r) => parseFloat(r[name]));
|
|
54
|
-
return
|
|
51
|
+
return TimeSeries.fromArrays(name, timestamps, values);
|
|
55
52
|
});
|
|
56
|
-
return new
|
|
53
|
+
return new TimeSeriesList(series_list, { interpolateMissing: config.interpolateMissing });
|
|
57
54
|
}
|
|
58
55
|
//# sourceMappingURL=csv.js.map
|
package/lib/csv.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csv.js","sourceRoot":"","sources":["../src/csv.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"csv.js","sourceRoot":"","sources":["../src/csv.ts"],"names":[],"mappings":"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"}
|
package/lib/rgb.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RGB = void 0;
|
|
4
|
-
exports.quantize4to2 = quantize4to2;
|
|
5
|
-
const antsy = require("antsy");
|
|
1
|
+
import * as antsy from "antsy";
|
|
6
2
|
const THIRD = 1 / 3;
|
|
7
3
|
// color manipulation, for the block text graphs
|
|
8
|
-
class RGB {
|
|
4
|
+
export class RGB {
|
|
5
|
+
red;
|
|
6
|
+
green;
|
|
7
|
+
blue;
|
|
9
8
|
constructor(red, green, blue) {
|
|
10
9
|
this.red = red;
|
|
11
10
|
this.green = green;
|
|
@@ -48,13 +47,12 @@ class RGB {
|
|
|
48
47
|
Math.pow(this.blue - other.blue, 2));
|
|
49
48
|
}
|
|
50
49
|
}
|
|
51
|
-
exports.RGB = RGB;
|
|
52
50
|
// weights assume a rough 2:1 ratio on character cells, so we want to prioritize horizontal over vertical
|
|
53
51
|
const COMBOS = [
|
|
54
52
|
[0, 1, 1], [0, 2, 2], [0, 3, 2.2], [1, 2, 2.2], [1, 3, 2], [2, 3, 1]
|
|
55
53
|
];
|
|
56
54
|
// turn 4 colors into 2 by merging the closest ones together (special-cased)
|
|
57
|
-
function quantize4to2(colors) {
|
|
55
|
+
export function quantize4to2(colors) {
|
|
58
56
|
const distances = COMBOS.map(([i, j, weight]) => [i, j, colors[i].distance(colors[j]) * weight]);
|
|
59
57
|
const merge = distances.sort((a, b) => a[2] - b[2]).slice(0, 2);
|
|
60
58
|
const rv = colors.slice();
|
package/lib/rgb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rgb.js","sourceRoot":"","sources":["../src/rgb.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rgb.js","sourceRoot":"","sources":["../src/rgb.ts"],"names":[],"mappings":"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"}
|
package/lib/rrd.js
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.RrdFile = void 0;
|
|
4
|
-
const arrays_1 = require("./arrays");
|
|
5
|
-
const time_series_1 = require("./time_series");
|
|
1
|
+
import { range } from "./arrays";
|
|
2
|
+
import { TimeSeries } from "./time_series";
|
|
6
3
|
const COOKIE_FLOAT = 8.642135e+130;
|
|
7
|
-
class RrdFile {
|
|
4
|
+
export class RrdFile {
|
|
5
|
+
data;
|
|
6
|
+
offset = 0;
|
|
7
|
+
version = "";
|
|
8
|
+
littleEndian = true;
|
|
9
|
+
floatAlign = 0;
|
|
10
|
+
intAlign = 0;
|
|
11
|
+
intIs64 = false;
|
|
12
|
+
dsCount = 0;
|
|
13
|
+
archiveCount = 0;
|
|
14
|
+
pdpStep = 0;
|
|
15
|
+
lastUpdate = 0;
|
|
16
|
+
dataSources = [];
|
|
17
|
+
archives = [];
|
|
8
18
|
constructor(data) {
|
|
9
19
|
this.data = data;
|
|
10
|
-
this.offset = 0;
|
|
11
|
-
this.version = "";
|
|
12
|
-
this.littleEndian = true;
|
|
13
|
-
this.floatAlign = 0;
|
|
14
|
-
this.intAlign = 0;
|
|
15
|
-
this.intIs64 = false;
|
|
16
|
-
this.dsCount = 0;
|
|
17
|
-
this.archiveCount = 0;
|
|
18
|
-
this.pdpStep = 0;
|
|
19
|
-
this.lastUpdate = 0;
|
|
20
|
-
this.dataSources = [];
|
|
21
|
-
this.archives = [];
|
|
22
20
|
this.validate();
|
|
23
21
|
this.readHeader();
|
|
24
22
|
this.parse();
|
|
@@ -104,14 +102,14 @@ class RrdFile {
|
|
|
104
102
|
throw new Error("RRD file is corrupted");
|
|
105
103
|
}
|
|
106
104
|
parse() {
|
|
107
|
-
this.dataSources =
|
|
105
|
+
this.dataSources = range(0, this.dsCount).map(i => {
|
|
108
106
|
const name = this.readAscii(20);
|
|
109
107
|
const type = this.readAscii(20);
|
|
110
108
|
this.alignFloat();
|
|
111
109
|
this.offset += 10 * 8;
|
|
112
110
|
return { index: i, name, type };
|
|
113
111
|
});
|
|
114
|
-
this.archives =
|
|
112
|
+
this.archives = range(0, this.archiveCount).map(i => {
|
|
115
113
|
const name = this.readAscii(20);
|
|
116
114
|
const rows = this.readInt();
|
|
117
115
|
const stepCount = this.readInt();
|
|
@@ -143,7 +141,7 @@ class RrdFile {
|
|
|
143
141
|
// sort matching archives with finest granularity up front.
|
|
144
142
|
const archives = this.archives.filter(a => a.name == archiveName).sort((a, b) => b.startTime - a.startTime);
|
|
145
143
|
if (ds == null || archives.length == 0)
|
|
146
|
-
return new
|
|
144
|
+
return new TimeSeries(name ?? key);
|
|
147
145
|
// pick the archive with with the start time that covers our range (if any).
|
|
148
146
|
const archive = archives.filter(a => a.startTime < startTime)[0] || archives[archives.length - 1];
|
|
149
147
|
const step = this.pdpStep * archive.stepCount;
|
|
@@ -166,15 +164,15 @@ class RrdFile {
|
|
|
166
164
|
if (firstRow >= archive.rows)
|
|
167
165
|
firstRow -= archive.rows;
|
|
168
166
|
const stride = this.dsCount * 8;
|
|
169
|
-
const timestamps =
|
|
170
|
-
const values =
|
|
167
|
+
const timestamps = range(startTime, endTime, step);
|
|
168
|
+
const values = range(0, timestamps.length).map(i => {
|
|
171
169
|
if (firstRow + i >= archive.rows)
|
|
172
170
|
firstRow -= archive.rows;
|
|
173
171
|
const offset = archive.offset + (firstRow + i) * stride;
|
|
174
172
|
const d = this.data.getFloat64(offset, this.littleEndian);
|
|
175
173
|
return isNaN(d) ? undefined : d;
|
|
176
174
|
});
|
|
177
|
-
return
|
|
175
|
+
return TimeSeries.fromArrays(name ?? key, timestamps, values);
|
|
178
176
|
}
|
|
179
177
|
readAscii(length) {
|
|
180
178
|
let rv = "";
|
|
@@ -219,5 +217,4 @@ class RrdFile {
|
|
|
219
217
|
}
|
|
220
218
|
}
|
|
221
219
|
}
|
|
222
|
-
exports.RrdFile = RrdFile;
|
|
223
220
|
//# sourceMappingURL=rrd.js.map
|
package/lib/rrd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rrd.js","sourceRoot":"","sources":["../src/rrd.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rrd.js","sourceRoot":"","sources":["../src/rrd.ts"],"names":[],"mappings":"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"}
|
package/lib/svg.js
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// some very simple classes for generating SVG XML files.
|
|
3
2
|
// XML! ugh!
|
|
4
|
-
|
|
5
|
-
exports.ClipPath = exports.Text = exports.Line = exports.Polygon = exports.Rect = exports.Circle = void 0;
|
|
6
|
-
exports.buildSvg = buildSvg;
|
|
7
|
-
const arrays_1 = require("./arrays");
|
|
3
|
+
import { flatten } from "./arrays";
|
|
8
4
|
const DEFAULT_VIEW_WIDTH = 100;
|
|
9
5
|
const DEFAULT_VIEW_HEIGHT = 100;
|
|
10
6
|
const DEFAULT_PIXEL_WIDTH = 800;
|
|
11
7
|
const DEFAULT_PIXEL_HEIGHT = 800;
|
|
12
8
|
const DEFAULT_DESCRIPTION = "(none)";
|
|
13
|
-
class Circle {
|
|
9
|
+
export class Circle {
|
|
10
|
+
center;
|
|
11
|
+
radius;
|
|
12
|
+
options;
|
|
14
13
|
constructor(center, radius, options = {}) {
|
|
15
14
|
this.center = center;
|
|
16
15
|
this.radius = radius;
|
|
@@ -31,8 +30,9 @@ class Circle {
|
|
|
31
30
|
];
|
|
32
31
|
}
|
|
33
32
|
}
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
export class Rect {
|
|
34
|
+
box;
|
|
35
|
+
options;
|
|
36
36
|
constructor(box, options = {}) {
|
|
37
37
|
this.box = box;
|
|
38
38
|
this.options = options;
|
|
@@ -58,8 +58,9 @@ class Rect {
|
|
|
58
58
|
];
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
export class Polygon {
|
|
62
|
+
points;
|
|
63
|
+
options;
|
|
63
64
|
constructor(points, options = {}) {
|
|
64
65
|
this.points = points;
|
|
65
66
|
this.options = options;
|
|
@@ -87,8 +88,9 @@ class Polygon {
|
|
|
87
88
|
];
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
export class Line {
|
|
92
|
+
points;
|
|
93
|
+
options;
|
|
92
94
|
constructor(points, options = {}) {
|
|
93
95
|
this.points = points;
|
|
94
96
|
this.options = options;
|
|
@@ -120,8 +122,10 @@ class Line {
|
|
|
120
122
|
return [`<path d="${this.toPath()}" ${fields.join(" ")} fill="none"/>`];
|
|
121
123
|
}
|
|
122
124
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
+
export class Text {
|
|
126
|
+
location;
|
|
127
|
+
text;
|
|
128
|
+
options;
|
|
125
129
|
constructor(location, text, options = {}) {
|
|
126
130
|
this.location = location;
|
|
127
131
|
this.text = text;
|
|
@@ -147,8 +151,9 @@ class Text {
|
|
|
147
151
|
];
|
|
148
152
|
}
|
|
149
153
|
}
|
|
150
|
-
|
|
151
|
-
|
|
154
|
+
export class ClipPath {
|
|
155
|
+
name;
|
|
156
|
+
rect;
|
|
152
157
|
constructor(name, rect) {
|
|
153
158
|
this.name = name;
|
|
154
159
|
this.rect = rect;
|
|
@@ -158,19 +163,21 @@ class ClipPath {
|
|
|
158
163
|
return [`<clipPath id="${this.name}">${this.rect.toXml(0).join("")}</clipPath>`];
|
|
159
164
|
}
|
|
160
165
|
}
|
|
161
|
-
exports.ClipPath = ClipPath;
|
|
162
166
|
// collection of other xml items
|
|
163
167
|
class Compound {
|
|
168
|
+
elements;
|
|
164
169
|
constructor(elements) {
|
|
165
170
|
this.elements = elements;
|
|
166
171
|
// make a copy
|
|
167
172
|
this.elements = elements.slice();
|
|
168
173
|
}
|
|
169
174
|
toXml(indent) {
|
|
170
|
-
return
|
|
175
|
+
return flatten(this.elements.map(item => item.toXml(indent + 1))).map(s => indented(indent, s));
|
|
171
176
|
}
|
|
172
177
|
}
|
|
173
178
|
class Defs {
|
|
179
|
+
elements;
|
|
180
|
+
content;
|
|
174
181
|
constructor(elements) {
|
|
175
182
|
this.elements = elements;
|
|
176
183
|
this.content = new Compound(elements);
|
|
@@ -179,13 +186,12 @@ class Defs {
|
|
|
179
186
|
return this.elements.length > 0 ? ["<defs>", ...this.content.toXml(1), "</defs>"] : [];
|
|
180
187
|
}
|
|
181
188
|
}
|
|
182
|
-
function buildSvg(items, options = {}) {
|
|
183
|
-
|
|
184
|
-
const
|
|
185
|
-
const
|
|
186
|
-
const
|
|
187
|
-
const
|
|
188
|
-
const description = (_e = options.description) !== null && _e !== void 0 ? _e : DEFAULT_DESCRIPTION;
|
|
189
|
+
export function buildSvg(items, options = {}) {
|
|
190
|
+
const viewWidth = options.viewWidth ?? DEFAULT_VIEW_WIDTH;
|
|
191
|
+
const viewHeight = options.viewHeight ?? DEFAULT_VIEW_HEIGHT;
|
|
192
|
+
const pixelWidth = options.pixelWidth ?? DEFAULT_PIXEL_WIDTH;
|
|
193
|
+
const pixelHeight = options.pixelHeight ?? DEFAULT_PIXEL_HEIGHT;
|
|
194
|
+
const description = options.description ?? DEFAULT_DESCRIPTION;
|
|
189
195
|
// clip paths need to be in a special "defs" block, or some renderers will shit themselves.
|
|
190
196
|
const defs = new Defs(items.filter(x => x instanceof ClipPath));
|
|
191
197
|
const background = [];
|
package/lib/svg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../src/svg.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../src/svg.ts"],"names":[],"mappings":"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"}
|