javascript - Error while adding google charts to vtiger -


vtiger has own js files think there maybe conflicts. anyway in browser console:

synchronous xmlhttprequest on main thread deprecated because of detrimental effects end user's experience. more http://xhr.spec.whatwg.org/

error: google charts loader.js can loaded once.

the later maybe because vtiger calls .tpl file twice dont know why.

as first warning : apperently happens if jquery appends external js files. read should work if async set false dont know how in vtiger

if refresh page everthing works nicely.

.tpl :

{strip} <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script>     var rawdata = {$sales|@json_encode};     var scatterdata = [];     var mydata = [];      var count = 0;     var sum = 0;     var num = 0;      for(var = 0 ; < rawdata.length; i++){         for(var j = 0 ; j < rawdata[i][1]; j++){             scatterdata[count] = [];             scatterdata[count][0] = rawdata[i][0];             scatterdata[count][1] = rawdata[i][2];             count++;         }     }       count = 0;     for(i = 0; < scatterdata.length; i++){         sum = 0;         num = 0;          for(j = 0; j < scatterdata.length; j++){             if(scatterdata[i][0] == scatterdata[j][0]){                 sum += scatterdata[j][1];                 num++;             }                             }          mydata[count] = [];          var tmpdate = scatterdata[i][0].split("-");         mydata[count][0] = [];         mydata[count][0][0] = tmpdate[0];         mydata[count][0][1] = tmpdate[1];         mydata[count][0][2] = tmpdate[2];          mydata[count][1] = scatterdata[i][1];         mydata[count][2] = sum / num;         count++;     } </script> <script type="text/javascript" src="resources/pfgraph.js"></script>  <pre> {$sales|@debug_print_var}  </pre>  <form>     <table class="table table-bordered equalsplit detailview-table">         <thead>             <tr>                 <th class="blockheader" colspan="4">                     <img class="cursorpointer alignmiddle blocktoggle  hide" src="layouts/vlayout/skins/alphagrey/images/arrowright.png" data-mode="hide" data-id="31">                     <img style="display: inline;" class="cursorpointer alignmiddle blocktoggle" src="layouts/vlayout/skins/alphagrey/images/arrowdown.png" data-mode="show" data-id="31">                     details                 </th>                 </tr>         </thead>         <tbody>             <tr>                 <td class="fieldlabel medium">                     <label class="muted pull-right marginright10px">product</label>                 </td>                 <td class="fieldvalue medium">{$product[0]}</td>                  <td class="fieldlabel medium">                     <label class="muted pull-right marginright10px">min amount</label>                 </td>                 <td class="fieldvalue medium"><input type="text" name="minamount"></td>             </tr>             <tr>                 <td class="fieldlabel medium">                     <label class="muted pull-right marginright10px">list price</label>                 </td>                 <td class="fieldvalue medium">{$product[1]}</td>                  <td class="fieldlabel medium">                     <label class="muted pull-right marginright10px">max amount</label>                 </td>                 <td class="fieldvalue medium"><input type="text" name="maxamount"></td>             </tr>             <tr>                 <td class="fieldlabel medium">                     <label class="muted pull-right marginright10px">lowest price</label>                 </td>                 <td class="fieldvalue medium"></td>                  <td class="fieldlabel medium">                     <label class="muted pull-right marginright10px">min price</label>                 </td>                 <td class="fieldvalue medium"><input type="text" name="minprice"></td>             </tr>             <tr>                 <td class="fieldlabel medium">                     <label class="muted pull-right marginright10px">average price</label>                 </td>                 <td class="fieldvalue medium"></td>                  <td class="fieldlabel medium">                     <label class="muted pull-right marginright10px">max price</label>                 </td>                 <td class="fieldvalue medium"><input type="text" name="maxprice"></td>             </tr>             <tr>                 <td class="fieldlabel medium">                     <label class="muted pull-right marginright10px">highest price</label>                 </td>                 <td class="fieldvalue medium"></td>                  <td class="fieldlabel medium">                     <label class="muted pull-right marginright10px">test</label>                 </td>                 <td class="fieldvalue medium"><button>filter</button></td>             </rt>         </tbody>     </table> </form>  <style>     #chart_div{         margin: 20px 0px;         padding: 25px;         background-color: white;         width: 96%;         -webkit-box-shadow: 4px 4px 15px 0px rgba(50, 50, 50, 0.3);         -moz-box-shadow:    4px 4px 15px 0px rgba(50, 50, 50, 0.3);         box-shadow:         4px 4px 15px 0px rgba(50, 50, 50, 0.3);     }  </style>  <div id="chart_div" ></div>  {/strip} 

.js :

   google.charts.load('current', { 'packages': ['corechart'] });  google.charts.setonloadcallback(drawchart);  function drawchart() { var data = new google.visualization.datatable(); data.addcolumn('datetime', 'date'); data.addcolumn('number', 'price'); data.addcolumn('number', 'price (average)');  var maxval =  0;  for(var = 0; < mydata.length; i++ ){     data.addrow([new date(mydata[i][0][0], mydata[i][0][1], mydata[i][0][2]), mydata[i][1], mydata[i][2]]);     //get highest price     if (mydata[i][1] > maxval){     maxval = mydata[i][1];     } }  var options = {     haxis: {     title: 'date',     viewwindow: {         min: new date(mydata[0][0][0], mydata[0][0][1], mydata[0][0][2]),         max: new date(mydata[mydata.length-1][0][0], mydata[mydata.length-1][0][1], mydata[mydata.length-1][0][2])     },     gridlines: {         count: -1,         units: {         days: {             format: ['mmm dd']         },         }     },      },     vaxis: {     title: 'price',     minvalue: 0,     maxvalue: maxval     },     legend: 'none',     series: {     0: {     pointsize: 8,     dataopacity: 0.6,     pointshape: 'diamond'     },     1: {         linewidth: 2,         color: '#509c49',         pointsize: 0     }     } };  var chart = new google.visualization.scatterchart(document.getelementbyid('chart_div'));  chart.draw(data, options); } 

try adding js files using getheaderscripts in modules/(your_module)/views/edit.php.

    function getheaderscripts(vtigercrm_request $request) {             $headerscriptinstances = parent::getheaderscripts($request);              $jsfilenames = array(                 'libraries.jquery.multiplefileupload.jquery_multifile'              );             // add js path did jquery_multifile             $jsscriptinstances = $this->checkandconvertjsscripts($jsfilenames);             $headerscriptinstances = array_merge($headerscriptinstances, $jsscriptinstances);             return $headerscriptinstances;     } 

Comments