@perspective-dev/viewer
    Preparing search index...

    Interface IPerspectiveViewerPlugin

    The IPerspectiveViewerPlugin interface defines the necessary API for a <perspective-viewer> plugin, which also must be an HTMLElement via the Custom Elements API or otherwise. Rather than implement this API from scratch however, the simplest way is to inherit from <perspective-viewer-plugin>, which implements IPerspectiveViewerPlugin with non-offensive default implementations, where only the draw() and get_static_config() methods need be overridden to get started with a simple plugin.

    Note that plugins are frozen once a <perspective-viewer> has been instantiated, so generally new plugin code must be executed at the module level (if packaged as a library), or during application init to ensure global availability of a plugin.

    const BasePlugin = customElements.get("perspective-viewer-plugin");
    class MyPlugin extends BasePlugin {
    get_static_config() {
    return { name: "My Plugin", config_column_names: [] };
    }
    async draw(view) {
    const count = await view.num_rows();
    this.innerHTML = `View has ${count} rows`;
    }
    }

    customElements.define("my-plugin", MyPlugin);
    const Viewer = customElements.get("perspective-viewer");
    Viewer.registerPlugin("my-plugin");
    interface IPerspectiveViewerPlugin {
        column_style_config?: (view_type: string, group: string) => any;
        clear(): Promise<void>;
        delete(): void;
        draw(view: View): Promise<void>;
        get_static_config(): PluginStaticConfig;
        resize(view: View): Promise<void>;
        restore(config: any): void;
        restyle(): void;
        update(view: View): Promise<void>;
    }

    Implemented by

    Index

    Properties

    column_style_config?: (view_type: string, group: string) => any

    Determines which column configuration controls are populated in the viewer. Corresponds to the data the plugin will recieve on save. Only invoked when can_render_column_styles is true in the static config.

    Methods

    • Clear this plugin, though it is up to the discretion of the plugin author to determine what this means. Defaults to resetting this element's innerHTML, so be sure to override if you want custom behavior.

      Returns Promise<void>

      async clear(): Promise<void> {
      this.innerHTML = "";
      }
    • Render this plugin using the provided View. While there is no provision to cancel a render in progress per se, calling a method on a View which has been deleted will throw an exception.

      Parameters

      • view: View

      Returns Promise<void>

      async draw(view: perspective.View): Promise<void> {
      const csv = await view.to_csv();
      this.innerHTML = `<pre>${csv}</pre>`;
      }
    • Like update(), but for when the dimensions of the plugin have changed and the underlying data has not.

      Parameters

      • view: View

      Returns Promise<void>

    • Draw under the assumption that the ViewConfig has not changed since the previous call to draw(), but the underlying data has. Defaults to dispatch to draw().

      Parameters

      • view: View

      Returns Promise<void>

      async update(view: perspective.View): Promise<void> {
      return this.draw(view);
      }