Vistes prèvies de dades, sortida i altres resultats

Vistes prèvies de sortida (HTML)

Nota

Aquesta secció tracta d'afegir funcionalitats de vista prèvia als connectors que creen impressions de sortida/HTML. Es recomana que llegiu la secció separada de les previsualitzacions de diagrama abans d'aquesta secció.

Crear una vista prèvia de la sortida HTML és gairebé el mateix procediment que crear una vista prèvia del gràfic. En aquest cas, simplement assegureu-vos que preview() genera les ordres rk.print()/rk.results() pertinents. No obstant això, en general és una bona idea ometre les sentències de capçalera en la previsualització. Aquí hi ha un exemple reduït:

<!-- In the plugin's XML file -->>
        <dialog label="Import CSV data" >
                <browser id="file" type="file" label="File name"/>
                <!-- [...] -->>
                <preview id="preview" mode="output"/>
        </dialog>
>
                

Tingueu en compte l'especificació del mode="output" en l'element <preview>.

// In the plugin's JS file
        function preview () {
                // generates the code used for preview
                printout (true);
        }

        function printout (is_preview) {
                // only generates a header if is_preview==false
                if (!is_preview) {
                        new Header ("This is a caption").print ();
                }
                echo ('rk.print (result)');
        }
                

Vistes prèvies de dades (importades)

Nota

Aquesta secció analitza l'addició de funcionalitats de vista prèvia als connectors que creen (importen) dades. Es recomana que llegiu la secció separada a les previsualitzacions de diagrama, abans d'aquesta secció.

Crear una vista prèvia de les dades importades (qualsevol tipus de dades que rk.edit() pot gestionar), és molt similar a crear una vista prèvia de diagrama. L'exemple reduït següent hauria d'ajudar a il·lustrar com crear una vista prèvia de dades:

<!-- In the plugin's XML file -->>
        <dialog label="Import CSV data" >
                <browser id="file" type="file" label="File name"/>
                <!-- [...] -->>
                <preview id="preview" active="true" mode="data"/>
        </dialog>
>
                

Tingueu en compte que l'element <preview> especifica mode="data" aquesta vegada. active="true" simplement activa la vista prèvia predeterminada.

// In the plugin's JS file
        function preview () {
                // generates the code used for preview
                calculate (true);
        }

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

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

De nou, la funció preview() genera gairebé el mateix codi R que la funció calculate(), de manera que creem una funció auxiliar doCalcuate() per a factoritzar les parts comunes. El més important a tenir en compte és que haureu d'assignar les dades importades a un objecte anomenat preview_data (dins de l'entorn actual: local). Tota la resta passarà automàticament (aproximadament, el RKWard cridarà rk.edit(preview_data), embolcallat dins d'una crida a .rk.with.window.hints()).

Nota

Mentre que les vistes prèvies són una característica bona, consumeixen recursos. En el cas de les previsualitzacions de dades pot haver-hi casos on les previsualitzacions poden causar problemes de rendiment significatius. Això podria ser per a la importació de conjunts de dades enormes (que són massa grans per a ser oberts per a l'edició a la finestra de l'editor del RKWard), però també es podrien importar conjunts de dades "normals", creant un gran nombre de files o columnes. És molt recomanable que limiteu les preview_data a una dimensió que proporciona una vista prèvia útil, sense el perill de crear problemes de rendiment notables (p. ex., 50 files per 50 columnes haurien de ser més que suficients en la majoria dels casos).

Vistes prèvies personalitzades

L'element <preview> es pot utilitzar per a crear vistes prèvies per a qualsevol tipus de finestra de "document" que es pot adjuntar al lloc de treball del RKWard. A més de diagrames i finestres de dades, això inclou fitxers HTML, scripts R i finestres de resum d'objectes. Per a aquests últims, haureu d'utilitzar <preview mode="custom">.

Si heu llegit les seccions que descriuen la vista prèvia del diagrama i les vistes prèvies de les dades, hauríeu de tenir una idea general sobre el procediment, però les vistes prèvies «personalitzades» requereixen una mica més de treball manual entre bastidors. La funció R més important que cal mirar és rk.assign.preview.data(), aquí. El llistat curt següent mostra com podria ser el codi R generat (previsualització) per a un connector que creï una sortida de fitxer de text:

## Per a ser generat en la secció de codi preview() d'un connector
        pdata <- rk.get.preview.data("SOMEID")
        if (is.null (pdata)) {
                outfile <- rk.get.tempfile.name(prefix="preview", extension=".txt")
                pdata <- list(filename=outfile, on.delete=function (id) {
                        unlink(rk.get.preview.data(id)$filename)
                })
                rk.assign.preview.data("SOMEID", pdata)
        }
        try ({
                cat ("This is a test", pdata$filename)
                rk.edit.files(file=pdata$filename)
        })
                

Aquí hauríeu d'obtenir el valor SOMEID a partir de la propietat id de l'element <preview>. P. ex., s'utilitza getString ("preview.id") al fitxer .js del connector.