/*! * Sheetrock v1.0.1 * Quickly connect to, query, and lazy-load data from Google Sheets. * http://chriszarate.github.io/sheetrock/ * License: MIT */ (function(e,r){"use strict";var t=r();if(typeof define==="function"&&define.amd){define("sheetrock",function(){t.environment.amd=true;return t})}else if(typeof module==="object"&&module.exports){t.environment.commonjs=true;t.environment.request=require("request");module.exports=t}else{e.sheetrock=t}})(this,function(){"use strict";var e={2014:{apiEndpoint:"https://docs.google.com/spreadsheets/d/%key%/gviz/tq?",keyFormat:new RegExp("spreadsheets/d/([^/#]+)","i"),gidFormat:new RegExp("gid=([^/&#]+)","i")},2010:{apiEndpoint:"https://spreadsheets.google.com/tq?key=%key%&",keyFormat:new RegExp("key=([^&#]+)","i"),gidFormat:new RegExp("gid=([^/&#]+)","i")}};var r={loaded:{},failed:{},labels:{},header:{},offset:{}};var t=0;var a=typeof window==="undefined"?{}:window;var n={document:a.document||{},dom:!!(a.document&&a.document.createElement),jquery:!!(a.jQuery&&a.jQuery.fn&&a.jQuery.fn.jquery),request:false};if(!Array.prototype.forEach){Array.prototype.forEach=function(e){var r;var t=this;var a=t.length;for(r=0;r"+e+""};var p=function(e){var r=e.num?"td":"th";var t=Object.keys(e.cells);var a="";t.forEach(function(t){a+=h(e.cells[t],r)});return h(a,"tr")};var y=function(e){r.loaded[e]=false;r.failed[e]=false;r.labels[e]=false;r.header[e]=0;r.offset[e]=0};var b=function(e,r){var t={};var a=Object.keys(e);r.query=r.sql||r.query;r.reset=r.resetStatus||r.reset;r.fetchSize=r.chunkSize||r.fetchSize;r.rowTemplate=r.rowHandler||r.rowTemplate;a.forEach(function(a){t[a]=r[a]||e[a]});return t};var g=function(e,r){r.target=f(r.target)||f(e);r.fetchSize=u(r.fetchSize);return r};var q=function(e,t){var a=g(e,t);var n=c(a.url);n.query=a.query;n.index=d(n);if(a.reset&&n.index){y(n.index);n.reset=true}a.offset=r.offset[n.index]||0;if(a.fetchSize&&n.index){n.query+=" limit "+(a.fetchSize+1);n.query+=" offset "+a.offset;r.offset[n.index]=a.offset+a.fetchSize}return{user:a,request:n}};var k=function(e){if(!e.user.target&&!e.user.callback){throw"No element targeted or callback provided."}if(!(e.request.key&&e.request.gid)){throw"No key/gid in the provided URL."}if(r.failed[e.request.index]){throw"A previous request for this resource failed."}if(r.loaded[e.request.index]){throw"No more rows to load!"}return e};var w=function(e,r){return e&&e.length===r.length?e:r};var E=function(e,t){var a=e.request.index;var n=r.labels[a];var o=e.user.fetchSize;var i=t.table.rows;var u=t.table.cols;var s={last:i.length-1,rowNumberOffset:r.header[a]||0};if(!e.user.offset){n=u.map(function(e,r){if(e.label){return e.label.replace(/\s/g,"")}else{s.last=s.last+1;s.rowNumberOffset=1;return v(i[0].c[r]).replace(/\s/g,"")||e.id}});r.offset[a]=r.offset[a]+s.rowNumberOffset;r.header[a]=s.rowNumberOffset;r.labels[a]=n}if(!o||i.length-s.rowNumberOffset