-1

ここでは、その barChart をクリックしたときにレーダー チャートを変更する必要があります。

値をサーブレットに送信しているバーチャートがあり、各値に基づいて、レーダーチャートにデータを入力する必要があります。データはサーブレットに送信され、レーダーチャートも送信されます。しかし問題は、レーダーは1つの条件でのみ来ています.それは他の部分では機能していません.結果として、レーダーとバーをインタラクティブにすることはできません.ここに私のコードがあります...

これは、サーブレットにデータを送信しているコントローラーです..

initializedEvents: false,
init: function() {
    this.control({
        '#barColumnChart': {
            afterlayout: this.afterChartLayout
        }
    });
},
afterChartLayout: function(){
    var me=this;
    if(this.initializedEvents==true) return;
    this.initializedEvents=true;
    Ext.getCmp('barColumnChart').series.items[0].on('itemmousedown',function(obj){

        // alert(obj.storeItem.data['source']+ ' &' + obj.storeItem.data['count']);

        var barData=obj.storeItem.data['source']+ ' &' + obj.storeItem.data['count'];
        //alert(barData);
        me.dataBaseCall(obj.storeItem.data['source'],obj.storeItem.data['count']);
    });
},
dataBaseCall: function(source,count){
    //alert(barData);

    Ext.Ajax.request({
        url: "CallRatiosAnalysis",
        success: function(response, opts){
            //do what you want with the response here
            console.log("hiiiiiiiiiiii");
        },
        failure: function(response, opts) {
            alert("server-side failure with status code " + response.status);
        },
        params: {
            source: source,
            count:  count
        }

そして、ここにレーダーチャートが形成されているサーブレットがあります...

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String mysource = request.getParameter("source");
    String mycount = request.getParameter("count");

    System.out.println(mysource + "\n" + mycount);

    if (mysource != null && mycount != null) {

        PrintWriter out = response.getWriter();
        response.setContentType("text/html");
        ArrayList<IndCallType> ratios = new ArrayList<IndCallType>();
        ratios.add(new IndCallType("Voice", "40"));
        ratios.add(new IndCallType("SMS", "30"));
        ratios.add(new IndCallType("MMS", "5"));
        ratios.add(new IndCallType("GPRS", "20"));
        ratios.add(new IndCallType("Others", "5"));
        Gson gson = new Gson();
        JsonArray arrayObj = new JsonArray();
        for (int i = 0; i < ratios.size(); i++) {
            IndCallType count = ratios.get(i);
            JsonElement linObj = gson.toJsonTree(count);
            arrayObj.add(linObj);
        }

        JsonObject myObj = new JsonObject();
        myObj.addProperty("success", true);
        myObj.add("allCalls", arrayObj);
        myObj.addProperty("allCallsRatio", ratios.size());

        out.println(myObj.toString());
        out.close();
    }else{ //this part is not working 
        PrintWriter out = response.getWriter();
        response.setContentType("text/html");
        ArrayList<IndCallType> ratios = new ArrayList<IndCallType>();
        ratios.add(new IndCallType("Voice", "10"));
        ratios.add(new IndCallType("SMS", "3"));
        ratios.add(new IndCallType("MMS", "50"));
        ratios.add(new IndCallType("GPRS", "80"));
        ratios.add(new IndCallType("Others", "1"));
        Gson gson = new Gson();
        JsonArray arrayObj = new JsonArray();
        for (int i = 0; i < ratios.size(); i++) {
            IndCallType count = ratios.get(i);
            JsonElement linObj = gson.toJsonTree(count);
            arrayObj.add(linObj);
        }

        JsonObject myObj = new JsonObject();
        myObj.addProperty("success", true);
        myObj.add("allCalls", arrayObj);
        myObj.addProperty("allCallsRatio", ratios.size());

        out.println(myObj.toString());
        out.close();
    }
}

if 条件の 1 つの部分だけが機能しています。しかし、else 部分が機能していません。理由がわかりません。誰か助けてください。

4

1 に答える 1

1

Ext.Ajax.request を呼び出す代わりに、URL: "CallRatiosAnalysis" で構成されたストアを使用して、レーダー チャートが既にレンダリングされていると仮定すると、次のようにする必要があります。

Ext.getCmp(<selector for radar chart>).getStore().load({
    params: {
        source: source,
        count:  count
    }
});

そうでない場合は、成功のコールバックでチャートのレンダリングとデータの読み込みを実装する必要があります。

于 2013-05-13T17:07:46.363 に答える