/polldozer

Lightweight Polldozer client to create and vote on polls with Polldozer API

Primary LanguageJavaScript

polldozer

npm version Build Status codecov.io

Lightweight Polldozer client to create and vote on polls with Polldozer API

Install

$ npm install --save polldozer

Usage polldozer/vote

Renders a poll with "vote" or "analysis" layout based on the current state of the user (voted: yes / no) and the poll (expired: yes / no).

Below is a example of usage:

<div id="vote" data-poll-id="POLL_ID"></div>
var PolldozerVote = require('polldozer/vote');
var corsRequestFn = function(options) {
  var ajax = function(url, type, data) {
    return $.ajax({
      url: url,
      type: type,
      crossDomain: true,
      contentType: data ? 'application/json; charset=utf-8' : undefined,
      dataType: 'json',
      data: data ? JSON.stringify(data) : void 0,
      success: options.onSuccess,
      error: options.onFailure,
      complete: options.onComplete
    });
  };
  return {
    get: function(url) {
      return ajax(url, 'GET');
    },
    post: function(url, data) {
      return ajax(url, 'POST', data);
    }
  };
};


new PolldozerVote({
  element: document.getElementById('vote'),
  apiUrl: 'https://polldozer.herokuapp.com/', // please host your own, this is a slow free tier heroku app
  corsRequestFn: corsRequestFn
});

Options

new Instance(options)

element

type: Element
default: undefined
Element that will be used to render the poll

corsRequestFn

type: Function
default: undefined
A function that returns a object with get and post methods to handle ajax calls. See jQuery example from above.

apiUrl

type: String
default: undefined
URL to Polldozer API

pollData (optional)

type: PlainObject
default: undefined
Bootstraped poll object

locale (optional)

type: String
default: 'en'
de also supported

onVote(poll) (optional)

type: Function
default: undefined
Callback function that is called after a successful vote

Usage polldozer/create

Renders, validates and submits a poll create form.

Below is a example of usage:

<div id="poll_form"></div>
var PolldozerVote = require('polldozer/create');
var corsRequestFn = function(options) {
  var ajax = function(url, type, data) {
    return $.ajax({
      url: url,
      type: type,
      crossDomain: true,
      contentType: data ? 'application/json; charset=utf-8' : undefined,
      dataType: 'json',
      data: data ? JSON.stringify(data) : void 0,
      success: options.onSuccess,
      error: options.onFailure,
      complete: options.onComplete
    });
  };
  return {
    get: function(url) {
      return ajax(url, 'GET');
    },
    post: function(url, data) {
      return ajax(url, 'POST', data);
    }
  };
};


new PolldozerCreate({
  element: document.getElementById('poll_form'),
  apiUrl: 'https://polldozer.herokuapp.com/', // please host your own, this is a slow free tier heroku app
  corsRequestFn: corsRequestFn,
  onCreate: function(poll) {
    alert(poll._id);
  }
});

Options

new Instance(options)

element

type: Element
default: undefined
Element that will be used to render the poll

corsRequestFn

type: Function
default: undefined
A function that returns a object with get and post methods to handle ajax calls. See jQuery example from above.

apiUrl

type: String
default: undefined
URL to Polldozer API

locale (optional)

type: String
default: 'en'
de also supported

onCreate(poll) (optional)

type: Function
default: undefined
Callback function that is called after a poll was created successfully

pollData (optional)

type: PlainObject
default: undefined
Poll object that will be used to populate the input field with it's values

Stylesheets

SASS required. To provide basic styling and display logic add stylesheets with:

@import './node_modules/polldozer/stylesheets/create.scss';
@import './node_modules/polldozer/stylesheets/vote.scss';

/* or include it with the ~ syntax if you are building with webpack and sass-loader */
@import '~polldozer/stylesheets/create.scss';
@import '~polldozer/stylesheets/vote.scss';