paletteImporter

Il principale compito del paletteImporter è quello di permettere l’importazione di un file tramite interfaccia e di ricevere dati all’upload del file stesso (es: un file di monitoraggio che monitora un certo apparecchio in differenti intervalli di tempo).

Tutto questo è realizzabile tramite questa funzione, che vediamo subito all’opera:

bar = view.top.bar.replaceSlots('delrow','importa,2,delrow')
bar.importa.paletteImporter(paletteCode='xls_importer',
                          dockButton_iconClass=False,
                          title='!!Importa clienti',
                          importButton_label='Importa',
                          previewLimit=50,
                          dropMessage='Trascina qui il tuo file o clicca per cercarlo',
                          filetype='excel',
                          importButton_action="genro.publish('import_clienti',{filepath:imported_file_path,agente_id:agente_id})",
                          matchColumns='*',
                          importButton_ask=dict(title='Assegna record importati',
                                              fields=[dict(name='agente_id',lbl='Agente', tag='dbSelect',
                                                          hasDownArrow=True, table='agt.agente',
                                                          default='^current.agente_id')])
                          )

bar.dataRpc(self.importaClienti, subscribe_import_clienti=True,
                              _onResult="genro.publish('xls_importer_onResult',result);",
                              _onError="genro.publish('xls_importer_onResult',{error:error});")

Il parametro dockButton_iconClass definisce l’icona da usare per l’importer (es: dockButton_iconClass='iconbox import_data_tool', oppure dockButton_iconClass=False per non mostrare alcuna icona ma solo un bottone con un’etichetta.

I parametri importButton_ permettono di configurare le caratteristiche del pulsante di import. Con importButton_label specifichiamo la label dell’importButton (es: importButton_label='Importa Aziende'), mentre con importButton_action definiamo in javascript l’azione da fare quando il file viene caricato (es: importButton_action="genro.publish('import_aziende',{filepath:imported_file_path})").

Tale funzione riceverà automaticamente l”imported_file_path, ovvero il path dove il file è stato salvato, che passeremo in questo modo al metodo di importazione personalizzato, eventualmente insieme ad altri parametri a piacere.

Il paletteImporter può ricevere molti parametri tra cui anche ask, il quale serve per aprire un popup per settare alcuni parametri che poi ritroveremo nello scope dell’action.

In alternativa alla creazione di un metodo all’interno di una dataRpc come nell’esempio di cui sopra, è possibile in alternativa definire un metodo importer_ all’interno di una table, e richiamarlo dal paletteImporter con il parametro importerMethod (specificando ovviamente anche la table dove si trova il metodo). In questo caso diventa anche possibile passare dei parametri al metodo di importazione con il parametro constant_:

bar = view.top.bar.replaceSlots('delrow','importa,2,delrow')
bar.importa.paletteImporter(paletteCode='xls_importer',
                          dockButton_iconClass=False,
                          title='!!Importa clienti',
                          importButton_label='Importa',
                          dropMessage='Trascina qui il tuo file o clicca per cercarlo',
                          table='fatt.cliente',
                          importerMethod='clienti',
                          constant_agente_id='^gnr.rootenv.agente_id',
                          matchColumns='*')

Parametri:

Nome parametro

Tipo

Descrizione

paletteCode

T

Permette di indicare un codice univoco per la palette (es: paletteCode=”xls_importer”)

title

T

Permette di indicare un titolo per la finestra di importazione (es: title=”!!Importa clienti”)

datapath

T

Permette di assegnare un datapath

storepath

T

Permette di assegnare uno storepath da cui reperire la Bag dei valori da mostrare nella palette

dockTo

T

Permette di indicare il dock a cui appendere la palette

dockButton

B

Se impostato a True permette di mostrare l’icona che apre la palette

filetype

T

Permette di indicare il filetype predefinito, in modo che nell’interfaccia di importazione sarà pre-compilato il tipo di file indicato (es: filetype=”excel”)

previewLimit

L

Permette di indicare un numero massimo di record da mostrare nell’anteprima (es: previewLimit=50)

dropMessage

T

Permette di indicare il testo da presentare nel campo dove verrà rilasciato il file (es: dropMessage=”Trascina qui il tuo file o clicca per cercarlo”)

dockButton_iconClass

T

Permette di indicare un’icona da mostrare nel bottone della palette (es: dockButton_iconClass=”iconbox inbox” o anche dockButton_iconClass=False per non mostrare icone)

importButton_action

T

Permette di specificare l’azione da eseguire, in javascript (es: importButton_action=»genro.publish (“import_clienti”,{filepath:imported_file_path})»)

importButton_label

T

Permette di indicare un’etichetta per il bottone (es: importButton_label=”Importa”)

importButton_ask

T

Permette di richiedere parametri addizionali prima dell’importazione (es: importButton_ask=dict(title=”Assegna record import ati”,fields=[dict(name=”agente_id”,lbl=”Agente”, tag=”dbSelect”, hasDownArrow=True, table=”agt.agente”, default=”^current.agente_id”)]))

matchColumns

T

Se specificato non viene visualizzata la parte sinistra della griglia (dove vengono associate le colonne ai campi) perché il suo contenuto indica come è fatto il file (es: matchColumns=”$nome,$cognome”, oppure matchColumns=”*”). Se valorizzato, verrà eseguito un controllo di validità, se impostato a “*” non verrà eseguito alcun controllo di validità.

importerMethod Parametri

table

T

Permette di indicare la table, obbligatorio se si indica un metodo di importazione della table con il parametro importerMethod (es: table=”fatt.cliente”)

importerMethod

T

Permette di indicare un metodo di importazione definito nella table come importer_nomedelmetodo (es: importerMethod=”nomedelmetodo”)

constant_

T

Permette di passare dei parametri a piacere al metodo importer_ (es: constant_cliente_id=”^.cliente_id”)

paletteGrid Parametri

viewResource

T

Permette di indicare la view della table da utilizzare

struct

T

Se utilizza una Bag di dati, permette di indicare il metodo che costruisce la struct e definisce colonne, etichette, dimensioni, ecc della griglia

Autore della sezione: Davide Paci