peity_vanilla_rails 0.1.1 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,317 +0,0 @@
1
- /*!
2
- Peity Vanila JS
3
- */
4
-
5
- (function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
7
- typeof define === 'function' && define.amd ? define(factory) :
8
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.peity_vanilla = factory());
9
- })(this, (function () { 'use strict';
10
-
11
- var peity = function peity(element, type, options) {
12
- if (svgSupported) {
13
- var $this = element;
14
- var chart = new Peity($this, type, Object.assign({}, peity.defaults[type], JSON.parse($this.dataset['peity'] || '{}'), options));
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)];
107
- }
108
-
109
- var i = 0;
110
- var length = values.length;
111
- var sum = 0;
112
-
113
- for (; i < length; i++) {
114
- sum += values[i];
115
- }
116
-
117
- if (!sum) {
118
- length = 2;
119
- sum = 1;
120
- values = [0, 1];
121
- }
122
-
123
- var diameter = opts.radius * 2;
124
- var $svg = this.prepare(opts.width || diameter, opts.height || diameter);
125
- var width = $svg.clientWidth,
126
- height = $svg.clientHeight,
127
- cx = width / 2,
128
- cy = height / 2;
129
- var radius = Math.min(cx, cy),
130
- innerRadius = opts.innerRadius;
131
-
132
- if (this.type == 'donut' && !innerRadius) {
133
- innerRadius = radius * 0.5;
134
- }
135
-
136
- var pi = Math.PI;
137
- var fill = this.fill();
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];
142
- };
143
-
144
- var cumulative = 0;
145
-
146
- for (i = 0; i < length; i++) {
147
- var value = values[i],
148
- portion = value / sum,
149
- $node;
150
- if (portion == 0) continue;
151
-
152
- if (portion == 1) {
153
- if (innerRadius) {
154
- var x2 = cx - 0.01,
155
- y1 = cy - radius,
156
- y2 = cy - innerRadius;
157
- $node = svgElement('path', {
158
- d: ['M', cx, y1, 'A', radius, radius, 0, 1, 1, x2, y1, 'L', x2, y2, 'A', innerRadius, innerRadius, 0, 1, 0, cx, y2].join(' '),
159
- 'data-value': value
160
- });
161
- } else {
162
- $node = svgElement('circle', {
163
- cx: cx,
164
- cy: cy,
165
- 'data-value': value,
166
- r: radius
167
- });
168
- }
169
- } else {
170
- var cumulativePlusValue = cumulative + value;
171
- var d = ['M'].concat(scale(cumulative, radius), 'A', radius, radius, 0, portion > 0.5 ? 1 : 0, 1, scale(cumulativePlusValue, radius), 'L');
172
-
173
- if (innerRadius) {
174
- d = d.concat(scale(cumulativePlusValue, innerRadius), 'A', innerRadius, innerRadius, 0, portion > 0.5 ? 1 : 0, 0, scale(cumulative, innerRadius));
175
- } else {
176
- d.push(cx, cy);
177
- }
178
-
179
- cumulative += value;
180
- $node = svgElement('path', {
181
- d: d.join(" "),
182
- 'data-value': value
183
- });
184
- }
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
- };
214
-
215
- var yScale = this.y = function (input) {
216
- return height - (diff ? (input - min) / diff * height : 1);
217
- };
218
-
219
- for (var i = 0; i < values.length; i++) {
220
- var x = xScale(i + padding),
221
- w = xScale(i + 1 - padding) - x,
222
- value = values[i],
223
- valueY = yScale(value),
224
- y1 = valueY,
225
- y2 = valueY,
226
- h;
227
-
228
- if (!diff) {
229
- h = 1;
230
- } else if (value < 0) {
231
- y1 = yScale(Math.min(max, 0));
232
- } else {
233
- y2 = yScale(Math.max(min, 0));
234
- }
235
-
236
- h = y2 - y1;
237
-
238
- if (h == 0) {
239
- h = 1;
240
- if (max > 0 && diff) y1--;
241
- }
242
-
243
- $svg.append(svgElement('rect', {
244
- 'data-value': value,
245
- fill: fill.call(this, value, i, values),
246
- x: x,
247
- y: y1,
248
- width: w,
249
- height: h
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;
281
- }
282
-
283
- return y + strokeWidth / 2;
284
- };
285
-
286
- var zero = yScale(Math.max(min, 0)),
287
- coords = [0, zero];
288
-
289
- for (var i = 0; i < values.length; i++) {
290
- coords.push(xScale(i), yScale(values[i]));
291
- }
292
-
293
- coords.push(width, zero);
294
-
295
- if (opts.fill) {
296
- $svg.append(svgElement('polygon', {
297
- fill: opts.fill,
298
- points: coords.join(' ')
299
- }));
300
- }
301
-
302
- if (strokeWidth) {
303
- $svg.append(svgElement('polyline', {
304
- fill: 'none',
305
- points: coords.slice(2, coords.length - 2).join(' '),
306
- stroke: opts.stroke,
307
- 'stroke-width': strokeWidth,
308
- 'stroke-linecap': 'square'
309
- }));
310
- }
311
- });
312
- var index = window.peity = peity;
313
-
314
- return index;
315
-
316
- }));
317
- //# sourceMappingURL=peity_vanilla.js.map
@@ -1 +0,0 @@
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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"}