pub struct PerspectiveViewerElement { /* private fields */ }Expand description
The <perspective-viewer> custom element.
§JavaScript Examples
Create a new <perspective-viewer>:
const viewer = document.createElement("perspective-viewer");
window.body.appendChild(viewer);Complete example including loading and restoring the Table:
import perspective from "@perspective-dev/viewer";
import perspective from "@perspective-dev/client";
const viewer = document.createElement("perspective-viewer");
const worker = await perspective.worker();
await worker.table("x\n1", {name: "table_one"});
await viewer.load(worker);
await viewer.restore({table: "table_one"});Implementations§
Source§impl PerspectiveViewerElement
impl PerspectiveViewerElement
Sourcepub fn load(&self, table: JsValue) -> ApiResult<ApiFuture<()>>
pub fn load(&self, table: JsValue) -> ApiResult<ApiFuture<()>>
Loads a [Client], or optionally Table, or optionally a Javascript
Promise which returns a [Client] or Table, in this viewer.
Loading a [Client] does not render, but subsequent calls to
PerspectiveViewerElement::restore will use this [Client] to look
up the proviced table name field for the provided
ViewerConfigUpdate.
Loading a Table is equivalent to subsequently calling
Self::restore with the table field set to Table::get_name, and
will render the UI in its default state when Self::load resolves.
If you plan to call Self::restore anyway, prefer passing a
[Client] argument to Self::load as it will conserve one render.
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 [Client] Promise
itself.
PerspectiveViewerElement::load may also be called with a Table,
which is equivalent to:
await viewer.load(await table.get_client());
await viewer.restore({name: await table.get_name()})If you plan to call PerspectiveViewerElement::restore immediately
after PerspectiveViewerElement::load yourself, as is commonly
done when loading and configuring a new <perspective-viewer>, you
should use a [Client] as an argument and set the table field in the
restore call as
A Table can be created using the
@perspective-dev/client
library from NPM (see perspective_js documentation for details).
§JavaScript Examples
import perspective from "@perspective-dev/client";
const worker = await perspective.worker();
viewer.load(worker);… or
const table = await worker.table(data, {name: "superstore"});
viewer.load(table);Complete example:
const viewer = document.createElement("perspective-viewer");
const worker = await perspective.worker();
await worker.table("x\n1", {name: "table_one"});
await viewer.load(worker);
await viewer.restore({table: "table_one", columns: ["x"]});… or, if you don’t want to pass your own arguments to restore:
const viewer = document.createElement("perspective-viewer");
const worker = await perspective.worker();
const table = await worker.table("x\n1", {name: "table_one"});
await viewer.load(table);Sourcepub fn delete(self) -> ApiFuture<()>
pub fn delete(self) -> ApiFuture<()>
Delete 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!
§JavaScript Examples
await viewer.delete();Sourcepub fn eject(&mut self) -> ApiFuture<()>
pub fn eject(&mut self) -> ApiFuture<()>
Restart 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.
Sourcepub fn getView(&self) -> ApiFuture<View>
pub fn getView(&self) -> ApiFuture<View>
Get 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.
§JavaScript Examples
const view = await viewer.getView();Sourcepub fn getViewConfig(&self) -> ApiFuture<JsViewConfig>
pub fn getViewConfig(&self) -> ApiFuture<JsViewConfig>
Get a copy of the [ViewConfig] for the current View. This is
non-blocking as it does not need to access the plugin (unlike
PerspectiveViewerElement::save), and also makes no API calls to the
server (unlike PerspectiveViewerElement::getView followed by
View::get_config)
Sourcepub fn getTable(&self, wait_for_table: Option<bool>) -> ApiFuture<Table>
pub fn getTable(&self, wait_for_table: Option<bool>) -> ApiFuture<Table>
Get the underlying Table for this viewer (as passed to
PerspectiveViewerElement::load or as the table field to
PerspectiveViewerElement::restore).
§Arguments
wait_for_table- whether to wait forPerspectiveViewerElement::loadto be called, or fail immediately ifPerspectiveViewerElement::loadhas not yet been called.
§JavaScript Examples
const table = await viewer.getTable();Sourcepub fn getClient(&self, wait_for_client: Option<bool>) -> ApiFuture<Client>
pub fn getClient(&self, wait_for_client: Option<bool>) -> ApiFuture<Client>
Get the underlying [Client] for this viewer (as passed to, or
associated with the Table passed to,
PerspectiveViewerElement::load).
§Arguments
wait_for_client- whether to wait forPerspectiveViewerElement::loadto be called, or fail immediately ifPerspectiveViewerElement::loadhas not yet been called.
§JavaScript Examples
const client = await viewer.getClient();Sourcepub fn getRenderStats(&self) -> ApiResult<JsValue>
pub fn getRenderStats(&self) -> ApiResult<JsValue>
Get render statistics. Some fields of the returned stats object are
relative to the last time PerspectiveViewerElement::getRenderStats
was called, ergo calling this method resets these fields.
§JavaScript Examples
const {virtual_fps, actual_fps} = await viewer.getRenderStats();Sourcepub fn flush(&self) -> ApiFuture<()>
pub fn flush(&self) -> ApiFuture<()>
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.
§JavaScript Examples
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();Sourcepub fn restore(&self, update: JsValue) -> ApiFuture<()>
pub fn restore(&self, update: JsValue) -> ApiFuture<()>
Restores this element from a full/partial
perspective_js::JsViewConfig (this element’s user-configurable
state, including the Table name).
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.
§Arguments
update- The config to restore to, as returned bySelf::savein either “json”, “string” or “arraybuffer” format.
§JavaScript Examples
Loads a default plugin for the table named "superstore":
await viewer.restore({table: "superstore"});Apply a group_by to the same viewer element, without
modifying/resetting other fields - you can omit the table field,
this has already been set once and is not modified:
await viewer.restore({group_by: ["State"]});Sourcepub fn resetError(&self) -> ApiFuture<()>
pub fn resetError(&self) -> ApiFuture<()>
If this element is in an errored state, this method will clear it and re-render. Calling this method is equivalent to clicking the error reset button in the UI.
Sourcepub fn save(&self) -> ApiFuture<JsValue>
pub fn save(&self) -> ApiFuture<JsValue>
Save this element’s user-configurable state to a serialized state
object, one which can be restored via the Self::restore method.
§JavaScript Examples
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);
});Sourcepub fn export(&self, method: Option<JsString>) -> ApiFuture<JsValue>
pub fn export(&self, method: Option<JsString>) -> ApiFuture<JsValue>
Exports this viewer’s internal View as a JavaSript data, the
exact type of which depends on the method but defaults to String
in CSV format.
This method is only really useful for the "plugin" method, which
will use the configured plugin’s export (e.g. PNG for
@perspective-dev/viewer-d3fc). Otherwise, prefer to call the
equivalent method on the underlying View directly.
§Arguments
method- TheExportMethodto use to render the data to download.
§JavaScript Examples
const data = await viewer.export("plugin");Sourcepub fn resize(&self, force: Option<bool>) -> ApiFuture<()>
pub fn resize(&self, force: Option<bool>) -> ApiFuture<()>
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.
§Arguments
force- IfSelf::resizeis called withfalseor without an argument, and auto-size mode is enabled viaSelf::setAutoSize,Self::resizewill log a warning and auto-disable auto-size mode.
§JavaScript Examples
await viewer.resize(true)Sourcepub fn setAutoSize(&self, autosize: bool)
pub fn setAutoSize(&self, autosize: bool)
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.
§Arguments
autosize- Whether to enableauto-sizebehavior or not.
§JavaScript Examples
Disable auto-size behavior:
viewer.setAutoSize(false);Sourcepub fn setAutoPause(&self, autopause: bool)
pub fn setAutoPause(&self, autopause: bool)
Sets 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.
§Arguments
autopauseWhether to enableauto-pausebehavior or not.
§JavaScript Examples
Disable auto-size behavior:
viewer.setAutoPause(false);Sourcepub fn getSelection(&self) -> Option<JsViewWindow>
pub fn getSelection(&self) -> Option<JsViewWindow>
Return a perspective_js::JsViewWindow for the currently selected
region.
Sourcepub fn setSelection(&self, window: Option<JsViewWindow>) -> ApiResult<()>
pub fn setSelection(&self, window: Option<JsViewWindow>) -> ApiResult<()>
Set the selection perspective_js::JsViewWindow for this element.
Sourcepub fn getEditPort(&self) -> Result<f64, JsValue>
pub fn getEditPort(&self) -> Result<f64, JsValue>
Get this viewer’s edit port for the currently loaded Table (see
Table::update for details on ports).
Sourcepub fn restyleElement(&self) -> ApiFuture<JsValue>
pub fn restyleElement(&self) -> ApiFuture<JsValue>
Restyle all plugins from current document.
Self::restyleElement must be called for many runtime changes to
CSS properties to be reflected in an already-rendered
<perspective-viewer>.
§JavaScript Examples
viewer.style = "--icon--color: red";
await viewer.restyleElement();Sourcepub fn resetThemes(&self, themes: Option<Box<[JsValue]>>) -> ApiFuture<JsValue>
pub fn resetThemes(&self, themes: Option<Box<[JsValue]>>) -> ApiFuture<JsValue>
Set 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.
§JavaScript Examples
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"])Sourcepub fn setThrottle(&self, val: Option<f64>)
pub fn setThrottle(&self, val: Option<f64>)
Determines 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.
§Arguments
throttle- The throttle rate in milliseconds (f64), orNonefor adaptive throttling.
§JavaScript Examples
Only draws at most 1 frame/sec:
viewer.setThrottle(1000);Sourcepub fn toggleConfig(&self, force: Option<bool>) -> ApiFuture<JsValue>
pub fn toggleConfig(&self, force: Option<bool>) -> ApiFuture<JsValue>
Sourcepub fn getAllPlugins(&self) -> Array
pub fn getAllPlugins(&self) -> Array
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.
Sourcepub fn getPlugin(
&self,
name: Option<String>,
) -> ApiResult<JsPerspectiveViewerPlugin>
pub fn getPlugin( &self, name: Option<String>, ) -> ApiResult<JsPerspectiveViewerPlugin>
Gets a plugin Custom Element with the name field, or get the active
plugin if no name is provided.
§Arguments
name- Thenameproperty of a perspective plugin Custom Element, orNonefor the active plugin’s Custom Element.
Sourcepub fn toggleColumnSettings(&self, column_name: String) -> ApiFuture<()>
pub fn toggleColumnSettings(&self, column_name: String) -> ApiFuture<()>
Asynchronously 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.
Sourcepub fn openColumnSettings(
&self,
column_name: Option<String>,
toggle: Option<bool>,
) -> ApiFuture<()>
pub fn openColumnSettings( &self, column_name: Option<String>, toggle: Option<bool>, ) -> ApiFuture<()>
Force open the settings for a particular column. Pass null to close
the column settings panel. See Self::toggleColumnSettings for more.
Trait Implementations§
Source§impl Clone for PerspectiveViewerElement
impl Clone for PerspectiveViewerElement
Source§fn clone(&self) -> PerspectiveViewerElement
fn clone(&self) -> PerspectiveViewerElement
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl CustomElementMetadata for PerspectiveViewerElement
impl CustomElementMetadata for PerspectiveViewerElement
Source§const CUSTOM_ELEMENT_NAME: &'static str = "perspective-viewer"
const CUSTOM_ELEMENT_NAME: &'static str = "perspective-viewer"
Source§const STATICS: &'static [&'static str]
const STATICS: &'static [&'static str]
Source§fn struct_name() -> &'static str
fn struct_name() -> &'static str
Source§impl From<PerspectiveViewerElement> for JsValue
impl From<PerspectiveViewerElement> for JsValue
Source§fn from(value: PerspectiveViewerElement) -> Self
fn from(value: PerspectiveViewerElement) -> Self
Source§impl RefFromWasmAbi for PerspectiveViewerElement
impl RefFromWasmAbi for PerspectiveViewerElement
Source§type Anchor = RcRef<PerspectiveViewerElement>
type Anchor = RcRef<PerspectiveViewerElement>
Self for the duration of the
invocation of the function that has an &Self parameter. This is
required to ensure that the lifetimes don’t persist beyond one function
call, and so that they remain anonymous.Source§impl VectorFromWasmAbi for PerspectiveViewerElement
impl VectorFromWasmAbi for PerspectiveViewerElement
type Abi = <Box<[JsValue]> as FromWasmAbi>::Abi
unsafe fn vector_from_abi(js: Self::Abi) -> Box<[PerspectiveViewerElement]>
Source§impl VectorIntoWasmAbi for PerspectiveViewerElement
impl VectorIntoWasmAbi for PerspectiveViewerElement
type Abi = <Box<[JsValue]> as IntoWasmAbi>::Abi
fn vector_into_abi(vector: Box<[PerspectiveViewerElement]>) -> Self::Abi
Source§impl WasmDescribeVector for PerspectiveViewerElement
impl WasmDescribeVector for PerspectiveViewerElement
impl SupportsConstructor for PerspectiveViewerElement
impl SupportsInstanceProperty for PerspectiveViewerElement
impl SupportsStaticProperty for PerspectiveViewerElement
Auto Trait Implementations§
impl Freeze for PerspectiveViewerElement
impl !RefUnwindSafe for PerspectiveViewerElement
impl !Send for PerspectiveViewerElement
impl !Sync for PerspectiveViewerElement
impl Unpin for PerspectiveViewerElement
impl !UnwindSafe for PerspectiveViewerElement
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoPropValue<Option<T>> for T
impl<T> IntoPropValue<Option<T>> for T
Source§fn into_prop_value(self) -> Option<T>
fn into_prop_value(self) -> Option<T>
self to a value of a Properties struct.Source§impl<T> IntoPropValue<T> for T
impl<T> IntoPropValue<T> for T
Source§fn into_prop_value(self) -> T
fn into_prop_value(self) -> T
self to a value of a Properties struct.Source§impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
Source§type Abi = <T as IntoWasmAbi>::Abi
type Abi = <T as IntoWasmAbi>::Abi
IntoWasmAbi::AbiSource§fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
IntoWasmAbi::into_abi, except that it may throw and never
return in the case of Err.