一个COMBOCHART,通过控制和仪表板进行控制
one COMBOCHART that control by Controls and dashboards
我可以看到我的(var control=new google.visionation.ControlWrapper({controlType:'ChartRangeFilter',containerId:'control',),但我看不到我的(varComboChart=new google.Visionation.SchartWrapperUne chaîne vide aététransmiseà«getElementById())
这是我的代码:
!function($) {
//google.load('visualization', '1.0', {'packages':['table']});
google.load('visualization', '1', {packages: ['corechart']});
google.load('visualization', '1.1', {packages: ['controls']});
google.setOnLoadCallback(initialize);
function populateSelectWithOptions(target, data)
{
console.log(data, typeof(data));
var $select =$("#"+target);
$select.empty();
for(var i=0; i <data.length;i++){
$select.append($("<option>").attr("value", data[i]).text(data[i]));
}
$select.prop('disabled', false);
$select.change(function (){
var e = document.getElementById("groupe");
var strUser = e.options[e.selectedIndex].value;
//alert(strUser);
sendQuery(strUser)
});
// baraie inke vaghti bara avalin bar safe lod mishavad dar chekbox chizi vojod dashte bashad
$select.trigger('change');
//console.log(populateSelectWithOptions(target, data));
};
function sendQuery(cityName) {
// You can manipulate the variable response
// Success!
var query = new google.visualization.Query('http://api.XXX.com/XXX/datasource?table='+cityName);
query.setQuery("select (cost_reportings_timestamp), sum (cost_reportings_cost) group by (cost_reportings_timestamp) pivot ecoadmin_zone_name");
//Send the query with a callback function.
query.send(drawChart);
//console.log(response);
}
function drawChart(response) {
if (response.isError()) {
alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
return;
}
var data = response.getDataTable();
console.log(data);
var control = new google.visualization.ControlWrapper({
controlType: 'ChartRangeFilter',
containerId: 'control',
options: {
// Filter by the date axis.
filterColumnLabel: 'cost_reportings_timestamp',
ui: {
chartType: 'LineChart',
chartOptions: {
chartArea: {
width: '90%'
},
hAxis: {
baselineColor: 'none'
}
},
// Display a single series that shows the closing value of the stock.
// Thus, this view has two columns: the date (axis) and the stock value (line series).
chartView: {
columns: [0,1]
}
}
},
//Initial range: 2010 to 2021
state: {
range: {
start: new Date(2012),
end: new Date(2019)
}
}
})
// Define a bar chart
var ComboChart = new google.visualization.ChartWrapper({
chartType: 'ComboChart',
containerId: 'ComboChart',
options: {
width: 400,
height: 300,
seriesType: 'bars',
isStacked:'True',
hAxis: {
minValue: 0,
maxValue: 60
},
chartArea: {
top: 0,
right: 0,
bottom: 0
},
},
view: {columns: [0, 1, 2, 3]}
});
// Create the dashboard.
var dashboard = new google.visualization.Dashboard(document.getElementById('dashboard')).
// Configure the slider to affect the bar chart
bind([control], [ComboChart]).
// Draw the dashboard
draw(data);
}
function initialize() {
var $newDiv = $('<div>').attr('id','ComboChart');
$('#ComboChart').append($newDiv);
$($newDiv).hide(); //hide the div here
// Replace the data source URL on next line with your data source URL.
// Specify that we want to use the XmlHttpRequest object to make the query.
getTable();
}
// baraie inke vaghti ro elemenha click mikonim piecharto ieshon bede
$("#groupe").change( function () {
$('#ComboChart').toggle(); //If it is visible hide it or vice versa
//..
});
function getTable() {
$.getJSON('call/json/mytables', {}, function (response){
console.log(response);
populateSelectWithOptions("groupe", response);
})
}
}(jQuery);
这似乎与Google Visualization API论坛上发布的问题重复(此处),但对于StackOverflow人群,以下是我的回应:
我在这里看到了一些潜在的问题:
- 您正在用选项填充
<select>
元素,然后立即启动"更改"事件处理程序,该事件处理程序预计会有一个选定的<option>
,但您没有设置默认的选定选项,因此这将返回null(或未定义,或出错,具体取决于浏览器的挑剔程度) - 您正在创建一个id为"ComboChart"的新div,并将其附加到id为"comoChart"的div中。如果"ComboChart"已经存在,则表示您违反了要求元素具有唯一ID的HTML规则(这可能会导致此问题);如果"ComboChart"还不存在,那么您就无法将新的div附加到DOM中,因此图表无处绘制
- 可视化API在加载到另一个函数调用中时存在问题。将
google.load
和google.setOnLoadCallback
调用置于任何其他函数之外以确保安全 -
您正在尝试加载可视化API两次:
google.load('visualization', '1', {packages: ['corechart']}); google.load('visualization', '1.1', {packages: ['controls']});
当你应该只加载一次。您需要"控件"包来使用仪表板功能、ControlWrappers和ChartWrappers;除非您有使用候选版本的特定需求,否则您应该加载版本1:
google.load('visualization', '1', {packages: ['controls']});
相关文章:
- 使用外部数据创建仪表板(谷歌电子表格)-JavaScript
- Javascript库创建类似heroku仪表板的应用程序
- crm 2011使用javascript在仪表板上隐藏和显示子网格
- Mscrm 2011仪表板通过JavaScript或插件增加行数
- 谷歌图表可视化仪表板数据源问题
- 如何在谷歌仪表板表中为 TR 分配值
- 如何将面板添加到仪表板的特定列中
- 有角度的材料和仪表板
- 仪表板中的小部件和设置需要一个可维护的Javascript回发模式
- AngularJS在初始化仪表板控制器之前使用$htttp获取仪表板设置
- 谷歌图表:如何使用新材料图表的仪表板
- AngularJS仪表板和身份验证
- Ajax 请求仪表板页面上的浏览器崩溃
- 自定义 Umbraco 仪表板中的 JQuery UI Datepicker 和 Angular JS
- 谷歌可视化图表/仪表板无法完全绘制
- 在我的仪表板中,用户可以查看自己的分析
- 使用 PHP、JSON 和 google.visualization.DataTable 创建 google 仪表板图表
- 虚线仪表板链接小部件
- 一个COMBOCHART,通过控制和仪表板进行控制
- 使用谷歌VI可视化仪表板中的类别过滤器控制列