UNPKG

client-ui

Version:

Testing implementation of nodeJs Backend, angular frontend, and hopefully in a way that this can be deployed to s3/cloudfront

148 lines (139 loc) 5.84 kB
angular.module(moduleName).factory('util', ['$filter', '$timeout', function($filter, $timeout) { var self = { scrollToElement: function(cssElement, offset) { $timeout(function () { $('html, body').animate({ scrollTop: $(cssElement).offset().top - offset }, 1000); }); }, meetsMinimumAge: function(birthDate, minAge) { birthDate = new Date(birthDate); var now = new Date(); var tempDate = new Date(birthDate.getFullYear() + minAge, birthDate.getMonth(), birthDate.getDate()); var isValid = tempDate <= now; return isValid; }, isNumeric: function(n) { return !isNaN(parseFloat(n)) && isFinite(n); }, validDate: function(year, month, day) { var isDate = true; var potentialDate = month + '/' + day + '/' + year; var dateTest = Date.parse(potentialDate); if (isNaN(dateTest)) { isDate = false; } else { dateTest = new Date(year, month - 1, day); isDate = (dateTest.getFullYear() === parseInt(year) && dateTest.getMonth() + 1 === parseInt(month) && dateTest.getDate() === parseInt(day)); } return isDate; }, analyzeMonthYear: function(monthYear) { var output = false; if (monthYear) { if (monthYear.length === 3) { monthYear = '0' + monthYear.toString(); } if (monthYear.length === 4) { var getMonthPattern = /^([0-1]?[0-9])[0-9][0-9]$/; var getYearPattern = /^[0-1]?[0-9]([0-9][0-9])$/; // get month or false if (getMonthPattern.test(monthYear)) { var monthMatches = monthYear.match(getMonthPattern); var month = false; if (monthMatches.length > 1) { if (parseInt(monthMatches[1]) <= 12 && parseInt(monthMatches[1]) >= 1) { month = parseInt(monthMatches[1]); } } // get year or false var yearMatches = monthYear.match(getYearPattern); var year = false; if (yearMatches.length > 1) { year = parseInt(yearMatches[1]); } if (month !== false && year !== false) { output = { month: month, year: year }; } } } } return output; }, determineFirstFutureMonthYear: function(monthYearObj, currentDate) { if (typeof monthYearObj !== 'object') { return false; } else if (!monthYearObj.hasOwnProperty('year')) { return false; } else if (!monthYearObj.hasOwnProperty('month')) { return false; } if (typeof currentDate === 'undefined') { currentDate = new Date(); } currentDate.setDate(1); var currentYear = currentDate.getFullYear(); var currentCentury = currentYear.toString().substr(0, 2); var potentialYear = currentCentury + monthYearObj.year.toString(); var potentialDate = new Date(potentialYear, monthYearObj.month, 1); if (potentialDate.getTime() < currentDate.getTime()) { potentialYear = parseInt(potentialYear) + 100; potentialDate = new Date(potentialYear, monthYearObj.month, 1); } var output = JSON.parse(JSON.stringify(monthYearObj)); output.year = potentialDate.getFullYear(); return output; }, conditionalSet: function(obj, key, value) { if (typeof value !== 'undefined') { obj[key] = value; } }, testElement: function(obj, path) { path = path.split('.'); while(path.length) { var currElem = path.shift(); if (obj.hasOwnProperty(currElem)) { obj = obj[currElem]; } else { return false; } } return obj; }, applyFilter: function(filterName, args) { return $filter(filterName).apply(this||window, args); }, padInteger: function(number, numDigits, padding) { if (typeof padding === "undefined") { padding = 0; } padding = padding.toString(); number = number.toString(); for(var i = 0; i < numDigits; i++) { number = padding + number; } return number.slice(numDigits * -1); }, validBirthdate: function(month, day, year, minAge) { var out = false; var dateValid = self.validDate(year, month, day); if (dateValid) { var dateObj = new Date(parseInt(year), parseInt(month) - 1, parseInt(day)); if (self.meetsMinimumAge(dateObj.getTime(), minAge) && dateObj.getFullYear() > 1900) { out = dateObj.toISOString(); } } return out; }, validPhonenumber: function(number) { var pattern = /[2-9]{1}[0-9]{2}[0-9]{3}[0-9]{4}/; return pattern.test(number); } }; return self; }]);