Skip to content

Instantly share code, notes, and snippets.

@amitasaurus
amitasaurus / index.js
Last active March 6, 2018 09:56
Handling Service Worker Updates
navigator.serviceWorker.register('/sw.js').then(function(reg) {
//page has loaded from the network and not sw
if (!navigator.serviceWorker.controller) {
return;
}
//if sw is in waiting state
if (reg.waiting) {
//call the update function
@amitasaurus
amitasaurus / idb.js
Last active March 8, 2018 11:23
IndexedDB with Jake Archibald's IDB
import idb from 'idb';
var dbPromise = idb.open('test-db', 1, function(upgradeDb) {
switch (upgradeDb.oldVersion) {
case 0:
upgradeDb.createObjectStore('keyval');
case 1:
//name would be the primary key
upgradeDb.createObjectStore('people', {
keyPath: 'name'
http://compose.mail.yahoo.com/?to={email_address}&subject={title}&body={url}
http://digg.com/submit?url={url}
http://pinterest.com/pin/create/link/?url={url}
http://service.weibo.com/share/share.php?url={url}&appkey=&title={title}&pic=&ralateUid=
http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url={url}
http://surfingbird.ru/share?url={url}&description={text}&screenshot={image}&title={title}
http://vk.com/share.php?url={url}&title={title}&comment={text}
http://widget.renren.com/dialog/share?resourceUrl={url}&srcUrl={url}&title={title}&description={text}
http://www.addthis.com/bookmark.php?url={url}
http://www.douban.com/recommend/?url={url}&title={title}
@amitasaurus
amitasaurus / gulpfile.js
Created August 4, 2018 12:38
gulp autopolyfiller sample
var gulp = require('gulp');
var concat = require('gulp-concat');
var order = require('gulp-order');
var uglify = require('gulp-uglify');
var autopolyfiller = require('gulp-autopolyfiller');
var merge = require('event-stream').merge;
gulp.task('default', function () {
// Concat all required js files
var all = gulp.src('js/*.js')
@amitasaurus
amitasaurus / _http.js
Last active August 8, 2018 14:59
Promise based XHR Wrapper
let _Http = obj => {
return new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.open(obj.method || "GET", obj.url);
if (obj.headers) {
Object.keys(obj.headers).forEach(key => {
xhr.setRequestHeader(key, obj.headers[key]);
});
}
xhr.onload = () => {
@amitasaurus
amitasaurus / loadScript.js
Created August 6, 2018 06:06
Loading Scripts from JS
function loadScript(url, callback){
var script = document.createElement("script")
script.type = "text/javascript";
if (script.readyState){ //IE
script.onreadystatechange = function(){
if (script.readyState == "loaded" ||
script.readyState == "complete"){
script.onreadystatechange = null;
@amitasaurus
amitasaurus / loadScriptPromised.js
Last active August 7, 2018 11:14
loadScript.js promisified
function loadScript(src) {
return new Promise(function(resolve, reject) {
let script = document.createElement('script');
script.src = src;
script.onload = () => resolve(script);
script.onerror = () => reject(new Error("Script load error: " + src));
document.head.append(script);
});
@amitasaurus
amitasaurus / dateFilter.js
Created August 16, 2018 13:48
Angular Filter to display minutes/hours to a time
app.filter('dateFilter', function() {
return function(date) {
let oneSec = 1000;
let oneMin = 60 * oneSec;
let oneHour = 60 * oneMin;
let oneDay = 24 * oneHour;
let now = new Date().getTime();
let transactionTime = new Date(date).getTime();
let transactionDate = new Date(date);
@amitasaurus
amitasaurus / injectStyle.js
Created August 20, 2018 12:44
Adding Styles through JS
let css = `h1{ font-size : 14px;}`;
let head = document.head || document.getElementsByTagName('head')[0];
let style = document.createElement('style');
style.type = 'text/css';
if (style.styleSheet) {
// This is required for IE8 and below.
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}
@amitasaurus
amitasaurus / dataTypeCheck.js
Last active September 17, 2018 10:59
Proper Datatypes checking in Javascript
// String
function isString (value) {
return typeof value === 'string' || value instanceof String;
}
// Number
function isNumber (value) {
return typeof value === 'number' && isFinite(value);
}