如何将查询结果传递到Amchart? [英] How to pass query results into Amchart?

查看:208
本文介绍了如何将查询结果传递到Amchart?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请考虑以下代码:


$ b

 < script> 

var chart;

var chartData = [{
ConnectionType:First,
NumberPercentage:1194,
{
ConnectionType:Second,
NumberPercentage:1882},
{
ConnectionType:Third,
NumberPercentage:1809},
{
ConnectionType:Fourth,
NumberPercentage: 1322},
{
ConnectionType:Fifth,
NumberPercentage:1122},
{
ConnectionType:Sixth,
NumberPercentage:1114} ,
{
ConnectionType:Seventh,
NumberPercentage:984}
];


AmCharts.ready(function(){
// PIE CHART
chart = new AmCharts.AmPieChart();

/ /图表标题
chart.addTitle(3D Donut Charts,16);

chart.dataProvider = chartData;
chart.titleField =ConnectionType;
chart.valueField =NumberPercentage;
chart.sequencedAnimation = true;
chart.startEffect =elastic;
chart.innerRadius =30%;
chart .startDuration = 2;
chart.labelRadius = 15;

//以下两行使图表成为3D
chart.depth3D = 10;
chart.angle = 15;

// WRITE
chart.write(chartdiv);
});

< / script>

以下标签位于我的个人资料的正文标签内:

 < div id =chartdivstyle =width:100%; height:362px;>< / div& 

我要返回以下 cfquery 在我的ColdFusion文件。为了简单起见,我只提到 cfquery 用于First连接。

 < cfquery datasource =XX.XX.X.XXname = qCFCHART> 
SELECT
Count(*)AS TOTAL_CONNECTION
,Sum(CASE WHEN'FIRST'= EVENTS THEN 100 END)/ Count(*)AS FIRST
,Sum(CASE WHEN' SECOND'= EVENTS THEN 100 END)/ Count(*)AS SECOND
,Sum(CASE WHEN'THIRD'= EVENTS THEN 100 END)/ Count(*)AS THIRD
,Sum(CASE WHEN'第四个= EVENT THEN 100 END)/计数(*)AS FOURTH
,总和(CASE WHEN'FIFTH'= EVENTS THEN 100 END)/ Count(*)AS FIFTH
, SIXTH'= EVENTS THEN 100 END)/ Count(*)AS SIXTH
,Sum(CASE WHEN'SEVENTH'= EVENTS THEN 100 END)/ Count(*)AS SEVENTH
FROM MyDatabase;
< / cfquery>

考虑上述脚本中的代码:

  ConnectionType:First,
NumberPercentage:1194,

我想显示FIRST返回的结果从上面的查询到我的饼图和写 cfdump 或任何ColdFusion相关不工作。 p>

例如:

  ConnectionType:First,
NumberPercentage:< cfdump var =#qCFCHART.FIRST#>,

错误,我看到一个明显的原因,因为我在脚本标记,我想知道如何继续?有任何建议吗?



这是我在尝试以下评论后的尝试:

 < cfoutput query =qCFCHART> 
#currentrow#)
< cfloop index =collist =#columnlist#>
#col#=#qCFCHART [col] [currentRow]#
< / cfloop>
< p />
< / cfoutput>


< cfset cols = getMetadata(qCFCHART)>
< cfdump var =#cols#>


解决方案

您需要循环遍历查询并创建数据结构类似于图表的期望 - 这似乎是一个结构的数组。



我不会给你的代码,因为它是一个相当简单的操作,一个你可以很容易地找到信息,如果你选择寻找它。



然后可以使用serialzeJSON(data)获取JSON版本的数据 - 其结构应与示例代码中的 chartData 相同。


Please consider the following code:

Following tag inside header of my file

<script>

var chart;

var chartData = [{
    ConnectionType: "First",
    NumberPercentage: 1194,
{
    ConnectionType: "Second",
    NumberPercentage: 1882},
{
    ConnectionType: "Third",
    NumberPercentage: 1809},
{
    ConnectionType: "Fourth",
    NumberPercentage: 1322},
{
    ConnectionType: "Fifth",
    NumberPercentage: 1122},
{
    ConnectionType: "Sixth",
    NumberPercentage: 1114},
{
    ConnectionType: "Seventh",
    NumberPercentage: 984}
    ];


AmCharts.ready(function() {
    // PIE CHART
    chart = new AmCharts.AmPieChart();

    // title of the chart
    chart.addTitle("3D Donut Charts", 16);

    chart.dataProvider = chartData;
    chart.titleField = "ConnectionType";
    chart.valueField = "NumberPercentage";
    chart.sequencedAnimation = true;
    chart.startEffect = "elastic";
    chart.innerRadius = "30%";
    chart.startDuration = 2;
    chart.labelRadius = 15;

    // the following two lines makes the chart 3D
    chart.depth3D = 10;
    chart.angle = 15;

    // WRITE                                 
    chart.write("chartdiv");
});

</script>

Following tag inside body tag of my profile:

<div id="chartdiv" style="width: 100%; height: 362px;"></div>

I want to return the data from the following cfquery in my ColdFusion file. For the sake of simplicity I'm only mentioning cfquery for First connection. Rest cfqueries till seventh are same except the names.

<cfquery datasource = "XX.XX.X.XX" name="qCFCHART">
SELECT
   Count(*) AS TOTAL_CONNECTION
,  Sum(CASE WHEN 'FIRST'  = EVENTS THEN 100 END) / Count(*) AS FIRST
,  Sum(CASE WHEN 'SECOND' = EVENTS THEN 100 END) / Count(*) AS SECOND
,  Sum(CASE WHEN 'THIRD'  = EVENTS THEN 100 END) / Count(*) AS THIRD
,  Sum(CASE WHEN 'FOURTH' = EVENTS THEN 100 END) / Count(*) AS FOURTH
,  Sum(CASE WHEN 'FIFTH'  = EVENTS THEN 100 END) / Count(*) AS FIFTH
,  Sum(CASE WHEN 'SIXTH'  = EVENTS THEN 100 END) / Count(*) AS SIXTH
,  Sum(CASE WHEN 'SEVENTH'  = EVENTS THEN 100 END) / Count(*) AS SEVENTH
   FROM MyDatabase;
</cfquery> 

Considering the code from above script:

ConnectionType: "First",
NumberPercentage: 1194,

I want to display the result returned by "FIRST" from the above query into my Pie Chart and writing cfdump or anything ColdFusion related doesn't work there.

For example:

ConnectionType: "First",
NumberPercentage: <cfdump var="#qCFCHART.FIRST#>",

The above throws an error and I see an obvious reason because I'm inside script tag and I'm wondering how to proceed? Any suggestions?

Here is my attempt after following some comments:

<cfoutput query="qCFCHART">
    #currentrow#)
    <cfloop index="col" list="#columnlist#">
            #col#=#qCFCHART[col][currentRow]#
    </cfloop>
    <p/>
</cfoutput>


<cfset cols = getMetadata(qCFCHART)>
<cfdump var="#cols#">

解决方案

You will need to loop over the query and create a data structure similar to what the chart is expecting - which appears to be an array of structures.

I am not going to give you the code to do this as it is a fairly simple operation, and one you could easily find information on if you choose to look for it.

You can then use serialzeJSON( data ) to get the JSON version of your data - which should have the same structure as chartData in your sample code.

这篇关于如何将查询结果传递到Amchart?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