JSFiddle - React, Tailwind, and code Playground

by danzkusuma

HTML

<script src="http://www.flotcharts.org/flot/jquery.flot.js"></script>
<div id="wtvsone" style="width: 540px; height: 590px;"></div>

JavaScript

/**
 * Flot plugin that provides spline interpolation for line graphs
 * author: Alex Bardas < [email protected] >
 * modified by: Avi Kohn https://github.com/AMKohn
 * based on the spline interpolation described at:
 *		 http://scaledinnovation.com/analytics/splines/aboutSplines.html
 *
 * Example usage: (add in plot options series object)
 *		for linespline:
 *			series: {
 *				...
 *				lines: {
 *					show: false
 *				},
 *				splines: {
 *					show: true,
 *					tension: x, (float between 0 and 1, defaults to 0.5),
 *					lineWidth: y (number, defaults to 2),
 *					fill: z (float between 0 .. 1 or false, as in flot documentation)
 *				},
 *				...
 *			}
 *		areaspline:
 *			series: {
 *				...
 *				lines: {
 *					show: true,
 *					lineWidth: 0, (line drawing will not execute)
 *					fill: x, (float between 0 .. 1, as in flot documentation)
 *					...
 *				},
 *				splines: {
 *					show: true,
 *					tension: 0.5 (float between 0 and 1)
 *				},
 *				...
 *			}
 *
 */

(function($) {
	'use strict'

	/**
	 * @param {Number} x0, y0, x1, y1: coordinates of the end (knot) points of the segment
	 * @param {Number} x2, y2: the next knot (not connected, but needed to calculate p2)
	 * @param {Number} tension: control how far the control points spread
	 * @return {Array}: p1 -> control point, from x1 back toward x0
	 * 					p2 -> the next control point, returned to become the next segment's p1
	 *
	 * @api private
	 */
	function getControlPoints(x0, y0, x1, y1, x2, y2, tension) {

		var pow = Math.pow,
			sqrt = Math.sqrt,
			d01, d12, fa, fb, p1x, p1y, p2x, p2y;

		//  Scaling factors: distances from this knot to the previous and following knots.
		d01 = sqrt(pow(x1 - x0, 2) + pow(y1 - y0, 2));
		d12 = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));

		fa = tension * d01 / (d01 + d12);
		fb = tension - fa;

		p1x = x1 + fa * (x0 - x2);
		p1y = y1 + fa * (y0 - y2);

		p2x = x1 - fb * (x0 - x2);
		p2y = y1 - fb * (y0 - y2);

		return [p1x, p1y, p2x,...