Italian Raggruppare i dati e visualizzarli in un grafic

LucaMs

Expert
Licensed User
Longtime User
Chi si contenta gode - semplice, racchia ma me ne frego (citazione? :p)

upload_2018-4-19_19-53-36.png
 

udg

Expert
Licensed User
Longtime User
Confermo. Pannellino che trae il colore da un array fornito a parte.
B4X:
 Dim arColorLong(9) As Int = Array As Int(Colors.Green, Colors.ARGB(255,170,22,34), Colors.Yellow, Colors.Magenta, _
                                                          Colors.Blue, Colors.Gray, Colors.White, Colors.Red, Colors.Black)
....
dgpicker.setIntArray(arColorLong)                                                                'pass color array to picker
dgpicker.setTileProperties(50,50,2)                                                               'set tile dimensions and padding
dgpicker.setPickerProperties(Activity, dgpicker.pck_TYP_COLOR, Colors.LightGray) 'set picker properties
dgpicker.setAnchorView(TestPanel, dgpicker.pck_DIR_RIGHT)                             'anchor picker to desidered view: the test color panel
dgpicker.ShowPicker                                                                                   'show picker
Prepara pannellini 50x50 con i colori passati nell'array; il picker viene posto a destra del TestPanel (usato come punto di esempio di ancoraggio).

Nella classe ho:
B4X:
Private Sub PopulateColorPanel   
   'populate picker's panel
   For i = 0 To IntArray.Length-1
     Dim P As Panel
     P.Initialize("colclick")
     P.Tag=IntArray(i)
     P.Color=IntArray(i)
     Select AnchorViewSide
     Case pck_DIR_TOP,pck_DIR_BOTTOM
         VPanel.Panel.AddView(P,TileSpan,i*(TileV+TileSpan)+TileSpan,TileH,TileV)
     Case pck_DIR_RIGHT,pck_DIR_LEFT
         HPanel.Panel.AddView(P,i*(TileH+TileSpan)+TileSpan,TileSpan,TileH,TileV)
    End Select           
  Next
End Sub
 

udg

Expert
Licensed User
Longtime User
Aaaah, allora volevi generare al volo un colore RGB! Aggiungi uno slider per la trasparenza, per completezza.

Ma a me va in crash subito (vedi un post precedente)
Avevo letto, ma ormai avevo aperto il codice e ho guardato quello, senza eseguire nulla.
Volevo solo verificare di aver ricordato bene: pannellini e non immagini.
 

udg

Expert
Licensed User
Longtime User
Ho capito, devo vedere perché dgPickers non funziona più (dopo solo 4 anni..sarà obsolescenza programmata? furbetto questo sviluppatore..ehehe)
 

Nikeddy

Active Member
Licensed User
Longtime User
allora:
questa e' la risposta:
Response from server: [{"data":"08\/01\/2018 05:38","totale":"1530"},{"data":"10\/02\/2018 09:12","totale":"988"},{"data":"01\/03\/2018 11:09","totale":"2431"}]
a questo
ExecuteRemoteQuery("SELECT data, SUM(Importo) As totale FROM incassi WHERE n_macchina = " & macchina & " GROUP BY SUBSTRING(Data,4,2)",containcasso)

non e' proprio il mese...ma quasi!

ho messo una listview per visualizzarli
B4X:
Case containcassopark
                ListView3.Clear
                Dim macchine As List
                Dim formatnumero As Double
                macchine= parser.NextArray
                For i = 0 To macchine.Size - 1
                    Dim m As Map
                    m = macchine.Get(i)
                    Dim tl As TwoLines
                    tl.First = m.Get("data")
                    formatnumero  = m.Get("totale")
                    tl.Second = formatnumero
                    ListView3.AddTwoLines2(tl.First, tl.Second, tl)
                    grafico
                Next

