[
{ month: 'Jan 2012', series1: 800, series 2: 500 },
{ month: 'Feb 2012', series1: 700, series 2: 700 },
{ month: 'Mar 2012', series1: 900, series 2: 300 },
{ month: 'Apr 2012', series1: 800, series 2: 500, series3: 100 },
{ month: 'May 2012', series3: 200 },
{ month: 'Jun 2012', series3: 300 }
]
Notice that the data for series 3 doesn't start showing up until the April 2012 object. I try and create a line chart with the data above by doing the following:
$('#Chart').kendoChart({
theme: 'metro',
legend: { position: 'top' },
dataSource: { data: chartData},
seriesDefaults: {
type: 'line',
tooltip: {
visible: true,
font: '11px Trebuchet MS'
},
markers: { size: 6 },
missingValues: 'gap' // Should be the default value anyway
},
series: [
{
field: 'series1'
name: 'Series1'
},
{
field: 'series2',
name: 'Series2'
},
{
field: 'series3',
name: 'Series3'
}
],
categoryAxis: {
field: 'month',
labels: {
font: ".85em Trebuchet MS"
},
majorGridLines: { visible: false }
},
valueAxis: {
min: 0,
max: 100,
majorUnit: 20,
majorGridLines: {
color: '#e7e7e7'
}
}
});
But it crashes when loading the chart every time with the following javascript error:
- <error>
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._changekendo.dataviz.min.js:9
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._changekendo.dataviz.min.js:9
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
n.extend._onDataChanged
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend._process
-
o.extend._change
-
e.extend.proxy.g
-
w.extend.trigger
-
o.extend.push
-
n.extend._bindSeries
-
It obviously looks like it is hitting some infinite loop. I tried to add series3: 0 to the first row in my dataset to just see what would happen so my data set looked like:
[
{ month: 'Jan 2012', series1: 800, series 2: 500, series3: 0 },
{ month: 'Feb 2012', series1: 700, series 2: 700 },
{ month: 'Mar 2012', series1: 900, series 2: 300 },
{ month: 'Apr 2012', series1: 800, series 2: 500, series3: 100 },
{ month: 'May 2012', series3: 200 },
{ month: 'Jun 2012', series3: 300 }
]
That made the graph render but instead of having a gap for series3 for Feb 2012 and Mar 2012 it pushed the series3 values for Apr 2012 to Feb 2012, May 2012 to Mar 2012, and Jun 2012 to Apr 2012. Each series3 value was shifted down two months and no gaps were present.
Am I missing something? I would like series to to not start until it reaches data which should start in the April 2012 row.
Thanks for any suggestions in advance!
8 Answers, 1 is accepted

Thank you for reporting this problem. We were able to reproduce it easily thanks to your detailed notes.
We've already implemented a fix and it'll be available in the next internal build. It will be available for download by Friday.
As a token of gratitude for your involvement your Telerik points have been updated.
Tsvetomir Tsonev
the Telerik team


Can you please share more details about your scenario? What does the data look like?
Upgrading to the latest internal build should resolve the problem with undefined values that Nick was experiencing.
Tsvetomir Tsonev
the Telerik team

The data will dynamically generate series by grouping the data by year and displaying the month values within that year.
Data points: month, year, value
I currently have this working but in a way that may not be ideal. To generate dynamic series I am doing something simliar to this:
http://www.kendoui.com/forums/ui/chart/json-format-for-multiple-series.aspx
I basically return a list of series data (already grouped by year) and manually create the series array. To get the missing data points effect, I am using .NET, I make the data point value nullable type which in turn prevents it from plotting. (I initially tried zero out missing points but they would display).
This seems to work but I was wondering if there was a more efficient/maintainable way to get dyanmic series data into the line/bar chart.
Ideal situation:
Instead of returning a List<SeriesData> in a JSON GET request, I return back a List<CustomDataObjects> where CustomDataObjects contain the my data points (Month, Year, Value) and I just set up field properties within the chart initialization code.
I've attached my sample javascript.

Please help me ASAP.
Thanks
Apologies for taking so long to respond. Your current approach is fine, but it can probably be simplified with some help from the data source.
I've prepared a little sample that shows how to do the filtering in the data source. It is also possible to plot grouped data, it seems that you're already doing the grouping on the server.
Please feel free to direct additional questions to separate forum threads / support tickets.
Tsvetomir Tsonev
the Telerik team