mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
make flow download code separate utility instead of polyfill
This commit is contained in:
parent
3740c21bee
commit
3ec37e2c66
@ -52,32 +52,5 @@
|
|||||||
Set.prototype = _Set.prototype;
|
Set.prototype = _Set.prototype;
|
||||||
Set.prototype.constructor = Set;
|
Set.prototype.constructor = Set;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window.navigator.msSaveBlob) {
|
|
||||||
// IE does not support data uri scheme for downloading data
|
|
||||||
window.addEventListener("click", function (ev) {
|
|
||||||
var tgt = ev.target;
|
|
||||||
if ((tgt.tagName === "A") &&
|
|
||||||
tgt.hasAttribute("download") &&
|
|
||||||
tgt.hasAttribute("href")) {
|
|
||||||
// partial support of data uri downloading
|
|
||||||
var filename = tgt.getAttribute("download");
|
|
||||||
var dataUri = tgt.getAttribute("href");
|
|
||||||
var match = /^data:([^,]+),(.*)/.exec(dataUri);
|
|
||||||
if (match) {
|
|
||||||
ev.preventDefault();
|
|
||||||
var enc = match[1];
|
|
||||||
var data = decodeURIComponent(match[2]);
|
|
||||||
var blob = new Blob([data], {
|
|
||||||
type: enc,
|
|
||||||
});
|
|
||||||
navigator.msSaveBlob(blob, filename);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
console.log("download not supported:", tgt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
@ -30,6 +30,27 @@ RED.clipboard = (function() {
|
|||||||
|
|
||||||
var pendingImportConfig;
|
var pendingImportConfig;
|
||||||
|
|
||||||
|
|
||||||
|
function downloadData(file, data) {
|
||||||
|
if (window.navigator.msSaveBlob) {
|
||||||
|
// IE11 workaround
|
||||||
|
// IE does not support data uri scheme for downloading data
|
||||||
|
var blob = new Blob([data], {
|
||||||
|
type: "data:text/plain;charset=utf-8"
|
||||||
|
});
|
||||||
|
navigator.msSaveBlob(blob, file);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var element = document.createElement('a');
|
||||||
|
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(data));
|
||||||
|
element.setAttribute('download', file);
|
||||||
|
element.style.display = 'none';
|
||||||
|
document.body.appendChild(element);
|
||||||
|
element.click();
|
||||||
|
document.body.removeChild(element);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function setupDialogs() {
|
function setupDialogs() {
|
||||||
dialog = $('<div id="red-ui-clipboard-dialog" class="hide"><form class="dialog-form form-horizontal"></form></div>')
|
dialog = $('<div id="red-ui-clipboard-dialog" class="hide"><form class="dialog-form form-horizontal"></form></div>')
|
||||||
.appendTo("#red-ui-editor")
|
.appendTo("#red-ui-editor")
|
||||||
@ -56,13 +77,8 @@ RED.clipboard = (function() {
|
|||||||
class: "primary",
|
class: "primary",
|
||||||
text: RED._("clipboard.download"),
|
text: RED._("clipboard.download"),
|
||||||
click: function() {
|
click: function() {
|
||||||
var element = document.createElement('a');
|
var data = $("#red-ui-clipboard-dialog-export-text").val();
|
||||||
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent($("#red-ui-clipboard-dialog-export-text").val()));
|
downloadData("flows.json", data);
|
||||||
element.setAttribute('download', "flows.json");
|
|
||||||
element.style.display = 'none';
|
|
||||||
document.body.appendChild(element);
|
|
||||||
element.click();
|
|
||||||
document.body.removeChild(element);
|
|
||||||
$( this ).dialog( "close" );
|
$( this ).dialog( "close" );
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user