Статьи

Как использовать jQuery с ZingChart

Веб-диаграммы, построенные на JavaScript, являются отличным способом добавить интерактивность вашим приложениям и сайтам, но если вы предпочитаете работать в jQuery , ваши возможности могут быть ограничены. Разработчикам часто приходится выбирать между удобством или возможностями. Все навороты в 100 строк кода или более простая версия в 30? Чтобы решить эту проблему, команда ZingChart разработала оболочку для использования своего API с синтаксисом jQuery, что позволяет разработчикам быстро создавать диаграммы с необходимой им интерактивностью.

Для каждой функции в API ZingChart существует вызов jQuery — все 169 из них. В этом уроке мы рассмотрим несколько из них в трех наиболее распространенных случаях использования:

  1. Манипулирование DOM
  2. Манипулирование диаграммой
  3. Использование данных AJAX

Вы можете просмотреть полную ссылку на странице Github-оболочки ZingChart jQuery .

Если у вас нет копии библиотеки ZingChart или оболочки jQuery, есть несколько вариантов:

Настройте свой HTML-файл, включив библиотеку ZingChart и любые дополнительные модули, которые вам нужны. Вам также нужно будет включить jQuery и, наконец, оболочку ZingChart jQuery. Оболочка совместима с jQuery версий 1.x и 2.x.

1
2
3
4
5
6
7
8
<!DOCTYPE html>
<html>
    <head>
        <meta charset=»utf-8″>
        <title>ZingChart jQuery Wrapper Demo</title>
        <script src=»http://cdn.zingchart.com/zingchart.min.js»></script>
        <script src=»https://code.jquery.com/jquery-2.1.3.min.js»></script>
        <script src=»http://cdn.zingchart.com/zingchart.jquery.min.js»></script>

Инициализация диаграмм теперь выполняется напрямую с помощью .zingchart() . Этот метод (и все остальные, которые принимают объект в качестве параметра) может получать данные диаграммы напрямую или по ссылке (в этом случае данные хранятся в переменной data1 ).

1
2
3
$(«#demo-1»).zingchart({
 data: data1
});
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//Init chart with data directly
           $(«#demo-2»).zingchart({
               data: {
                   type: «line»,
                   «background-color»:»#eff0f0″,
                   «tooltip»:{
                       «padding»:»20 20 20 20″,
                       «font-family»:»arial»,
                       «font-color»:»#666666″,
                       «border-radius»:5,
                       «shadow»:0
                   },
                   «scale-x»:{
                       «line-color»:»#666666″,
                       «tick»:{
                           «line-color»:»#666666″
                       },
                       «item»:{
                           «font-color»:»#666666″,
                           «font-family»:»arial»
                       }
                   },
                   «scale-y»:{
                       «line-color»:»#666666″,
                       «tick»:{
                           «line-color»:»#666666″
                       },
                       «item»:{
                           «font-color»:»#666666″,
                           «font-family»:»arial»
                       }
                   },
                   plot:{
                       aspect:»spline»,
                       «hover-state»:{
                           «shadow»:0
                       },
                       «marker»:{
                           «size»:8,
                           «border-width»:0,
                           «background-color»:»#00ccff»,
                           «shadow»:0
                       }
                   },
                   series: [
                       {
                           values: [3,4,10,2,6,5],
                           «line-color»:»#00ccff»,
                           «shadow»:0
                       }
                   ]
               }
           });

Первая демонстрация является примером манипулирования DOM с использованием одного из слушателей из оболочки, .nodeHover() . При наведении курсора на узел обновляется таблица под ним, что особенно полезно в ситуациях, когда необходимо предоставить дополнительную информацию о данных диаграммы за пределами самой диаграммы. Есть прослушиватели для всех объектов диаграммы, а также для определенных событий, таких как .feedStart() , .historyBack() и многие другие.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Bind an event listener to node hover
           $(«#demo-1»).nodeHover(
                
               // plotMouseOver function
               function(){
                   // Get all values for the hovered plot
                   var plotVals = $(this).getPlotValues({
                       plotindex:this.event.plotindex
                   });
                    
                   // Get hover node index
                   var idx = this.event.nodeindex;
                    
                   for (var i = 0; i<plotVals.length; i++) {
                       // Set each table elem equal to the cooresponding node
                       $(«#table-1 td»).eq(i).text(plotVals[i])
                       // Highlight the corresponding hovered node in the table
                       $(«#table-1 td»).eq(idx).addClass(«hover»);
                   }
               },
                
               // plotMouseOut function
               function(){
                   // Reset the table text
                   $(«#table-1 td»).each(function(){
                       $(this).text(«—«).removeClass(«hover»);
               });
           });

Взгляните на демо, чтобы увидеть, что это дает нам .

Второй график демонстрирует манипуляцию с обратным графиком через DOM. Используя обычный jQuery, мы помещаем входные слушатели на набор ползунков. Входные данные .setNodeValue() преобразуются в int и передаются .setNodeValue() для соответствующего узла.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
$(«input[type=’range’]»).each(function(idx){
                
               // Bind input events to each slider
               $(this).on(«input»,function(){
                   // Get the value of each slider on input events
                   var newVal = parseInt($(this).val());
                   // Set the value of the corresponding node to the slider’s new value
                   $(«#demo-2»).setNodeValue({
                       plotindex:0,
                       nodeindex:idx,
                       value: newVal
                   })
               });
           });

Взгляните на демо на Codepen, чтобы увидеть, что это дает нам.

Загрузка новых данных совсем несложно. После успешного запроса .get передайте результаты с помощью одного из множества методов установки, таких как .appendSeriesData() , .setSeriesValues() , .modify() , .setData() и т. Д. В приведенном ниже примере мы используем .setSeriesValues() для передачи нового массива значений, возвращаемых из нашего вызова AJAX.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
// Bind a click event to the button
           $(«button»).click(function(){
                
               // Issue a get request
               $.get( ‘https://api.myjson.com/bins/530az’, function() {})
                
               // Upon a successful get request…
               // (notice we haven’t even touched the ZingChart API yet)
               .done(function(res){
                    
                   // Store the new data in a variable (totally optional)
                   var newData = res.data;
                    
                   // Set the series values equal to the newData
                   $(«#demo-3»).setSeriesValues({
                       «values»: [newData]
                   });
                    
                   // Tada!
               });
           });

Опять же, взгляните на демоверсию Codepen, чтобы увидеть, что у нас сейчас есть.

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

1
$(«#myChart»).set3dView({«y-angle»:10}).resizeChart({«width»:600,»height»:400});

Полный демонстрационный файл доступен для скачивания.

Это был очень быстрый прогон, демонстрирующий, как использовать jQuery для ZingChart. С этими основами вы сможете продвигать свои собственные графики намного дальше! Покажите нам свои примеры и не стесняйтесь спрашивать отзывы в комментариях.