jQuery(function ($) { "use strict"; /** * Reset the message. */ function resetMessage () { $("#result") .removeClass() .text(""); } /** * show a successful message. * @param {String} text the text to show. */ function showMessage(text) { resetMessage(); $("#result") .addClass("alert alert-success") .text(text); } /** * show an error message. * @param {String} text the text to show. */ function showError(text) { resetMessage(); $("#result") .addClass("alert alert-danger") .text(text); } /** * Fetch the content, add it to the JSZip object * and use a jQuery deferred to hold the result. * @param {String} url the url of the content to fetch. * @param {String} filename the filename to use in the JSZip object. * @param {JSZip} zip the JSZip instance. * @return {jQuery.Deferred} the deferred containing the data. */ function deferredAddZip(url, filename, zip) { var deferred = $.Deferred(); JSZipUtils.getBinaryContent(url, function (err, data) { if(err) { deferred.reject(err); } else { zip.file(filename, data, {binary:true}); deferred.resolve(data); } }); return deferred; } $('.btn-primary').on('click', function(){ var form = $(this).parents('form:first'); $('#'+form[0].id).data('button', this.attributes[2].value); }); var $form = $(".download_form").on("click", function () { var zip = new JSZip(); var deferreds = []; var tabTitle = this.attributes["tab-name"]; var docFormat = this.text; if(docFormat == "submit") docFormat = event.originalEvent.explicitOriginalTarget.attributes["doc-format"].value; // find every checked item $.each(files_array[tabTitle.nodeValue], function (index, nodeName) { var url = urldir + "/" + nodeName; if(docFormat != "both"){ if(docFormat == "pdf" || (docFormat == "xls") ) { deferreds.push(deferredAddZip(url + "." + docFormat, nodeName + "." + docFormat, zip)); } } else { deferreds.push(deferredAddZip(url + ".pdf", nodeName + ".pdf", zip)); } }); // when everything has been downloaded, we can trigger the dl $.when.apply($, deferreds).done(function () { var blob = zip.generate({type:"blob"}); // see FileSaver.js var FileSaveName = "PIRLS-2016.zip"; var FolderSitePath = $(location).attr('href').split("/"); if(FolderSitePath[FolderSitePath.length - 4] == "epirls") FileSaveName = "ePIRLS-2016.zip"; if(blob.size > 30) saveAs(blob, FileSaveName); else showMessage("You must select at least 1 file to download"); }).fail(function (err) { showError(err); }); return false; }); }); // vim: set shiftwidth=4 softtabstop=4: