Comparing version 0.5.1 to 0.5.2
35
index.js
@@ -46,2 +46,16 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.raterJs = f()}})(function(){var define,module,exports;return (function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(require,module,exports){ | ||
if(options.rating){ | ||
setRating(options.rating); | ||
} else { | ||
var dataRating = elem.dataset.rating; | ||
if(dataRating){ | ||
setRating(+dataRating); | ||
} | ||
} | ||
if(typeof rating === "undefined"){ | ||
elem.querySelector(".star-value").style.width = "0px"; | ||
} | ||
//private methods | ||
@@ -140,10 +154,18 @@ function onMouseMove(e) { | ||
function setRating(value) { | ||
rating = value; | ||
if(typeof value === "undefined"){ | ||
throw new Error("Value not set."); | ||
} | ||
if (typeof value !== "undefined") { | ||
elem.querySelector(".star-value").style.width = value/stars * 100 + "%"; | ||
}else { | ||
elem.querySelector(".star-value").style.width = "0px"; | ||
if(typeof value !== "number"){ | ||
throw new Error("Value must be a number."); | ||
} | ||
if(value < 0 || value > stars){ | ||
let ratingError = new Error("Value too high. Please set a rating of " + stars + " or below"); | ||
ratingError.name = "ratingError"; | ||
throw ratingError; | ||
} | ||
rating = value; | ||
elem.querySelector(".star-value").style.width = value/stars * 100 + "%"; | ||
elem.setAttribute("data-rating", value); | ||
@@ -161,4 +183,3 @@ } | ||
} | ||
setRating(options.rating); | ||
elem.addEventListener("mousemove", onMouseMove); | ||
@@ -165,0 +186,0 @@ elem.addEventListener("mouseout", onStarOut); |
@@ -45,2 +45,16 @@ var css = require('./style.css'); | ||
if(options.rating){ | ||
setRating(options.rating); | ||
} else { | ||
var dataRating = elem.dataset.rating; | ||
if(dataRating){ | ||
setRating(+dataRating); | ||
} | ||
} | ||
if(typeof rating === "undefined"){ | ||
elem.querySelector(".star-value").style.width = "0px"; | ||
} | ||
//private methods | ||
@@ -139,10 +153,18 @@ function onMouseMove(e) { | ||
function setRating(value) { | ||
rating = value; | ||
if(typeof value === "undefined"){ | ||
throw new Error("Value not set."); | ||
} | ||
if (typeof value !== "undefined") { | ||
elem.querySelector(".star-value").style.width = value/stars * 100 + "%"; | ||
}else { | ||
elem.querySelector(".star-value").style.width = "0px"; | ||
if(typeof value !== "number"){ | ||
throw new Error("Value must be a number."); | ||
} | ||
if(value < 0 || value > stars){ | ||
let ratingError = new Error("Value too high. Please set a rating of " + stars + " or below"); | ||
ratingError.name = "ratingError"; | ||
throw ratingError; | ||
} | ||
rating = value; | ||
elem.querySelector(".star-value").style.width = value/stars * 100 + "%"; | ||
elem.setAttribute("data-rating", value); | ||
@@ -160,4 +182,3 @@ } | ||
} | ||
setRating(options.rating); | ||
elem.addEventListener("mousemove", onMouseMove); | ||
@@ -164,0 +185,0 @@ elem.addEventListener("mouseout", onStarOut); |
{ | ||
"name": "rater-js", | ||
"description": "Star rating widget for the browser.", | ||
"version": "0.5.1", | ||
"version": "0.5.2", | ||
"repository": { | ||
@@ -38,4 +38,5 @@ "type": "git", | ||
"jsdom": "^11.6.2", | ||
"mocha": "^5.0.5" | ||
"mocha": "^5.0.5", | ||
"sinon": "^4.5.0" | ||
} | ||
} |
@@ -5,3 +5,3 @@ Rater Js | ||
![rater-js Logo](ratings.png) | ||
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=N2F7QTTZAHKZS) | ||
[![NPM version][npm-image]][npm-url] | ||
@@ -92,16 +92,12 @@ [![License][license-image]][license-url] | ||
```js | ||
{ | ||
element: HtmlElement, //required | ||
rateCallback: Function, | ||
max: "Number of stars", | ||
starSize: "Width and height of the star image in pixels", | ||
disableText: "Text", | ||
ratingText: "Text {rating} {maxRating}", | ||
isBusyText: "Text", //displayed while user is rating but done not called yet | ||
readOnly: true/false | ||
} | ||
element: HtmlElement, required | ||
rateCallback: Function | ||
max: "Number of stars" | ||
showToolTip: true/false | ||
starSize: "Width and height of the star image in pixels" | ||
disableText: "Text" | ||
ratingText: "Text {rating} {maxRating}" | ||
isBusyText: "Text", //displayed while user is rating but done not called yet | ||
readOnly: true/false | ||
``` | ||
## Methods | ||
@@ -114,2 +110,3 @@ | ||
getRating(): //Get the average rating | ||
dispose(); //Removes event handlers | ||
``` | ||
@@ -116,0 +113,0 @@ |
var assert = require('assert'); | ||
var raterJs = require('../lib/rater-js'); | ||
var sinon = require('sinon'); | ||
var jsdom = require('jsdom'); | ||
@@ -22,2 +23,68 @@ const { JSDOM, document } = jsdom; | ||
}); | ||
it('getRating should return the initial rating', function() { | ||
let rater = raterJs({ element:element, rating:3 }); | ||
assert.equal(rater.getRating(),3); | ||
}); | ||
it('getRating should return the changed rating', function() { | ||
let rater = raterJs({ element:element, rating:3 }); | ||
rater.setRating(4); | ||
assert.equal(rater.getRating(),4); | ||
}); | ||
it('should set rating from data-rating if present', function() { | ||
const dom2 = new JSDOM(`<!DOCTYPE html><div data-rating="4" id="rater">test</div>`); | ||
const element2 = dom2.window.document.querySelector("#rater"); | ||
let rater = raterJs({ element:element2}); | ||
assert.equal(rater.getRating(),4); | ||
}); | ||
it('clicking a the star should trigger callback', function() { | ||
let callbackSpy = sinon.spy(); | ||
let rater = raterJs({ element:element, rating:3, rateCallback:callbackSpy }); | ||
var evt = global.document.createEvent("HTMLEvents"); | ||
evt.initEvent("click", false, true); | ||
element.dispatchEvent(evt); | ||
sinon.assert.calledOnce(callbackSpy); | ||
}); | ||
it('setRating should throw when rating is below 0', function() { | ||
let rater = raterJs({ element:element, rating:3 }); | ||
assert.throws(() => { | ||
rater.setRating(-1); | ||
}); | ||
assert.throws(() => { | ||
rater.setRating(-0.1); | ||
}); | ||
}); | ||
it('setRating should throw when rating is above max', function() { | ||
let rater = raterJs({ element:element, max:5 }); | ||
assert.throws(() => { | ||
rater.setRating(6); | ||
}); | ||
assert.throws(() => { | ||
rater.setRating(5.1); | ||
}); | ||
}); | ||
it('setRating should throw when rating is not a number', function() { | ||
let rater = raterJs({ element:element, max:5 }); | ||
assert.throws(() => { | ||
rater.setRating(undefined); | ||
}); | ||
assert.throws(() => { | ||
rater.setRating("3"); | ||
}); | ||
}); | ||
}); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
36532
585
6
118