UNPKG

@aacassandra/js-tools

Version:

This is a library to make easy every build project

557 lines (525 loc) 14.5 kB
// This libraries need jquery var ucase = new RegExp("[A-Z]+"); var lcase = new RegExp("[a-z]+"); var num = new RegExp("[0-9]+"); var schar = new RegExp("[-!$%^&*()_+|~={}:/?,.@#[\\]]+"); var phonec = /^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im; var mailc = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; export let DtLib = { set: { init( id = "", options = { select: true, paging: true, searching: true, ordering: true, info: true, autoWidth: true, dom: "Bfrtip", lengthMenu: [ [5, 10, 25, 50, -1], ["5 rows", "10 rows", "25 rows", "50 rows", "Show all"] ], buttons: ["pageLength", "copy", "excel"] }, footerEnabled = false ) { let table = $("#" + id).DataTable(options); if (footerEnabled) { $("#" + id + " tfoot th").each(function() { var title = $(this).text(); if (title != "Action") { $(this).html( '<input type="text" placeholder="Search ' + title + '" />' ); } }); table.columns().every(function() { var that = this; $("input", this.footer()).on("keyup change", function() { if (that.search() !== this.value) { that.search(this.value).draw(); } }); }); } return table; }, destroy(id = "") { $("#" + id) .DataTable() .destroy(); } } }; export let BsLib = { set: { form: { group: { error(id = "", enabled = false, message = "") { if (enabled) { $("#" + id + "Group").addClass("has-error"); $("#" + id + "Span").html(message); } else { $("#" + id + "Group").removeClass("has-error"); $("#" + id + "Span").html(""); } } } } } }; export let JqLib = { get: { http( data = null, options = { method: "", url: "", parse: false, headers: {}, progress: "" }, setup = {} ) { return new Promise((resolve, reject) => { let tmp = { status: false, output: null }; $.ajaxSetup(setup); $.ajax({ method: options.method, url: options.url, headers: options.headers, data: data, xhr: function() { var xhr = $.ajaxSettings.xhr(); xhr.onprogress = function e() { // For downloads if (e.lengthComputable) { // console.log(e.loaded / e.total); } }; xhr.upload.onprogress = function(e) { // For uploads if (e.lengthComputable) { // console.log(e.loaded / e.total); $("#" + options.progress).css( "width", (e.loaded * 100) / e.total + "%" ); } }; return xhr; } }) .done(response => { tmp.status = true; if (options.parse) { response = JSON.parse(response); tmp.output = response; } else { tmp.output = response; } resolve(tmp); }) .fail(function(jqXHR, textStatus, errorThrown) { tmp.status = false; tmp.output = { code: jqXHR.responseJSON.code, message: jqXHR.responseJSON.message, jqXHR: jqXHR, textStatus: textStatus, errorThrown: errorThrown }; resolve(tmp); }); }); }, axios( data = null, options = { method: "", url: "", headers: {}, progress: "" } ) { return new Promise((resolve, reject) => { let tmp = { status: false, output: null }; axios({ method: options.method, url: options.url, data: data, config: { headers: options.headers }, onUploadProgress: function(progressEvent) { var percentCompleted = Math.round( (progressEvent.loaded * 100) / progressEvent.total ); $("#" + options.progress).css("width", percentCompleted + "%"); } }) .then(function(response) { tmp.status = true; tmp.output = response.data; resolve(tmp); }) .catch(function(response) { tmp.status = false; tmp.output = response; resolve(tmp); }); }); }, form: { val(id = "") { return $("#" + id).val(); } }, element: { hasClass(id = "", hasClass = "") { return $("#" + id).hasClass(hasClass); } } }, set: { element: { addClass(id = "", addClass = "") { $("#" + id).addClass(addClass); }, removeClass(id = "", removeClass = "") { $("#" + id).removeClass(removeClass); }, text(id = "", text = "") { $("#" + id).text(text); }, attr(id = "", attribute = "", mode = false) { $("#" + id).attr(attribute, mode); }, html(id = "", html = "") { $("#" + id).html(html); } } } }; export let JsLib = { get: { validate: { min1Uppercase(string = "") { return ucase.test(string); }, min1Lowercase(string = "") { return lcase.test(string); }, min1Number(string = "") { return num.test(string); }, min1SpecialChar(string = "") { return schar.test(string); }, email(email) { return mailc.test(email); }, phone(phoneNumber) { return phonec.test(phoneNumber); } }, month: { // Style is full or minimalist string(monthNumber = 0, style = "full") { let monthNames = []; if (style == "full") { monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; } else if (style == "minimalist") { monthNames = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]; } return monthNames[monthNumber]; } }, time: { diff(timeStart = new Date(), timeEnd = new Date()) { var timeStart = new Date(timeStart).getTime(); var timeEnd = new Date(timeEnd).getTime(); var hourDiff = timeEnd - timeStart; //in ms var secDiff = hourDiff / 1000; //in s var minDiff = hourDiff / 60 / 1000; //in minutes var hDiff = hourDiff / 3600 / 1000; //in hours var humanReadable = {}; humanReadable.hours = Math.floor(hDiff); humanReadable.minutes = minDiff - 60 * humanReadable.hours; return humanReadable; }, diffMinutes(startDate, endDate) { var diff = endDate.getTime() - startDate.getTime(); return diff / 60000; }, number(time, fromDate = false) { if (fromDate) { time = time.substring(11, 16); } time = time.replace(":", ""); time = time * 1; return time; }, plus(date = null, hours = 0, minutes = 0, seconds = 0) { const newDate = new Date(date); newDate.setHours(newDate.getHours() + hours * 1); newDate.setMinutes(newDate.getMinutes() + minutes * 1); newDate.setSeconds(newDate.getSeconds() + seconds * 1); let fixDate = newDate; return fixDate; } }, date: { init(date = null) { let _date; if (date == null) { _date = new Date(); } else { _date = new Date(date); } return _date; }, property(date = new Date(), utc = false, string = false) { if (date == "" || date == null || date == undefined) { date = new Date(); } else { date = new Date(date); } var _dd = utc ? date.getUTCDate() : date.getDate(); var _mm = utc ? date.getUTCMonth() : date.getMonth(); //January is 0! var _yyyy = utc ? date.getUTCFullYear() : date.getFullYear(); var _h = utc ? date.getUTCHours() : date.getHours(); var _m = utc ? date.getUTCMinutes() : date.getMinutes(); var _s = utc ? date.getUTCSeconds() : date.getSeconds(); let fix = { string(d) { if (d <= 9) { d = "0" + d; } else { let _dd = d; _dd = _dd.toString(); d = _dd; } return d; } }; if (string) { _yyyy = _yyyy.toString(); _dd = fix.string(_dd); _mm = fix.string(_mm + 1); _h = fix.string(_h); _m = fix.string(_m); _s = fix.string(_s); } let property = { original: date, year: _yyyy, month: _mm, day: _dd, hour: _h, minute: _m, second: _s }; return property; }, UTC(date = null, plusDate = 0) { let set = { UTC( _date = { year: 0, month: 0, day: 0, hour: 0, minute: 0, second: 0 } ) { let _yyyy = _date.year; let _mm = _date.month; let _dd = _date.day; let _h = _date.hour; let _m = _date.minute; let _s = _date.second; if (_dd < 10) { _dd = "0" + _dd; } _mm = _mm + 1; if (_mm < 10) { _mm = "0" + _mm; } if (_h < 10) { _h = "0" + _h; } if (_m < 10) { _m = "0" + _m; } if (_s < 10) { _s = "0" + _s; } let _utc = _yyyy + "-" + _mm + "-" + _dd + " " + _h + ":" + _m + ":" + _s; return _utc; } }; date = JsLib.get.date.init(date); if (plusDate) { date.setDate(date.getDate() + plusDate); } date = JsLib.get.date.property(date, true); date = set.UTC(date); return date; }, custom(date = null, plusDate = 0, includeTime = false) { date = JsLib.get.date.init(date); if (plusDate) { date.setDate(date.getDate() + plusDate); } var _dd = date.getDate(); var _mm = date.getMonth() + 1; //January is 0! var _yyyy = date.getFullYear(); if (_dd < 10) { _dd = "0" + _dd; } if (_mm < 10) { _mm = "0" + _mm; } if (includeTime) { var _h = date.getHours(); var _m = date.getMinutes(); var _s = date.getSeconds(); if (_h < 10) { _h = "0" + _h; } if (_m < 10) { _m = "0" + _m; } if (_s < 10) { _s = "0" + _s; } date = _yyyy + "-" + _mm + "-" + _dd + " " + _h + ":" + _m + ":" + _s; return date; } else { date = _yyyy + "-" + _mm + "-" + _dd; return date; } }, custom2(date = null, monthStyle = "full") { date = JsLib.get.date.init(date); var _d = date.getDate(); var _mmm = date.getMonth(); //January is 0! _mmm = JsLib.get.month.string(_mmm, monthStyle); var _yyyy = date.getFullYear(); date = _d + " " + _mmm + " " + _yyyy; return date; }, number(date, fromFullDate = false) { if (fromFullDate) { date = date.substring(0, 10); } date = date.replace("-", ""); date = date.replace("-", ""); date = date * 1; return date; } }, // data.sort(tools.dynamicSort("name")) sort: { array(property = "") { var sortOrder = 1; if (property[0] === "-") { sortOrder = -1; property = property.substr(1); } return function(a, b) { var result = a[property] < b[property] ? -1 : a[property] > b[property] ? 1 : 0; return result * sortOrder; }; }, compareValues(key, order = "asc") { return function innerSort(a, b) { if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) { // property doesn't exist on either object return 0; } const varA = typeof a[key] === "string" ? a[key].toUpperCase() : a[key]; const varB = typeof b[key] === "string" ? b[key].toUpperCase() : b[key]; let comparison = 0; if (varA > varB) { comparison = 1; } else if (varA < varB) { comparison = -1; } return order === "desc" ? comparison * -1 : comparison; }; }, nestedProperty(prop, arr) { prop = prop.split("."); var len = prop.length; arr.sort(function(a, b) { var i = 0; while (i < len) { a = a[prop[i]]; b = b[prop[i]]; i++; } if (a < b) { return -1; } else if (a > b) { return 1; } else { return 0; } }); return arr; } } }, set: { date: { plus(date = null, dayPlus = 0) { let _date; if (date == null) { _date = new Date(); } else { _date = new Date(date); } return new Date(_date.setDate(_date.getDate() + dayPlus)); } } } };