peity_vanilla_rails 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +17 -4
- data/app/assets/javascripts/peity_vanilla.esm.js +376 -0
- data/app/assets/javascripts/peity_vanilla.js +364 -296
- data/app/assets/javascripts/peity_vanilla.js.map +1 -1
- data/config/importmap.rb +1 -0
- data/lib/peity_vanilla_rails/engine.rb +6 -6
- data/lib/peity_vanilla_rails/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8ef36129e4a4f5a3e7b6ff1017312096f2d491176b363b207d8124512ea6b76
|
4
|
+
data.tar.gz: 6cc33d0c33baaa411e68fa616453ad124a11e25fc62c1397656caa6608accffb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2bc857d3c1db58c24ecfa884cac3f4ad50f220ab83c40747b8e6e11a9e0a95920ae75bbfa32be8653bdfc63f91e3382459457a17f02baa6f38a299bda8657ef8
|
7
|
+
data.tar.gz: 7cba004c469dfad243bf47cad673756a6b734adb7138c8e39c60a5059fde793a0bd9857b399e31e0d02618d6e236815e0c1f148e725ae9a3b599352bf1d3b177
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Peity Vanilla Rails
|
2
2
|
|
3
|
+
[![RailsJazz](https://github.com/igorkasyanchuk/rails_time_travel/blob/main/docs/my_other.svg?raw=true)](https://www.railsjazz.com)
|
4
|
+
|
3
5
|
Sparklines are small but intense charts. This gem is a wrapper around [peity_vanilla](https://github.com/railsjazz/peity_vanilla) library. You can generate simple but informative charts with vanilla JS.
|
4
6
|
|
5
7
|
<img src="./docs/sparklines.png" height="400px"/>
|
@@ -14,10 +16,22 @@ gem "peity_vanilla_rails"
|
|
14
16
|
|
15
17
|
2. Add to `application.js`
|
16
18
|
|
19
|
+
### For Assets Pipeline:
|
20
|
+
|
17
21
|
```javascript
|
18
22
|
//= require peity_vanilla.js
|
19
23
|
```
|
20
24
|
|
25
|
+
### For Importmaps
|
26
|
+
|
27
|
+
In `application.js`
|
28
|
+
|
29
|
+
```js
|
30
|
+
import peity from "peity";
|
31
|
+
|
32
|
+
window.peity = peity;
|
33
|
+
```
|
34
|
+
|
21
35
|
3. Add charts in your code:
|
22
36
|
|
23
37
|
```erb
|
@@ -58,13 +72,12 @@ Check the [original](https://github.com/railsjazz/peity_vanilla) page.
|
|
58
72
|
|
59
73
|
setInterval(function() {
|
60
74
|
var random = Math.round(Math.random() * 10)
|
61
|
-
|
62
|
-
var values = updatingChart.innerText.split(",")
|
75
|
+
var values = updatingChart.element.innerText.split(",")
|
63
76
|
values.shift()
|
64
77
|
values.push(random)
|
65
78
|
|
66
|
-
updatingChart.innerText = values.join(",")
|
67
|
-
updatingChart.dispatchEvent(new Event('change'))
|
79
|
+
updatingChart.element.innerText = values.join(",")
|
80
|
+
updatingChart.element.dispatchEvent(new Event('change'))
|
68
81
|
}, 1000);
|
69
82
|
</script>
|
70
83
|
```
|
@@ -0,0 +1,376 @@
|
|
1
|
+
/*!
|
2
|
+
Peity Vanila JS 0.0.5
|
3
|
+
Copyright © 2022 RailsJazz
|
4
|
+
https://railsjazz.com
|
5
|
+
*/
|
6
|
+
|
7
|
+
function _classCallCheck(instance, Constructor) {
|
8
|
+
if (!(instance instanceof Constructor)) {
|
9
|
+
throw new TypeError("Cannot call a class as a function");
|
10
|
+
}
|
11
|
+
}
|
12
|
+
|
13
|
+
function _defineProperties(target, props) {
|
14
|
+
for (var i = 0; i < props.length; i++) {
|
15
|
+
var descriptor = props[i];
|
16
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
17
|
+
descriptor.configurable = true;
|
18
|
+
if ("value" in descriptor) descriptor.writable = true;
|
19
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
20
|
+
}
|
21
|
+
}
|
22
|
+
|
23
|
+
function _createClass(Constructor, protoProps, staticProps) {
|
24
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
25
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
26
|
+
Object.defineProperty(Constructor, "prototype", {
|
27
|
+
writable: false
|
28
|
+
});
|
29
|
+
return Constructor;
|
30
|
+
}
|
31
|
+
|
32
|
+
function _defineProperty(obj, key, value) {
|
33
|
+
if (key in obj) {
|
34
|
+
Object.defineProperty(obj, key, {
|
35
|
+
value: value,
|
36
|
+
enumerable: true,
|
37
|
+
configurable: true,
|
38
|
+
writable: true
|
39
|
+
});
|
40
|
+
} else {
|
41
|
+
obj[key] = value;
|
42
|
+
}
|
43
|
+
|
44
|
+
return obj;
|
45
|
+
}
|
46
|
+
|
47
|
+
var isFunction = function isFunction(o) {
|
48
|
+
return o !== null && typeof o === "function" && !!o.apply;
|
49
|
+
};
|
50
|
+
var svgElement = function svgElement(tag, attrs) {
|
51
|
+
var element = document.createElementNS("http://www.w3.org/2000/svg", tag);
|
52
|
+
|
53
|
+
for (var attr in attrs) {
|
54
|
+
element.setAttribute(attr, attrs[attr]);
|
55
|
+
}
|
56
|
+
|
57
|
+
return element;
|
58
|
+
};
|
59
|
+
var svgSupported = "createElementNS" in document && svgElement("svg", {}).createSVGRect();
|
60
|
+
|
61
|
+
var Peity = /*#__PURE__*/function () {
|
62
|
+
function Peity(element, type) {
|
63
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
64
|
+
|
65
|
+
_classCallCheck(this, Peity);
|
66
|
+
|
67
|
+
this.element = element;
|
68
|
+
this.type = type;
|
69
|
+
this.options = Object.assign({}, Peity.defaults[type], JSON.parse(element.dataset["peity"] || "{}"), options);
|
70
|
+
}
|
71
|
+
|
72
|
+
_createClass(Peity, [{
|
73
|
+
key: "draw",
|
74
|
+
value: function draw() {
|
75
|
+
var options = this.options;
|
76
|
+
Peity.graphers[this.type](this);
|
77
|
+
if (isFunction(options.after)) options.after.call(this, options);
|
78
|
+
}
|
79
|
+
}, {
|
80
|
+
key: "fill",
|
81
|
+
value: function fill() {
|
82
|
+
var fill = this.options.fill;
|
83
|
+
return isFunction(fill) ? fill : function (_, i) {
|
84
|
+
return fill[i % fill.length];
|
85
|
+
};
|
86
|
+
}
|
87
|
+
}, {
|
88
|
+
key: "prepare",
|
89
|
+
value: function prepare(width, height) {
|
90
|
+
if (!this.svg) {
|
91
|
+
this.element.style.display = "none";
|
92
|
+
this.element.after(this.svg = svgElement("svg", {
|
93
|
+
class: "peity"
|
94
|
+
}));
|
95
|
+
}
|
96
|
+
|
97
|
+
this.svg.innerHTML = "";
|
98
|
+
this.svg.setAttribute("width", width);
|
99
|
+
this.svg.setAttribute("height", height);
|
100
|
+
return this.svg;
|
101
|
+
}
|
102
|
+
}, {
|
103
|
+
key: "values",
|
104
|
+
get: function get() {
|
105
|
+
return this.element.innerText.split(this.options.delimiter).map(function (value) {
|
106
|
+
return parseFloat(value);
|
107
|
+
});
|
108
|
+
}
|
109
|
+
}, {
|
110
|
+
key: "mount",
|
111
|
+
value: function mount() {
|
112
|
+
if (!svgSupported) return;
|
113
|
+
this.element.addEventListener("change", this.draw.bind(this));
|
114
|
+
this.element.dataset["_peity"] = "1";
|
115
|
+
this.draw();
|
116
|
+
}
|
117
|
+
}, {
|
118
|
+
key: "unmount",
|
119
|
+
value: function unmount() {
|
120
|
+
this.element.removeEventListener("change", this.draw);
|
121
|
+
}
|
122
|
+
}], [{
|
123
|
+
key: "register",
|
124
|
+
value: function register(type, defaults, grapher) {
|
125
|
+
Peity.defaults[type] = defaults;
|
126
|
+
Peity.graphers[type] = grapher;
|
127
|
+
}
|
128
|
+
}]);
|
129
|
+
|
130
|
+
return Peity;
|
131
|
+
}();
|
132
|
+
|
133
|
+
_defineProperty(Peity, "defaults", {});
|
134
|
+
|
135
|
+
_defineProperty(Peity, "graphers", {});
|
136
|
+
|
137
|
+
var renderer$2 = function renderer(peity) {
|
138
|
+
if (!peity.options.delimiter) {
|
139
|
+
var delimiter = peity.element.innerText.match(/[^0-9\.]/);
|
140
|
+
peity.options.delimiter = delimiter ? delimiter[0] : ",";
|
141
|
+
}
|
142
|
+
|
143
|
+
var values = peity.values.map(function (n) {
|
144
|
+
return n > 0 ? n : 0;
|
145
|
+
});
|
146
|
+
|
147
|
+
if (peity.options.delimiter == "/") {
|
148
|
+
var v1 = values[0];
|
149
|
+
var v2 = values[1];
|
150
|
+
values = [v1, Math.max(0, v2 - v1)];
|
151
|
+
}
|
152
|
+
|
153
|
+
var i = 0;
|
154
|
+
var length = values.length;
|
155
|
+
var sum = 0;
|
156
|
+
|
157
|
+
for (; i < length; i++) {
|
158
|
+
sum += values[i];
|
159
|
+
}
|
160
|
+
|
161
|
+
if (!sum) {
|
162
|
+
length = 2;
|
163
|
+
sum = 1;
|
164
|
+
values = [0, 1];
|
165
|
+
}
|
166
|
+
|
167
|
+
var diameter = peity.options.radius * 2;
|
168
|
+
var svg = peity.prepare(peity.options.width || diameter, peity.options.height || diameter);
|
169
|
+
var width = svg.clientWidth;
|
170
|
+
var height = svg.clientHeight;
|
171
|
+
var cx = width / 2;
|
172
|
+
var cy = height / 2;
|
173
|
+
var radius = Math.min(cx, cy);
|
174
|
+
var innerRadius = peity.options.innerRadius;
|
175
|
+
|
176
|
+
if (peity.type == "donut" && !innerRadius) {
|
177
|
+
innerRadius = radius * 0.5;
|
178
|
+
}
|
179
|
+
|
180
|
+
var fill = peity.fill();
|
181
|
+
|
182
|
+
var scale = function scale(value, radius) {
|
183
|
+
var radians = value / sum * Math.PI * 2 - Math.PI / 2;
|
184
|
+
return [radius * Math.cos(radians) + cx, radius * Math.sin(radians) + cy];
|
185
|
+
};
|
186
|
+
|
187
|
+
var cumulative = 0;
|
188
|
+
|
189
|
+
for (i = 0; i < length; i++) {
|
190
|
+
var value = values[i];
|
191
|
+
var portion = value / sum;
|
192
|
+
var node = void 0;
|
193
|
+
if (portion == 0) continue;
|
194
|
+
|
195
|
+
if (portion == 1) {
|
196
|
+
if (innerRadius) {
|
197
|
+
var x2 = cx - 0.01;
|
198
|
+
var y1 = cy - radius;
|
199
|
+
var y2 = cy - innerRadius;
|
200
|
+
node = svgElement("path", {
|
201
|
+
d: ["M", cx, y1, "A", radius, radius, 0, 1, 1, x2, y1, "L", x2, y2, "A", innerRadius, innerRadius, 0, 1, 0, cx, y2].join(" "),
|
202
|
+
"data-value": value
|
203
|
+
});
|
204
|
+
} else {
|
205
|
+
node = svgElement("circle", {
|
206
|
+
cx: cx,
|
207
|
+
cy: cy,
|
208
|
+
"data-value": value,
|
209
|
+
r: radius
|
210
|
+
});
|
211
|
+
}
|
212
|
+
} else {
|
213
|
+
var cumulativePlusValue = cumulative + value;
|
214
|
+
var d = ["M"].concat(scale(cumulative, radius), "A", radius, radius, 0, portion > 0.5 ? 1 : 0, 1, scale(cumulativePlusValue, radius), "L");
|
215
|
+
|
216
|
+
if (innerRadius) {
|
217
|
+
d = d.concat(scale(cumulativePlusValue, innerRadius), "A", innerRadius, innerRadius, 0, portion > 0.5 ? 1 : 0, 0, scale(cumulative, innerRadius));
|
218
|
+
} else {
|
219
|
+
d.push(cx, cy);
|
220
|
+
}
|
221
|
+
|
222
|
+
cumulative += value;
|
223
|
+
node = svgElement("path", {
|
224
|
+
d: d.join(" "),
|
225
|
+
"data-value": value
|
226
|
+
});
|
227
|
+
}
|
228
|
+
|
229
|
+
node.setAttribute("fill", fill.call(peity, value, i, values));
|
230
|
+
svg.append(node);
|
231
|
+
}
|
232
|
+
};
|
233
|
+
var defaults$2 = {
|
234
|
+
fill: ["#ff9900", "#fff4dd", "#ffc66e"],
|
235
|
+
radius: 8
|
236
|
+
};
|
237
|
+
|
238
|
+
var renderer$1 = function renderer(peity) {
|
239
|
+
var values = peity.values;
|
240
|
+
var max = Math.max.apply(Math, peity.options.max == undefined ? values : values.concat(peity.options.max));
|
241
|
+
var min = Math.min.apply(Math, peity.options.min == undefined ? values : values.concat(peity.options.min));
|
242
|
+
var svg = peity.prepare(peity.options.width, peity.options.height);
|
243
|
+
var width = svg.clientWidth;
|
244
|
+
var height = svg.clientHeight;
|
245
|
+
var diff = max - min;
|
246
|
+
var padding = peity.options.padding;
|
247
|
+
var fill = peity.fill();
|
248
|
+
|
249
|
+
var xScale = function xScale(input) {
|
250
|
+
return input * width / values.length;
|
251
|
+
};
|
252
|
+
|
253
|
+
var yScale = function yScale(input) {
|
254
|
+
return height - (diff ? (input - min) / diff * height : 1);
|
255
|
+
};
|
256
|
+
|
257
|
+
for (var i = 0; i < values.length; i++) {
|
258
|
+
var x = xScale(i + padding);
|
259
|
+
var w = xScale(i + 1 - padding) - x;
|
260
|
+
var value = values[i];
|
261
|
+
var valueY = yScale(value);
|
262
|
+
var y1 = valueY;
|
263
|
+
var y2 = valueY;
|
264
|
+
var h = void 0;
|
265
|
+
|
266
|
+
if (!diff) {
|
267
|
+
h = 1;
|
268
|
+
} else if (value < 0) {
|
269
|
+
y1 = yScale(Math.min(max, 0));
|
270
|
+
} else {
|
271
|
+
y2 = yScale(Math.max(min, 0));
|
272
|
+
}
|
273
|
+
|
274
|
+
h = y2 - y1;
|
275
|
+
|
276
|
+
if (h == 0) {
|
277
|
+
h = 1;
|
278
|
+
if (max > 0 && diff) y1--;
|
279
|
+
}
|
280
|
+
|
281
|
+
svg.append(svgElement("rect", {
|
282
|
+
"data-value": value,
|
283
|
+
fill: fill.call(peity, value, i, values),
|
284
|
+
x: x,
|
285
|
+
y: y1,
|
286
|
+
width: w,
|
287
|
+
height: h
|
288
|
+
}));
|
289
|
+
}
|
290
|
+
};
|
291
|
+
var defaults$1 = {
|
292
|
+
delimiter: ",",
|
293
|
+
fill: ["#4D89F9"],
|
294
|
+
height: 16,
|
295
|
+
min: 0,
|
296
|
+
padding: 0.1,
|
297
|
+
width: 32
|
298
|
+
};
|
299
|
+
|
300
|
+
var renderer = function renderer(peity) {
|
301
|
+
var values = peity.values;
|
302
|
+
if (values.length == 1) values.push(values[0]);
|
303
|
+
var max = Math.max.apply(Math, peity.options.max == undefined ? values : values.concat(peity.options.max));
|
304
|
+
var min = Math.min.apply(Math, peity.options.min == undefined ? values : values.concat(peity.options.min));
|
305
|
+
var svg = peity.prepare(peity.options.width, peity.options.height);
|
306
|
+
var strokeWidth = peity.options.strokeWidth;
|
307
|
+
var width = svg.clientWidth;
|
308
|
+
var height = svg.clientHeight - strokeWidth;
|
309
|
+
var diff = max - min;
|
310
|
+
|
311
|
+
var xScale = function xScale(input) {
|
312
|
+
return input * (width / (values.length - 1));
|
313
|
+
};
|
314
|
+
|
315
|
+
var yScale = function yScale(input) {
|
316
|
+
var y = height;
|
317
|
+
|
318
|
+
if (diff) {
|
319
|
+
y -= (input - min) / diff * height;
|
320
|
+
}
|
321
|
+
|
322
|
+
return y + strokeWidth / 2;
|
323
|
+
};
|
324
|
+
|
325
|
+
var zero = yScale(Math.max(min, 0));
|
326
|
+
var coords = [0, zero];
|
327
|
+
|
328
|
+
for (var i = 0; i < values.length; i++) {
|
329
|
+
coords.push(xScale(i), yScale(values[i]));
|
330
|
+
}
|
331
|
+
|
332
|
+
coords.push(width, zero);
|
333
|
+
|
334
|
+
if (peity.options.fill) {
|
335
|
+
svg.append(svgElement("polygon", {
|
336
|
+
fill: peity.options.fill,
|
337
|
+
points: coords.join(" ")
|
338
|
+
}));
|
339
|
+
}
|
340
|
+
|
341
|
+
if (strokeWidth) {
|
342
|
+
svg.append(svgElement("polyline", {
|
343
|
+
fill: "none",
|
344
|
+
points: coords.slice(2, coords.length - 2).join(" "),
|
345
|
+
stroke: peity.options.stroke,
|
346
|
+
"stroke-width": strokeWidth,
|
347
|
+
"stroke-linecap": "square"
|
348
|
+
}));
|
349
|
+
}
|
350
|
+
};
|
351
|
+
var defaults = {
|
352
|
+
delimiter: ",",
|
353
|
+
fill: "#c6d9fd",
|
354
|
+
height: 16,
|
355
|
+
min: 0,
|
356
|
+
stroke: "#4d89f9",
|
357
|
+
strokeWidth: 1,
|
358
|
+
width: 32
|
359
|
+
};
|
360
|
+
|
361
|
+
Peity.register("pie", defaults$2, renderer$2);
|
362
|
+
Peity.register("donut", defaults$2, renderer$2);
|
363
|
+
Peity.register("bar", defaults$1, renderer$1);
|
364
|
+
Peity.register("line", defaults, renderer);
|
365
|
+
|
366
|
+
var peity = function peity(element, type, options) {
|
367
|
+
var peity = new Peity(element, type, options);
|
368
|
+
peity.mount();
|
369
|
+
return peity;
|
370
|
+
};
|
371
|
+
|
372
|
+
peity.defaults = Peity.defaults;
|
373
|
+
peity.graphers = Peity.graphers;
|
374
|
+
|
375
|
+
export { peity as default };
|
376
|
+
|
@@ -1,317 +1,385 @@
|
|
1
1
|
/*!
|
2
|
-
Peity Vanila JS
|
2
|
+
Peity Vanila JS 0.0.5
|
3
|
+
Copyright © 2022 RailsJazz
|
4
|
+
https://railsjazz.com
|
3
5
|
*/
|
4
6
|
|
5
|
-
(function (global, factory) {
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
})(this, (function () { 'use strict';
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
$this.addEventListener("change", function () {
|
16
|
-
chart.draw();
|
17
|
-
});
|
18
|
-
$this.dataset['_peity'] = "1";
|
19
|
-
chart.draw();
|
20
|
-
return $this;
|
21
|
-
}
|
22
|
-
};
|
23
|
-
|
24
|
-
var Peity = function Peity($el, type, opts) {
|
25
|
-
this.$el = $el;
|
26
|
-
this.type = type;
|
27
|
-
this.opts = opts;
|
28
|
-
};
|
29
|
-
|
30
|
-
var PeityPrototype = Peity.prototype;
|
31
|
-
|
32
|
-
var svgElement = PeityPrototype.svgElement = function (tag, attrs) {
|
33
|
-
var element = document.createElementNS('http://www.w3.org/2000/svg', tag);
|
34
|
-
|
35
|
-
for (var attr in attrs) {
|
36
|
-
element.setAttribute(attr, attrs[attr]);
|
37
|
-
}
|
38
|
-
|
39
|
-
return element;
|
40
|
-
}; // https://gist.github.com/madrobby/3201472
|
41
|
-
|
42
|
-
|
43
|
-
var svgSupported = 'createElementNS' in document && svgElement('svg', {}).createSVGRect();
|
44
|
-
|
45
|
-
PeityPrototype.draw = function () {
|
46
|
-
var opts = this.opts;
|
47
|
-
peity.graphers[this.type].call(this, opts);
|
48
|
-
if (opts.after) opts.after.call(this, opts);
|
49
|
-
};
|
50
|
-
|
51
|
-
PeityPrototype.isFunction = function (o) {
|
52
|
-
return null !== o && "function" === typeof o && !!o.apply;
|
53
|
-
};
|
54
|
-
|
55
|
-
PeityPrototype.fill = function () {
|
56
|
-
var fill = this.opts.fill;
|
57
|
-
return PeityPrototype.isFunction(fill) ? fill : function (_, i) {
|
58
|
-
return fill[i % fill.length];
|
59
|
-
};
|
60
|
-
};
|
61
|
-
|
62
|
-
PeityPrototype.prepare = function (width, height) {
|
63
|
-
if (!this.$svg) {
|
64
|
-
this.$el.style.display = 'none';
|
65
|
-
this.$el.after(this.$svg = svgElement('svg', {
|
66
|
-
"class": "peity"
|
67
|
-
}));
|
68
|
-
}
|
69
|
-
|
70
|
-
this.$svg.innerHTML = "";
|
71
|
-
this.$svg.setAttribute("width", width);
|
72
|
-
this.$svg.setAttribute("height", height);
|
73
|
-
return this.$svg;
|
74
|
-
};
|
75
|
-
|
76
|
-
PeityPrototype.values = function () {
|
77
|
-
return this.$el.innerText.split(this.opts.delimiter).map(function (value) {
|
78
|
-
return parseFloat(value);
|
79
|
-
});
|
80
|
-
};
|
81
|
-
|
82
|
-
peity.defaults = {};
|
83
|
-
peity.graphers = {};
|
84
|
-
|
85
|
-
peity.register = function (type, defaults, grapher) {
|
86
|
-
this.defaults[type] = defaults;
|
87
|
-
this.graphers[type] = grapher;
|
88
|
-
};
|
89
|
-
|
90
|
-
peity.register('pie', {
|
91
|
-
fill: ['#ff9900', '#fff4dd', '#ffc66e'],
|
92
|
-
radius: 8
|
93
|
-
}, function (opts) {
|
94
|
-
if (!opts.delimiter) {
|
95
|
-
var delimiter = this.$el.innerText.match(/[^0-9\.]/);
|
96
|
-
opts.delimiter = delimiter ? delimiter[0] : ",";
|
97
|
-
}
|
98
|
-
|
99
|
-
var values = this.values().map(function (n) {
|
100
|
-
return n > 0 ? n : 0;
|
101
|
-
});
|
102
|
-
|
103
|
-
if (opts.delimiter == "/") {
|
104
|
-
var v1 = values[0];
|
105
|
-
var v2 = values[1];
|
106
|
-
values = [v1, Math.max(0, v2 - v1)];
|
7
|
+
(function (global, factory) {
|
8
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
9
|
+
typeof define === 'function' && define.amd ? define(factory) :
|
10
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.peity = factory());
|
11
|
+
})(this, (function () { 'use strict';
|
12
|
+
|
13
|
+
function _classCallCheck(instance, Constructor) {
|
14
|
+
if (!(instance instanceof Constructor)) {
|
15
|
+
throw new TypeError("Cannot call a class as a function");
|
16
|
+
}
|
107
17
|
}
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
18
|
+
|
19
|
+
function _defineProperties(target, props) {
|
20
|
+
for (var i = 0; i < props.length; i++) {
|
21
|
+
var descriptor = props[i];
|
22
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
23
|
+
descriptor.configurable = true;
|
24
|
+
if ("value" in descriptor) descriptor.writable = true;
|
25
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
26
|
+
}
|
115
27
|
}
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
28
|
+
|
29
|
+
function _createClass(Constructor, protoProps, staticProps) {
|
30
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
31
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
32
|
+
Object.defineProperty(Constructor, "prototype", {
|
33
|
+
writable: false
|
34
|
+
});
|
35
|
+
return Constructor;
|
121
36
|
}
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
37
|
+
|
38
|
+
function _defineProperty(obj, key, value) {
|
39
|
+
if (key in obj) {
|
40
|
+
Object.defineProperty(obj, key, {
|
41
|
+
value: value,
|
42
|
+
enumerable: true,
|
43
|
+
configurable: true,
|
44
|
+
writable: true
|
45
|
+
});
|
46
|
+
} else {
|
47
|
+
obj[key] = value;
|
48
|
+
}
|
49
|
+
|
50
|
+
return obj;
|
134
51
|
}
|
135
|
-
|
136
|
-
var
|
137
|
-
|
138
|
-
|
139
|
-
var scale = this.scale = function (value, radius) {
|
140
|
-
var radians = value / sum * pi * 2 - pi / 2;
|
141
|
-
return [radius * Math.cos(radians) + cx, radius * Math.sin(radians) + cy];
|
52
|
+
|
53
|
+
var isFunction = function isFunction(o) {
|
54
|
+
return o !== null && typeof o === "function" && !!o.apply;
|
142
55
|
};
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
56
|
+
var svgElement = function svgElement(tag, attrs) {
|
57
|
+
var element = document.createElementNS("http://www.w3.org/2000/svg", tag);
|
58
|
+
|
59
|
+
for (var attr in attrs) {
|
60
|
+
element.setAttribute(attr, attrs[attr]);
|
61
|
+
}
|
62
|
+
|
63
|
+
return element;
|
64
|
+
};
|
65
|
+
var svgSupported = "createElementNS" in document && svgElement("svg", {}).createSVGRect();
|
66
|
+
|
67
|
+
var Peity = /*#__PURE__*/function () {
|
68
|
+
function Peity(element, type) {
|
69
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
70
|
+
|
71
|
+
_classCallCheck(this, Peity);
|
72
|
+
|
73
|
+
this.element = element;
|
74
|
+
this.type = type;
|
75
|
+
this.options = Object.assign({}, Peity.defaults[type], JSON.parse(element.dataset["peity"] || "{}"), options);
|
76
|
+
}
|
77
|
+
|
78
|
+
_createClass(Peity, [{
|
79
|
+
key: "draw",
|
80
|
+
value: function draw() {
|
81
|
+
var options = this.options;
|
82
|
+
Peity.graphers[this.type](this);
|
83
|
+
if (isFunction(options.after)) options.after.call(this, options);
|
84
|
+
}
|
85
|
+
}, {
|
86
|
+
key: "fill",
|
87
|
+
value: function fill() {
|
88
|
+
var fill = this.options.fill;
|
89
|
+
return isFunction(fill) ? fill : function (_, i) {
|
90
|
+
return fill[i % fill.length];
|
91
|
+
};
|
92
|
+
}
|
93
|
+
}, {
|
94
|
+
key: "prepare",
|
95
|
+
value: function prepare(width, height) {
|
96
|
+
if (!this.svg) {
|
97
|
+
this.element.style.display = "none";
|
98
|
+
this.element.after(this.svg = svgElement("svg", {
|
99
|
+
class: "peity"
|
100
|
+
}));
|
101
|
+
}
|
102
|
+
|
103
|
+
this.svg.innerHTML = "";
|
104
|
+
this.svg.setAttribute("width", width);
|
105
|
+
this.svg.setAttribute("height", height);
|
106
|
+
return this.svg;
|
107
|
+
}
|
108
|
+
}, {
|
109
|
+
key: "values",
|
110
|
+
get: function get() {
|
111
|
+
return this.element.innerText.split(this.options.delimiter).map(function (value) {
|
112
|
+
return parseFloat(value);
|
160
113
|
});
|
114
|
+
}
|
115
|
+
}, {
|
116
|
+
key: "mount",
|
117
|
+
value: function mount() {
|
118
|
+
if (!svgSupported) return;
|
119
|
+
this.element.addEventListener("change", this.draw.bind(this));
|
120
|
+
this.element.dataset["_peity"] = "1";
|
121
|
+
this.draw();
|
122
|
+
}
|
123
|
+
}, {
|
124
|
+
key: "unmount",
|
125
|
+
value: function unmount() {
|
126
|
+
this.element.removeEventListener("change", this.draw);
|
127
|
+
}
|
128
|
+
}], [{
|
129
|
+
key: "register",
|
130
|
+
value: function register(type, defaults, grapher) {
|
131
|
+
Peity.defaults[type] = defaults;
|
132
|
+
Peity.graphers[type] = grapher;
|
133
|
+
}
|
134
|
+
}]);
|
135
|
+
|
136
|
+
return Peity;
|
137
|
+
}();
|
138
|
+
|
139
|
+
_defineProperty(Peity, "defaults", {});
|
140
|
+
|
141
|
+
_defineProperty(Peity, "graphers", {});
|
142
|
+
|
143
|
+
var renderer$2 = function renderer(peity) {
|
144
|
+
if (!peity.options.delimiter) {
|
145
|
+
var delimiter = peity.element.innerText.match(/[^0-9\.]/);
|
146
|
+
peity.options.delimiter = delimiter ? delimiter[0] : ",";
|
147
|
+
}
|
148
|
+
|
149
|
+
var values = peity.values.map(function (n) {
|
150
|
+
return n > 0 ? n : 0;
|
151
|
+
});
|
152
|
+
|
153
|
+
if (peity.options.delimiter == "/") {
|
154
|
+
var v1 = values[0];
|
155
|
+
var v2 = values[1];
|
156
|
+
values = [v1, Math.max(0, v2 - v1)];
|
157
|
+
}
|
158
|
+
|
159
|
+
var i = 0;
|
160
|
+
var length = values.length;
|
161
|
+
var sum = 0;
|
162
|
+
|
163
|
+
for (; i < length; i++) {
|
164
|
+
sum += values[i];
|
165
|
+
}
|
166
|
+
|
167
|
+
if (!sum) {
|
168
|
+
length = 2;
|
169
|
+
sum = 1;
|
170
|
+
values = [0, 1];
|
171
|
+
}
|
172
|
+
|
173
|
+
var diameter = peity.options.radius * 2;
|
174
|
+
var svg = peity.prepare(peity.options.width || diameter, peity.options.height || diameter);
|
175
|
+
var width = svg.clientWidth;
|
176
|
+
var height = svg.clientHeight;
|
177
|
+
var cx = width / 2;
|
178
|
+
var cy = height / 2;
|
179
|
+
var radius = Math.min(cx, cy);
|
180
|
+
var innerRadius = peity.options.innerRadius;
|
181
|
+
|
182
|
+
if (peity.type == "donut" && !innerRadius) {
|
183
|
+
innerRadius = radius * 0.5;
|
184
|
+
}
|
185
|
+
|
186
|
+
var fill = peity.fill();
|
187
|
+
|
188
|
+
var scale = function scale(value, radius) {
|
189
|
+
var radians = value / sum * Math.PI * 2 - Math.PI / 2;
|
190
|
+
return [radius * Math.cos(radians) + cx, radius * Math.sin(radians) + cy];
|
191
|
+
};
|
192
|
+
|
193
|
+
var cumulative = 0;
|
194
|
+
|
195
|
+
for (i = 0; i < length; i++) {
|
196
|
+
var value = values[i];
|
197
|
+
var portion = value / sum;
|
198
|
+
var node = void 0;
|
199
|
+
if (portion == 0) continue;
|
200
|
+
|
201
|
+
if (portion == 1) {
|
202
|
+
if (innerRadius) {
|
203
|
+
var x2 = cx - 0.01;
|
204
|
+
var y1 = cy - radius;
|
205
|
+
var y2 = cy - innerRadius;
|
206
|
+
node = svgElement("path", {
|
207
|
+
d: ["M", cx, y1, "A", radius, radius, 0, 1, 1, x2, y1, "L", x2, y2, "A", innerRadius, innerRadius, 0, 1, 0, cx, y2].join(" "),
|
208
|
+
"data-value": value
|
209
|
+
});
|
210
|
+
} else {
|
211
|
+
node = svgElement("circle", {
|
212
|
+
cx: cx,
|
213
|
+
cy: cy,
|
214
|
+
"data-value": value,
|
215
|
+
r: radius
|
216
|
+
});
|
217
|
+
}
|
161
218
|
} else {
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
219
|
+
var cumulativePlusValue = cumulative + value;
|
220
|
+
var d = ["M"].concat(scale(cumulative, radius), "A", radius, radius, 0, portion > 0.5 ? 1 : 0, 1, scale(cumulativePlusValue, radius), "L");
|
221
|
+
|
222
|
+
if (innerRadius) {
|
223
|
+
d = d.concat(scale(cumulativePlusValue, innerRadius), "A", innerRadius, innerRadius, 0, portion > 0.5 ? 1 : 0, 0, scale(cumulative, innerRadius));
|
224
|
+
} else {
|
225
|
+
d.push(cx, cy);
|
226
|
+
}
|
227
|
+
|
228
|
+
cumulative += value;
|
229
|
+
node = svgElement("path", {
|
230
|
+
d: d.join(" "),
|
231
|
+
"data-value": value
|
167
232
|
});
|
168
233
|
}
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
234
|
+
|
235
|
+
node.setAttribute("fill", fill.call(peity, value, i, values));
|
236
|
+
svg.append(node);
|
237
|
+
}
|
238
|
+
};
|
239
|
+
var defaults$2 = {
|
240
|
+
fill: ["#ff9900", "#fff4dd", "#ffc66e"],
|
241
|
+
radius: 8
|
242
|
+
};
|
243
|
+
|
244
|
+
var renderer$1 = function renderer(peity) {
|
245
|
+
var values = peity.values;
|
246
|
+
var max = Math.max.apply(Math, peity.options.max == undefined ? values : values.concat(peity.options.max));
|
247
|
+
var min = Math.min.apply(Math, peity.options.min == undefined ? values : values.concat(peity.options.min));
|
248
|
+
var svg = peity.prepare(peity.options.width, peity.options.height);
|
249
|
+
var width = svg.clientWidth;
|
250
|
+
var height = svg.clientHeight;
|
251
|
+
var diff = max - min;
|
252
|
+
var padding = peity.options.padding;
|
253
|
+
var fill = peity.fill();
|
254
|
+
|
255
|
+
var xScale = function xScale(input) {
|
256
|
+
return input * width / values.length;
|
257
|
+
};
|
258
|
+
|
259
|
+
var yScale = function yScale(input) {
|
260
|
+
return height - (diff ? (input - min) / diff * height : 1);
|
261
|
+
};
|
262
|
+
|
263
|
+
for (var i = 0; i < values.length; i++) {
|
264
|
+
var x = xScale(i + padding);
|
265
|
+
var w = xScale(i + 1 - padding) - x;
|
266
|
+
var value = values[i];
|
267
|
+
var valueY = yScale(value);
|
268
|
+
var y1 = valueY;
|
269
|
+
var y2 = valueY;
|
270
|
+
var h = void 0;
|
271
|
+
|
272
|
+
if (!diff) {
|
273
|
+
h = 1;
|
274
|
+
} else if (value < 0) {
|
275
|
+
y1 = yScale(Math.min(max, 0));
|
175
276
|
} else {
|
176
|
-
|
277
|
+
y2 = yScale(Math.max(min, 0));
|
177
278
|
}
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
279
|
+
|
280
|
+
h = y2 - y1;
|
281
|
+
|
282
|
+
if (h == 0) {
|
283
|
+
h = 1;
|
284
|
+
if (max > 0 && diff) y1--;
|
285
|
+
}
|
286
|
+
|
287
|
+
svg.append(svgElement("rect", {
|
288
|
+
"data-value": value,
|
289
|
+
fill: fill.call(peity, value, i, values),
|
290
|
+
x: x,
|
291
|
+
y: y1,
|
292
|
+
width: w,
|
293
|
+
height: h
|
294
|
+
}));
|
184
295
|
}
|
185
|
-
|
186
|
-
$node.setAttribute('fill', fill.call(this, value, i, values));
|
187
|
-
$svg.append($node);
|
188
|
-
}
|
189
|
-
});
|
190
|
-
peity.register('donut', Object.assign(true, {}, peity.defaults.pie), function (opts) {
|
191
|
-
peity.graphers.pie.call(this, opts);
|
192
|
-
});
|
193
|
-
peity.register('bar', {
|
194
|
-
delimiter: ",",
|
195
|
-
fill: ["#4D89F9"],
|
196
|
-
height: 16,
|
197
|
-
min: 0,
|
198
|
-
padding: 0.1,
|
199
|
-
width: 32
|
200
|
-
}, function (opts) {
|
201
|
-
var values = this.values(),
|
202
|
-
max = Math.max.apply(Math, opts.max == undefined ? values : values.concat(opts.max)),
|
203
|
-
min = Math.min.apply(Math, opts.min == undefined ? values : values.concat(opts.min));
|
204
|
-
var $svg = this.prepare(opts.width, opts.height),
|
205
|
-
width = $svg.clientWidth,
|
206
|
-
height = $svg.clientHeight,
|
207
|
-
diff = max - min,
|
208
|
-
padding = opts.padding,
|
209
|
-
fill = this.fill();
|
210
|
-
|
211
|
-
var xScale = this.x = function (input) {
|
212
|
-
return input * width / values.length;
|
213
296
|
};
|
214
|
-
|
215
|
-
|
216
|
-
|
297
|
+
var defaults$1 = {
|
298
|
+
delimiter: ",",
|
299
|
+
fill: ["#4D89F9"],
|
300
|
+
height: 16,
|
301
|
+
min: 0,
|
302
|
+
padding: 0.1,
|
303
|
+
width: 32
|
217
304
|
};
|
218
|
-
|
219
|
-
|
220
|
-
var
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
}
|
233
|
-
|
305
|
+
|
306
|
+
var renderer = function renderer(peity) {
|
307
|
+
var values = peity.values;
|
308
|
+
if (values.length == 1) values.push(values[0]);
|
309
|
+
var max = Math.max.apply(Math, peity.options.max == undefined ? values : values.concat(peity.options.max));
|
310
|
+
var min = Math.min.apply(Math, peity.options.min == undefined ? values : values.concat(peity.options.min));
|
311
|
+
var svg = peity.prepare(peity.options.width, peity.options.height);
|
312
|
+
var strokeWidth = peity.options.strokeWidth;
|
313
|
+
var width = svg.clientWidth;
|
314
|
+
var height = svg.clientHeight - strokeWidth;
|
315
|
+
var diff = max - min;
|
316
|
+
|
317
|
+
var xScale = function xScale(input) {
|
318
|
+
return input * (width / (values.length - 1));
|
319
|
+
};
|
320
|
+
|
321
|
+
var yScale = function yScale(input) {
|
322
|
+
var y = height;
|
323
|
+
|
324
|
+
if (diff) {
|
325
|
+
y -= (input - min) / diff * height;
|
326
|
+
}
|
327
|
+
|
328
|
+
return y + strokeWidth / 2;
|
329
|
+
};
|
330
|
+
|
331
|
+
var zero = yScale(Math.max(min, 0));
|
332
|
+
var coords = [0, zero];
|
333
|
+
|
334
|
+
for (var i = 0; i < values.length; i++) {
|
335
|
+
coords.push(xScale(i), yScale(values[i]));
|
234
336
|
}
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
if (
|
239
|
-
|
240
|
-
|
337
|
+
|
338
|
+
coords.push(width, zero);
|
339
|
+
|
340
|
+
if (peity.options.fill) {
|
341
|
+
svg.append(svgElement("polygon", {
|
342
|
+
fill: peity.options.fill,
|
343
|
+
points: coords.join(" ")
|
344
|
+
}));
|
241
345
|
}
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
}
|
252
|
-
});
|
253
|
-
peity.register("line", {
|
254
|
-
delimiter: ",",
|
255
|
-
fill: "#c6d9fd",
|
256
|
-
height: 16,
|
257
|
-
min: 0,
|
258
|
-
stroke: "#4d89f9",
|
259
|
-
strokeWidth: 1,
|
260
|
-
width: 32
|
261
|
-
}, function (opts) {
|
262
|
-
var values = this.values();
|
263
|
-
if (values.length == 1) values.push(values[0]);
|
264
|
-
var max = Math.max.apply(Math, opts.max == undefined ? values : values.concat(opts.max)),
|
265
|
-
min = Math.min.apply(Math, opts.min == undefined ? values : values.concat(opts.min));
|
266
|
-
var $svg = this.prepare(opts.width, opts.height),
|
267
|
-
strokeWidth = opts.strokeWidth,
|
268
|
-
width = $svg.clientWidth,
|
269
|
-
height = $svg.clientHeight - strokeWidth,
|
270
|
-
diff = max - min;
|
271
|
-
|
272
|
-
var xScale = this.x = function (input) {
|
273
|
-
return input * (width / (values.length - 1));
|
274
|
-
};
|
275
|
-
|
276
|
-
var yScale = this.y = function (input) {
|
277
|
-
var y = height;
|
278
|
-
|
279
|
-
if (diff) {
|
280
|
-
y -= (input - min) / diff * height;
|
346
|
+
|
347
|
+
if (strokeWidth) {
|
348
|
+
svg.append(svgElement("polyline", {
|
349
|
+
fill: "none",
|
350
|
+
points: coords.slice(2, coords.length - 2).join(" "),
|
351
|
+
stroke: peity.options.stroke,
|
352
|
+
"stroke-width": strokeWidth,
|
353
|
+
"stroke-linecap": "square"
|
354
|
+
}));
|
281
355
|
}
|
282
|
-
|
283
|
-
return y + strokeWidth / 2;
|
284
356
|
};
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
});
|
312
|
-
|
313
|
-
|
314
|
-
return index;
|
315
|
-
|
316
|
-
}));
|
317
|
-
//# sourceMappingURL=peity_vanilla.js.map
|
357
|
+
var defaults = {
|
358
|
+
delimiter: ",",
|
359
|
+
fill: "#c6d9fd",
|
360
|
+
height: 16,
|
361
|
+
min: 0,
|
362
|
+
stroke: "#4d89f9",
|
363
|
+
strokeWidth: 1,
|
364
|
+
width: 32
|
365
|
+
};
|
366
|
+
|
367
|
+
Peity.register("pie", defaults$2, renderer$2);
|
368
|
+
Peity.register("donut", defaults$2, renderer$2);
|
369
|
+
Peity.register("bar", defaults$1, renderer$1);
|
370
|
+
Peity.register("line", defaults, renderer);
|
371
|
+
|
372
|
+
var peity = function peity(element, type, options) {
|
373
|
+
var peity = new Peity(element, type, options);
|
374
|
+
peity.mount();
|
375
|
+
return peity;
|
376
|
+
};
|
377
|
+
|
378
|
+
peity.defaults = Peity.defaults;
|
379
|
+
peity.graphers = Peity.graphers;
|
380
|
+
|
381
|
+
return peity;
|
382
|
+
|
383
|
+
}));
|
384
|
+
//# sourceMappingURL=peity_vanilla.js.map
|
385
|
+
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"peity_vanilla.js","sources":["../src/index.js"],"sourcesContent":["\"use strict\";\r\n\r\nvar peity = function(element, type, options) {\r\n if (svgSupported) {\r\n var $this = element\r\n\r\n var chart = new Peity(\r\n $this,\r\n type,\r\n Object.assign({},\r\n peity.defaults[type],\r\n JSON.parse($this.dataset['peity'] || '{}'),\r\n options)\r\n )\r\n\r\n $this.addEventListener(\"change\", function() { chart.draw() })\r\n $this.dataset['_peity'] = \"1\"\r\n\r\n chart.draw()\r\n return $this;\r\n }\r\n};\r\n\r\nvar Peity = function($el, type, opts) {\r\n this.$el = $el\r\n this.type = type\r\n this.opts = opts\r\n}\r\n\r\nvar PeityPrototype = Peity.prototype\r\n\r\nvar svgElement = PeityPrototype.svgElement = function(tag, attrs) {\r\n var element = document.createElementNS('http://www.w3.org/2000/svg', tag)\r\n for(var attr in attrs) {\r\n element.setAttribute(attr, attrs[attr])\r\n }\r\n return element;\r\n}\r\n\r\n// https://gist.github.com/madrobby/3201472\r\nvar svgSupported = 'createElementNS' in document && svgElement('svg', {}).createSVGRect()\r\n\r\nPeityPrototype.draw = function() {\r\n var opts = this.opts\r\n peity.graphers[this.type].call(this, opts)\r\n if (opts.after) opts.after.call(this, opts)\r\n}\r\n\r\nPeityPrototype.isFunction = function(o) { return null !== o && \"function\" === typeof o && !!o.apply; }\r\n\r\nPeityPrototype.fill = function() {\r\n var fill = this.opts.fill\r\n\r\n return PeityPrototype.isFunction(fill)\r\n ? fill\r\n : function(_, i) { return fill[i % fill.length] }\r\n}\r\n\r\nPeityPrototype.prepare = function(width, height) {\r\n if (!this.$svg) {\r\n this.$el.style.display = 'none'\r\n this.$el.after(\r\n this.$svg = svgElement('svg', {\r\n \"class\": \"peity\"\r\n })\r\n )\r\n }\r\n\r\n this.$svg.innerHTML = \"\";\r\n this.$svg.setAttribute(\"width\", width)\r\n this.$svg.setAttribute(\"height\", height)\r\n\r\n return this.$svg;\r\n}\r\n\r\nPeityPrototype.values = function() {\r\n return this.$el.innerText.split(this.opts.delimiter).map(function(value) {\r\n return parseFloat(value)\r\n })\r\n}\r\n\r\npeity.defaults = {}\r\npeity.graphers = {}\r\n\r\npeity.register = function(type, defaults, grapher) {\r\n this.defaults[type] = defaults\r\n this.graphers[type] = grapher\r\n}\r\n\r\npeity.register(\r\n 'pie',\r\n {\r\n fill: ['#ff9900', '#fff4dd', '#ffc66e'],\r\n radius: 8\r\n },\r\n function(opts) {\r\n if (!opts.delimiter) {\r\n var delimiter = this.$el.innerText.match(/[^0-9\\.]/)\r\n opts.delimiter = delimiter ? delimiter[0] : \",\"\r\n }\r\n\r\n var values = this.values().map(function(n) {\r\n return n > 0 ? n : 0\r\n });\r\n\r\n if (opts.delimiter == \"/\") {\r\n var v1 = values[0]\r\n var v2 = values[1]\r\n values = [v1, Math.max(0, v2 - v1)]\r\n }\r\n\r\n var i = 0\r\n var length = values.length\r\n var sum = 0\r\n\r\n for (; i < length; i++) {\r\n sum += values[i]\r\n }\r\n\r\n if (!sum) {\r\n length = 2\r\n sum = 1\r\n values = [0, 1]\r\n }\r\n\r\n var diameter = opts.radius * 2\r\n\r\n var $svg = this.prepare(\r\n opts.width || diameter,\r\n opts.height || diameter\r\n )\r\n\r\n var width = $svg.clientWidth\r\n , height = $svg.clientHeight\r\n , cx = width / 2\r\n , cy = height / 2\r\n\r\n var radius = Math.min(cx, cy)\r\n , innerRadius = opts.innerRadius\r\n\r\n if (this.type == 'donut' && !innerRadius) {\r\n innerRadius = radius * 0.5\r\n }\r\n\r\n var pi = Math.PI\r\n var fill = this.fill()\r\n\r\n var scale = this.scale = function(value, radius) {\r\n var radians = value / sum * pi * 2 - pi / 2\r\n\r\n return [\r\n radius * Math.cos(radians) + cx,\r\n radius * Math.sin(radians) + cy\r\n ]\r\n }\r\n\r\n var cumulative = 0\r\n\r\n for (i = 0; i < length; i++) {\r\n var value = values[i]\r\n , portion = value / sum\r\n , $node\r\n\r\n if (portion == 0) continue\r\n\r\n if (portion == 1) {\r\n if (innerRadius) {\r\n var x2 = cx - 0.01\r\n , y1 = cy - radius\r\n , y2 = cy - innerRadius\r\n\r\n $node = svgElement('path', {\r\n d: [\r\n 'M', cx, y1,\r\n 'A', radius, radius, 0, 1, 1, x2, y1,\r\n 'L', x2, y2,\r\n 'A', innerRadius, innerRadius, 0, 1, 0, cx, y2\r\n ].join(' '),\r\n 'data-value': value,\r\n })\r\n } else {\r\n $node = svgElement('circle', {\r\n cx: cx,\r\n cy: cy,\r\n 'data-value': value,\r\n r: radius\r\n })\r\n }\r\n } else {\r\n var cumulativePlusValue = cumulative + value\r\n\r\n var d = ['M'].concat(\r\n scale(cumulative, radius),\r\n 'A', radius, radius, 0, portion > 0.5 ? 1 : 0, 1,\r\n scale(cumulativePlusValue, radius),\r\n 'L'\r\n )\r\n\r\n if (innerRadius) {\r\n d = d.concat(\r\n scale(cumulativePlusValue, innerRadius),\r\n 'A', innerRadius, innerRadius, 0, portion > 0.5 ? 1 : 0, 0,\r\n scale(cumulative, innerRadius)\r\n )\r\n } else {\r\n d.push(cx, cy)\r\n }\r\n\r\n cumulative += value\r\n\r\n $node = svgElement('path', {\r\n d: d.join(\" \"),\r\n 'data-value': value,\r\n })\r\n }\r\n\r\n $node.setAttribute('fill', fill.call(this, value, i, values))\r\n\r\n $svg.append($node)\r\n }\r\n }\r\n)\r\n\r\npeity.register(\r\n 'donut',\r\n Object.assign(true, {}, peity.defaults.pie),\r\n function(opts) {\r\n peity.graphers.pie.call(this, opts)\r\n }\r\n)\r\n\r\npeity.register(\r\n 'bar',\r\n {\r\n delimiter: \",\",\r\n fill: [\"#4D89F9\"],\r\n height: 16,\r\n min: 0,\r\n padding: 0.1,\r\n width: 32\r\n },\r\n function(opts) {\r\n var values = this.values()\r\n , max = Math.max.apply(Math, opts.max == undefined ? values : values.concat(opts.max))\r\n , min = Math.min.apply(Math, opts.min == undefined ? values : values.concat(opts.min))\r\n\r\n var $svg = this.prepare(opts.width, opts.height)\r\n , width = $svg.clientWidth\r\n , height = $svg.clientHeight\r\n , diff = max - min\r\n , padding = opts.padding\r\n , fill = this.fill()\r\n\r\n var xScale = this.x = function(input) {\r\n return input * width / values.length\r\n }\r\n\r\n var yScale = this.y = function(input) {\r\n return height - (\r\n diff\r\n ? ((input - min) / diff) * height\r\n : 1\r\n )\r\n }\r\n\r\n for (var i = 0; i < values.length; i++) {\r\n var x = xScale(i + padding)\r\n , w = xScale(i + 1 - padding) - x\r\n , value = values[i]\r\n , valueY = yScale(value)\r\n , y1 = valueY\r\n , y2 = valueY\r\n , h\r\n\r\n if (!diff) {\r\n h = 1\r\n } else if (value < 0) {\r\n y1 = yScale(Math.min(max, 0))\r\n } else {\r\n y2 = yScale(Math.max(min, 0))\r\n }\r\n\r\n h = y2 - y1\r\n\r\n if (h == 0) {\r\n h = 1\r\n if (max > 0 && diff) y1--\r\n }\r\n\r\n $svg.append(\r\n svgElement('rect', {\r\n 'data-value': value,\r\n fill: fill.call(this, value, i, values),\r\n x: x,\r\n y: y1,\r\n width: w,\r\n height: h\r\n })\r\n )\r\n }\r\n }\r\n);\r\n\r\npeity.register(\r\n \"line\",\r\n {\r\n delimiter: \",\",\r\n fill: \"#c6d9fd\",\r\n height: 16,\r\n min: 0,\r\n stroke: \"#4d89f9\",\r\n strokeWidth: 1,\r\n width: 32\r\n },\r\n function(opts) {\r\n var values = this.values()\r\n if (values.length == 1) values.push(values[0])\r\n var max = Math.max.apply(Math, opts.max == undefined ? values : values.concat(opts.max))\r\n , min = Math.min.apply(Math, opts.min == undefined ? values : values.concat(opts.min))\r\n\r\n var $svg = this.prepare(opts.width, opts.height)\r\n , strokeWidth = opts.strokeWidth\r\n , width = $svg.clientWidth\r\n , height = $svg.clientHeight - strokeWidth\r\n , diff = max - min\r\n\r\n var xScale = this.x = function(input) {\r\n return input * (width / (values.length - 1))\r\n }\r\n\r\n var yScale = this.y = function(input) {\r\n var y = height\r\n\r\n if (diff) {\r\n y -= ((input - min) / diff) * height\r\n }\r\n\r\n return y + strokeWidth / 2\r\n }\r\n\r\n var zero = yScale(Math.max(min, 0))\r\n , coords = [0, zero]\r\n\r\n for (var i = 0; i < values.length; i++) {\r\n coords.push(\r\n xScale(i),\r\n yScale(values[i])\r\n )\r\n }\r\n\r\n coords.push(width, zero)\r\n\r\n if (opts.fill) {\r\n $svg.append(\r\n svgElement('polygon', {\r\n fill: opts.fill,\r\n points: coords.join(' ')\r\n })\r\n )\r\n }\r\n\r\n if (strokeWidth) {\r\n $svg.append(\r\n svgElement('polyline', {\r\n fill: 'none',\r\n points: coords.slice(2, coords.length - 2).join(' '),\r\n stroke: opts.stroke,\r\n 'stroke-width': strokeWidth,\r\n 'stroke-linecap': 'square'\r\n })\r\n )\r\n }\r\n }\r\n);\r\n\r\nexport default window.peity = peity;"],"names":["peity","element","type","options","svgSupported","$this","chart","Peity","Object","assign","defaults","JSON","parse","dataset","addEventListener","draw","$el","opts","PeityPrototype","prototype","svgElement","tag","attrs","document","createElementNS","attr","setAttribute","createSVGRect","graphers","call","after","isFunction","o","apply","fill","_","i","length","prepare","width","height","$svg","style","display","innerHTML","values","innerText","split","delimiter","map","value","parseFloat","register","grapher","radius","match","n","v1","v2","Math","max","sum","diameter","clientWidth","clientHeight","cx","cy","min","innerRadius","pi","PI","scale","radians","cos","sin","cumulative","portion","$node","x2","y1","y2","d","join","r","cumulativePlusValue","concat","push","append","pie","padding","undefined","diff","xScale","x","input","yScale","y","w","valueY","h","stroke","strokeWidth","zero","coords","points","slice","window"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"peity_vanilla.js","sources":["../src/utils.js","../src/peity.js","../src/renderers/pie.js","../src/renderers/bar.js","../src/renderers/line.js","../src/index.js"],"sourcesContent":["export const isFunction = (o) =>\n o !== null && typeof o === \"function\" && !!o.apply;\n\nexport const svgElement = (tag, attrs) => {\n const element = document.createElementNS(\"http://www.w3.org/2000/svg\", tag);\n for (var attr in attrs) {\n element.setAttribute(attr, attrs[attr]);\n }\n return element;\n};\n\nexport const svgSupported =\n \"createElementNS\" in document && svgElement(\"svg\", {}).createSVGRect();\n","import { isFunction, svgElement, svgSupported } from \"./utils\";\n\nclass Peity {\n static defaults = {};\n static graphers = {};\n\n constructor(element, type, options = {}) {\n this.element = element;\n this.type = type;\n this.options = Object.assign(\n {},\n Peity.defaults[type],\n JSON.parse(element.dataset[\"peity\"] || \"{}\"),\n options\n );\n }\n\n draw() {\n const options = this.options;\n Peity.graphers[this.type](this);\n if (isFunction(options.after)) options.after.call(this, options);\n }\n\n fill() {\n var fill = this.options.fill;\n\n return isFunction(fill)\n ? fill\n : function (_, i) {\n return fill[i % fill.length];\n };\n }\n\n prepare(width, height) {\n if (!this.svg) {\n this.element.style.display = \"none\";\n this.element.after(\n (this.svg = svgElement(\"svg\", {\n class: \"peity\",\n }))\n );\n }\n\n this.svg.innerHTML = \"\";\n this.svg.setAttribute(\"width\", width);\n this.svg.setAttribute(\"height\", height);\n\n return this.svg;\n }\n\n get values() {\n return this.element.innerText\n .split(this.options.delimiter)\n .map((value) => parseFloat(value));\n }\n\n mount() {\n if (!svgSupported) return;\n\n this.element.addEventListener(\"change\", this.draw.bind(this));\n this.element.dataset[\"_peity\"] = \"1\";\n\n this.draw();\n }\n\n unmount() {\n this.element.removeEventListener(\"change\", this.draw);\n }\n\n static register(type, defaults, grapher) {\n Peity.defaults[type] = defaults;\n Peity.graphers[type] = grapher;\n }\n}\n\nexport default Peity;\n","import { svgElement } from \"../utils\";\n\nexport const renderer = (peity) => {\n if (!peity.options.delimiter) {\n const delimiter = peity.element.innerText.match(/[^0-9\\.]/);\n peity.options.delimiter = delimiter ? delimiter[0] : \",\";\n }\n\n let values = peity.values.map((n) => (n > 0 ? n : 0));\n\n if (peity.options.delimiter == \"/\") {\n let v1 = values[0];\n let v2 = values[1];\n values = [v1, Math.max(0, v2 - v1)];\n }\n\n let i = 0;\n let length = values.length;\n let sum = 0;\n\n for (; i < length; i++) {\n sum += values[i];\n }\n\n if (!sum) {\n length = 2;\n sum = 1;\n values = [0, 1];\n }\n\n let diameter = peity.options.radius * 2;\n\n const svg = peity.prepare(\n peity.options.width || diameter,\n peity.options.height || diameter\n );\n\n const width = svg.clientWidth;\n const height = svg.clientHeight;\n const cx = width / 2;\n const cy = height / 2;\n\n const radius = Math.min(cx, cy);\n let innerRadius = peity.options.innerRadius;\n\n if (peity.type == \"donut\" && !innerRadius) {\n innerRadius = radius * 0.5;\n }\n\n const fill = peity.fill();\n\n const scale = (value, radius) => {\n const radians = (value / sum) * Math.PI * 2 - Math.PI / 2;\n\n return [radius * Math.cos(radians) + cx, radius * Math.sin(radians) + cy];\n };\n\n let cumulative = 0;\n\n for (i = 0; i < length; i++) {\n const value = values[i];\n const portion = value / sum;\n let node;\n\n if (portion == 0) continue;\n\n if (portion == 1) {\n if (innerRadius) {\n const x2 = cx - 0.01;\n const y1 = cy - radius;\n const y2 = cy - innerRadius;\n\n node = svgElement(\"path\", {\n d: [\n \"M\",\n cx,\n y1,\n \"A\",\n radius,\n radius,\n 0,\n 1,\n 1,\n x2,\n y1,\n \"L\",\n x2,\n y2,\n \"A\",\n innerRadius,\n innerRadius,\n 0,\n 1,\n 0,\n cx,\n y2,\n ].join(\" \"),\n \"data-value\": value,\n });\n } else {\n node = svgElement(\"circle\", {\n cx: cx,\n cy: cy,\n \"data-value\": value,\n r: radius,\n });\n }\n } else {\n const cumulativePlusValue = cumulative + value;\n\n let d = [\"M\"].concat(\n scale(cumulative, radius),\n \"A\",\n radius,\n radius,\n 0,\n portion > 0.5 ? 1 : 0,\n 1,\n scale(cumulativePlusValue, radius),\n \"L\"\n );\n\n if (innerRadius) {\n d = d.concat(\n scale(cumulativePlusValue, innerRadius),\n \"A\",\n innerRadius,\n innerRadius,\n 0,\n portion > 0.5 ? 1 : 0,\n 0,\n scale(cumulative, innerRadius)\n );\n } else {\n d.push(cx, cy);\n }\n\n cumulative += value;\n\n node = svgElement(\"path\", {\n d: d.join(\" \"),\n \"data-value\": value,\n });\n }\n\n node.setAttribute(\"fill\", fill.call(peity, value, i, values));\n\n svg.append(node);\n }\n};\n\nexport const defaults = {\n fill: [\"#ff9900\", \"#fff4dd\", \"#ffc66e\"],\n radius: 8,\n};\n","import { svgElement } from \"../utils\";\n\nexport const renderer = (peity) => {\n const values = peity.values;\n const max = Math.max.apply(\n Math,\n peity.options.max == undefined ? values : values.concat(peity.options.max)\n );\n const min = Math.min.apply(\n Math,\n peity.options.min == undefined ? values : values.concat(peity.options.min)\n );\n\n const svg = peity.prepare(peity.options.width, peity.options.height);\n const width = svg.clientWidth;\n const height = svg.clientHeight;\n const diff = max - min;\n const padding = peity.options.padding;\n const fill = peity.fill();\n\n const xScale = (input) => {\n return (input * width) / values.length;\n };\n\n const yScale = (input) => {\n return height - (diff ? ((input - min) / diff) * height : 1);\n };\n\n for (var i = 0; i < values.length; i++) {\n let x = xScale(i + padding);\n let w = xScale(i + 1 - padding) - x;\n let value = values[i];\n let valueY = yScale(value);\n let y1 = valueY;\n let y2 = valueY;\n let h;\n\n if (!diff) {\n h = 1;\n } else if (value < 0) {\n y1 = yScale(Math.min(max, 0));\n } else {\n y2 = yScale(Math.max(min, 0));\n }\n\n h = y2 - y1;\n\n if (h == 0) {\n h = 1;\n if (max > 0 && diff) y1--;\n }\n\n svg.append(\n svgElement(\"rect\", {\n \"data-value\": value,\n fill: fill.call(peity, value, i, values),\n x: x,\n y: y1,\n width: w,\n height: h,\n })\n );\n }\n};\n\nexport const defaults = {\n delimiter: \",\",\n fill: [\"#4D89F9\"],\n height: 16,\n min: 0,\n padding: 0.1,\n width: 32,\n};\n","import { svgElement } from \"../utils\";\n\nexport const renderer = (peity) => {\n const values = peity.values;\n if (values.length == 1) values.push(values[0]);\n const max = Math.max.apply(\n Math,\n peity.options.max == undefined ? values : values.concat(peity.options.max)\n );\n const min = Math.min.apply(\n Math,\n peity.options.min == undefined ? values : values.concat(peity.options.min)\n );\n\n const svg = peity.prepare(peity.options.width, peity.options.height);\n const strokeWidth = peity.options.strokeWidth;\n const width = svg.clientWidth;\n const height = svg.clientHeight - strokeWidth;\n const diff = max - min;\n\n const xScale = (input) => {\n return input * (width / (values.length - 1));\n };\n\n const yScale = (input) => {\n let y = height;\n\n if (diff) {\n y -= ((input - min) / diff) * height;\n }\n\n return y + strokeWidth / 2;\n };\n\n let zero = yScale(Math.max(min, 0));\n let coords = [0, zero];\n\n for (var i = 0; i < values.length; i++) {\n coords.push(xScale(i), yScale(values[i]));\n }\n\n coords.push(width, zero);\n\n if (peity.options.fill) {\n svg.append(\n svgElement(\"polygon\", {\n fill: peity.options.fill,\n points: coords.join(\" \"),\n })\n );\n }\n\n if (strokeWidth) {\n svg.append(\n svgElement(\"polyline\", {\n fill: \"none\",\n points: coords.slice(2, coords.length - 2).join(\" \"),\n stroke: peity.options.stroke,\n \"stroke-width\": strokeWidth,\n \"stroke-linecap\": \"square\",\n })\n );\n }\n};\n\nexport const defaults = {\n delimiter: \",\",\n fill: \"#c6d9fd\",\n height: 16,\n min: 0,\n stroke: \"#4d89f9\",\n strokeWidth: 1,\n width: 32,\n};\n","import Peity from \"./peity\";\r\nimport * as pie from \"./renderers/pie\";\r\nimport * as bar from \"./renderers/bar\";\r\nimport * as line from \"./renderers/line\";\r\n\r\nPeity.register(\"pie\", pie.defaults, pie.renderer);\r\nPeity.register(\"donut\", pie.defaults, pie.renderer);\r\nPeity.register(\"bar\", bar.defaults, bar.renderer);\r\nPeity.register(\"line\", line.defaults, line.renderer);\r\n\r\nexport * from \"./peity\";\r\n\r\nconst peity = function (element, type, options) {\r\n const peity = new Peity(element, type, options);\r\n peity.mount();\r\n\r\n return peity;\r\n};\r\n\r\npeity.defaults = Peity.defaults;\r\npeity.graphers = Peity.graphers;\r\n\r\nexport default peity;\r\n"],"names":["isFunction","o","apply","svgElement","tag","attrs","element","document","createElementNS","attr","setAttribute","svgSupported","createSVGRect","Peity","type","options","Object","assign","defaults","JSON","parse","dataset","graphers","after","call","fill","_","i","length","width","height","svg","style","display","class","innerHTML","innerText","split","delimiter","map","value","parseFloat","addEventListener","draw","bind","removeEventListener","grapher","renderer","peity","match","values","n","v1","v2","Math","max","sum","diameter","radius","prepare","clientWidth","clientHeight","cx","cy","min","innerRadius","scale","radians","PI","cos","sin","cumulative","portion","node","x2","y1","y2","d","join","r","cumulativePlusValue","concat","push","append","undefined","diff","padding","xScale","input","yScale","x","w","valueY","h","y","strokeWidth","zero","coords","points","slice","stroke","register","pie","bar","line","mount"],"mappings":"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"}
|
data/config/importmap.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
pin 'peity', to: 'peity_vanilla.esm.js'
|
@@ -1,11 +1,5 @@
|
|
1
1
|
module PeityVanillaRails
|
2
2
|
class Railtie < ::Rails::Engine
|
3
|
-
initializer "peity_vanilla_rails.importmap", before: "importmap" do |app|
|
4
|
-
if defined?(Importmap)
|
5
|
-
app.config.importmap.cache_sweepers << root.join("app/assets/javascripts")
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
3
|
PRECOMPILE_ASSETS = Dir[root.join("app/assets/javascripts/**/*")]
|
10
4
|
initializer 'peity_vanilla_rails.assets' do |app|
|
11
5
|
if app.config.respond_to?(:assets)
|
@@ -13,6 +7,12 @@ module PeityVanillaRails
|
|
13
7
|
end
|
14
8
|
end
|
15
9
|
|
10
|
+
initializer "peity_vanilla_rails.importmap", before: "importmap" do |app|
|
11
|
+
if Rails.application.respond_to?(:importmap)
|
12
|
+
app.config.importmap.paths << root.join("config/importmap.rb")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
16
|
initializer 'peity_vanilla_rails.helpers', before: :load_config_initializers do
|
17
17
|
ActiveSupport.on_load :action_view do
|
18
18
|
include PeityVanillaRails::Helpers
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: peity_vanilla_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Igor Kasyanchuk
|
8
|
+
- Liubomyr Manastyretskyi
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2022-
|
12
|
+
date: 2022-05-01 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: rails
|
@@ -69,6 +70,7 @@ dependencies:
|
|
69
70
|
description: Sparklines are small but intense charts.
|
70
71
|
email:
|
71
72
|
- igorkasyanchuk@gmail.com
|
73
|
+
- manastyretskyi@gmail.com
|
72
74
|
executables: []
|
73
75
|
extensions: []
|
74
76
|
extra_rdoc_files: []
|
@@ -76,8 +78,10 @@ files:
|
|
76
78
|
- MIT-LICENSE
|
77
79
|
- README.md
|
78
80
|
- Rakefile
|
81
|
+
- app/assets/javascripts/peity_vanilla.esm.js
|
79
82
|
- app/assets/javascripts/peity_vanilla.js
|
80
83
|
- app/assets/javascripts/peity_vanilla.js.map
|
84
|
+
- config/importmap.rb
|
81
85
|
- lib/peity_vanilla_rails.rb
|
82
86
|
- lib/peity_vanilla_rails/engine.rb
|
83
87
|
- lib/peity_vanilla_rails/helpers.rb
|