-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbriefcase.min.js
2 lines (1 loc) · 3.17 KB
/
briefcase.min.js
1
2
/** Briefcase.js * author: Lily Madar * created: 7 Sept 2014 * source: https://github.com/Lily2point0/briefcasejs **/!function(){function t(t,e){var r="https://spreadsheets.google.com/feeds/list/"+t.id+"/"+t.sheetNumber+"/public/values?alt=json";n(r,e)}function e(t){return Object.keys(l).forEach(function(e){t.hasOwnProperty(e)&&(l[e]=t[e])}),l}function n(t,e){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(4==n.readyState)if(200==n.status)r(JSON.parse(n.responseText),c,e);else{var t=document.createElement("div");t.innerHTML=n.responseText;var o={responseType:"error",responseStatus:n.status,responseMessage:t.innerText};r(o,"error",e)}},n.open("GET",t,!0),n.send()}function r(t,e,n){var r=t;switch(e){case"raw":n(r),l.download&&i(r,"application/json");break;case"json":n(o(r.feed.entry));break;case"csv":n(s(r.feed.entry));break;case"xml":n(a(r.feed.entry));break;case"error":n(t);break;default:n(r.feed.entry)}}function o(t){for(var e=[],n=0;n<t.length;n++){var r=[],o="";Object.keys(t[n]).forEach(function(s){if("gsx$"==s.toString().substring(0,4)){var a={},i={},c=s.toString().substring(4,s.toString().length),u=t[n][s].$t;"form"==l.type?c==l.leftColumnTitle?(a.title=u,e.push(a)):"timestamp"!=c?(i.name=c.toString(),i.value=u,r.push(i)):o=u:c==l.leftColumnTitle?(a.title=u,e.push(a)):(i.name=c.toString(),i.value=u,r.push(i))}}),e[n].categories=r,"form"==l.type&&l.showTimeStamp&&(e[n].timestamp=o)}return l.download&&i(e,"application/json"),e}function s(t){for(var e=[],n=0;n<t.length;n++){var r=[],o=[];Object.keys(t[n]).forEach(function(e){if("gsx$"==e.toString().substring(0,4)){var s=e.toString().substring(4,e.toString().length),a=t[n][e].$t;"form"!=l.type||l.showTimeStamp?(r.push(s),o.push(a)):"timestamp"!=s&&(r.push(s),o.push(a))}}),e.push(o)}e.splice(0,0,r);for(var s=[],a=0;a<e.length;a++)s.push(e[a].join(","));var c=s.join("\n");return l.download&&i(c,"text/csv"),c}function a(t){for(var e='<?xml version="1.0" encoding="UTF-8" ?>\n<data>\n',n="",r="",o="",s=0;s<t.length;s++){var a=" <item>\n",c="";Object.keys(t[s]).forEach(function(e){if("gsx$"==e.toString().substring(0,4)){var i=e.toString().substring(4,e.toString().length),u=t[s][e].$t;"form"==l.type?i==l.leftColumnTitle?a+=" <title>"+u+"</title>\n":"timestamp"!=i?c+=' <category name="'+i.toString()+'">'+u+"</category>\n":o=" <timestamp>"+u+"</timestamp>\n":i==l.leftColumnTitle?a+=" <title>"+u+"</title>\n":c+=' <category name="'+i.toString()+'">'+u+"</category>\n"}r=" <categories>\n"+c+" </categories>\n",n="form"==l.type&&l.showTimeStamp?a+o+r+" </item>\n":a+r+" </item>\n"}),e+=n}return e+="</data>",l.download&&i(e,"text/xml"),e}function i(t,e){var n,r;"json"==c||"raw"==c?(n=[JSON.stringify(t,null," ")],r="json"):"csv"==c?(n=[t],r="csv"):(n=[t],r="xml");var o=new Blob(n,{type:e}),s=window.URL.createObjectURL(o),a=document.createElement("a");a.setAttribute("href",s),a.setAttribute("download","briefcaseData."+r),a.click()}var c,u={version:"1.0.0",getRawJSON:function(n,r){c="raw",t(e(n),r)},getJSON:function(n,r){c="json",t(e(n),r)},getCSV:function(n,r){c="csv",t(e(n),r)},getXML:function(n,r){c="xml",t(e(n),r)}},l={id:"",type:"spreadsheet",sheetNumber:1,leftColumnTitle:"item",showTimeStamp:!1,download:!1};this.briefcase=u}();