Neighbour Problem Manager

    ardoq-sdk-js
    TypeScript icon, indicating that this package has built-in type declarations

    0.2.2 • Public • Published

    Ardoq SDK JS

    This is an, as of yet, small SDK for developing against the Ardoq API. It currently constist of two parts:

    1. The API - A set of functions corresponding to the API endpoints of Ardoq, with correct typings
    2. A graph syncer - A function that allows you to define a simple graph object and update a set of workspaces in Ardoq to match this local graph

    Please open an issue if there is any functionality you are missing, or if you find any bugs.

    Usage

    For complete usage examples, please see our repo with examples.

    The API

    The following example demonstrates how to create a component with the api.

    import { getAggregatedWorkspace, updateComponent } from 'ardoq-sdk-js';
     
    const apiProps = {
      authToken: '<authentication token>',
      org: 'my-org',
      url: 'https://app.ardoq.com/api/',
    };
     
    const main = async () => {
      const workspace = await getAggregatedWorkspace(apiProps, '<workspace id>');
      for (const component of workspace.components) {
        await updateComponent(apiProps, {
          ...component,
          description: (component.description || '') + '\nVisisted by script',
        });
      }
    };
     
    main();

    The Graph Syncer

    The following example demonstrates most of the functionality of the graph syncer. Notice that the sync function will take care of creating the used types and fields. Fields can be changed locally, and will lead to the components remotely being updated as long as the customIds stay the same.

    import { sync, FieldType } from "ardoq-sdk-js";
     
    const apiProps = {
      authToken: "<authentication token>",
      org: "my-org",
      url: "https://app.ardoq.com/api/"
    };
     
    const fields = [
      {
        name: "excerciseValue",
        label: "Excercise value",
        type: FieldType.NUMBER
      }
    ];
    const workspaces = {
      activities: "<workspace id>",
      equipment: "<workspace id>",
    };
    const graph = {
      components: [
        {
          customId: "walking",
          workspace: "activities",
          name: "Walking",
          type: "Simple Activity",
          fields: {
            excerciseValue: 10
          }
        },
        {
          customId: "running",
          workspace: "activities",
          name: "Running",
          type: "Simple Activity",
          parent: 'walking',
          fields: {
             excerciseValue: 50
          }
        },
        {
          customId: "sailing",
          workspace: "activities",
          name: "Sailing",
          type: "Complex Activity",
          fields: {
             excerciseValue: 15
          }
        },
        {
          customId: "dinghy",
          workspace: "equipment",
          name: "Dinghy",
          type: "Equipment"
        }
      ],
      references: [
        {
          customId: "sailing-uses-dinghy",
          source: "sailing",
          type: "Uses",
          target: "dinghy",
        },
      ]
    };
     
    sync(apiProps, workspaces, graph, fields);

    Contributing

    There are a few things that could use some work:

    • Verify the validity of the graph before attempting sync
    • Add more of the api endpoints
    • Write more tests for sync

    Developing and testing

    • yarn start will start continous building (very nice to combine with yarn link for live testing in another repo)
    • yarn test --watch will start continous testing

    Cutting a new release

    1. Make sure everything works: yarn test
    2. Publish: yarn publish
      • NB: Make sure to follow schemantic versioning. As long as we are in 0.x.x, make sure to bump the minor version on any change that could break existing code.

    Install

    npm i ardoq-sdk-js

    DownloadsWeekly Downloads

    429

    Version

    0.2.2

    License

    MIT

    Unpacked Size

    355 kB

    Total Files

    35

    Last publish

    Collaborators

    • rafaa2
    • hegelstad
    • totokaka
    • michaltaberski-ardoq
    • davidnegleyardoq
    • chriskr
    • oyvindsabo
    • holographic-principle
    • tomoboy
    • john.sloat