Create a session app

This examples shows how to:

  • create a session app by opening a QIX session to an app with a random id that starts with “SessionApp_”
  • connect to the app and add some data to it
  • create an object and setup an event listener to when hypercube changes
  • reload the data to trigger the changed event.
import { auth, qix } from "@qlik/api";

auth.setDefaultHostConfig({
  host: "your-tenant.region.qlikcloud.com",
  authType: "apikey",
  apiKey: "<api-key>",

async function main() {
  try {
    // Create a session app
    const randomId = Math.random().toString(32).substring(3);
    const appId = `SessionApp_${randomId}`;
    // if appId starts with SessionApp_ and have a unique id it will become a session app.

    // Open a websocket session with the session app id
    const session = qix.openAppSession({ appId });
    // Get the app object
    const app = await session.getDoc();

    // Set a script in the app
    const script = `
  TempTable:
  Load
  RecNo() as ID,
  Rand() as Value
  AutoGenerate 100
  `;
    await app.setScript(script);

    // Create an object with a hypercube using fields in the data model
    const properties = {
      qInfo: {
        qType: "my-straight-hypercube",
      },
      qHyperCubeDef: {
        qDimensions: [
          {
            qDef: { qFieldDefs: ["ID"] },
          },
        ],
        qMeasures: [
          {
            qDef: { qDef: "=Sum(Value)" },
          },
        ],
        qInitialDataFetch: [
          {
            qHeight: 5,
            qWidth: 2,
          },
        ],
      },
    };
    const hypercube = await app.createObject(properties);
    await hypercube.getLayout();

    // Register an event listener for change events
    hypercube.on("changed", () => {
      console.log("changed ✅");
    });

    console.log("performing reload, expect a change to the hypercube object to happen");
    // Do a reload of the app
    await app.doReload();

    // Close session
    await session.close();
  } catch (e) {
    console.error(e);
  }
}

main();

ON THIS PAGE

Was this page helpful?