.. _widgetpedia/genro/palette/paletteImporter: 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 :ref:`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='*') .. Possono essere passate altre funzione come **uploadPath** cosi è possibile un path diverso da quello default (uploadPath='site:mieifile'). .. È possibile definire funzioni nelle varie fasi del caricamento del file tramite i parametri: - onUploadingMethod - onResult - onError - onAbort - onProgress È possibile definire la dimensione massima del file tramite il paramtero **maxsize** E è possibile limitare le estenzioni degli file **drop_ext** (drop_ext = 'png,jpg,jpeg,gif') uploadPath filename='=nomefile' nodeId onUploading_pippo onUploaded_paperino Metodo importer_ può ritornare un dizionario con warning e warning_mode per visualizzare un floating message (o se warning_mode='alert' una schermata con clic) con i risultati dell'importazione. .. raw:: html
**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 | +------------------------+------+--------------------------------------------------+ .. sectionauthor:: Davide Paci