@plattar/plattar-api

Module for interfacing with the Plattar API (https://www.plattar.com)

Usage no npm install needed!

<script type="module">
  import plattarPlattarApi from 'https://cdn.skypack.dev/@plattar/plattar-api';
</script>

README

Plattar Logo

install size Minified MinZipped NPM Codacy Badge License

plattar-api allows interfacing with the Plattar API.

Quick Use

// Minified Version ES2015 & ES2019 (Latest)
https://cdn.jsdelivr.net/npm/@plattar/plattar-api/build/es2015/plattar-api.min.js
https://cdn.jsdelivr.net/npm/@plattar/plattar-api/build/es2019/plattar-api.min.js

// Standard Version ES2015 & ES2019 (Latest)
https://cdn.jsdelivr.net/npm/@plattar/plattar-api/build/es2015/plattar-api.js
https://cdn.jsdelivr.net/npm/@plattar/plattar-api/build/es2019/plattar-api.js

Installation

  • Install using npm
npm install @plattar/plattar-api

Building For Browsers

  • Generate ES6 minified JS
cd plattar-api
npm install
npm run build

How to Use

  • Fetch a project from the Plattar API.
const {
    Project
} = require('@plattar/plattar-api');

const project = new Project('your-project-id');

project.get().then((proj) => {
    // do something with a project
}).catch((error) => {
    console.error(error);
});
  • Plattar API supports relationship chaining using a single request. Fetch a project from the Plattar API that includes scenes and pages. The Relationships component has a number of useful queries that can be performed.
const {
    Project,
    Scene,
    Page
} = require('@plattar/plattar-api');

const project = new Project('your-project-id');

// Tell the Plattar API to fetch your Scenes and Pages
// as part of the Project request
project.include(Scene, Page);

project.get().then((proj) => {
    // get a list of all scenes that belong to your project
    const scenes = proj.relationships.filter(Scene);
    // get a list of all pages that belong to your project
    const pages = proj.relationships.filter(Page);
    // get a specific scene that belongs to your project
    const myScene = proj.relationships.find(Scene, 'your-scene-id');
    // get a specific page that belongs to your project
    const myPage = proj.relationships.find(Page, 'your-page-id');
}).catch((error) => {
    console.error(error);
});
  • Plattar API also supports multiple relationship chaining using a single request. In this example we fetch a Project with Scenes and Pages aswell as SceneImage that belongs to a Scene.
const {
    Project,
    Scene,
    Page,
    SceneImage
} = require('@plattar/plattar-api');

const project = new Project('your-project-id');

// Tell the Plattar API to fetch your Scenes, Pages and
// to include SceneImage as part of Scenes
project.include(Page, Scene.include(SceneImage));

project.get().then((proj) => {
    // get a list of all scenes that belong to your project
    const scenes = proj.relationships.filter(Scene);

    scenes.forEach((scene) => {
        // grab the SceneImage that belongs to a Scene
        const sceneImages = scene.relationships.filter(SceneImage);
    });
}).catch((error) => {
    console.error(error);
});
  • Sometimes, we don't want to include everything as part of a single request. We can chain requests based on logic.
const {
    Project,
    Scene,
    SceneImage
} = require('@plattar/plattar-api');

const project = new Project('your-project-id');

// Tell the Plattar API to fetch your scenes.
project.include(Scene);

project.get().then((proj) => {
    // get a list of all scenes that belong to your project
    const scenes = proj.relationships.filter(Scene);

    scenes.forEach((scene) => {
        // grab the SceneImage that belongs to a Scene
        const sceneImage = scene.relationships.find(SceneImage);

        // at this point, since SceneImage data was not fetched, we
        // can grab it directly
        sceneImage.get().then((sceneImage) => {
            // do something with sceneImage
        }).catch((error) => {
            console.error(error);
        });
    });
}).catch((error) => {
    console.error(error);
});