the reminder not showing content on the card at dashboard view and the quizes are hardcoded must move to the db make api's for it
96 lines
1.6 KiB
JavaScript
96 lines
1.6 KiB
JavaScript
/*!
|
|
* ee-first
|
|
* Copyright(c) 2014 Jonathan Ong
|
|
* MIT Licensed
|
|
*/
|
|
|
|
'use strict'
|
|
|
|
/**
|
|
* Module exports.
|
|
* @public
|
|
*/
|
|
|
|
module.exports = first
|
|
|
|
/**
|
|
* Get the first event in a set of event emitters and event pairs.
|
|
*
|
|
* @param {array} stuff
|
|
* @param {function} done
|
|
* @public
|
|
*/
|
|
|
|
function first(stuff, done) {
|
|
if (!Array.isArray(stuff))
|
|
throw new TypeError('arg must be an array of [ee, events...] arrays')
|
|
|
|
var cleanups = []
|
|
|
|
for (var i = 0; i < stuff.length; i++) {
|
|
var arr = stuff[i]
|
|
|
|
if (!Array.isArray(arr) || arr.length < 2)
|
|
throw new TypeError('each array member must be [ee, events...]')
|
|
|
|
var ee = arr[0]
|
|
|
|
for (var j = 1; j < arr.length; j++) {
|
|
var event = arr[j]
|
|
var fn = listener(event, callback)
|
|
|
|
// listen to the event
|
|
ee.on(event, fn)
|
|
// push this listener to the list of cleanups
|
|
cleanups.push({
|
|
ee: ee,
|
|
event: event,
|
|
fn: fn,
|
|
})
|
|
}
|
|
}
|
|
|
|
function callback() {
|
|
cleanup()
|
|
done.apply(null, arguments)
|
|
}
|
|
|
|
function cleanup() {
|
|
var x
|
|
for (var i = 0; i < cleanups.length; i++) {
|
|
x = cleanups[i]
|
|
x.ee.removeListener(x.event, x.fn)
|
|
}
|
|
}
|
|
|
|
function thunk(fn) {
|
|
done = fn
|
|
}
|
|
|
|
thunk.cancel = cleanup
|
|
|
|
return thunk
|
|
}
|
|
|
|
/**
|
|
* Create the event listener.
|
|
* @private
|
|
*/
|
|
|
|
function listener(event, done) {
|
|
return function onevent(arg1) {
|
|
var args = new Array(arguments.length)
|
|
var ee = this
|
|
var err = event === 'error'
|
|
? arg1
|
|
: null
|
|
|
|
// copy args to prevent arguments escaping scope
|
|
for (var i = 0; i < args.length; i++) {
|
|
args[i] = arguments[i]
|
|
}
|
|
|
|
done(err, ee, event, args)
|
|
}
|
|
}
|