PsyTask | API Docs
    Preparing search index...

    Class App<T>

    Type Parameters

    • T extends { frame_ms: number } = { frame_ms: number }

    Hierarchy (View Summary)

    Constructors

    • Type Parameters

      • T extends { frame_ms: number } = { frame_ms: number }

      Parameters

      • root: HTMLElement

        Root element of the app

      • data: T & LooseObject

        Data will be collected automatically

      Returns App<T>

    Properties

    data: T & LooseObject

    Data will be collected automatically

    Root element of the app

    Methods

    • Create data collector

      Type Parameters

      • T extends LooseObject

      Parameters

      Returns Collector<T>

      Basic usage

      using dc = await app.collector('data.csv');
      dc.add({ name: 'Alice', age: 25 });
      dc.add({ name: 'Bob', age: 30 });
      dc.final(); // get final text
      dc.download(); // download data.csv

      Add listeners

      using dc = await app
      .collector('data.csv')
      .on('add', (row) => {
      console.log('add a row', row);
      })
      .on('chunk', (chunk) => {
      console.log('a chunk of raw is ready', chunk);
      });
    • Create a scene

      Type Parameters

      • T extends MaybeGenericSceneSetup

      Parameters

      • ...__namedParameters: any

      Returns Scene<T>

      Create text scene

      const setup = (props: { text: string }, ctx: Scene<any>) => {
      const el = document.createElement('div');
      ctx.on('scene:show', (props) => {
      el.textContent = props.text; // update element
      });
      return { node: el, data: () => ({ text: el.textContent }) }; // return element and data getter
      };

      // create scene by setup function
      using scene = app.scene(setup, {
      defaultProps: { text: 'default text' }, // default props is required
      close_on: 'key: ', // close when space is pressed
      duration: 100, // auto close after 100ms
      });
      // change props.text and show, then get data
      const data = await scene.show({ text: 'new text' });

      Scene