@synerty/vortexjs
Version:
Custom observable data serialisation and routing based on Angular 2+
44 lines • 6.58 kB
JavaScript
function parseCurrency(value) {
return Number(value.replace(/[^0-9\.\-]+/g, ""));
}
function parseDate(date) {
if (date.toString()
.match(/^\d{4}-\d{2}-\d{2}$/g)) {
date += " 00:00:00";
}
return Date.parse(date);
}
function compareText(a, b) {
const x = a.toLowerCase();
const y = b.toLowerCase();
return x > y ? 1 : x < y ? -1 : 0;
}
function compareNumeric(a, b) {
return a - b;
}
function compareCurrency(a, b) {
return parseCurrency(a) - parseCurrency(b);
}
function compareDate(a, b) {
return parseDate(a) - parseDate(b);
}
function getKey(object, key) {
if (key == null)
return key;
if (typeof key === "function")
return key(object);
return object[key];
}
export function sortText(collection, key = null) {
return collection.sort((a, b) => compareText(getKey(a, key), getKey(b, key)));
}
export function sortNumeric(collection, key = null) {
return collection.sort((a, b) => compareNumeric(getKey(a, key), getKey(b, key)));
}
export function sortCurrency(collection, key = null) {
return collection.sort((a, b) => compareCurrency(getKey(a, key), getKey(b, key)));
}
export function sortDate(collection, key = null) {
return collection.sort((a, b) => compareDate(getKey(a, key), getKey(b, key)));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbFNvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdm9ydGV4L1V0aWxTb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsYUFBYSxDQUFDLEtBQUs7SUFDeEIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUNwRCxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBSTtJQUNuQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7U0FDZCxLQUFLLENBQUMsc0JBQXNCLENBQUMsRUFBRTtRQUNoQyxJQUFJLElBQUksV0FBVyxDQUFBO0tBQ3RCO0lBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzNCLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FDaEIsQ0FBQyxFQUNELENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBRXpCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3JDLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FDbkIsQ0FBQyxFQUNELENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDaEIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUNwQixDQUFDLEVBQ0QsQ0FBQztJQUVELE9BQU8sYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUM5QyxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQ2hCLENBQUMsRUFDRCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3RDLENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FDWCxNQUFXLEVBQ1gsR0FBRztJQUVILElBQUksR0FBRyxJQUFJLElBQUk7UUFDWCxPQUFPLEdBQUcsQ0FBQTtJQUVkLElBQUksT0FBTyxHQUFHLEtBQUssVUFBVTtRQUN6QixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUV0QixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUN0QixDQUFDO0FBTUQsTUFBTSxVQUFVLFFBQVEsQ0FDcEIsVUFBaUIsRUFDakIsTUFBd0MsSUFBSTtJQUU1QyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FDbkIsQ0FBQyxFQUNELENBQUMsRUFDSCxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDckQsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQ3ZCLFVBQWlCLEVBQ2pCLE1BQXdDLElBQUk7SUFFNUMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQ25CLENBQUMsRUFDRCxDQUFDLEVBQ0gsRUFBRSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3hELENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUN4QixVQUFpQixFQUNqQixNQUF3QyxJQUFJO0lBRTVDLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUNuQixDQUFDLEVBQ0QsQ0FBQyxFQUNILEVBQUUsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUN6RCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FDcEIsVUFBaUIsRUFDakIsTUFBd0MsSUFBSTtJQUU1QyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FDbkIsQ0FBQyxFQUNELENBQUMsRUFDSCxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIHBhcnNlQ3VycmVuY3kodmFsdWUpIHtcbiAgICByZXR1cm4gTnVtYmVyKHZhbHVlLnJlcGxhY2UoL1teMC05XFwuXFwtXSsvZywgXCJcIikpXG59XG5cbmZ1bmN0aW9uIHBhcnNlRGF0ZShkYXRlKSB7XG4gICAgaWYgKGRhdGUudG9TdHJpbmcoKVxuICAgICAgICAubWF0Y2goL15cXGR7NH0tXFxkezJ9LVxcZHsyfSQvZykpIHtcbiAgICAgICAgZGF0ZSArPSBcIiAwMDowMDowMFwiXG4gICAgfVxuICAgIFxuICAgIHJldHVybiBEYXRlLnBhcnNlKGRhdGUpXG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVUZXh0KFxuICAgIGEsXG4gICAgYlxuKSB7XG4gICAgY29uc3QgeCA9IGEudG9Mb3dlckNhc2UoKVxuICAgIGNvbnN0IHkgPSBiLnRvTG93ZXJDYXNlKClcbiAgICBcbiAgICByZXR1cm4geCA+IHkgPyAxIDogeCA8IHkgPyAtMSA6IDBcbn1cblxuZnVuY3Rpb24gY29tcGFyZU51bWVyaWMoXG4gICAgYSxcbiAgICBiXG4pIHtcbiAgICByZXR1cm4gYSAtIGJcbn1cblxuZnVuY3Rpb24gY29tcGFyZUN1cnJlbmN5KFxuICAgIGEsXG4gICAgYlxuKSB7XG4gICAgcmV0dXJuIHBhcnNlQ3VycmVuY3koYSkgLSBwYXJzZUN1cnJlbmN5KGIpXG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVEYXRlKFxuICAgIGEsXG4gICAgYlxuKSB7XG4gICAgcmV0dXJuIHBhcnNlRGF0ZShhKSAtIHBhcnNlRGF0ZShiKVxufVxuXG5mdW5jdGlvbiBnZXRLZXkoXG4gICAgb2JqZWN0OiBhbnksXG4gICAga2V5XG4pOiBhbnkge1xuICAgIGlmIChrZXkgPT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGtleVxuICAgIFxuICAgIGlmICh0eXBlb2Yga2V5ID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIHJldHVybiBrZXkob2JqZWN0KVxuICAgIFxuICAgIHJldHVybiBvYmplY3Rba2V5XVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRLZXlDYWxsYWJsZUkge1xuICAgIChvYmplY3Q6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRUZXh0KFxuICAgIGNvbGxlY3Rpb246IGFueVtdLFxuICAgIGtleTogU29ydEtleUNhbGxhYmxlSSB8IHN0cmluZyB8IG51bGwgPSBudWxsXG4pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb24uc29ydCgoXG4gICAgICAgIGEsXG4gICAgICAgIGJcbiAgICApID0+IGNvbXBhcmVUZXh0KGdldEtleShhLCBrZXkpLCBnZXRLZXkoYiwga2V5KSkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0TnVtZXJpYyhcbiAgICBjb2xsZWN0aW9uOiBhbnlbXSxcbiAgICBrZXk6IFNvcnRLZXlDYWxsYWJsZUkgfCBzdHJpbmcgfCBudWxsID0gbnVsbFxuKTogYW55W10ge1xuICAgIHJldHVybiBjb2xsZWN0aW9uLnNvcnQoKFxuICAgICAgICBhLFxuICAgICAgICBiXG4gICAgKSA9PiBjb21wYXJlTnVtZXJpYyhnZXRLZXkoYSwga2V5KSwgZ2V0S2V5KGIsIGtleSkpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc29ydEN1cnJlbmN5KFxuICAgIGNvbGxlY3Rpb246IGFueVtdLFxuICAgIGtleTogU29ydEtleUNhbGxhYmxlSSB8IHN0cmluZyB8IG51bGwgPSBudWxsXG4pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb24uc29ydCgoXG4gICAgICAgIGEsXG4gICAgICAgIGJcbiAgICApID0+IGNvbXBhcmVDdXJyZW5jeShnZXRLZXkoYSwga2V5KSwgZ2V0S2V5KGIsIGtleSkpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc29ydERhdGUoXG4gICAgY29sbGVjdGlvbjogYW55W10sXG4gICAga2V5OiBTb3J0S2V5Q2FsbGFibGVJIHwgc3RyaW5nIHwgbnVsbCA9IG51bGxcbik6IGFueVtdIHtcbiAgICByZXR1cm4gY29sbGVjdGlvbi5zb3J0KChcbiAgICAgICAgYSxcbiAgICAgICAgYlxuICAgICkgPT4gY29tcGFyZURhdGUoZ2V0S2V5KGEsIGtleSksIGdldEtleShiLCBrZXkpKSlcbn1cbiJdfQ==