Copy this viewer's View
or Table
data as CSV to the system
clipboard.
method
- The ExportMethod
(serialized as a String
) to use to
render the data to the Clipboard.myDownloadButton.addEventListener("click", async () => {
await viewer.copy();
})
Optional
method: null | stringDelete the internal [View
] and all associated state, rendering this
<perspective-viewer>
unusable and freeing all associated resources.
Does not delete the supplied [Table
] (as this is constructed by the
callee).
Calling any method on a <perspective-viewer>
after [Self::delete
]
will throw.
Allowing a <perspective-viewer>
to be garbage-collected
without calling [PerspectiveViewerElement::delete
] will leak WASM
memory!
await viewer.delete();
Download this viewer's internal [View
] data as a .csv
file.
flat
- Whether to use the current [perspective_js::JsViewConfig
]
to generate this data, or use the default.myDownloadButton.addEventListener("click", async () => {
await viewer.download();
})
Optional
flat: null | booleanRestart this <perspective-viewer>
to its initial state, before
load()
.
Use Self::restart
if you plan to call Self::load
on this viewer
again, or alternatively Self::delete
if this viewer is no longer
needed.
Flush any pending modifications to this <perspective-viewer>
. Since
<perspective-viewer>
's API is almost entirely async
, it may take
some milliseconds before any user-initiated changes to the [View
]
affects the rendered element. If you want to make sure all pending
actions have been rendered, call and await [Self::flush
].
[Self::flush
] will resolve immediately if there is no [Table
] set.
In this example, [Self::restore
] is called without await
, but the
eventual render which results from this call can still be awaited by
immediately awaiting [Self::flush
] instead.
viewer.restore(config);
await viewer.flush();
Create a new JavaScript Heap reference for this model instance.
Get an Array
of all of the plugin custom elements registered for this
element. This may not include plugins which called
[registerPlugin
] after the host has rendered for the first time.
Get this viewer's edit port for the currently loaded [Table
] (see
[Table::update
] for details on ports).
Return a [perspective_js::JsViewWindow
] for the currently selected
region.
Get the underlying [Table
] for this viewer (as passed to
[PerspectiveViewerElement::load
]).
wait_for_table
- whether to wait for
[PerspectiveViewerElement::load
] to be called, or fail immediately
if [PerspectiveViewerElement::load
] has not yet been called.const table = await viewer.getTable();
Optional
wait_for_table: null | booleanGet the underlying [View
] for this viewer.
Use this method to get promgrammatic access to the [View
] as currently
configured by the user, for e.g. serializing as an
Apache Arrow before passing to another
library.
The [View
] returned by this method is owned by the
[PerspectiveViewerElement
] and may be invalidated by
[View::delete
] at any time. Plugins which rely on this [View
] for
their [HTMLPerspectiveViewerPluginElement::draw
] implementations
should treat this condition as a cancellation by silently aborting on
"View already deleted" errors from method calls.
const view = await viewer.getView();
Loads a [Table
] (or rather, a Javascript Promise
which returns a
[Table
]) in this viewer.
When [PerspectiveViewerElement::load
] resolves, the first frame of the
UI + visualization is guaranteed to have been drawn. Awaiting the result
of this method in a try
/catch
block will capture any errors
thrown during the loading process, or from the [Table
] Promise
itself.
A [Table
] can be created using the
@finos/perspective
library from NPM (see [perspective_js
] documentation for details).
import perspective from "@finos/perspective";
const worker = await perspective.worker();
viewer.load(worker.table("x,y\n1,2"));
Force open the settings for a particular column. Pass null
to close
the column settings panel. See [Self::toggleColumnSettings
] for more.
Optional
column_name: null | stringOptional
toggle: null | booleanSet the available theme names available in the status bar UI.
Calling [Self::resetThemes
] may cause the current theme to switch,
if e.g. the new theme set does not contain the current theme.
Restrict <perspective-viewer>
theme options to only default light
and dark themes, regardless of what is auto-detected from the page's
CSS:
viewer.resetThemes(["Pro Light", "Pro Dark"])
Optional
themes: null | any[]Recalculate the viewer's dimensions and redraw.
Use this method to tell <perspective-viewer>
its dimensions have
changed when auto-size mode has been disabled via [Self::setAutoSize
].
[Self::resize
] resolves when the resize-initiated redraw of this
element has completed.
force
- If [Self::resize
] is called with false
or without an
argument, and auto-size mode is enabled via [Self::setAutoSize
],
[Self::resize
] will log a warning and auto-disable auto-size mode.await viewer.resize(true)
Optional
force: null | booleanRestores this element from a full/partial
[perspective_js::JsViewConfig
].
One of the best ways to use [Self::restore
] is by first configuring
a <perspective-viewer>
as you wish, then using either the Debug
panel or "Copy" -> "config.json" from the toolbar menu to snapshot
the [Self::restore
] argument as JSON.
update
- The config to restore to, as returned by [Self::save
] in
either "json", "string" or "arraybuffer" format.Apply a group_by
to the current [View
], without modifying/resetting
other fields:
await viewer.restore({group_by: ["State"]});
Save this element to serialized state object, one which can be restored
via the [Self::restore
] method.
format
- Supports "json" (default), "arraybuffer" or "string".Get the current group_by
setting:
const {group_by} = await viewer.restore();
Reset workflow attached to an external button myResetButton
:
const token = await viewer.save();
myResetButton.addEventListener("clien", async () => {
await viewer.restore(token);
});
Optional
format: null | stringSets the auto-pause behavior of this component.
When true
, this <perspective-viewer>
will register an
IntersectionObserver
on itself and subsequently skip rendering
whenever its viewport visibility changes. Auto-pause is enabled by
default.
autopause
Whether to enable auto-pause
behavior or not.Disable auto-size behavior:
viewer.setAutoPause(false);
Sets the auto-size behavior of this component.
When true
, this <perspective-viewer>
will register a
ResizeObserver
on itself and call [Self::resize
] whenever its own
dimensions change. However, when embedded in a larger application
context, you may want to call [Self::resize
] manually to avoid
over-rendering; in this case auto-sizing can be disabled via this
method. Auto-size behavior is enabled by default.
autosize
- Whether to enable auto-size
behavior or not.Disable auto-size behavior:
viewer.setAutoSize(false);
Set the selection [perspective_js::JsViewWindow
] for this element.
Optional
window: null | ViewWindowDetermines the render throttling behavior. Can be an integer, for
millisecond window to throttle render event; or, if None
, adaptive
throttling will be calculated from the measured render time of the
last 5 frames.
throttle
- The throttle rate in milliseconds (f64), or None
for
adaptive throttling.Only draws at most 1 frame/sec:
viewer.setThrottle(1000);
Optional
val: null | numberAsynchronously opens the column settings for a specific column.
When finished, the <perspective-viewer>
element will emit a
"perspective-toggle-column-settings" CustomEvent.
The event's details property has two fields: {open: bool, column_name?: string}
. The CustomEvent is also fired whenever the user toggles the
sidebar manually.
The
<perspective-viewer>
custom element.JavaScript Examples
Create a new
<perspective-viewer>
: