From 13ad4f941c60f6242ce10607042bf1b37b0abdd5 Mon Sep 17 00:00:00 2001 From: hasparus Date: Wed, 17 Oct 2018 11:31:11 +0200 Subject: [PATCH] Add loadMapFromUrl --- package.json | 7 +++++++ script.js | 18 ++++++++++++++++-- src/loadMapFromUrl.js | 18 ++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 package.json create mode 100644 src/loadMapFromUrl.js diff --git a/package.json b/package.json new file mode 100644 index 00000000..97cd3f14 --- /dev/null +++ b/package.json @@ -0,0 +1,7 @@ +{ + "name": "azgaars-map-generator", + "version": "1.0.0", + "scripts": { + "start": "npx serve ." + } +} diff --git a/script.js b/script.js index abd3f6ba..08e9f0c8 100644 --- a/script.js +++ b/script.js @@ -19,9 +19,19 @@ // Use typed arrays instead of array of objects // Get rid of jQuery as d3.js can almost all the same and more // Re-build UI on reactive approach, vue.js - "use strict"; -fantasyMap(); + +function loadScript(path) { + const script = document.createElement("script"); + script.addEventListener("load", () => { + fantasyMap(); + }); + script.src = path; + document.body.appendChild(script); +} + +loadScript("./src/loadMapFromUrl.js"); + function fantasyMap() { // Version control const version = "0.60b"; @@ -272,6 +282,8 @@ function fantasyMap() { focusOn(); // based on searchParams focus on point, cell or burg from MFCG invokeActiveZooming(); // to hide what need to be hidden + loadMapFromUrl(uploadFile); + function generate() { console.group("Random map"); console.time("TOTAL"); @@ -6819,6 +6831,7 @@ function fantasyMap() { const params = data[0].split("|"); const mapVersion = params[0] || data[0]; if (mapVersion !== version) { + console.warn("mea culpa", {mapVersion, version}) let message = `The Map version `; // mapVersion reference was not added to downloaded map before v. 0.52b, so I cannot support really old files if (mapVersion.length <= 10) { @@ -6840,6 +6853,7 @@ function fantasyMap() { } else {loadDataFromMap(data);} if (mapVersion.length > 10) {console.error("Cannot load map"); } }; + console.warn("mea culpa", {file}) fileReader.readAsText(file, "UTF-8"); if (callback) {callback();} } diff --git a/src/loadMapFromUrl.js b/src/loadMapFromUrl.js new file mode 100644 index 00000000..47a3480f --- /dev/null +++ b/src/loadMapFromUrl.js @@ -0,0 +1,18 @@ +function makeFileFromUrl(mapLink, callback) { + fetch(mapLink, { + method: 'GET', + mode: 'cors', + }) + .then(response => response.blob()) + .then(blob => callback(blob)); +} + +function loadMapFromUrl(uploadFile) { + const url = new URL(location.href); + const mapLink = url.searchParams.get('maplink'); + if (mapLink) { + makeFileFromUrl(decodeURIComponent(mapLink), uploadFile); + } +} + +window.loadMapFromUrl = loadMapFromUrl;