// ***********************************************************
// 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;
};
};