Atozed Forums

Full Version: Passing Delphi variables to Javascript function.
You're currently viewing a stripped down version of our content. View the full version with proper formatting.

I have this Javascript function (charting library) that takes an array of values as a variable, like this:

data: [22,61,64,35,91,59,62,91,124,94,77,196,309,147,102,107,199,36,0,0,0,0,0,0],

My doubt is how to make it read a Delphi array as the data input, I mean, how to transfer the values to this JS array.
Sorry if this is simple to do.

How does the chart take the input on the Javascript side?

How are you emitting the necessary js/html to create the chart?
Yes, the HTML and the JS are working fine, with the constants taken by the script to plot the line chart.

This is the script where the values are inserted. The line in bold is where the array of variables or values from Delphi should go. It represents points on the y axis. 

l1 = new RGraph.SVG.Line({
        id: 'cc1',
        data: [22,61,64,35,91,59,62,91,124,94,77,196,309,147,102,107,199,36,0,0,0,0,0,0],
        options: {
            key: ['Consumo (kWh)'],
            keyColorShape: 'circle',
            keyTextSize: 10,
            keyOffsetx: -220,
            marginTop: 35,
            filled: true,
            colors: ['#058DC7'],
            linewidth: 3,
            tickmarksStyle: 'filledcircle',
            filledOpacity:  0.75,
            filledColors:  ['#E6F4FA'],
            textSize: 8,
            yaxis: false,
            yaxisScaleMax: 400,
            yaxisLabelsCount: 2,
            // The X axis labels for the chart
            xaxisLabels: [

            backgroundGridBorder: false,
            backgroundGridVlines: false,
            backgroundGridHlinesCount: 2
JavaScript.Text := ''
+ 'function LoadData(DataSet) {'
+ ' var table = $("#Tab_' + _TName + '").DataTable();'
+ ' table.clear();'
+ ' table.rows.add( DataSet );'
+ ' table.draw( false );'
+ '}';

ja := TJsonArray.Create; //uses JsonDataObjects
WebApplication.CallBackResponse.AddJavaScriptToExecuteAsCDATA('LoadData(' + ja.ToJSON(True) + ');');
Great! Thank you.