Jump to content

Recommended Posts

Posted (edited)

https://developers.google.com/chart/interactive/docs/quick_start

I took a look, and I did it so to speak , a first approximation

_GoogleChart($aData [, $Title = "" [, $iHorAxisCol = 0 [, $sChartType = "AreaChart" [, $sTitleColor = "#333" [, $Width = 854 [, $Height = 480 [, $Execute = True]]]]]]])

GoogleCharts.au3

; https://www.autoitscript.com/forum/topic/210868-make-a-html-chart-with-google-charts/
;----------------------------------------------------------------------------------------
; Title...........: GoogleCharts.au3
; Description.....: Make a html chart with 'Google Charts' - ChartType: AreaChart; ColumnChart
; AutoIt Version..: 3.3.16.1   Author: ioa747
; Note ...........: https://developers.google.com/chart/interactive/docs/quick_start
;----------------------------------------------------------------------------------------
#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7

#include <Array.au3>

Example()

;----------------------------------------------------------------------------------------
Func Example()
    Local $Array[][] = [ _
            ["Month", "Bears", "Dolphins", "Whales"], _
            ["jan", 8, 150, 80], _
            ["feb", 54, 77, 54], _
            ["mar", 93, 32, 10], _
            ["apr", 116, 11, 76], _
            ["may", 137, 6, 93], _
            ["jun", 184, 1, 72]]

;~  _ArrayDisplay($Array)

    Local $sSTR = _GoogleChart($Array, "Wild life", 0, "ColumnChart")
    ConsoleWrite("********************************************************************************" & @CRLF & $sSTR & @CRLF)

    Sleep(3000)

    _GoogleChart($Array, "Wild life", 0, "AreaChart")

EndFunc   ;==>Example
;----------------------------------------------------------------------------------------
Func _GoogleChart(ByRef $aData, $Title = "", $iHorAxisCol = 0, $sChartType = "AreaChart", $sTitleColor = "#333", $Width = 854, $Height = 480, $Execute = True)

    Local $sChartFile = @ScriptDir & "\Chart.html"
    Local $sHTML = ""
    $sHTML &= "<html>" & @CRLF
    $sHTML &= "  <head>" & @CRLF
    $sHTML &= "    <script type=""text/javascript"" src=""https://www.gstatic.com/charts/loader.js""></script>" & @CRLF
    $sHTML &= "    <script type=""text/javascript"">" & @CRLF
    $sHTML &= "      google.charts.load('current', {'packages':['corechart']});" & @CRLF
    $sHTML &= "      google.charts.setOnLoadCallback(drawChart);" & @CRLF
    $sHTML &= "" & @CRLF
    $sHTML &= "      function drawChart() {" & @CRLF
    $sHTML &= "        var data = google.visualization.arrayToDataTable([" & @CRLF

    Local $ByPass = ""
    For $R = 0 To UBound($aData) - 1
        Local $sTxt = ""
        For $C = 0 To UBound($aData, 2) - 1

            If $R = 0 Then
                ; in first row all is string
                $sTxt &= "'" & $aData[$R][$C] & "', "
            Else
                ; if Column = $iHorAxisCol is string
                If $C = $iHorAxisCol Then
                    $sTxt &= "'" & $aData[$R][$C] & "', "
                Else
                    $sTxt &= $aData[$R][$C] & ", "
                EndIf
            EndIf
        Next
        $sTxt = StringTrimRight($sTxt, 2)
        $sTxt = "          [" & $sTxt & "]," & @CRLF
        $ByPass &= $sTxt
    Next

    $ByPass = StringTrimRight($ByPass, 3)
    ;ConsoleWrite("$ByPass:" & @CRLF & $ByPass  & @CRLF)

    $sHTML &= $ByPass & @CRLF

    $sHTML &= "        ]);" & @CRLF
    $sHTML &= "" & @CRLF
    $sHTML &= "        var options = {" & @CRLF

    $ByPass = "          title: '" & $Title & "',"
    $sHTML &= $ByPass & @CRLF

    $ByPass = "          hAxis: {title: '" & $aData[0][$iHorAxisCol] & "',  titleTextStyle: {color: '" & $sTitleColor & "'}},"
    $sHTML &= $ByPass & @CRLF

    $sHTML &= "          vAxis: {minValue: 0}" & @CRLF
    $sHTML &= "        };" & @CRLF
    $sHTML &= "" & @CRLF

    $ByPass = "        var chart = new google.visualization." & $sChartType & "(document.getElementById('chart_div'));"
    $sHTML &= $ByPass & @CRLF

    $sHTML &= "        chart.draw(data, options);" & @CRLF
    $sHTML &= "      }" & @CRLF
    $sHTML &= "    </script>" & @CRLF
    $sHTML &= "  </head>" & @CRLF
    $sHTML &= "  <body>" & @CRLF

    $ByPass = "    <div id=""chart_div"" style=""width: " & $Width & "px; height: " & $Height & "px;""></div>"
    $sHTML &= $ByPass & @CRLF

    $sHTML &= "  </body>" & @CRLF
    $sHTML &= "</html>" & @CRLF
    $sHTML &= "" & @CRLF

    Local $hFileOpen = FileOpen($sChartFile, 266)
    If $hFileOpen = -1 Then
        Return SetError(1, 0, "")
    EndIf
    FileWrite($hFileOpen, $sHTML)
    FileClose($hFileOpen)

    If $Execute = True Then ShellExecute($sChartFile)
    Return $sHTML

EndFunc   ;==>_GoogleChart
;----------------------------------------------------------------------------------------

 

Please, every comment is appreciated!
leave your comments and experiences here!
Thank you very much  :)

 

Edited by ioa747
Add ByRef

I know that I know nothing

Posted (edited)

I would love to integrate it with WebView2 :)

in the future, because I don't have time for it now.

Edited by mLipok

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

  Reveal hidden contents

Signature last update: 2023-04-24

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...