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

Компонент 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

 

Руслан Раянов

Recent Posts

Как планировать проект. Управление изменениями IT-проекта

Поговорим о планировании возможностей будущего продукта, неверных шагах, заблуждениях, которые вы можете упустить при проработке…

6 часов ago

Что учесть при обеспечении информационной безопасности сайта

https://falconspace.ru/blog/kak-zashchitit-sayt--obespechenie-informacionnoy-bezopasnosti-sayta - Как защитить сайт? Обеспечение информационной безопасности сайта

1 день ago

Cтандартизация задач сотрудника через личный кабинет #личныйкабинет

https://falconspace.ru/blog/sozdanie-arm-dlya-sotrudnikov--razrabotka-lichnogo-kabineta-dlya-sotrudnikov - Как сделать АРМ сотрудника. Личный кабинет сотрудника на сайте

3 дня ago

Контроль доступа к ресурсам информационной системы

https://falconspace.ru/blog/sozdanie-arm-dlya-sotrudnikov--razrabotka-lichnogo-kabineta-dlya-sotrudnikov - Как сделать АРМ сотрудника. Личный кабинет сотрудника на сайте

4 дня ago

Что дает личный кабинет для руководства компании?

https://falconspace.ru/blog/sozdanie-arm-dlya-sotrudnikov--razrabotka-lichnogo-kabineta-dlya-sotrudnikov - Как сделать АРМ сотрудника. Личный кабинет сотрудника на сайте

5 дней ago

Почему управление дистанционно вызывает опасение? В сети куча мошенников

https://falconspace.ru/blog/pro-udalennoe-vzaimodeystvie-zakazchika-i-podryadchika - Удаленное взаимодействие между заказчиками и разработчиками

1 неделя ago