Skip to content

Instantly share code, notes, and snippets.

View rjbultitude's full-sized avatar

Rich rjbultitude

View GitHub Profile
@rjbultitude
rjbultitude / xhr-promise.js
Last active March 16, 2021 04:12
XHR returned as a promise
function makeRequest(method, url) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.onload = function() {
if (this.status >= 200 && this.status < 300) {
resolve(xhr.response);
} else {
reject({
status: this.status,
@rjbultitude
rjbultitude / log-focussed-el-on-tab.js
Created August 13, 2016 21:08
Log focussed DOM element on tab
document.addEventListener('keydown' ,function (e) {
if (e.which === 9) {
setTimeout(function() {
console.log(document.activeElement);
}, 100);
}
});
function duplicateArray(newArray, array, times) {
for (var i = 0; i < times; i++) {
newArray = newArray.concat(array);
}
return newArray;
}
@rjbultitude
rjbultitude / xhr-load-json.js
Created September 4, 2016 18:25
A function that makes an XHR expecting and returning JSON. In CJS format
'use strict';
module.exports = function () {
return function(file, callback, errorCallback) {
var xhr = new XMLHttpRequest();
xhr.callback = callback;
if (xhr.overrideMimeType) {
xhr.overrideMimeType('application/json');
}
@rjbultitude
rjbultitude / hbs-utilities.js
Last active March 1, 2017 16:23
A CJS module that offers three useful methods for compiling and rendering handlebars templates
const Handlebars = require('handlebars');
const makeRequest = require('./make-xhr');
module.exports = function hbsUtilities() {
function loadTemplate(url, callback) {
var hbsTmplRequest = makeRequest('GET', url);
hbsTmplRequest.then(function success(data) {
callback(data);
}, function failure(errorData) {
@rjbultitude
rjbultitude / is-good-performance.js
Created May 13, 2017 13:27
Function for testing processing power of client
// idea taken from http://stackoverflow.com/questions/8691756/how-can-i-test-the-users-computers-processing-power-using-javascript
isGoodPerformance: function isGoodPerformance(benchMarkTestFunction) {
var _startTime = new Date().getTime();
benchMarkTestFunction(); // render frame for example
var _endTime = new Date().getTime();
var _elapsedMilliseconds = _endTime - _startTime;
var _acceptableTime = 1000; // one second
return _elapsedMilliseconds < _acceptableTime; // some number being acceptable performace
}
p5.SoundFile.prototype.setVolume = function (vol, rampTime, tFromNow, volFrom, volTo) {
if (typeof vol === 'number') {
var rampTime = rampTime || 0;
var tFromNow = tFromNow || 0;
var now = p5sound.audiocontext.currentTime;
var currentVol = this.output.gain.value;
this.output.gain.cancelScheduledValues(now + tFromNow);
// Attack
if (typeof volFrom === 'number' && volFrom >= 0) {
this.output.gain.linearRampToValueAtTime(volFrom, now + tFromNow);
@rjbultitude
rjbultitude / largest-pos-num-in-array.js
Created June 26, 2017 21:15
Get the largest number in an array
/**
* returns the largest positive number in a given array
* @param {Array} arr [the array to act on]
* @return {Array} [the largest number]
*/
function getLargestPosNumInArr(arr) {
return arr.reduce(function(prevVal, curVal) {
if (curVal > prevVal) {
prevVal = curVal;
}
@rjbultitude
rjbultitude / largest-neg-num-in-array.js
Created June 26, 2017 21:16
Largest negative number in array
/**
* returns the largest negative number in a given array
* @param {Array} arr [the array to act on]
* @return {Number} [the largest negative number]
*/
function getLargestNegNumInArr(arr) {
return arr.reduce(function(prevVal, curVal) {
if (curVal < prevVal) {
prevVal = curVal;
}
@rjbultitude
rjbultitude / worker-draw-loop.js
Created August 8, 2017 18:02
Web worker draw loop (for canvas animations)
// Main thread
var test = document.getElementById('test');
drawWorker = work(require('./draw-worker.js'));
drawWorker.addEventListener('message', function(e) {
if (e.data.msg === 'tick') {
sketchUpdateFn();
}
});
drawWorker.postMessage({draw: true, rate: appFrameRate});
drawWorker.onerror = function(e) {