From 7d6719510e6a7c147ce5fefd1a5fe2819e8eaff9 Mon Sep 17 00:00:00 2001 From: Maxim Stewart Date: Tue, 19 Mar 2019 15:34:43 -0500 Subject: [PATCH] Improved download options plus set warning on certain actions. --- README.md | 4 ++-- src/manifest.json | 2 +- src/scripts/events.js | 15 ++++++++----- src/scripts/sessionManager.js | 42 +++++++++++++++++++++++++++-------- 4 files changed, 46 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 7561977..f5f3e00 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ Easy Session Manager allows you to manage your Firefox session by backing up or # Download https://addons.mozilla.org/en-US/firefox/addon/easy-session-manager/ -# Version: 0.1.0 -Improved look of action messages. (Save, Delete, Edit, etc...) +# Version: 0.1.2 +Improved download options plus set warning on certain actions when nothing selected. # Images ![1 Default interface with no sessions. ](images/pic1.png) diff --git a/src/manifest.json b/src/manifest.json index 4061103..41f2aea 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": " Easy Session Manager", - "version": "0.1.0", + "version": "0.1.2", "description": " Easy Session Manager allows you to manage your Firefox session by backing up or loading your saved sessions.", "applications": { diff --git a/src/scripts/events.js b/src/scripts/events.js index 81e3e91..358c6b2 100644 --- a/src/scripts/events.js +++ b/src/scripts/events.js @@ -2,6 +2,7 @@ let selectedItem = null; document.addEventListener("click", (e) => { if (e.button == 0) { // Left click + let name = e.target.name; if (e.target.tagName == "LI") { if (selectedItem) { if (selectedItem == e.target && selectedItem.className == "selected") { @@ -15,17 +16,21 @@ document.addEventListener("click", (e) => { selectedItem = e.target; selectedItem.setAttribute("class", "selected"); } - } else if (e.target.name == "save") { + } else if (name == "save") { saveSession(); - } else if (e.target.name == "import") { + } else if (name == "import") { importSession(); } else if (selectedItem) { - if (e.target.name == "download") + if (name == "download") downloadSession(); - else if (e.target.name == "delete") + else if (name == "delete") deleteFromStorage(); - else if (e.target.name == "edit") + else if (name == "edit") editSession(); + } else if (/(download|delete|edit)/.test(name)) { + swal("Select a session first...", { + icon: "warning", + }); } } }); diff --git a/src/scripts/sessionManager.js b/src/scripts/sessionManager.js index 3b3141b..1d9053a 100644 --- a/src/scripts/sessionManager.js +++ b/src/scripts/sessionManager.js @@ -146,19 +146,43 @@ const importSession = () => { } const downloadSession = () => { + let pTag = document.createElement("P"); + let inputTag = document.createElement("INPUT"); + let chkBoxTag = document.createElement("INPUT"); + let lblTag = document.createElement("LABEL"); + let brTag = document.createElement("BR"); var dlAnchorElem = document.getElementById('downloadAnchorElem'); + let text = document.createTextNode("Append Date?"); let id = selectedItem.innerHTML; - fileName = "session:" + id + ":" + - new Date().toLocaleString().split(',')[0].replace(/\//g, "-") + ".json"; + let fileName = "session:" + id + ".json"; + chkBoxTag.type = "checkbox"; + inputTag.value = fileName; + chkBoxTag.id = "chkbx"; + lblTag.htmlFor = "chkbx"; + lblTag.append(text); + pTag.append(lblTag); + pTag.append(chkBoxTag); + pTag.append(brTag); + pTag.append(inputTag); - storage.get(id).then((storageResults) => { - let json = JSON.parse(storageResults[id]); - let dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(json)); - dlAnchorElem.setAttribute("href", dataStr); - dlAnchorElem.setAttribute("download", fileName); - dlAnchorElem.click(); + swal("Download Session?", { + content: pTag, + buttons: true, + }).then((willDl) => { if (willDl) { + if (chkBoxTag.checked) { + fileName = "session:" + id + ":" + + new Date().toLocaleString().split(',')[0].replace(/\//g, "-") + ".json"; + } + + storage.get(id).then((storageResults) => { + let json = JSON.parse(storageResults[id]); + let dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(json)); + dlAnchorElem.setAttribute("href", dataStr); + dlAnchorElem.setAttribute("download", fileName); + dlAnchorElem.click(); + }); + } }); - } const loadSession = (id = null) => {