Итак, моя цель здесь состояла в том, чтобы получить средние данные за неделю, перечисленные вместе с ежедневными данными. Хотя я довольно долго боролся, решение было довольно простым.
В параметрах диаграммы мне нужно было использовать дату и время:
xAxis: {
type: 'datetime',
dateTimeLabelFormats: {
month: '%e. %b',
year: '%b'
}
}
После того, как это было на месте, мне пришлось отформатировать свои даты (был отформатирован в mysql, поэтому ГГГГ-ММ-ДД/ГГГГ-WW). Моим самым большим препятствием здесь было то, что данные были 1) динамическими из конечной точки API 2) разные точки данных (неделя против дней)
Поскольку я мог контролировать конечную точку API, я мог вносить изменения в даты, чтобы избежать потери производительности на стороне клиента. Данные должны быть в метке времени w/ms, и для этого я использовал momentjs. Пример ниже для недель:
let d = moment(i.date, 'YYYY-WW').format('YYYY-MM-DD')
let dateFormat = new Date(d);
let date = moment(d).day(parseInt(goToDay)).format('YYYY-MM-DD').split('-')
let utcDate = Date.UTC(parseInt(date[0]), parseInt(date[1]) - 1, parseInt(date[2]))
Дни были легче:
let date = i.date.split('-');
let utcDate = Date.UTC(date[0], date[1] - 1, date[2])
После этого нужно было только отправить данные обратно клиенту и зациклить их так (обратите внимание, что я использую angular, процедура для highcharts без angular будет немного другой):
$scope.ChartConfig.series = [];
$scope.ChartConfig.series.push({
name: 'Daily',
title: 'Daily',
data: data.daily.data
})
$scope.ChartConfig.series.push({
name: 'Weekly',
title: 'Weekly',
data: data.weekly.data
});
Это идеально отображает диаграммы и именно так, как я хочу:
person
yusijs
schedule
26.08.2016