angular-helpers

1.0.197 • Public • Published

exports.safeAngularApply = function (scope, callback, args) { if (!scope.$$phase && (scope.$rootScope ? !scope.$rootScope.$$phase : true)) { if (typeof callback !== "function") scope.$apply(); else if (args instanceof Array) callback.apply(scope, Array.prototype.slice.call(args)) else callback(); } else { setTimeout(function () { exports.safeAngularApply(scope, callback, args); }, 250); } }

exports.safeParseJson = function (str) { try { var p = JSON.parse(str); return p; } catch (e) { return str; } }

exports.getElemById = function (collection, by, id) { for (var i in collection) { if (collection[i][by] == id) return collection[i]; } return null; }

exports.checkNested = function (obj) { var args = Array.prototype.slice.call(arguments, 1);

for (var i = 0; i < args.length; i++) {
    if (!obj || !obj.hasOwnProperty(args[i])) {
        return false;
    }
    obj = obj[args[i]];
}
return true;

}

exports.detectIE = function () { var ua = window.navigator.userAgent;

var msie = ua.indexOf('MSIE ');
if (msie > 0) {
    // IE 10 or older => return version number
    return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
}

var trident = ua.indexOf('Trident/');
if (trident > 0) {
    // IE 11 => return version number
    var rv = ua.indexOf('rv:');
    return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
}

var edge = ua.indexOf('Edge/');
if (edge > 0) {
    // Edge (IE 12+) => return version number
    return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
}

// other browser
return null;

}

exports.addToQuerystring = function (query, paramName, paramValue) { if (!query) query = ""; var char = (query.indexOf("?") > -1) ? "&" : "?"; return query + char + paramName + "=" + paramValue; }

exports.removeFromQuerystring = function (url, parameter) { //prefer to use l.search if you have a location/link object var urlparts = url.split('?'); if (urlparts.length >= 2) {

    var prefix = encodeURIComponent(parameter) + '=';
    var pars = urlparts[1].split(/[&;]/g);

    //reverse iteration as may be destructive
    for (var i = pars.length; i-- > 0;) {
        //idiom for string.startsWith
        if (pars[i].lastIndexOf(prefix, 0) !== -1) {
            pars.splice(i, 1);
        }
    }

    url = urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : "");
    return url;
} else {
    return url;
}

}

exports.fromObjectToQuerystring = function (obj, prefix) { var str = []; for (var p in obj) { if (obj.hasOwnProperty(p)) { var k = prefix ? prefix + "[" + p + "]" : p, v = obj[p]; str.push(typeof v == "object" ? serialize(v, k) : encodeURIComponent(k) + "=" + encodeURIComponent(v)); } } return str.join("&"); }

exports.extractDomainFromURL = function (url) { var a = document.createElement('a'); a.href = url; return a.hostname; }

exports.replaceAll = function (str, find, replace) { var escapeRegExp = function (str) { return str.replace(/[.*+?^${}()|[]\]/g, "\$&"); // $& means the whole matched string } return str.replace(new RegExp(escapeRegExp(find), 'g'), replace); }

exports.storage = { get: function (key) { var val = null; try { val = localStorage.getItem(key); return JSON.parse(val); } catch (e) { return val; } }, set: function (key, value) { var final = ''; if (typeof value === 'object') final = JSON.stringify(value); else final = value; try { localStorage.setItem(key, final); } catch (e) { } }, remove: function (key) { try { localStorage.removeItem(key); } catch (e) { } } }

exports.isParamExist = function (field, url) { url = url ? url : window.location.href; if (url.indexOf('?' + field + '=') != -1) return true; else if (url.indexOf('&' + field + '=') != -1) return true; return false };

exports.getReferrerByUrl = function (url) { var protocol = ''; if (url.indexOf('http:') == 0) protocol = 'http:'; else if (url.indexOf('https:') == 0) protocol = 'https:'; else protocol = window.location.protocol; url = url.replace(protocol, '').replace('//', ''); var indexOfSlash = url.indexOf('/'); if (indexOfSlash > -1) url = url.substring(0, indexOfSlash); return protocol + '//' + url; };

// https://davidwalsh.name/nested-objects exports.Objectifier = (function () {

// Utility method to get and set objects that may or may not exist
var objectifier = function (splits, create, context) {
    var result = context || window;
    for (var i = 0, s; result && (s = splits[i]); i++) {
        result = (s in result ? result[s] : (create ? result[s] = {} : undefined));
    }
    return result;
};

return {
    // Creates an object if it doesn't already exist
    set: function (name, value, context) {
        var splits = name.split('.'), s = splits.pop(), result = objectifier(splits, true, context);
        return result && s ? (result[s] = value) : undefined;
    },
    get: function (name, create, context) {
        return objectifier(name.split('.'), create, context);
    },
    exists: function (name, context) {
        return this.get(name, false, context) !== undefined;
    }
};

})();

// https://jsfiddle.net/Guffa/DDn6W/ exports.randomPassword = function (length) { if (!length) length = 6; var chars = "abcdefghijklmnopqrstuvwxyz!@#$%^&*()-+<>ABCDEFGHIJKLMNOP1234567890"; var pass = ""; for (var x = 0; x < length; x++) { var i = Math.floor(Math.random() * chars.length); pass += chars.charAt(i); } return pass; }

Readme

Keywords

Package Sidebar

Install

npm i angular-helpers

Weekly Downloads

1

Version

1.0.197

License

MIT

Last publish

Collaborators

  • ranbuch