Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вставить данные в highcharts? (https://javascript.ru/forum/misc/64360-kak-vstavit-dannye-v-highcharts.html)

laimas 07.08.2016 01:06

Цитата:

Сообщение от user71
хорошо где в доках описаны методы обработки?

Сперва получайте данные уже отсортированные SQL запросом, а получить из них родителей->потомков уже будет не сложно.

user71 07.08.2016 01:10

laimas,
несколько ajax запросов? или вы имеет ввиду просто сделать сортировку по именам в пределах одного запроса. т.е на выходе будет json а имена по порядку.

laimas 07.08.2016 01:19

В чем у вас проблема - расфасовать данные или ...? Если первое, то запрос должен возвращаться отсортированным согласно их принадлежности, чего там у вас name-time-count? Ну так получайте, а кроме как проходом в цикле этих данных нельзя (хотя можно и пересечением массивов такое сотворить) получить из них name=>[[time, count], [time, count], ...].

рони 07.08.2016 02:23

user71,
какими данными оперировать из вашего примера #19 ?
в примере ниже данные продублированы на следующий день.
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/highcharts-more.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script>
$(function () {
var data = [{"ind":1,"create_at":"2016-07-29T11:40:23.000Z","name":"user1","counter":5,"counter2":8},{"ind":2,"create_at":"2016-07-29T11:40:23.000Z","name":"user2","counter":2,"counter2":9},{"ind":3,"create_at":"2016-07-29T11:40:23.000Z","name":"user3","counter":0,"counter2":4},{"ind":4,"create_at":"2016-07-29T11:40:23.000Z","name":"user4","counter":2,"counter2":0},{"ind":1,"create_at":"2016-07-30T11:40:23.000Z","name":"user1","counter":5,"counter2":8},{"ind":2,"create_at":"2016-07-30T11:40:23.000Z","name":"user2","counter":2,"counter2":9},{"ind":3,"create_at":"2016-07-30T11:40:23.000Z","name":"user3","counter":0,"counter2":4},{"ind":4,"create_at":"2016-07-30T11:40:23.000Z","name":"user4","counter":2,"counter2":0}]


var obj = data.reduce(function(a, b) {
    if (!a[b.name]) a[b.name] = [];
    a[b.name].push([+new Date(b.create_at), +Math.min(+b.counter, +b.counter2), +Math.max(+b.counter, +b.counter2)]);
    return a
}, {});
data = Object.keys(obj).map(function(key) {
    return {
        name: key,
        type: "arearange",
        data: obj[key].sort(function(a, b) {
            return b[0] - a[0]
        })
    }
});


    $('#container').highcharts({
        xAxis: {
            type: 'datetime'
        },
       series: data

    });
});
</script>
</head>
<body>

<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
</body>
</html>

user71 07.08.2016 12:07

рони,
Благодарю за интересный пример кода. А может ли это сделать сам highcharts? Таким вот образом всегда приходится поступать в javascript или это просто неудачное стечение обстоятельств? Я про преобразовпния массива

рони 07.08.2016 15:18

user71,
мне вас сложно понять, все ответы вы уже получили ранее.

user71 07.08.2016 17:20

рони,
А этот код можно объявить как структуру или прототип функции или только непосредственно вставить в ajax?

user71 07.08.2016 17:22

https://msdn.microsoft.com/ru-ru/library/64973255.aspx

рони 07.08.2016 17:35

user71,
я не знаю C++, поэтому не понимаю о чём вы говорите, особенно не понимаю какая проблема сформировать нужный массив на сервере.
код ниже это всё чем я могу вам ещё помочь
$(function() {
$.getJSON(url, function(data) {

var obj = data.reduce(function(a, b) {
    if (!a[b.name]) a[b.name] = [];
    a[b.name].push([+new Date(b.create_at), +Math.min(+b.counter, +b.counter2), +Math.max(+b.counter, +b.counter2)]);
    return a
}, {});
data = Object.keys(obj).map(function(key) {
    return {
        name: key,
        type: "arearange",
        data: obj[key].sort(function(a, b) {
            return b[0] - a[0]
        })
    }
});


    $('#container').highcharts({
        xAxis: {
            type: 'datetime'
        },
       series: data

    });

  });

});

user71 07.08.2016 20:42

Жаль. Все равно спасибо вам огромное. Вы мне очень помогли.
Я на js всего лишь вторую неделю пытаюсь писать может еще не знаю как что называется -) вот вы меня и не поймете ни как.


Часовой пояс GMT +3, время: 09:43.