added Download ZIP Archive

This commit is contained in:
Steven Hugg 2018-08-25 14:29:51 -04:00
parent 5b3c415c6f
commit 3c9560f273
3 changed files with 45 additions and 5 deletions

View File

@ -49,10 +49,21 @@ if (window.location.host.endsWith('8bitworkshop.com')) {
<li><a class="dropdown-item" href="#" id="item_new_file">New Project...</a></li>
<li><a class="dropdown-item" href="#" id="item_upload_file">Upload File...</a></li>
<li><a class="dropdown-item" href="#" id="item_reset_file">Revert to Original...</a></li>
<li><a class="dropdown-item" href="#" id="item_download_file">Download Source File</a></li>
<li><a class="dropdown-item" href="#" id="item_download_rom">Download ROM Image</a></li>
<li><a class="dropdown-item" href="#" id="item_record_video">Record Video...</a></li>
<li><a class="dropdown-item" href="#" id="item_share_file">Share Playable Link...</a></li>
<li class="dropdown dropdown-submenu">
<a tabindex="-1" href="#">Download</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#" id="item_download_file">Download Source File</a></li>
<li><a class="dropdown-item" href="#" id="item_download_rom">Download ROM Image</a></li>
<li><a class="dropdown-item" href="#" id="item_download_zip">Download ZIP Archive</a></li>
</ul>
</li>
<li class="dropdown dropdown-submenu">
<a tabindex="-1" href="#">Share</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#" id="item_record_video">Record Video...</a></li>
<li><a class="dropdown-item" href="#" id="item_share_file">Share Playable Link...</a></li>
</ul>
</li>
<li class="dropdown dropdown-submenu">
<a tabindex="-1" href="#">Debug</a>
<ul class="dropdown-menu">

15
lib/jszip.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -15,7 +15,7 @@ import { getFilenameForPath, getFilenamePrefix, highlightDifferences, invertMap,
import { StateRecorderImpl } from "./recorder";
// external libs (TODO)
declare var ga, Tour, GIF, saveAs;
declare var ga, Tour, GIF, saveAs, JSZip;
// in index.html
declare var exports;
@ -381,6 +381,19 @@ function _downloadSourceFile(e) {
saveAs(blob, getCurrentEditorFilename());
}
function _downloadProjectZipFile(e) {
loadScript('lib/jszip.min.js', () => {
var zip = new JSZip();
current_project.iterateFiles(function(id, text) {
if (text)
zip.file(getFilenameForPath(id), text);
});
zip.generateAsync({type:"blob"}).then( (content) => {
saveAs(content, getCurrentMainFilename() + ".zip");
});
});
}
function populateExamples(sel) {
// make sure to use callback so it follows other sections
store.length(function(err, len) {
@ -802,6 +815,7 @@ function setupDebugControls(){
$("#item_debug_expr").hide();
$("#item_download_rom").click(_downloadROMImage);
$("#item_download_file").click(_downloadSourceFile);
$("#item_download_zip").click(_downloadProjectZipFile);
$("#item_record_video").click(_recordVideo);
if (platform.setFrameRate && platform.getFrameRate) {
$("#speed_bar").show();