// *********************************************************** // VIEW // *********************************************************** wrjs.View = { addToViewManager: function(view) { wrjs.View.viewManager[view.id] = view; }, registerStoreInViewManager: function(_config) { var vm = wrjs.View.viewManager; // REGISTER THIS GRID ID UNDER THE VIEW MANAGER FOR THIS STORE (STORE USES THIS TO LOOKUP WHICH VIEWS TO UPDATE) vm[_config.storeId] = vm[_config.storeId] || []; if($.inArray(_config.id, vm[_config.storeId]) == -1) { vm[_config.storeId].push(_config.id); } }, displayFunctions: { // USED TO MAKE THE VALUE BE RETURNED AS AN AHREF WITH MATCHING KEY ATTRIBUTE (MD5, URL, FILE, etc) addLink: function(value, row, col) { var str = value; // IF MD5 - UPPERCASE AND LOWERCASE LETTERS if(col.datakey == 'md5') { str = value.toUpperCase(); } if(!str) { str = col.datakey; }; return '' + str + ''; }, addFatLink: function(value, row, col) { var color = col.id == 'Blocked' ? 'red' : ''; if(!value) { return '0'; } else { var str = value; var num = Number(str); var isNumber = !isNaN(num); if(isNumber) { str = wrjs.utils.numberWithCommas(num) }; return '' + ls.text_view + '' + str + ''; } }, blankDash: function(value) { if(!value || value.length == 0) { return '-'; }; return value; }, capitalize: function(value, row, col) { return { value: value, meta: { class: 'capitalize' } }; }, epochToDate: function(value, row, col) { var v = wrjs.utils.epochtoprettydate({epoch:value}); return v; }, numberFormat: function(value, row, col) { return wrjs.utils.numberWithCommas(value) }, dateFormat: function(value, row, col) { var dt = new Date(); if(typeof value == 'object') { // DATE OBJECT dt = value; } else { if(typeof value == 'number') { // ASSUMING EPOCH dt = new Date(value * 1000) } else { dt = new Date(value); } }; // SOME BROWSERS (NOTABLY IE11) NEED A "T" SEPARATING THE DATE AND TIME // THEREFORE IF PREVIOUS DATE CREATIONS HAVE FAILED, SPLIT ON SPACES AND ADD THE "T" IN if(dt == 'Invalid Date') { var dateWithCorrectSeparator = value.split(' ').join('T'); dt = new Date(dateWithCorrectSeparator); }; var utc = false; var days = [ls.psMessage95, ls.psMessage89, ls.psMessage90, ls.psMessage91, ls.psMessage92, ls.psMessage93, ls.psMessage94]; var dates = [ls.text_date1st, ls.text_date2nd, ls.text_date3rd, ls.text_date4th, ls.text_date5th, ls.text_date6th, ls.text_date7th, ls.text_date8th, ls.text_date9th, ls.text_date10th, ls.text_date11th, ls.text_date12th, ls.text_date13th, ls.text_date14th, ls.text_date15th, ls.text_date16th, ls.text_date17th, ls.text_date18th, ls.text_date19th, ls.text_date20th, ls.text_date21st, ls.text_date22nd, ls.text_date23rd, ls.text_date24th, ls.text_date25th, ls.text_date26th, ls.text_date27th, ls.text_date28th, ls.text_date29th, ls.text_date30th, ls.text_date31st]; var months = [ls.psMessage96, ls.psMessage97, ls.psMessage98, ls.psMessage99, ls.psMessage100, ls.psMessage101, ls.psMessage102, ls.psMessage103, ls.psMessage104, ls.psMessage105, ls.psMessage106, ls.psMessage107]; if(utc) { var year = dt.getUTCFullYear(); var month = months[dt.getUTCMonth()].toString(); var date = dates[dt.getUTCDate()-1]; var day = days[dt.getDay()].toString(); var hour = dt.getUTCHours().toString() var min = dt.getUTCMinutes().toString(); } else { var year = dt.getFullYear(); var month = months[dt.getMonth()].toString(); var date = dates[dt.getDate()-1]; var day = days[dt.getDay()].toString(); var hour = dt.getHours().toString() var min = dt.getMinutes().toString(); } min = min < 10 ? min = '0' + min : min; hour = hour < 10 ? '0' + hour : hour; var datestring = month + ' ' + date + ' ' + year + ', ' + hour + ':' + min; return datestring }, isoDateFormat: function(value, row, col) { if(value.length == 0) { return '-'; } else { var d = new Date(value.replace(' ', 'T')); return wrjs.View.displayFunctions.dateFormat(d) } }, keycode: function (x) { if(typeof x != 'undefined') { return x.toString().replace(/(.{4})(?!$)/g, '$1-').toUpperCase(); } else { return ''; } }, deviceStatus: function(value, row, col) { var infected = row.infectednow; var expired = row.expired; var lastseen = new Date(row.lastseen.replace(' ', 'T')).getTime(); var dateminusseven = new Date().minusHours(7 * 24).getTime(); var obj = {meta: {class: []}, value: ''}; if(infected == 'Yes') { obj.meta.class.push('scan_infected'); //obj.value = 'Infected View'; obj.value = ls.text_infected; } else { if(expired == 'Yes') { obj.meta.class.push('scan_expired'); obj.value = ls.text_expired; } else { if(dateminusseven > lastseen) { obj.meta.class.push('scan_expired'); obj.value = ls.text_notseenrecently; } else { obj.meta.class.push('scan_clean'); obj.value = ls.text_protected; } } } return obj }, determination: function(value, row, col) { var str = ls.text_unclassified; switch(value) { case 'Bad': case 'B': str = ls.text_bad; break; case 'Good': case 'G': str = ls.text_good; break; default: // DO NOTHIN } return str; }, dwellTime: function(value, row, col) { if(value.length == 0) { return ls.text_whitelisted } else { var str = value; str = str.replace('Days', ls.text_days); str = str.replace('Day', ls.text_day); str = str.replace('hours', ls.text_hours); str = str.replace('hour', ls.text_hour); str = str.replace('mins', ls.text_mins); str = str.replace('min', ls.text_min); str = str.replace('secs', ls.text_secs); str = str.replace('sec', ls.text_sec); return str; } }, noneSpecified: function(value, row, col) { return value.length > 0 ? value : '' + ls.text_nonespecified + ''; }, dateToTimeAgo: function(value, row, col) { if(value && value != '0') { var now = new Date(); var dt = new Date(); if(typeof value == 'object') { // DATE OBJECT dt = value; } else { if(typeof value == 'number') { // ASSUMING EPOCH dt = new Date(value * 1000) } else { dt = new Date(value); } } // SOME BROWSERS (NOTABLY IE11) NEED A "T" SEPARATING THE DATE AND TIME // THEREFORE IF PREVIOUS DATE CREATIONS HAVE FAILED, SPLIT ON SPACES AND ADD THE "T" IN if(dt == 'Invalid Date') { var dateWithCorrectSeparator = value.split(' ').join('T'); dt = new Date(dateWithCorrectSeparator); }; var str = ''; var diff = wrjs.utils.date.dateDiffExtended(now, dt); switch(diff.days) { case 0: if(diff.hours > 0) { str = diff.hours + ' ' + ls.text_hoursago; } else { if(diff.mins > 0) { str = diff.mins + ' ' + ls.text_minsago; } else { str = ls.text_justnow }; }; break; case 1: str = ls.text_yesterday; break; default: str = diff.days + ' ' + ls.text_daysago }; return str; } else { return ''; }; } } }; // ********************************************************************************** // VIEW MANAGER // ********************************************************************************** wrjs.View.viewManager = { // CONFIG TO GO HERE }; // ********************************************************************************** // GLOBAL FUNCTION // ********************************************************************************** if(typeof wrjs.get == 'undefined') { wrjs.get = function(id) { var el = wrjs.Data.storeManager[id] || wrjs.View.viewManager[id]; // CHECK IT IS ACTUALLY AN OBJECT, AND NOT AN ARRAY OR STRING if(typeof el == 'object') { if($.isArray(el)) { el = false; } } else { el = false; } return el; }; };