Статьи

Добавьте временную шкалу на свой сайт с помощью Google Charts

Чтобы привлечь внимание читателя, рекомендуется отображать наборы данных в виде диаграмм вместо таблиц. Если вы говорите о многих событиях в своем блоге, отображение этих событий в хронологическом порядке на временной шкале будет более эффективно и интересно передавать сообщение.

В этом уроке я научу вас, как использовать Google Charts для добавления профессионально выглядящих графиков времени на ваши веб-страницы.

Загрузка Google Charts

Поскольку я собираюсь использовать Google API Loader для загрузки Google Charts, я добавлю следующий тег script в заголовок страницы, которая будет отображать временную шкалу:

 <script type="text/javascript" src="https://www.google.com/jsapi"></script> 

Теперь я могу использовать метод google.load для загрузки любого API Google. Для Google Charts мне нужно загрузить API визуализации вместе с пакетом timeline API. Я также добавлю обратный вызов, чтобы узнать, когда API будет готов.

 google.load('visualization', '1.0', { packages:["timeline"] }); google.setOnLoadCallback(start); function start() { /* This method will be called when the Visualization API has been loaded. */ } 

Добавление элемента для хранения диаграммы

API Charts нужен HTML-элемент для рисования своих диаграмм. Я добавлю пустой div в тело страницы и назову его timelineHolder . Я могу установить размеры вашей временной шкалы, установив свойства width и height в CSS. Давайте создадим временную шкалу с размерами 600 на 300 пикселей.

 .timelineHolder { width: 600px; height: 300px; } 

Определение данных временной шкалы

В этом уроке давайте представим год в жизни воображаемого путешественника по имени Алиса на временной шкале. Вот что Алиса сделала в этом году:

  • С 15 января по 26 февраля она была в Берлине
  • С 20 апреля по 1 июля она была в Париже
  • С 21 июля по 30 августа она была в Мадриде
  • Со 2 ноября по 5 декабря она была в Перте

Эта информация должна быть преобразована в DataTable . Наш DataTable будет иметь четыре столбца:

  • метка
  • Место
  • Дата начала
  • Дата окончания

Создайте новую функцию с именем prepareDataTable() для создания и инициализации DataTable . Мы должны использовать метод addColumn чтобы добавить каждый из четырех столбцов. После добавления столбцов используйте метод addRow чтобы добавить все четыре поездки. Помните, что даты должны быть представлены как объекты Date а месяцы нумеруются 0-11 (вместо 1-12). Вот как должна выглядеть наша функция:

 function prepareDataTable() { var dataTable = new google.visualization.DataTable(); // Add columns dataTable.addColumn({ type: 'string', id: 'Label'}); dataTable.addColumn({ type: 'string', id: 'Place'}); dataTable.addColumn({ type: 'date', id: 'Arrival Date'}); dataTable.addColumn({ type: 'date', id: 'Departure Date'}); //Add Rows dataTable.addRow(['1', 'Berlin', new Date(2014, 0, 15), new Date(2014, 1, 26)]); dataTable.addRow(['2', 'Paris', new Date(2014, 3, 20), new Date(2014, 6, 1)]); dataTable.addRow(['3', 'Madrid', new Date(2014, 6, 21), new Date(2014, 7, 30)]); dataTable.addRow(['4', 'Perth', new Date(2014, 10, 2), new Date(2014, 11, 5)]); return dataTable; } 

Обратите внимание, что первый столбец DataTable всегда обрабатывается API- DataTable как метка строки.

Рисование временной шкалы

Теперь, когда данные были преобразованы в формат, понятный API Google Charts, мы можем нарисовать график. Для этого мы создадим экземпляр класса Timeline , а затем передадим DataTable его методу draw . Мы обновим метод start для этого:

 function start() { // Pick the HTML element var timelineHolder = document.getElementById("timelineHolder"); // Create an instance of Timeline var timeline = new google.visualization.Timeline(timelineHolder); var dataTable = prepareDataTable(); // Draw the timeline timeline.draw(dataTable); } 

На этом этапе, если вы загрузите свою страницу с помощью браузера, вы увидите временную шкалу, которая выглядит следующим образом:

Настройка временной шкалы

Изменение внешнего вида временной шкалы включает в себя создание объекта JSON, который содержит одно или несколько имен свойств вместе с вашими предпочтительными значениями для этих свойств.

Например, если мы хотим изменить цвет фона временной шкалы на #ffbb33 и использовать один цвет для всех поездок, скажем, #669900 , нам нужно будет создать следующий объект JSON:

 var config = { backgroundColor: '#ffbb33', timeline: { singleColor: '#669900' } } 

Затем мы передаем этот объект в качестве дополнительного параметра в метод draw временной шкалы:

 timeline.draw(dataTable, config); 

При обновлении нашей страницы в браузере наша временная шкала будет выглядеть следующим образом:

Полный список всех доступных параметров конфигурации см. В документации по временной шкале Google Charts .

Возможно, вы заметили, что поездки размещаются одна под другой, каждая из которых находится на отдельной строке / строке. Это потому, что мы использовали разные метки для каждой строки. Чтобы поместить все поездки в одну строку, вам нужно изменить первый столбец DataTable таким образом, чтобы все четыре записи имели одинаковую метку строки.

В нашем примере мы будем использовать путешествия Алисы в качестве метки для всех строк. Мы обновим нашу функцию prepareDataTable чтобы вызовы addRow выглядели так:

 dataTable.addRow(['Alice\'s Travels', 'Berlin', new Date(2014, 0, 15), new Date(2014, 1, 26)]); dataTable.addRow(['Alice\'s Travels', 'Paris', new Date(2014, 3, 20), new Date(2014, 6, 1)]); dataTable.addRow(['Alice\'s Travels', 'Madrid', new Date(2014, 6, 21), new Date(2014, 7, 30)]); dataTable.addRow(['Alice\'s Travels', 'Perth', new Date(2014, 10, 2), new Date(2014, 11, 5)]); 

Сроки теперь будут выглядеть более компактно:

Добавление интерактивности

Наш график уже интерактивен. При наведении курсора на любую поездку отображается всплывающая подсказка с автоматически сгенерированным содержимым.

Чтобы добавить пользовательское поведение при щелчке элемента данных, мы должны добавить обработчик для события select с google.visualization.events.addListener метода google.visualization.events.addListener . В обработчике мы можем использовать метод getSelection чтобы определить, какой элемент был нажат.

Вот пример обработчика, который отображает текущее выбранное место. Вы можете добавить его в конец функции start после вызова метода draw :

 google.visualization.events.addListener(timeline, 'select', function() { alert(dataTable.getValue(getSelection()[0].row, 1); }); 

Вывод

В этом руководстве я показал вам, как использовать Google Charts для отображения событий в хронологическом порядке на временной шкале, которую можно легко добавить на любую веб-страницу. Я также показал вам, как настроить график и сделать его интерактивным. Чтобы узнать больше о временной шкале, обратитесь к документации временной шкалы.