08.11.2020, 10:50
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 765
|
|
Вроде нашёл нужную опцию.(Боюсь сглазить)
var plotOptions = {
series: {
connectNulls: true
}
};
Потестю пока)
|
|
08.11.2020, 11:14
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,068
|
|
ureech,
так допишите код выше name, data, connectNulls: true
res.forEach(({title: name,sum: data}) => name in keys || (data = keys[name] = res.map(({title, sum}) => title == name ? +sum : null), series.push({
name, data, connectNulls: true
})));
|
|
08.11.2020, 11:19
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,068
|
|
ureech,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/data.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://code.highcharts.com/modules/accessibility.js"></script>
</head>
<body>
<div class="col-md-6"><div id = "container-line"></div></div><div id="slider"></div>
<script>
Highcharts.setOptions({
colors: ['#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4']
});
res = [
{
"pubdate": "2020-10-29",
"sum": 40,
"title": "Молоко",
"cat_title": "Еда",
"rate": "1.00"
},
{
"pubdate": "2020-10-31",
"sum": 40,
"title": "Молоко",
"cat_title": "Еда",
"rate": "1.00"
},
{
"pubdate": "2020-11-01",
"sum": 900,
"title": "Бензин",
"cat_title": "Авто",
"rate": "1.00"
},
{
"pubdate": "2020-11-02",
"sum": 40,
"title": "Молоко",
"cat_title": "Еда",
"rate": "1.00"
},
{
"pubdate": "2020-11-03",
"sum": 700,
"title": "Бензин",
"cat_title": "Авто",
"rate": "1.00"
},
{
"pubdate": "2020-11-04",
"sum": 40,
"title": "Молоко",
"cat_title": "Еда",
"rate": "1.00"
},
{
"pubdate": "2020-11-06",
"sum": 400,
"title": "Бензин",
"cat_title": "Авто",
"rate": "1.00"
},
{
"pubdate": "2020-11-07",
"sum": 40,
"title": "Молоко",
"cat_title": "Еда",
"rate": "1.00"
}
]
//if(res === null) alert('Нет данных');
dte = res.map(x => x.pubdate);
valute = 'руб';
var chart = {
type:'line'
};
var title = {
style: {
color: '#63a583'
},
text: ''
};
var subtitle = {
style: {
color: '#513e5c',
fontSize: '15px'
},
text: valute + '.'
};
var xAxis = {
categories: dte
};
var yAxis = {
title: {
text: 'Сумма (' + valute + '.)'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
};
var tooltip = {
valueSuffix: valute + '.'
};
var legend = {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
};
var keys = {},
series = [];
res.forEach(({title: name,sum: data}) => name in keys || (data = keys[name] = res.map(({title, sum}) => title == name ? +sum : null), series.push({
name, data, connectNulls: true
})));
console.log(dte)
var json = {};
json.chart = chart;
json.title = title;
json.subtitle = subtitle;
json.xAxis = xAxis;
json.yAxis = yAxis;
json.tooltip = tooltip;
json.legend = legend;
json.series = series;
$('#container-line').highcharts(json);
</script>
</body>
</html>
|
|
08.11.2020, 11:22
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 765
|
|
Да не, я как опцию в общий код вставил.
https://jsfiddle.net/ureech/y89daesL/17/
Пусть по феншую будет)))
Последний раз редактировалось ureech, 08.11.2020 в 11:25.
|
|
08.11.2020, 11:29
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 765
|
|
Спасибо вам большое. Пойду дальше мудрить).
|
|
10.11.2020, 14:16
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 765
|
|
Привет.Возник вопрос по коду.
res.forEach(
({title: name,sum: data}) => name in keys || (data = keys[name] = res.map(({title, sum}) => title == name ? +sum : ''), series.push({name, data}))
);
В массиве res[] кроме title есть ещё пару ключей,которые я хотел бы использовать вместо title в данном цикле. Можно ли как использовать,скажем,абстра ктную переменную var item вместо title и присваивать ей названия ключей массива,которые я буду передавать в ф-цию? Ну или как то по другому.Не знаю. Думаю суть понятна).
|
|
10.11.2020, 14:40
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,068
|
|
ureech,
var nnn = 'title';
res.forEach(({[nnn] : name,sum: data}) => name in keys || (data = keys[name] = res.map(({[nnn] : vvv, sum}) => vvv == name ? +sum : null), series.push({
name, data, connectNulls: true
})));
|
|
10.11.2020, 14:58
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 765
|
|
Блин, порой кажется,ну вот уловил суть,а потом доходит,что ни хрена)))
Спасибо. А то хотел через if уже делать).
|
|
|
|