2017-08-09 1 views
0

Ich habe einen sehr einfachen JSP-Code. Es gibt drei Variablen von Oracle DatabaseWie man Oracle-Variablen in JSP in Amchart bekommt

String program_name = ""; 
     Integer projects = 0; 
     Integer operations = 0; 

     statement = connection.createStatement(); 
     if(deger.equals("All Priorities")) 
     { 
     rs = statement.executeQuery("SELECT PROGRAM_NAME prog_name, (SELECT COUNT(PRJ_TYPE) FROM EAD_PRJ_CURR_LIST LST WHERE LST.PROGRAM_ID= PG.PGM_PROGRAM_ID AND LST.PRJ_TYPE = 'Project') Project,(SELECT COUNT(PRJ_TYPE) FROM EAD_PRJ_CURR_LIST LST WHERE LST.PROGRAM_ID= PG.PGM_PROGRAM_ID AND LST.PRJ_TYPE = 'Operation') Operation FROM KCRT_FG_PFM_PROGRAM PG"); 
     } 
     else 
     { 
     rs = statement.executeQuery("SELECT PROGRAM_NAME prog_name, (SELECT COUNT(PRJ_TYPE) FROM EAD_PRJ_CURR_LIST LST WHERE LST.PROGRAM_ID= PG.PGM_PROGRAM_ID AND LST.PRJ_TYPE = 'Project') AS Project,(SELECT COUNT(PRJ_TYPE) FROM EAD_PRJ_CURR_LIST LST WHERE LST.PROGRAM_ID= PG.PGM_PROGRAM_ID AND LST.PRJ_TYPE = 'Operation') as Operation FROM KCRT_FG_PFM_PROGRAM PG"); 
     } 
     while(rs.next()) 



      program_name = rs.getString("prog_name"); 
      projects = rs.getInt("Project"); 
      operations = rs.getInt("Operation"); 

Dies ist der Code für das Diagramm ist, ist es ein Balkendiagramm -

<!-- Chart code --> 
       <script> 
       var chart = AmCharts.makeChart("chartdiv", { 
        "type": "serial", 
        "theme": "light", 
        "categoryField": "List_Of_Programs", 
        "rotate": true, 
        "startDuration": 1, 
        "categoryAxis": { 
         "gridPosition": "start", 
         "position": "left" 
        }, 
        "trendLines": [], 
        "graphs": [ 
         { 
          "balloonText": "Projects:[[value]]", 
          "fillAlphas": 0.8, 
          "id": "AmGraph-1", 
          "lineAlpha": 0.2, 
          "title": "Projects", 
          "type": "column", 
          "valueField": "Projects" 
         }, 
         { 
          "balloonText": "Operations:[[value]]", 
          "fillAlphas": 0.8, 
          "id": "AmGraph-2", 
          "lineAlpha": 0.2, 
          "title": "Operations", 
          "type": "column", 
          "valueField": "Operations" 
         } 
        ], 
        "guides": [], 
        "valueAxes": [ 
         { 
          "id": "ValueAxis-1", 
          "position": "top", 
          "axisAlpha": 0 
         } 
        ], 
        "allLabels": [], 
        "balloon": {}, 
        "titles": [], 
        "dataProvider": [ 
         { 
          "List_Of_Programs": <%=projects%>, 
          "Projects": <%=projects%>, 
          "Operations": <%=operations%> 
         }], 
        "export": { 
         "enabled": true 
        } 

       }); 
       </script> 


        <div id="chartdiv"></div>  

ich beide diese in einer JSP-Datei eingekapselt haben. Der Code ist in Ordnung, ohne Probleme. Ich benötige jedoch Hilfe bei der Logik, die Daten aus der früheren Abfrage (die etwa 20 Zeilen enthält) in das Diagramm zu drucken.

Bitte assistieren.

Antwort

0

Der DataProvider muss ein Array von Objekt s (Hinweis, Plural) sein. Was Sie tun, scheint einzelne Arrays (?) In jeder Eigenschaft in ein einzelnes Objekt im DataProvider-Array zu setzen. Das Datenprovider-Objekt sollte so etwas wie diese (mit Zufallsdaten als Beispiel) ähnelt:

"dataProvider": [{ 
    "List_Of_Programs": "Program A", 
    "Projects": 13, 
    "Operations": 10 
}, { 
    "List_Of_Programs": "Program B", 
    "Projects": 25, 
    "Operations": 28 
}. 
// continue for each array element 
] 

(Beachten Sie, dass dieses Format in jeder Demo Webseite auf amCharts verwendet wird.)

Ich bin kein Experte auf JSP oder auf Best Practices (obwohl this popped up in my brief foray into JSP, das ist wahrscheinlich etwas, was Sie untersuchen sollten), aber Sie können eine JSON-Bibliothek wie org.json verwenden, um alle Ihre Werte in ein Array von Objekten und dann das Array in eine Zeichenfolge serialisieren ähnlich wie im obigen Beispiel. Zum Beispiel Ihr Code oben:

//assumes you're using the org.json library 
JSONArray jsonArray = new JSONArray(); 
while(rs.next()) { 
    JSONObject obj = new JSONObject(); 
    obj.put("List_Of_Programs", rs.getString("prog_name")); 
    obj.put("Projects", rs.getInt("Project")); 
    obj.put("Operations", rs.getInt("Operation")); 
    jsonArray.put(obj); 
} 

Sobald Sie Ihre Array haben, drucken Sie es in Ihrem makeChart Anruf aus im Datenprovider Abschnitt:

var chart = AmCharts.makeChart("chartdiv", { 
    // other properties omitted 
    "dataProvider": <%=jsonArray%> //will serialize as the array from above 
});