Opmerking
In deze sectie bespreken we het toevoegen van preview functionaliteit voor plugins die uitvoer / HTML afdrukken. U wordt aangeraden eerst de aparte sectie over plot previews te lezen.
Het maken van een preview van HTML-uitvoer is bijna dezelfde procedure als het maken van een plot preview. In dit geval verzekert u zich ervan dat preview() de relevante rk.print()/rk.results() opdrachten genereert. Echter, in het algemeen is het handig de statements voor de kopregel in de preview weg te laten. Hier is een uitgekleed voorbeeld:
<!-- In the plugin's XML file -->> <dialog label="Importeer CSV-data" > <browser id="bestand" type="bestand" label="Bestandnaam"/> <!-- [...] -->> <preview id="preview" mode="output"/> </dialog> >
Merk de specificatie op van mode="output"
in het <preview>-element.
// In het plugin's JS-bestand function preview () { // genereert code voor preview printout (true); } function printout (is_preview) { // genereert alleen een koptekst als is_preview==false if (!is_preview) { new Header ("Dit is een koptekst").print (); } echo ('rk.print (result)'); }
Opmerking
In deze sectie bespreken we het toevoegen van preview functionaliteit voor plugins die gegevens aanmaken (importeren). U wordt aangeraden eerst de aparte sectie over plot previews te lezen.
Het maken van een preview van geïmporteerde gegevens (elk type gegevens dat door rk.edit() kan worden verwerkt), is bijna gelijk aan het maken van een plot preview. Hier is een uitgekleed voorbeeld van het maken van een preview van gegevens:
<!-- In het plugin's XML-bestand -->> <dialog label="Importeer CSV-data" > <browser id="bestand" type="bestand" label="Bestandnaam"/> <!-- [...] -->> <preview id="preview" active="true" mode="data"/> </dialog> >
Merk op dat het <preview>-element deze keer de mode="data"
specificeert. active="true"
maakt eenvoudig de preview standaard actief.
// In het plugin's JS-bestand function preview () { // genereert de code voor preview calculate (true); } function calculate (is_preview) { echo ('imported <- read.csv (file="' + getString ("bestand") /* [+ opties] */); if (is_preview) { echo ('preview_data <- imported\n'); } else { echo ('.GlobalEnv$' + getString ("name") + ' >- imported\n'); } } function printout () { // [...] }
Ook nu weer genereert de functie preview() bijna dezelfde R-code als de functie calculate(), dus maken we een hulpfunctie doCalcuate()voor het ontbinden van de gemeenschappelijkeonderdelen. Het belangrijkste waar u op moet letten, is dat u de geïmporteerde gegevens moet toewijzen aan een object genaamd preview_data
(binnen de huidige - lokale - omgeving). Al het andere gebeurt automatisch (grof gezegd, roept RKWard rk.edit(preview_data) aan, opgenomen in een aanroep van .rk.with.window.hints()).
Opmerking
Hoewel previews een mooie eigenschap is, gebruiken zij wel hulpbronnen (resources). In het geval van voorbeeldweergaven van gegevens, kan het voorkomen dat het systeem dit niet aankan. Dit kan gebeuren bij het invoeren van enorme gegevensverzamelingen (datasets) (die te groot zijn om te kunnen worden geopend voor bewerking in het bewerkingsvenster van RKWard). Maar ook "normale" gegevensverzamelingen kunnen verkeerd worden geïmporteerd, waardoor een enorm aantal rijen of kolommen worden aangemaakt. Het is sterk aan te raden dat u de preview_data
parameter beperkt tot dimensies die de preview mogelijk maakt, zonder dat het systeem merkbaar traag wordt (bijv. 50 rijen bij 50 kolommen zou meer dan genoeg zijn in de meeste gevallen).
Het <preview>-element kan worden gebruikt voor het maken van previews voor elk type type "document"-venster dat kan worden gekoppeld aan een workplace van RKWard. Behalve plots en gegevensvensters, zijn dit HTML -bestanden, R-scripts, en object opsommingsvensters (object summary windows). Voor deze laatste, moet u <preview mode="custom"> gebruiken.
Als u de secties die plot preview en gegevens previews beschrijven heeft gelezen, heeft u al een algemene indruk van de werkwijze, maar "custom" (aangepast, eigen) previews eisen iets meer handwerk achter de schermen. De belangrijkste R-functie hier is rk.assign.preview.data(). De volgende korte code laat zien hoe uw gegenereerde (preview) R-code eruit kan zien voor een plugin die een tekstbestand als uitvoer genereert:
## Moet worden gegenereerd in de preview() code-sectie van een plugin pdata <- rk.get.preview.data("EENID") if (is.null (pdata)) { outfile <- rk.get.tempfile.name(prefix="preview", extension=".txt") pdata <- list(bestandnaam=outfile, on.delete=function (id) { unlink(rk.get.preview.data(id)$bestandnaam) }) rk.assign.preview.data("SOMEID", pdata) } try ({ cat ("Dit is een test", pdata$bestandnaam) rk.edit.files(file=pdata$bestandnaam) })
U moet hier de waarde EENID
verkrijgen uit de id
-eigenschap van het <preview>-element. Bv. met behulp van getString ("preview.id") in het .js-bestand van de plugin.