UNPKG

nscomponentsreact

Version:

React Wrapper Components for NSComponents

431 lines (417 loc) 11.1 kB
var nsModuleExport = function(root,name,prototype) { if(typeof exports === 'object' && typeof module === 'object') { module.exports[name] = prototype; } else if (typeof define === "function" && define.amd) { define(name,[], function () {return prototype;}); } else if(typeof exports === 'object') { exports[name] = prototype; } else { root[name] = prototype; } };var nsIsWeb = function(root) { if(typeof exports === 'object' && typeof module === 'object') { return false; } else if (typeof define === "function" && define.amd) { return false; } else if(typeof exports === 'object') { return false; } else { return true; } };if(!nsIsWeb()) { var nsutilRef = require('./nsUtil.min.js'); var NSUtil = nsutilRef.NSUtil; } "use strict"; /* Taken from http://www.JavascriptToolbox.com but has been modified */ var NSDateUtil = (function() { function NSDateUtil() { this.__monthNames = new Array('January','February','March','April','May','June','July','August','September','October','November','December'); this.__monthNamesShort = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); this.__dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'); this.__dayNamesShort = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); this.__dayNamesMini = new Array('Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'); this.__dateFormat = "mm/dd/yyyy"; var self = this; this.format = function(date,format,settings) { var retValue = ""; if(this.isValidDate(date)) { format = format || self.__dateFormat; settings = settings || {}; var monthNames = settings.monthNames || self.__monthNames; var monthNamesShort = settings.monthNamesShort || self.__monthNamesShort; var dayNames = settings.dayNames || self.__dayNames; var dayNamesShort = settings.dayNamesShort || self.__dayNamesShort; var objChar = getDateInFormat(date,monthNames,monthNamesShort,dayNames,dayNamesShort); var index = 0; var char = ""; var repeatedChar = ""; while (index < format.length) { char = format.charAt(index); repeatedChar = ""; while ((format.charAt(index) === char) && (index < format.length)) { repeatedChar += format.charAt(index); index++; } if (typeof(objChar[repeatedChar]) != "undefined") { retValue = retValue + objChar[repeatedChar]; } else { retValue = retValue + repeatedChar; } } } else { console.log(date + "is invalid"); } return retValue; }; this.parseString = function(value,format,settings) { format = format || this.__dateFormat; settings = settings || {}; var monthNames = settings.monthNames || self.__monthNames; var monthNamesShort = settings.monthNamesShort || self.__monthNamesShort; var dayNames = settings.dayNames || self.__dayNames; var dayNamesShort = settings.dayNamesShort || self.__dayNamesShort; var index = 0; var indexValue = 0; var char = ""; var repeatedChar = ""; var x,y; var year = new Date().getFullYear(); var month = 1; var date = 1; var hh = 0; var mm = 0; var ss = 0; var ampm=""; while (index < format.length) { char = format.charAt(index); repeatedChar = ""; while ((format.charAt(index) === char) && (index < format.length)) { repeatedChar += format.charAt(index); index++; } if (repeatedChar === "yyyy" || repeatedChar === "yy" || repeatedChar === "y") { if (repeatedChar === "yyyy") { x=4; y=4; } if (repeatedChar === "yy") { x=2; y=2; } if (repeatedChar === "y") { x=2; y=4; } year= getInt(value,indexValue,x,y); if (year == null) { return null; } indexValue += year.length; if (year.length==2) { if (year > 70) { year = 1900 + (year - 0); } else { year = 2000 + (year - 0); } } } else if (repeatedChar=="MMM" || repeatedChar=="NNN") { month = 0; var names = (repeatedChar == "MMM" ? (monthNames.concat(monthNamesShort)) : monthNamesShort); for (var i=0; i < names.length; i++) { var month_name = names[i]; if (value.substring(indexValue,indexValue + month_name.length).toLowerCase() == month_name.toLowerCase()) { month=(i % 12) + 1; indexValue += month_name.length; break; } } if ((month < 1) || (month>12)) { return null; } } else if (repeatedChar == "EE" || repeatedChar == "E") { var names = (repeatedChar == "EE" ? dayNames : dayNamesShort); for (var i=0; i< names.length; i++) { var day_name=names[i]; if (value.substring(indexValue,indexValue + day_name.length).toLowerCase() == day_name.toLowerCase()) { indexValue += day_name.length; break; } } } else if (repeatedChar == "MM" || repeatedChar == "M") { month=getInt(value,indexValue,repeatedChar.length,2); if(month == null || (month<1) || (month>12)) { return null; } indexValue += month.length; } else if (repeatedChar == "dd" || repeatedChar == "d") { date=getInt(value,indexValue,repeatedChar.length,2); if(date == null || (date < 1)||(date > 31)) { return null; } indexValue += date.length; } else if (repeatedChar == "hh" || repeatedChar == "h") { hh = getInt(value,indexValue,repeatedChar.length,2); if(hh == null||(hh < 1)||(hh > 12)) { return null; } indexValue += hh.length; } else if (repeatedChar == "HH" || repeatedChar == "H") { hh = getInt(value,indexValue,repeatedChar.length,2); if(hh == null || (hh < 0) || (hh > 23)) { return null; } indexValue += hh.length; } else if (repeatedChar == "KK"|| repeatedChar == "K") { hh = getInt(value,indexValue,repeatedChar.length,2); if(hh == null||(hh < 0)||(hh > 11)) { return null; } indexValue += hh.length; hh++; } else if (repeatedChar == "kk" || repeatedChar == "k") { hh = getInt(value,indexValue,repeatedChar.length,2); if(hh == null||(hh < 1)||(hh > 24)) { return null; } indexValue += hh.length; hh--; } else if (repeatedChar == "mm" || repeatedChar == "m") { mm = getInt(value,indexValue,repeatedChar.length,2); if(mm == null || (mm < 0) || (mm > 59)) { return null; } indexValue += mm.length; } else if (repeatedChar == "ss" || repeatedChar == "s") { ss = getInt(value,indexValue,repeatedChar.length,2); if(ss == null || (ss < 0) || (ss > 59)) { return null; } indexValue += ss.length; } else if (repeatedChar == "a") { if (value.substring(indexValue,indexValue + 2).toLowerCase() == "am") { ampm="AM"; } else if (value.substring(indexValue,indexValue + 2).toLowerCase() == "pm") { ampm="PM"; } else { return null; } indexValue += 2; } else { if (value.substring(indexValue,indexValue + repeatedChar.length) != repeatedChar) { return null; } else { indexValue += repeatedChar.length; } } } if (indexValue != value.length) { return null; } if (month == 2) { // Check for leap year if (this.isLeapYear(year)) { if (date > 29) { return null; } } else { if (date > 28) { return null; } } } if ((month == 4) ||(month == 6) ||(month == 9) || (month == 11)) { if (date > 30) { return null; } } // Correct hours value if (hh < 12 && ampm == "PM") { hh += 12; } else if (hh > 11 && ampm == "AM") { hh -= 12; } return new Date(year,month-1,date,hh,mm,ss); }; this.isValidDate = function(date) { return date && Object.prototype.toString.call(date) === "[object Date]" && !isNaN(date); }; var getDateInFormat = function(date,monthNames,monthNamesShort,dayNames,dayNamesShort) { var retValue = {}; var year = "" + date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); var dayOfWeek = date.getDay(); var hour = date.getHours(); var hourIn12Format = ((hour === 0) ? 12 : ((hour > 12) ? (hour - 12) : hour)); var amorpm = (hour > 11) ? "PM" : "AM"; var minutes = date.getMinutes(); var seconds = date.getSeconds(); retValue["y"]="" + year; retValue["yyyy"]= retValue["y"]; retValue["yy"]= retValue["y"].substring(2,4); retValue["M"]= month; retValue["MM"]= appendZero(retValue["M"]); retValue["MMM"]= monthNames[retValue["M"] - 1]; retValue["NNN"]= monthNamesShort[retValue["M"] - 1]; retValue["d"]= day; retValue["dd"]= appendZero(retValue["d"]); retValue["E"]= dayNamesShort[dayOfWeek]; retValue["EE"]= dayNames[dayOfWeek]; retValue["H"]= hour; retValue["HH"]= appendZero(retValue["H"]); retValue["h"] = hourIn12Format; retValue["hh"]= appendZero(retValue["h"]); retValue["K"]= retValue["h"] - 1; retValue["k"]= retValue["H"] + 1; retValue["KK"]= appendZero(retValue["K"]); retValue["kk"]= appendZero(retValue["k"]); retValue["a"] = amorpm; retValue["m"]= minutes; retValue["mm"]= appendZero(retValue["m"]); retValue["s"]= seconds; retValue["ss"]= appendZero(retValue["s"]); return retValue; }; this.isLeapYear = function(year) { if(year % 4 === 0 || (year % 100 === 0 && year % 400 === 0)) { return true; } return false; }; var getInt = function(value,index,fromLength,toLength) { for (var count = toLength; count >= fromLength; count--) { var repeatedChar = value.substring(index,index + count); if (repeatedChar.length < fromLength) { return null; } if (isInteger(repeatedChar)) { return repeatedChar; } } return null; }; var appendZero = function(value) { return (value < 0 || value > 9 ? "":"0") + value; }; var isInteger = function(value) { for (var i=0; i < value.length; i++) { if ("1234567890".indexOf(value.charAt(i))==-1) { return false; } } return true; }; }; return NSDateUtil; })(); nsModuleExport(this,"NSDateUtil",NSDateUtil);