asked on July 22, 2019

Hi all,

 

I need your help to create a specific chart using sdk (vb).

This is what I have.

 

and this is what I need.

 

 

I'm using tokens and SDK from Workflow.

 

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Data.SqlClient
Imports System.Text
Imports Laserfiche.RepositoryAccess
Imports System.Windows.Forms.DataVisualization.Charting
Imports System.Drawing


Namespace WorkflowActivity.Scripting.Générerlegraphique
    '''<summary>
    '''Offre une ou plusieurs méthodes qui peuvent être exécutées au moment de l'exécution de l'activité de scriptage du flux de travail.
    '''</summary>
    Public Class Script1
        Inherits RAScriptClass102
        '''<summary>
        '''Cette méthode est exécutée quand l'activité est effectuée.
        '''</summary>
        Protected Overrides Sub Execute()
            'Rédigez votre code ici. La propriété BoundEntryInfo accèdera à l'entrée, RASession obtiendra la section de Repository Access
             'Get the tokens for values and labels...

'################### DEBUT SERIE
            Dim valuesToken as List(Of Object) = Me.GetTokenValue("ChartValues")

'################### FIN SERIE

            Dim labelsToken As List(Of Object) = Me.GetTokenValue("ChartLabels")

'################### DEBUT SERIE
            Dim count As Integer = valuesToken.Count-1

'################### FIN SERIE

            'Convert the multivalue tokens to arrays...

'################### DEBUT SERIE
            Dim chartValues(count) As Double

'################### FIN SERIE

            Dim chartLabels(count) As String

'################### DEBUT SERIE
            For i As Integer = 0 to count
                if CDbl(valuesToken(i)) > 0 Then
                    chartValues(i) = CDbl(valuesToken(i))
                    chartLabels(i) = labelsToken(i).ToString
                end if

            Next



'################### FIN SERIE

            'Create a new chart...
            Dim chart As Chart = New Chart()
            chart.Width = 690
            chart.Height = 460

            'Add a title to the chart...
            Dim title As New Title(Me.GetTokenValue("ChartTitle"))
            title.Alignment = ContentAlignment.TopLeft
            title.Font = New Font("Arial", 14, FontStyle.Bold)
            chart.Titles.Add(title)

            'Add the legend for the data...
            Dim legend As New Legend(Me.GetTokenValue("LegendTitle"))
            chart.Legends.Add(legend)

            'Create a new data series and set the chart type to a pie chart...
'################### DEBUT SERIE
            Dim series As Series = New Series("Elémentaire")

'################### FIN SERIE


'################### DEBUT SERIE
            series.ChartType = SeriesChartType.StackedColumn
            series.IsValueShownAsLabel = False
            chart.Series.Add(series)


'################### FIN SERIE

            'Bind the labels and values as datapoints...
'################### DEBUT SERIE
            chart.Series("Elémentaire").Points.DataBindXY(chartLabels, chartValues)

'################### FIN SERIE






            'Create a new chart area and add it to the chart object...
            Dim chartArea As ChartArea = New ChartArea()
            Dim yAxis As Axis = New Axis(chartArea, AxisName.Y)
            Dim xAxis As Axis = New Axis(chartArea, AxisName.X)
            chartArea.AxisX.Interval = 1
            chart.ChartAreas.Add(chartArea)








            'Now write the chart image to the document...
            Using docInfo As DocumentInfo = Me.BoundEntryInfo()

                'Read the chart image into a byte array...
                Dim imageData() As Byte
                Using ms As New System.IO.MemoryStream
                    chart.SaveImage(ms, ChartImageFormat.Tiff)
                    imageData = ms.ToArray
                End Using

                'Lock the document and append a blank page...
                docInfo.Lock(LockType.Exclusive)
                Dim pInfo As PageInfo = docinfo.AppendPage

                'Write the image to the new page...
                Using writer As System.IO.Stream = pInfo.WritePagePart(PagePart.Image, imageData.Length)
                    writer.Write(imageData, 0, imageData.Length)
                End Using

                'Save and unlock the document...
                docInfo.Save()
                docInfo.Unlock()

            End Using
        End Sub
    End Class
End Namespace

 

Thank you for your helps.

Regards