peity_vanilla_rails 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,385 +0,0 @@
1
- /*!
2
- Peity Vanila JS 0.0.5
3
- Copyright © 2022 RailsJazz
4
- https://railsjazz.com
5
- */
6
-
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
- }
17
- }
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
- }
27
- }
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;
36
- }
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;
51
- }
52
-
53
- var isFunction = function isFunction(o) {
54
- return o !== null && typeof o === "function" && !!o.apply;
55
- };
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);
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
- }
218
- } else {
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
232
- });
233
- }
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));
276
- } else {
277
- y2 = yScale(Math.max(min, 0));
278
- }
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
- }));
295
- }
296
- };
297
- var defaults$1 = {
298
- delimiter: ",",
299
- fill: ["#4D89F9"],
300
- height: 16,
301
- min: 0,
302
- padding: 0.1,
303
- width: 32
304
- };
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]));
336
- }
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
- }));
345
- }
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
- }));
355
- }
356
- };
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 +0,0 @@
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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"}