UNPKG

@linx-impulse/banner-client-js

Version:
160 lines (129 loc) 4.49 kB
# banner-client-js [![Version][version-svg]][package-url] [![CircleCI][circleci-svg]][circleci-url] [![License][license-image]][license-url] [![Downloads][downloads-image]][downloads-url] [![jsDelivr Hits][jsdelivr-badge]][jsdelivr-hits] [circleci-svg]: https://circleci.com/gh/chaordic/banner-client-js.svg?style=svg [circleci-url]: https://circleci.com/gh/chaordic/banner-client-js [version-svg]: https://img.shields.io/npm/v/@linx-impulse/banner-client-js.svg?style=flat-square [package-url]: https://npmjs.org/package/@linx-impulse/banner-client-js [license-image]: https://img.shields.io/badge/license-MIT-green.svg?style=flat-square [license-url]: LICENSE.txt [downloads-image]: https://img.shields.io/npm/dm/@linx-impulse/banner-client-js.svg?style=flat-square [downloads-url]: http://npm-stat.com/charts.html?package=@linx-impulse/banner-client-js [jsdelivr-badge]: https://data.jsdelivr.com/v1/package/npm/@linx-impulse/banner-client-js/badge [jsdelivr-hits]: https://www.jsdelivr.com/package/npm/@linx-impulse/banner-client-js Front end Banner SDK for Linx Banner API customers ## Installation ### CDN ```html <script src="https://cdn.jsdelivr.net/npm/@linx-impulse/banner-client-js/dist/linx-banner.min.js"></script> ``` There will be created a property called **banner** in global linx object. ```javascript const LinxBanner = linx.banner; // or const LinxBanner = window.linx.banner; ``` ### npm ```sh npm install --save @linx-impulse/banner-client-js ``` Using some module bundler like Webpack, it should be called this way: ```javascript const LinxBanner = require('@linx-impulse/banner-client-js'); // or import { BannerClient } from '@linx-impulse/banner-client-js'; ``` ## Usage ### getRecommendations #### Parameters * options (object) * **page**(string): current page. Ex: home, product, category, subcategory, cart. * **source**(string): device of user. Ex: app, desktop, mobile. * **showLayout**(boolean): whether or not bring layout properties previously set. Default: `false`. * **userId**(string): the user identifier, used to personalize slides even when user access a new device. * **homologation**(boolean): enable banner homologation. With this feature enabled the disabled banners will be sent on api response. * **timeout**(number): defines a timeout for request in milliseconds. * **categories**(array): list of categories of the page. This information is used by api to apply the exhibition rules for banners. * **product**(object): object containing product data. Useful for product pages. * **tags**(array): array of tags of the page. * **url**(string): url of the page. * **testGroup**(string): AB test group info. * **searchQuery**(string): query terms used if in a search page. PS: *options* parameter is not required, neither any of these properties. #### Example ```javascript LinxBanner.getRecommendations({ page: 'home', source: 'desktop', showLayout: true, userId: 'user01', }) .then((banners) => { console.log('Banners: ', banners); }) .catch((error) => { console.error('Banners error: ', error); }); ``` ```javascript LinxBanner.getRecommendations({ page: 'product', source: 'mobile', showLayout: true, product: { id: 'prod001', }, url: 'https://www.yourdomain/product/prod001' }) .then((banners) => { console.log('Banners: ', banners); }) .catch((error) => { console.error('Banners error: ', error); }); ``` ```javascript LinxBanner.getRecommendations({ page: 'subcategory', source: 'desktop', homologation: true, showLayout: true, categories: [ { id: 'cat01', parents: null }, { id: 'cat02', parents: [ 'cat01' ] }, ], tags: [ { id: 'tag01' }, { id: 'tag02' }, { id: 'tag03' }, ], url: 'https://www.yourdomain/category/cat01/cat02' }) .then((banners) => { console.log('Banners: ', banners); }) .catch((error) => { console.error('Banners error: ', error); }); ``` ## Contributing 1. Fork it! 2. Create your feature branch: `git checkout -b my-new-feature` 3. Commit your changes: `git commit -am 'Add some feature'` 4. Push to the branch: `git push origin my-new-feature` 5. Submit a pull request PS: Do not forget the tests ;) ## Test Run test command: ```sh npm test ``` ## Release * [Login npm](https://docs.npmjs.com/cli/adduser) * Run release command: ```sh npm run release ``` ## Changelog [CHANGELOG](CHANGELOG.md) ## License [MIT](LICENSE)