Любая система содержит большое количество данных. Зачастую, несет польза не сколько фактические цифры, сколько отношение между ними: разница или пропорция. Человек, читая обычные цифры, затрудняется извлечь из них эти полезные сведения. На помощь приходят диаграммы.

Компонент as.chart основан на http://www.chartjs.org/docs/#scales-linear-scale и возможностях as.js и as.sys.js. Реализация функционала, основанного на данном компоненте диаграмм, достаточно выполнить три вещи:

  1. Сделать html контейнер для диаграмм
  2. Написать серверную часть
  3. Написать скрипт обновления диаграммы

 

HTML -контейнер объявляется просто:

<canvas id="myChart" width="400" height="400"></canvas>

дополнительно объявляется кнопка которая запускает перерисовку:

<button class='chLoad'> RELOAD </button>

 

Серверная часть генерирует данные и выдает структуру JSON которую принимает компонент chart. Структура состоит из labels и datasets. В labels передается массив надписей по оси Х, в datasets передается массив массивов данных. То есть первые элементы из массивов данных будут соответствовать первому столбцу диаграммы.

public ActionResult GetBasicChart()
{
	var random = new Random();
	var i = 1;
	return Json(new
	{
		result = true,
		labels = items.Select(x => {
			return "#" + i++;
		}),
		datasets = new[] { 
			new {
				backgroundColor = "rgba(0, 220, 0, 0.5)",
				label = "GetBasicChart",
				data = System.Linq.Enumerable.Range(1,15).Select(x => 310000 + random.Next(9999) * 10).ToArray()
			},
			new{
				backgroundColor = "rgba(220, 100, 0, 0.5)",
				label = "GetBasicChart-2",
				data = System.Linq.Enumerable.Range(1,15).Select(x => 280000 + random.Next(9999) * 10).ToArray()
			}
		}
	}, JsonRequestBehavior.AllowGet);
}

 

Скрипт для обновления диаграммы состоит из серверного урл, jQuery селектора для контейнера, и параметров диаграммы (столбчатая, линейная итд).

 $(".chLoad").click(function(e) {
        e.preventDefault();
        as.chart.loadChart({
        	url: '@Url.Action("GetBasicChart", "Charts")',
            cont: $("#myChart"),
            chartParams: {
                type: 'bar'
            }
        })
    });

Теперь, по нажатию кнопки RELOAD, из сервера придут новые сгенерированные данные и отобразятся на диаграмме.

 

 

as.chart.js

as.chart.js