@gregoriusrippenstein/node-red-contrib-introspection 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/nodes/15-screenshot.html +35 -18
- package/package.json +1 -1
package/nodes/15-screenshot.html
CHANGED
|
@@ -155,21 +155,35 @@
|
|
|
155
155
|
// inline image data. Image types supported: Jpeg, Png and Svg.
|
|
156
156
|
var imageColl = doc.getElementsByTagName("image");
|
|
157
157
|
|
|
158
|
+
var imageCache = {};
|
|
159
|
+
|
|
158
160
|
var getDataAndCallbackWhenDone = (elem, cntr, cb) => {
|
|
159
|
-
var
|
|
161
|
+
var hrefSrc = elem.getAttribute("xlink:href");
|
|
162
|
+
|
|
163
|
+
var postfix = hrefSrc.substr(-4,4).toLowerCase();
|
|
164
|
+
var fileType = {
|
|
165
|
+
".jpg": "jpeg",
|
|
166
|
+
"jpeg": "jpeg",
|
|
167
|
+
".png": "png",
|
|
168
|
+
".svg": "svg+xml",
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
if ( imageCache[hrefSrc] ) {
|
|
172
|
+
console.log( "FOUND " + hrefSrc + " in cache");
|
|
173
|
+
elem.setAttribute(
|
|
174
|
+
"xlink:href",
|
|
175
|
+
"data:image/" + fileType[postfix] + ";base64," + imageCache[hrefSrc]
|
|
176
|
+
);
|
|
177
|
+
return cb(cntr-1);
|
|
178
|
+
}
|
|
160
179
|
|
|
161
180
|
switch(postfix){
|
|
162
181
|
case ".jpg":
|
|
163
182
|
case "jpeg":
|
|
164
183
|
case ".png":
|
|
165
|
-
var fileType = {
|
|
166
|
-
".jpg": "jpeg",
|
|
167
|
-
"jpeg": "jpeg",
|
|
168
|
-
".png": "png"
|
|
169
|
-
};
|
|
170
|
-
|
|
171
184
|
var oReq = new XMLHttpRequest();
|
|
172
|
-
|
|
185
|
+
|
|
186
|
+
oReq.open("GET", hrefSrc, true);
|
|
173
187
|
oReq.responseType = "arraybuffer";
|
|
174
188
|
|
|
175
189
|
var arrayBufferToBase64 = ( buffer ) => {
|
|
@@ -185,9 +199,11 @@
|
|
|
185
199
|
oReq.onload = function (oEvent) {
|
|
186
200
|
var arrayBuffer = oReq.response; // Note: not oReq.responseText
|
|
187
201
|
if (arrayBuffer) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
202
|
+
var b64Data = arrayBufferToBase64(arrayBuffer);
|
|
203
|
+
imageCache[hrefSrc] = b64Data;
|
|
204
|
+
elem.setAttribute(
|
|
205
|
+
"xlink:href", "data:image/"+fileType[postfix]+";base64,"+b64Data
|
|
206
|
+
);
|
|
191
207
|
cb(cntr-1)
|
|
192
208
|
} else {
|
|
193
209
|
cb(cntr-1)
|
|
@@ -198,11 +214,12 @@
|
|
|
198
214
|
break;
|
|
199
215
|
|
|
200
216
|
case ".svg":
|
|
201
|
-
$.get(
|
|
217
|
+
$.get( hrefSrc, function(data) {
|
|
202
218
|
const serializer = new XMLSerializer();
|
|
219
|
+
var b64Data = btoa(serializer.serializeToString(data));
|
|
220
|
+
imageCache[hrefSrc] = b64Data;
|
|
203
221
|
elem.setAttribute( "xlink:href",
|
|
204
|
-
"data:image/svg+xml;base64," +
|
|
205
|
-
btoa(serializer.serializeToString(data)));
|
|
222
|
+
"data:image/svg+xml;base64," + b64Data);
|
|
206
223
|
cb(cntr-1)
|
|
207
224
|
});
|
|
208
225
|
break;
|
|
@@ -211,8 +228,8 @@
|
|
|
211
228
|
|
|
212
229
|
var cb = (cntr) => {
|
|
213
230
|
if ( cntr < 0 ) {
|
|
214
|
-
|
|
215
|
-
callbackWithSvgCode(
|
|
231
|
+
delete imageCache;
|
|
232
|
+
callbackWithSvgCode((new XMLSerializer()).serializeToString(doc));
|
|
216
233
|
} else {
|
|
217
234
|
getDataAndCallbackWhenDone( imageColl.item(cntr), cntr, cb );
|
|
218
235
|
}
|
|
@@ -223,8 +240,8 @@
|
|
|
223
240
|
imageColl.length-1,
|
|
224
241
|
cb );
|
|
225
242
|
} else {
|
|
226
|
-
|
|
227
|
-
callbackWithSvgCode(
|
|
243
|
+
delete imageCache;
|
|
244
|
+
callbackWithSvgCode( (new XMLSerializer()).serializeToString(doc) );
|
|
228
245
|
}
|
|
229
246
|
};
|
|
230
247
|
|