74 lines
2.1 KiB
JavaScript
74 lines
2.1 KiB
JavaScript
function updateChart(chartDivId, data, chartColors) {
|
|
var chart = findChart(chartDivId);
|
|
chart.dataProvider = data;
|
|
if (chartColors) {
|
|
chart.colors = chartColors;
|
|
}
|
|
chart.validateData();
|
|
checkEmptyData(chart);
|
|
};
|
|
function findChart(id) {
|
|
var matchedCharts = AmCharts.charts.filter(function (chart, index) {
|
|
return chart.div && chart.div.id === id;
|
|
})
|
|
if (matchedCharts.length) {
|
|
return matchedCharts[0];
|
|
}
|
|
};
|
|
function invalidateChartSize(chartId) {
|
|
var chart = findChart(chartId);
|
|
chart.invalidateSize();
|
|
};
|
|
function checkEmptyData(chart) {
|
|
chart.clearLabels();
|
|
|
|
if (chart.dataProvider === undefined || 0 == chart.dataProvider.length) {
|
|
if (chart.type != "pie") {
|
|
// set min/max on the value axis
|
|
//chart.valueAxes[0].minimum = 0;
|
|
//chart.valueAxes[0].maximum = 100;
|
|
|
|
// add dummy data point
|
|
var dataPoint = {
|
|
dummyValue: 0
|
|
};
|
|
dataPoint[chart.categoryField] = '';
|
|
chart.dataProvider = [dataPoint];
|
|
|
|
// add label
|
|
chart.addLabel("50%", '50%', 'The chart contains no data', 'center', 12, 0, 0.5);
|
|
|
|
// set opacity of the chart div
|
|
//chart.chartDiv.style.opacity = 0.5;
|
|
|
|
// redraw it
|
|
//chart.validateNow();
|
|
} else {
|
|
var dp = {};
|
|
dp[chart.titleField] = "";
|
|
dp[chart.valueField] = 1;
|
|
chart.dataProvider.push(dp)
|
|
|
|
var dp = {};
|
|
dp[chart.titleField] = "";
|
|
dp[chart.valueField] = 1;
|
|
chart.dataProvider.push(dp)
|
|
|
|
var dp = {};
|
|
dp[chart.titleField] = "";
|
|
dp[chart.valueField] = 1;
|
|
chart.dataProvider.push(dp)
|
|
|
|
// disable slice labels
|
|
//chart.labelsEnabled = false;
|
|
|
|
// add label to let users know the chart is empty
|
|
chart.addLabel("50%", "60%", "The chart contains no data", "center", 12, 0, 0.1);
|
|
|
|
// dim the whole chart
|
|
//chart.alpha = 0.3;
|
|
|
|
chart.validateNow();
|
|
}
|
|
}
|
|
}; |