tjek / tjek-js-sdk

Tjek JavaScript SDK for the browser and Node.js.
18 stars 4 forks source link

Tjek JavaScript SDK

Build Status npm version

This SDK works both client-side in your browser but also server-side in a Node.js environment.

Creating an App

First, you need to create an app allowing you to make API requests. You will be prompted to create a new user first.

We recommend creating 2 apps: 1 for production and another for development. This ensures environments aren't mixed.

Setup

In the Browser

The SDK makes use of both JavaScript and CSS so you need to load two resources in the browser:

<link
    href="https://js-sdk.tjek.com/sgn-sdk-4.x.x.min.css"
    rel="stylesheet"
    type="text/css"
/>
<script
    src="https://js-sdk.tjek.com/sgn-sdk-4.x.x.min.js"
    id="sgn-sdk"
    data-api-key="YOUR_API_KEY"
    data-track-id="YOUR_TRACK_ID"
></script>

By defining your app key and track identifier as data attributes when including the JavaScript file the SDK auto-configures itself. You can find the app key and track identifier in the developer console.

In Node.js

We recommend you use npm to install the SDK. To install, simply type the following into a terminal window:

npm install shopgun-sdk

When installed you can require and configure the SDK:

SGN = require('shopgun-sdk');

SGN.config.set({
    apiKey: 'YOUR_API_KEY'
});

We recommend using environment variables for the config to avoid having secrets in your code base:

SGN.config.set({
    apiKey: process.env.SHOPGUN_API_KEY
});

Paged Publications

To provide your users with a viewing experience for PDF's you need to use our PagedPublicationKit. We've built an example that shows how it can work.

More Platforms

To learn more about integrating the same experience on iOS and Android be sure to check out the respective SDK's:

Core UI

To minimize the effort needed in setting this up, we've created some built-in (customizable) templates to list and view your publications.

Setup

The setup is almost the same from above, you need to include the CSS and Javascript libraries. However, instead of creating an extra script to render the publication viewer, you only need to add a container and a few more required data-* attributes to render the template. Eg:

<link
    href="https://js-sdk.tjek.com/sgn-sdk-4.x.x.min.css"
    rel="stylesheet"
    type="text/css"
/>

<div id="paged-publication"></div>

<script
    data-readme="API's and SDK's by Tjek (https://tjek.com)"
    src="https://js-sdk.tjek.com/sgn-sdk-4.x.x.min.js"
    id="sgn-sdk"
    data-api-key="YOUR_API_KEY"
    data-track-id="YOUR_TRACK_ID"
    data-business-id="YOUR_BUSINESS_ID"
    data-component="paged-publication-viewer"
    data-component-publication-container="#paged-publication"
    defer
></script>

Below is another example which will render the list of active publications. It will also render the publication viewer upon clicking on a certain publication:

<link
    href="https://js-sdk.tjek.com/sgn-sdk-4.x.x.min.css"
    rel="stylesheet"
    type="text/css"
/>

<div id="list-publications"></div>

<script
    data-readme="API's and SDK's by Tjek (https://tjek.com)"
    src="https://js-sdk.tjek.com/sgn-sdk-4.x.x.min.js"
    id="sgn-sdk"
    data-api-key="YOUR_API_KEY"
    data-track-id="YOUR_TRACK_ID"
    data-business-id="YOUR_BUSINESS_ID"
    data-component="list-publications"
    data-component-list-publications-container="#list-publications"
    defer
></script>

Available data attributes

Aside from the required data- attributes, the SDK still support a few more data for customizations

Attribute Value
data-business-id Business ID
data-component paged-publication-viewer : To render (default: latest) paged publication viewer
incito-publication-viewer : To render incito publication viewer
list-publications : To render the list of active publications.
data-component-list-publications-container #custom_container_id
.custom_container_class
data-component-publication-container #custom_container_id
.custom_container_class
data-component-list-publications-order-by newest (default)
oldest
data-component-publication-id {publication_id} : To render specific publication
data-locale-code en_US (default)
da_DK
data-component-theme light (default)
dark
data-publication-id-query-param id (default) : The page publication viewer can accept query param to display a certain publication. This is to override the default id param
data-publication-page-query-param page (default) : The page publication viewer can accept query param to initially load a certain page. This is to override the default page param
data-component-publication-display-url-params null (default) : No URL params will be displayed
hash : publication id and page will be displayed as hash fragment. eg: 'domain.com/#publication/{id}/{page}'
query : publication id and page will be displayed as query params. eg: 'domain.com/?publicationid={id}&publicationpage={page}'
data-publication-hash publication (default) : This is to override the default hash value eg: eg: 'domain.com/#publication/{id}/{page}'
data-component-publications-list-item-click-behavior open_publication_viewer (default) : Open publication viewer upon clicking it from the publication list
data-translation-keys--{key} {key} : Any value that will replace the default value per key from the locale files
data-component-publication-viewer-offer-click-behavior shopping_list (default) : Offer will be added to shopping list
redirect_to_webshop_link : Clicking an offer will redirect to webshop link; Shopping list will be disabled automatically
open_webshop_link_in_tab : Clicking an offer will open webshop link in new tab; Shopping list will be disabled automatically
overview_modal: Open modal that shows the offer details
data-component-publication-disable-shopping-list false (default)
true
data-component-publication-disable-close false (default)
true
data-component-publication-disable-menu false (default)
true
data-component-publication-disable-download false (default)
true
data-component-publication-disable-header false (default)
true
data-component-publication-disable-pagedecorations false (default)
true
data-component-publication-show-header-labels false (default)
true
data-component-publication-override-global-scrollbar false (default)
true : To disable html scroll on publication reader
data-component-publication-utm-source tjek (default)
data-component-publication-utm-medium referral (default)
data-component-list-publications-request-filter eg: r_lat:59.9139,r_lng:10.7522
eg: tags:weekly catalog
Filter on request level - key:value and is separated by comma
data-component-list-publications-client-filter eg: all_stores:true
Filter on client side level - key:value and is separated by comma

Changelog

Version 4.6.0

Version 4.5.0

Version 4.0.2

Version 4.0.1

Version 4.0.0

Version 3.5.0

Version 3.4.0

Version 3.3.3

Version 3.3.1

Version 3.1.1

Version 3.1.0

var viewer = bootstrapper.createViewer(data, {
    pickHotspot: function (
        // array of hotspots
        hotspots,
        // event that contains some metadata about the clicked page, viewer and click position
        // viewerEvent.verso.x and viewerEvent.verso.y are useful for positioning a picker relative to the viewer
        viewerEvent,
        // reference to the viewer DOM mounting point, useful for inserting a picker and positioning relatively inside of
        viewerElement,
        // you can use callback(hotspot) to emit a regular clicked/pressed/contextmenu event with a chosen hotspot
        callback
    ) {
        // Example: just always pick the first hotspot and callback to regular 'hotspot*' event behavior
        callback(hotspots[0]);

        // you can optionally return a clean-up function that will be called when
        // a picker should be closed, so you can clean up after yourself.
        // This clean-up function is called once on a subsequent pickHotspot call.
        return function () {
            console.log('clean up');
        };
    }
});

Version N.E.X.T

Version 3.0.0

Version 2.3.19

Version 2.3.17

Version 2.3.16

Version 2.3.15

Version 2.3.8

Version 2.3.7

Version 2.3.0

Version 2.2.11

Version 2.2.8

Version 2.2.5

Version 2.2.4

Version 2.2.3

Version 2.2.0

Version 2.1.0

Version 2.0.9

Version 2.0.0