From 6e1961c793e0ed36ab65dfe90cb3a6ea3127c891 Mon Sep 17 00:00:00 2001 From: Ro Date: Mon, 20 Jul 2020 12:15:34 -0700 Subject: [PATCH] added utility classes to release --- src/com/utils/DataUtils.js | 92 ++++++++++++++++++++++++++++++++++++ src/com/utils/StringUtils.js | 68 ++++++++++++++++++++++++++ 2 files changed, 160 insertions(+) create mode 100644 src/com/utils/DataUtils.js create mode 100644 src/com/utils/StringUtils.js diff --git a/src/com/utils/DataUtils.js b/src/com/utils/DataUtils.js new file mode 100644 index 0000000..4f40d6c --- /dev/null +++ b/src/com/utils/DataUtils.js @@ -0,0 +1,92 @@ +export default class DataUtils { + //-------------------------- + // constructor + //-------------------------- + constructor() {} + //-------------------------- + // methods + //-------------------------- + + imgLoad(url) { + 'use strict'; + // Create new promise with the Promise() constructor; + // This has as its argument a function with two parameters, resolve and reject + return new Promise(function(resolve, reject) { + // Standard XHR to load an image + var request = new XMLHttpRequest(); + request.open('GET', url); + request.responseType = 'blob'; + // When the request loads, check whether it was successful + request.onload = function() { + if (request.status === 200) { + // If successful, resolve the promise by passing back the request response + resolve(request.response); + } else { + // If it fails, reject the promise with a error message + reject( + new Error( + "Image didn't load successfully; error code:" + request.statusText + ) + ); + } + }; + request.onerror = function() { + // Also deal with the case when the entire request fails to begin with + // This is probably a network error, so reject the promise with an appropriate message + reject(new Error('There was a network error.')); + }; + // Send the request + request.send(); + }); + } + loadImage(src) { + 'use strict'; + let self = this; + return new Promise(function(resolve, reject) { + // Get a reference to the body element, and create a new image object + var myImage = new Image(); + myImage.crossOrigin = ''; // or "anonymous" + // Call the function with the URL we want to load, but then chain the + // promise then() method on to the end of it. This contains two callbacks + self.imgLoad(src).then( + function(response) { + // The first runs when the promise resolves, with the request.reponse specified within the resolve() method. + var imageURL = window.URL.createObjectURL(response); + resolve(imageURL); + //$('background-content').setStyle('background-image', 'url('+imageURL+')') //myImage.src = imageURL; + //console.log(imageURL); + //body.appendChild(myImage); + // The second runs when the promise is rejected, and logs the Error specified with the reject() method. + }, + function(Error) { + reject(Error); + } + ); + }); + } + + /** + * Create a function to convert the serialize and convert the form data to JSON + * @param : $('#form_example'); + * @return a JSON Stringify + */ + formDataToJSON(form) { + let object = {}; + let formData = new FormData(form); + formData.forEach((value, key) => { + if (!object.hasOwnProperty(key)) { + object[key] = value; + return; + } + if (!Array.isArray(object[key])) { + object[key] = [object[key]]; + } + object[key].push(value); + }); + //let json = JSON.stringify(object); + return object; + } + //-------------------------- + // event handlers + //-------------------------- +} diff --git a/src/com/utils/StringUtils.js b/src/com/utils/StringUtils.js new file mode 100644 index 0000000..6676b91 --- /dev/null +++ b/src/com/utils/StringUtils.js @@ -0,0 +1,68 @@ +class StringUtils { + //-------------------------- + // constructor + //-------------------------- + constructor() {} + //-------------------------- + // methods + //-------------------------- + cleanString(string) { + var clean = string + .replace(/(^\-+|[^a-zA-Z0-9\/_| -]+|\-+$)/g, '') + .toLowerCase() + .replace(/[\/_| -]+/g, '-'); + return clean; + } + + decodeHTML(string, quote_style) { + var optTemp = 0, + i = 0, + noquotes = false; + if (typeof quote_style === 'undefined') { + quote_style = 2; + } + string = string + .toString() + .replace(/</g, '<') + .replace(/>/g, '>'); + var OPTS = { + ENT_NOQUOTES: 0, + ENT_HTML_QUOTE_SINGLE: 1, + ENT_HTML_QUOTE_DOUBLE: 2, + ENT_COMPAT: 2, + ENT_QUOTES: 3, + ENT_IGNORE: 4 + }; + if (quote_style === 0) { + noquotes = true; + } + if (typeof quote_style !== 'number') { + // Allow for a single string or an array of string flags + quote_style = [].concat(quote_style); + for (i = 0; i < quote_style.length; i++) { + // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4 + if (OPTS[quote_style[i]] === 0) { + noquotes = true; + } else if (OPTS[quote_style[i]]) { + optTemp = optTemp | OPTS[quote_style[i]]; + } + } + quote_style = optTemp; + } + if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) { + string = string.replace(/�*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should + // string = string.replace(/'|�*27;/g, "'"); // This would also be useful here, but not a part of PHP + } + if (!noquotes) { + string = string.replace(/"/g, '"'); + } + // Put this in last place to avoid escape being double-decoded + string = string.replace(/&/g, '&'); + return string; + } + + //-------------------------- + // event handlers + //-------------------------- +} +export default StringUtils;