chart.js 1.65 KB
var chartColors = {
	grey: 'rgb(201, 203, 207)',
	red: 'rgb(255, 99, 132)',
	orange: 'rgb(255, 159, 64)',
	yellow: 'rgb(255, 205, 86)',
	green: 'rgb(75, 192, 192)',
	purple: 'rgb(153, 102, 255)',
	blue: 'rgb(54, 162, 235)'
};

var config = {
    type: 'line',
    data: {},
    options: {
		tooltips: {
			mode: 'index',
			intersect: false,
		},
		hover: {
			mode: 'nearest',
			intersect: true
		},
		scales: {
			xAxes: [{
				display: true,
				scaleLabel: {
					display: true,
					labelString: $('#format').val()
				}
			}],
			yAxes: [{
				display: true,
				ticks: {
					min: 0
				}
			}]
		}
    }
}

function load () {
    var url = $('#chart').attr('url');

    $.ajax({
        url: url + $('#format').val()
    }).done(function (json) {
        var colorNames = Object.keys(chartColors);

        for (var i = 0; i < json.datasets.length; i++) {
            var colorName = colorNames.pop();
            var newColor = chartColors[colorName];
            json.datasets[i].backgroundColor = newColor;
            json.datasets[i].borderColor = newColor;
            json.datasets[i].fill = false;

            config.data = json;
        }

        config.options.scales.xAxes[0].scaleLabel.labelString = $('#format').val();

        chart.update();
    })
}

function chart () {
	var can = $('#chart');
	var ctx = can.get(0).getContext("2d");
	var container = can.parent().parent(); // get width from proper parent
	var $container = jQuery(container);
	can.attr('width', $container.width()); //max width
	can.attr('height', $container.height()); //max height

	window.chart = new Chart(ctx, config);
    load();
}

$('#format').on('change', function () {
    load();
})