How to load a javascript chart on the 2nd, 3rd etc. page in JQuery mobile? -


i quite new jquery mobile , i've been spending days figure out apparently simple question.

here's problem: using charting javascript library amcharts. far, good... trying create simple page in jqmobile let's 2 links new pages. want when click link, amchart should display in div specific name. (amcharts displays chart in div calling chart.write('nameofthediv');

so thought event handler bound $('#container').bind('click', function(){...} should able include relevant javascript...

somehow though...it doesn't work.

here's link can see mean: http://www.noten-werkstatt.de/jqm_amcharts/

and here code index.html , relevant custom-scripting.js.

thank in advance!

regards, lisa

index.html

 <!doctype html>  <html> <head> <meta charset="utf-8"> <title>jquery mobile , amcharts</title>  <link href="amcharts/style.css"  rel="stylesheet" type="text/css"> <!-- amcharts css-file local --> <link href="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.css" rel="stylesheet" type="text/css"/> <!-- jq mobile css-file (cdn) -->   <script src="amcharts/amcharts.js" type="text/javascript"></script> <!-- amcharts js-file local --> <script src="http://code.jquery.com/jquery-1.5.min.js" type="text/javascript"></script> <!-- jq js-file (cdn) --> <script src="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.js" type="text/javascript"></script> <!-- jq mobile js-file (cdn) --> <script src="custom-scripting.js" type="text/javascript"></script> <!-- custom scripting js-file local -->   </head>  <body>   <!-- ****** start page ************ --> <div data-role="page" id="page">     <div data-role="header">         <h1>main page</h1>     </div>     <div data-role="content">            <ul data-role="listview">             <li><a href="#page2" class="page2">page two</a></li>             <li><a href="#page3">page three</a></li>         </ul>           </div>     <div id="chartserialdiv" style="height:500px !important; border: 1px solid;">it's odd...displaying chart works here (div containr #chartserialdiv)...(initialized in window.onload = function() {})<br>but want attach click handler, please click "page two"...     </div><br>     <div data-role="footer">         <h4>footer</h4>     </div> </div>   <!-- ****** 2nd page ************ --> <div data-role="page" id="page2">     <div data-role="header">         <h1>page two</h1>     </div>     <div data-role="content" id="test">  <!-- ****** div container "test" ************ -->         if event handler worked, there must text after ":" :<br>           </div>     <div data-role="content" id="chartserialdiv2" style="height:500px !important; border: 1px solid;"> <!-- ****** div container "chartserialdiv" ************ -->      div container #chartserialdiv2 - why chart not displaying here???     </div>       <div data-role="footer">         <h4>footer</h4>     </div> </div>  <!-- ****** 3rd page ************ --> <div data-role="page" id="page3">     <div data-role="header">         <h1>page three</h1>     </div>     <div data-role="content">            there no event handler attached page 3, if read text , nothing else happens - that's correct! :-)             </div>      <div data-role="footer">         <h4>footer</h4>     </div> </div>   </body> </html> 

custom-scripting.js

window.onload = function() {  //this displays chart on start page      var chart; var dataprovider;        createchart('chartserialdiv');   loadcsv("daten/budget_management_projekt_kum.csv");              //datenquelle               //this supposed display chart on 2nd page when clicked on link     $('#page li a.page2').bind('click', function(event){     alert("the link \"page 2\" clicked...now turn page 2 , try load chart...");     $('#test').append("event handler-check: congratulations, event handler $(\'#test\').append... worked!!!<br>");      $('#chartserialdiv2').ready(function(){         var chart;         var dataprovider;            createchart('chartserialdiv2');           loadcsv("daten/budget_management_projekt_kum.csv");              //datenquelle         });      //event.preventdefault();     //return false;  });  $(document).delegate('.ui-page', 'pageshow', function () {     alert("worked");             var chart;         var dataprovider;            createchart('chartserialdiv2');           loadcsv("daten/budget_management_projekt_kum.csv");              //datenquelle    });    }           // method loads external data         function loadcsv(file) {             if (window.xmlhttprequest) {                 // ie7+, firefox, chrome, opera, safari                 var request = new xmlhttprequest();             }             else {                 // code ie6, ie5                 var request = new activexobject('microsoft.xmlhttp');             }             // load             request.open('get', file, false);             request.send();             parsecsv(request.responsetext);         }          // method parses csv data         function parsecsv(data){              data = data.replace (/,/g,"."); // suche nach komma und ersetze durch punkt                     var rows = data.split("\r");    // suche nach zeilenumbruch und spalte dort zeile ab             dataprovider = [];              (var = 1; < rows.length; i++){ // i=1 wegen der Überschriften                  if (rows[i]) {                                          var column = rows[i].split(";");                       var category = column[0];                     var value1 = column[1];                     var value2 = column[2];                     var value3 = column[3];                      var dataobject = {category:category, value1:value1, value2:value2, value3:value3};                     dataprovider.push(dataobject);                 }             }             chart.dataprovider = dataprovider;             chart.validatedata();         }           function createchart(container){                            // method creates chart              chart = new amcharts.amserialchart();       // chart variable declared in top               chart.addtitle('chart',12, '#ffffff', 1, true);             chart.addlabel(15, 25, 'mio. €', 'left', 10, '#000000', 0, 1, true);             chart.backgroundalpha = 1;             chart.backgroundcolor = '#ffffff';             chart.categoryfield = "category";           // here tell chart name of category field in our data provider. wwe called "date" (look @ parsecsv method)              var graph = new amcharts.amgraph();         // chart must have @ least 1 graph             graph.valuefield = "value1";              // graph should know @ field data provider should values.             graph.linethickness = 3;             graph.linecolor = "#336699";             graph.type = "column";             graph.bulletalpha = 1;             graph.balloontext = "plan kum.:[[value]] mio. €";             graph.title  = "plan kum.";             graph.fillalphas = 1;             chart.addgraph(graph);                      // add graph chart              var graph2 = new amcharts.amgraph();             graph2.valuefield = "value2"             graph2.linethickness = 3;             graph2.bullet = "bubble";             graph2.balloontext = "ist kum.:[[value]] mio. €";             graph2.title  = "ist kum.";             graph2.linecolor = "#ff9933";             chart.addgraph(graph2);              var graph3 = new amcharts.amgraph();             graph3.valuefield = "value3";             graph3.linethickness = 5;             graph3.bulletalpha = 1;             graph3.linecolor = "#999999";             graph3.type = "column";             graph3.fillalphas = 1;             graph3.dashlength = 5;             graph3.balloontext = "forecast kum.:[[value]] mio. €";             graph3.title  = "forecast kum.";             chart.addgraph(graph3);              var legend = new amcharts.amlegend();             chart.addlegend(legend);             legend.align = "center";             legend.backgroundalpha = 1;             legend.backgroundcolor ="#cccccc";             legend.borderalpha = 1;             legend.bordercolor = "#000000";             legend.equalwidths =true;             legend.horizontalgap = 1;             legend.switchtype = "v";             legend.markerborderalpha = 1;             legend.markerborderthickness = 1;             legend.markerbordercolor = "#ffffff";             legend.markerlabelgap = 5;             legend.position = "bottom";              // 'chartserialdiv' id of container chart                                     chart.write(container);           } 

you need place code generate chart in pagshow event, like

$(document).delegate('#page2', 'pageshow', function( ) {        createchart('chartserialdiv2');        loadcsv("daten/budget_management_projekt_kum.csv");  }); 

Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c# - Copy ObservableCollection to another ObservableCollection -

All overlapping substrings matching a java regex -