Ниже приведена моя функция, которая рисует диаграмму с использованием google.visualization.data.group()
и google.visualization.data.sum
.
См. Скрипку для рабочего примера: https://jsfiddle.net/xmcqyuqc/7/
function drawChart() {
var urlString = '../Logs/clnLogsSelectingEvents?grade=All&SC=1&CauseSC=3&CutOffDate=01/01/2017';
$.ajax({
type: 'GET',
dataType: 'json',
contentType: "application/json",
//url: urlString, //I have commented out but this is my original source.
success: function (result) {
//Create DataTable
var data = new google.visualization.DataTable();
//Add Columns
data.addColumn('string', 'CW');
data.addColumn('string', 'Business Division');
data.addColumn('string', 'Product');
data.addColumn('number', 'Cost');
data.addColumn('number', 'Quantity');
data.addColumn('number', 'Age (d)');
data.addColumn('string', 'Actual State');
//Add Rows
var dataArray = [];
//replaced with manual sample data
for (i = 0; i < 5; i++) {
dataArray.push([
'CW' + i,
'GS',
'line' + i,
10,
99,
99,
'state' + i
]);
}
data.addRows(dataArray);
//Create Data View
var view = new google.visualization.DataView(data);
view.setColumns([1, 3]);
//Create Data Aggregation
var groupView = google.visualization.data.group(view, [{
column: 0,
type: 'string'
}], [{
column: 1,
aggregation: google.visualization.data.sum,
type: 'number'
}]);
//Options
var options = {
max: '150' ///I want to set this based on the result of the aggregation
};
//Instantiate and draw chart, passing in options.
var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
chart.draw(groupView, options);
} //END success: function (result) {
}); //END $.ajax({
} //END function drawChart()
Я установил максимальный жесткий код 150.
var options = {
max: '150'
};
Я хочу установить max в вычисленное значение в 3 раза по агрегированной сумме.
Пример: google.visualization.data.sum
возвращает 50 * 3 = 150 максимальное значение
Я не знаю, как это сделать, и не может получить переменную, установленную в значение google.visualization.data.sum
которое рассчитывается агрегированием.
Поблагодарите за помощь гуру! Спасибо!
google.visualization.data.group
возвращает обычный класс DataTable
используйте метод диаграммы getValue
чтобы получить значение в таблице групп
getValue(rowIndex, colIndex)
таблица групп в столбце возвращает одну строку,
поэтому используйте следующее, чтобы знать значение...
groupView.getValue(0, 1)
см. следующий рабочий фрагмент...
google.charts.load('current', {
callback: drawChart,
packages: ['gauge']
});
function drawChart() {
//Create DataTable
var data = new google.visualization.DataTable();
//Add Columns
data.addColumn('string', 'CW');
data.addColumn('string', 'Business Division');
data.addColumn('string', 'Product');
data.addColumn('number', 'Cost');
data.addColumn('number', 'Quantity');
data.addColumn('number', 'Age (d)');
data.addColumn('string', 'Actual State');
//Add Rows
var dataArray = [];
//replaced with manual sample data
for (i = 0; i < 5; i++) {
dataArray.push([
'CW' + i,
'GS',
'line' + i,
10,
99,
99,
'state' + i
]);
}
data.addRows(dataArray);
//Create Data View
var view = new google.visualization.DataView(data);
view.setColumns([1, 3]);
//Create Data Aggregation
var groupView = google.visualization.data.group(view, [{
column: 0,
type: 'string'
}], [{
column: 1,
aggregation: google.visualization.data.sum,
type: 'number'
}]);
//Options
var options = {
max: groupView.getValue(0, 1)
};
//Instantiate and draw chart, passing in options.
var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
chart.draw(groupView, options);
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>