I have page which displays chart correctly, when the user selects a radio button triggers a postback and gets more data from the server correctly. I get 2 lines appear on the chart.
In order to spend this up I tried moving all this client side, so return all the series data to the page. I worked out some JavaScript to hide or show the series data. Additionally I hide the additional Y Axis and attempted to show these in the java script but setting:
chart._plotArea.axes[axesIndex].options.visible = true
Has no effect.
I have attached to images one showing all the Y Axis on page load. The other hidden and I selected a radio button the series appears but does not show the Y Axis.
The javascript function is below.
6 Answers, 1 is accepted
function
flightProfileShowSeries(id, parameterName, defaultParameterName) {
try
{
debugger;
var
charts = document.getElementsByClassName(
"GSNRadGraph"
);
if
(charts !=
null
) {
var
chart = $find(charts[0].id)._chartObject;
if
(chart !=
null
) {
// Show and hide the relavent series
for
(
var
seriesIndex = 0; seriesIndex < chart.options.series.length; seriesIndex++) {
var
name = chart.options.series[seriesIndex].name;
if
((name.indexOf(defaultParameterName) > -1) ==
false
) {
if
(name.indexOf(parameterName) > -1) {
chart.options.series[seriesIndex].visible =
true
;
}
else
{
chart.options.series[seriesIndex].visible =
false
;
}
}
}
// Show or hide the relavant Y Axis
for
(
var
axesIndex = 0; axesIndex < chart._plotArea.axes.length; axesIndex++) {
try
{
var
axisName = chart._plotArea.axes[axesIndex].options.title.text;
if
(axisName !=
null
) {
if
(axisName.indexOf(parameterName) > -1) {
chart._plotArea.axes[axesIndex].options.visible =
true
;
}
else
{
chart._plotArea.axes[axesIndex].options.visible =
false
;
}
}
}
catch
(e) {
}
}
// Redraw
chart.redraw();
chart.refresh();
}
}
}
catch
(e) {
}
}
Hello Rick,
Here you are a simple example showing how to show/hide an additional Y axis by using client-side code:
<
telerik:RadHtmlChart
runat
=
"server"
ID
=
"LineChart"
Width
=
"800"
Height
=
"500"
>
<
PlotArea
>
<
Series
>
<
telerik:LineSeries
>
<
SeriesItems
>
<
telerik:CategorySeriesItem
Y
=
"15"
/>
<
telerik:CategorySeriesItem
Y
=
"23"
/>
</
SeriesItems
>
</
telerik:LineSeries
>
</
Series
>
<
XAxis
>
<
AxisCrossingPoints
>
<
telerik:AxisCrossingPoint
Value
=
"0"
/>
<
telerik:AxisCrossingPoint
Value
=
"0"
/>
</
AxisCrossingPoints
>
</
XAxis
>
<
AdditionalYAxes
>
<
telerik:AxisY
Name
=
"AdditionalAxis"
>
</
telerik:AxisY
>
</
AdditionalYAxes
>
</
PlotArea
>
</
telerik:RadHtmlChart
>
<
a
href
=
"#"
onclick
=
"showHideYaxis(true); return false;"
>show</
a
>
<
a
href
=
"#"
onclick
=
"showHideYaxis(false); return false;"
>hide</
a
>
<
script
>
function showHideYaxis(toShow) {
var kendoChart = $find("LineChart").get_kendoWidget();
kendoChart.options.valueAxis[1].visible = toShow;
kendoChart.refresh();
}
</
script
>
In a similar way you can add, remove or alter further the chart's rendering. Regards,
Ianko
Telerik by Progress
Thank you that worked.
I have a slight oddity I still have space allocated to the Y Axis on the left, please see attached image.
Hello Rick,
If you have more than one additional Y axis, this empty space might be reserved for one that it is invisible. If this is so, the only solution is to instead toggle the visibility of the Y axis to entirely add them and remove the programmatically. This, however, is slight;y more complex. But you should be able to achieve it in a similar way by removing and adding the additional Y axis in the options of the Kendo Widget: http://docs.telerik.com/kendo-ui/api/javascript/dataviz/ui/chart#configuration-categoryAxis.axisCrossingValue.
Regards,Ianko
Telerik by Progress
This sounds like a bug, if something is not visible it should not still allow space for it to be displayed. As its not visible.
As I am setting the chart up in code behind and using a DataTable I can't see it being possible to do add and remove the axis
Hello Rick,
No, this is not a bug, but a normal behavior for SVG elements. You can consider it as if you working with a display: none rule.
As for adding and removing the Y axis, yes, this is not an easy task to accomplish and I currently I cannot think of another alternative.
Regards,Ianko
Telerik by Progress