(la funzione grafico che chiamo porta qui :
B4X:
    mbc1.LegendText = Array As String("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
    mbc1.ChartData = Array As Float ("macchine")    'values - it will be converted to %

ma ancora non ho capito come caricare il chartdata... la lista l'ho fatta...

piano piano diventero' un provetto di b4a!
 

Star-Dust

Expert
Licensed User
Longtime User
Non sto capendo più niente, non seguo più @Nikeddy.
Vado su altri thread qui c'é troppa confusione
 

udg

Expert
Licensed User
Longtime User
@LucaMs : se vai sulla pagina di dgPickers, puoi vedere che esiste una versione 0.30 che è quella che ho appena provato su un cellulare con Android 4.2.2 e ha funzionato subito senza problemi.
Si vedono alcuni tasti tra cui quello per selezionare un colore. Premendo quel tasto, viene mostrata una scrollview orizzontale con una decina di colori. Cliccando su uno di tali colori, il pannello di test ne assume la tinta. Se non ricordo male, uno swipe up/down dovrebbe chiudere il picker senza selezionare nulla. In pratica era questa la funzionalità che mi piaceva (insieme alla possibilità di ancorare il picker ad un oggetto qualunque).

ps: se non ti funziona neanche la 0.30 e ti fa comodo il sorgente della classe fammi sapere (la mail la conosci)
 

LucaMs

Expert
Licensed User
Longtime User
@LucaMs : se vai sulla pagina di dgPickers, puoi vedere che esiste una versione 0.30 che è quella che ho appena provato su un cellulare con Android 4.2.2 e ha funzionato subito senza problemi.
Si vedono alcuni tasti tra cui quello per selezionare un colore. Premendo quel tasto, viene mostrata una scrollview orizzontale con una decina di colori. Cliccando su uno di tali colori, il pannello di test ne assume la tinta. Se non ricordo male, uno swipe up/down dovrebbe chiudere il picker senza selezionare nulla. In pratica era questa la funzionalità che mi piaceva (insieme alla possibilità di ancorare il picker ad un oggetto qualunque).

ps: se non ti funziona neanche la 0.30 e ti fa comodo il sorgente della classe fammi sapere (la mail la conosci)
Ok, vista, carina e comoda.
Magari "estrapoLLo" solo il codice per la scelta del colore e ne faccio uno spinner (forse).

Grazie, U !
 

Nikeddy

Active Member
Licensed User
Longtime User
allora:
questa e' la risposta:
Response from server: [{"data":"08\/01\/2018 05:38","totale":"1530"},{"data":"10\/02\/2018 09:12","totale":"988"},{"data":"01\/03\/2018 11:09","totale":"2431"}]
a questo
ExecuteRemoteQuery("SELECT data, SUM(Importo) As totale FROM incassi WHERE n_macchina = " & macchina & " GROUP BY SUBSTRING(Data,4,2)",containcasso)

non e' proprio il mese...ma quasi!

ho messo una listview per visualizzarli
B4X:
Case containcassopark
                ListView3.Clear
                Dim macchine As List
                Dim formatnumero As Double
                macchine= parser.NextArray
                For i = 0 To macchine.Size - 1
                    Dim m As Map
                    m = macchine.Get(i)
                    Dim tl As TwoLines
                    tl.First = m.Get("data")
                    formatnumero  = m.Get("totale")
                    tl.Second = formatnumero
                    ListView3.AddTwoLines2(tl.First, tl.Second, tl)
                    grafico
                Next

(la funzione grafico che chiamo porta qui :
B4X:
    mbc1.LegendText = Array As String("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
    mbc1.ChartData = Array As Float ("macchine")    'values - it will be converted to %

ma ancora non ho capito come caricare il chartdata... la lista l'ho fatta...

piano piano diventero' un provetto di b4a!
io sto qui...
 

LucaMs

Expert
Licensed User
Longtime User
io sto qui...
Io invece mi sono perso.

Tornando al grafico (che non conosco), aveva una proprietà alla quale passare i dati (gli importi sommati) come List, quindi dovrai recuperare gli importi tramite query e nella jobdone metterli in una lista.
Il punto è che devi anche avere l'asse delle X, che saranno date o mesi; dovrai preparare una lista anche per questi, penso, e passarli ad una proprietà diversa di quella view (?) che stai usando per visualizzare il grafico.
 

udg

Expert
Licensed User
Longtime User
solo il codice per la scelta del colore
In pratica è quello del post #62; comunque fammi sapere (PM o mail) se ti può far comodo l'intera classe. Nulla di eccezionale e un po' datata, ma a suo tempo era stata utile.
 

Nikeddy

Active Member
Licensed User
Longtime User
Scusa, stai usando un database online (su un sito)? se (si) si chiama MySQL se invece usi un database sul telefono si chiama SQL, che sono 2 cose totalmente diverse
leggendo i vari post che scrivi mi sembra che fai confusione su MySQL e SQL. Puoi postare la chiamata che fai al database? cioè usi (execremotequery)? perchè se usi questo tu dovresti leggere i dati che arrivano da una pagina PHP, quindi in formato JSON. Che và a finire nel JobDone di B4A, che a sua volta viene splittata come la vuoi. E quindi và a finire nello grafico che ti serve.Se sbaglio dimentica questo post!
esatto.
 
Top