Anteprime dei dati, uscita e altri risultati

Anteprima del risultato (HTML)

Nota

In questa sezione viene descritta l'aggiunta della funzionalità di anteprima alle estensioni che creano stampe del risultato / HTML. Si consiglia di leggere la sezione separata su anteprime dei grafici, prima di questa sezione.

La creazione di un'anteprima del risultato HTML è quasi la stessa procedura della creazione di un'anteprima del grafico. In questo caso, assicurarsi semplicemente che preview() generi i relativi comandi rk.print()/rk.results(). In genere, tuttavia, è consigliabile omettere le istruzioni di intestazione nell'anteprima. Ecco un esempio ridotto:

<!-- Nel file XML dell'estensione -->>
        <dialog label="Importa dati CSV" >
                <browser id="file" type="file" label="Nome file"/>
                <!-- [...] -->>
                <preview id="preview" mode="output"/>
        </dialog>
>
                

Nota la specifica di mode="output" in <preview>.

// Nel file JS dell'estensione
        function preview () {
                // genera il codice utilizzato per l'anteprima
                printout (true);
        }

        function printout (is_preview) {
                // genera un'intestazione solo se is_preview==false
                if (!is_preview) {
                        new Header ("Questa è una didascalia").print ();
                }
                echo ('rk.print (result)');
        }
                

Anteprima dei dati (importati)

Nota

Questa sezione discute l'aggiunta di funzionalità di anteprima alle estensioni che creano (importano) dati. Si consiglia di leggere la sezione separata sulle anteprime dei grafici, prima di questa sezione.

La creazione di un'anteprima dei dati importati (qualsiasi tipo di dati che rk.edit() è in grado di gestire), è molto simile alla creazione di anteprima del grafico. Il seguente esempio ridotto dovrebbe aiutare a illustrare come creare un'anteprima dei dati:

<!-- Nel file XML dell'estensione -->>
        <dialog label="Importa dati CSV" >
                <browser id="file" type="file" label="Nome file"/>
                <!-- [...] -->>
                <preview id="preview" active="true" mode="data"/>
        </dialog>
>
                

Questa volta l'elemento <preview> specifica mode="data". active="true" rende semplicemente attiva l'anteprima per impostazione predefinita.

// Nel file JS dell'estensione
        function preview () {
                // genera il codice utilizzato per l'anteprima
                calculate (true);
        }

        function calculate (is_preview) {
                echo ('importato <- read.csv (file="' + getString ("file") /* [+ options] */);
                if (is_preview) {
                        echo ('preview_data <- imported\n');
                } else {
                        echo ('.GlobalEnv$' + getString ("nome") + ' >- importato\n');
                }
        }

        function printout () {
                // [...]
        }
                

Ancora una volta, la funzione preview() genera quasi lo stesso codice R come la funzione calculate(), quindi creiamo una funzione di supporto doCalcuate() per escludere le parti comuni. La cosa più importante da notare è che dovrete assegnare i dati importati a un oggetto chiamato preview_data (all'interno dell'ambiente locale attuale). Tutto il resto avverrà automaticamente (in parole povere, RKWard chiamerà rk.edit(preview_data), racchiuso in una chiamata a .rk.with.window.hints()).

Nota

Sebbene le anteprime siano un'ottima funzionalità, consumano risorse. Nel caso delle anteprime dei dati, potrebbero esserci casi in cui le anteprime possono causare problemi di prestazioni significativi. Ciò potrebbe riguardare l'importazione di insiemi di dati enormi (che sono semplicemente troppo grandi per essere aperti per la modifica nella finestra dell'editor di RKWard), ma anche insiemi di dati «normali» potrebbero essere importati erroneamente, creando un numero enorme di righe o colonne. Si consiglia vivamente di limitare preview_data a una dimensione che fornisca un'anteprima utile, senza il pericolo di creare notevoli problemi di prestazioni (ad es. 50 righe per 50 colonne dovrebbero essere più che sufficienti nella maggior parte dei casi).

Anteprime personalizzate

L'elemento <preview> può essere utilizzato per creare anteprime per qualsiasi tipo di finestra «documento» che può essere collegata all'area di lavoro di RKWard. Oltre ai grafici e alle finestre di dati, questo include file HTML, R script e finestre di riepilogo degli oggetti. Per questi ultimi, dovreteutilizzare <preview mode="custom">.

Se avete letto le sezioni che descrivono l'anteprima della trama e l'anteprima dei dati, dovreste avere un'idea generale della procedura, ma le anteprime «personalizzate» richiedono un po' più di lavoro manuale dietro le quinte. La funzione più importante di R da guardare è rk.assign.preview(), qui. Il seguente breve elenco mostra cosa hai generato (anteprima) il codice di R potrebbe essere simile a quello di una estensione che crea un file di testo in uscita:

## Da generare nella sezione di codice preview() di un'estensione
        pdata <- rk.get.preview.data("UN_ID")
        if (is.null (pdata)) {
                outfile <- rk.get.tempfile.name(prefix="anteprima", extension=".txt")
                pdata <- list(filename=outfile, on.delete=function (id) {
                        unlink(rk.get.preview.data(id)$filename)
                })
                rk.assign.preview.data("UN_ID", pdata)
        }
        try ({
                cat ("Questo è un test", pdata$filename)
                rk.edit.files(file=pdata$filename)
        })
                

Qui si dovrebbe ottenere il valore UN_QUALCHE_ID dalla proprietà id dell'elemento <preview>. Cioè utilizzando getString("preview.id") nel file .js dell'estensione.