0

ExtJs mvc を使用して、1 ページに 2 つのグラフ (棒グラフとレーダー) を作成します。チャートの列をクリックすると、レーダーに変化が表示されるようにしたい..コントローラーでクリックするための関数を書きました。コントローラーはこちら…

Ext.define('Gamma.controller.ControlFile', {

extend : 'Ext.app.Controller',

//define the stores
stores : ['BarColumn','RadarView','VoiceCallStore','SMSCallStore','MMSCallStore','GPRSUsageStore'],
//define the models 
models : ['BarCol','radar','VoiceCallModel','SMSCallModel','MMSCallModel','GPRSUsageModel'],
//define the views
views : ['BarColumnChart','LineChart','RadarChart','VoicePie','SMSPie','MMSPie','GPRSPie'],  



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'];
        var source=obj.storeItem.data['source'];
        var count=obj.storeItem.data['count'];
        me.dataBaseCall(source,count);
    });
},
dataBaseCall: function(source,count){

 Ext.Ajax.request({
        url: "CallRatiosAnalysis?methodName=callDistribution"+"&param="+source+"&param1="+count,
        method:'GET',

        reader: {
            type: 'json',
            root: 'allCalls',
            totalProperty: 'allCallsRatio',
            successProperty: 'success'
        }
});


}
});

この関数では、ajax を介してサーブレットを呼び出します。この変更が発生する関数は次のとおりです...

private void callDistribution(HttpServletRequest request, HttpServletResponse response) throws IOException {
    PrintWriter out = response.getWriter();
    response.setContentType("text/html");

    String name = request.getParameter("param");
    String data = request.getParameter("param1");

    if (name == null && data == null) {

        ArrayList<IndCallType> radaranalysis = new ArrayList<IndCallType>();
        radaranalysis.add(new IndCallType("Voice", "40"));
        radaranalysis.add(new IndCallType("SMS", "30"));
        radaranalysis.add(new IndCallType("MMS", "5"));
        radaranalysis.add(new IndCallType("GPRS", "20"));
        radaranalysis.add(new IndCallType("OTHERS", "5"));

        JsonObject myObj = new JsonObject();
        if (!radaranalysis.isEmpty()) {
            JsonArray jsonObj = Utility.wrapToJSONObject(radaranalysis);
            myObj.addProperty("success", true);
            myObj.add("allCalls", jsonObj);
            myObj.addProperty("allCallsRatio", jsonObj.size());
            out.println(myObj.toString());
            out.close();
        } else {
            myObj.addProperty("success", false);
            out.println(myObj.toString());
            out.close();
        }
    }else{
        ArrayList<IndCallType> radarclcikanalysis = new ArrayList<IndCallType>();
        radarclcikanalysis.add(new IndCallType("Voice", "10"));
        radarclcikanalysis.add(new IndCallType("SMS", "5"));
        radarclcikanalysis.add(new IndCallType("MMS", "50"));
        radarclcikanalysis.add(new IndCallType("GPRS", "2"));
        radarclcikanalysis.add(new IndCallType("OTHERS", "45"));

        JsonObject myObj = new JsonObject();
        if (!radarclcikanalysis.isEmpty()) {
            JsonArray jsonObj = Utility.wrapToJSONObject(radarclcikanalysis);
            myObj.addProperty("success", true);
            myObj.add("allCalls", jsonObj);
            myObj.addProperty("allCallsRatio", jsonObj.size());
            out.println(myObj.toString());
            out.close();
        } else {
            myObj.addProperty("success", false);
            out.println(myObj.toString());
            out.close();
        }
    }


}

else 部分に印刷するものを書くと、完全に印刷されます。しかし、チャートの変更は行われていません..誰か助けてください...

4

1 に答える 1