165 lines
5.5 KiB
JavaScript
165 lines
5.5 KiB
JavaScript
|
angular.module("nagiosTime", [])
|
||
|
|
||
|
.filter("duration", function () {
|
||
|
return function (duration) {
|
||
|
var d, h, m, s;
|
||
|
var timeLeft = duration;
|
||
|
|
||
|
d = Math.floor(timeLeft / 86400000);
|
||
|
timeLeft -= d * 86400000;
|
||
|
h = Math.floor(timeLeft / 3600000);
|
||
|
timeLeft -= h * 3600000;
|
||
|
m = Math.floor(timeLeft / 60000);
|
||
|
timeLeft -= m * 60000;
|
||
|
s = Math.floor(timeLeft / 1000);
|
||
|
|
||
|
return d + "d " + h + "h " + m + "m " + s + "s";
|
||
|
}
|
||
|
})
|
||
|
|
||
|
.service("nagiosTimeService", function() {
|
||
|
return {
|
||
|
cannedTimeperiods: [
|
||
|
{ "value": "today", "label": "Today" },
|
||
|
{ "value": "last24hours", "label": "Last 24 Hours" },
|
||
|
{ "value": "yesterday", "label": "Yesterday" },
|
||
|
{ "value": "thisweek", "label": "This Week" },
|
||
|
{ "value": "last7days", "label": "Last 7 Days" },
|
||
|
{ "value": "lastweek", "label": "Last Week" },
|
||
|
{ "value": "thismonth", "label": "This Month" },
|
||
|
{ "value": "last31days", "label": "Last 31 Days" },
|
||
|
{ "value": "lastmonth", "label": "Last Month" },
|
||
|
{ "value": "thisyear", "label": "This Year" },
|
||
|
{ "value": "lastyear", "label": "Last Year" }
|
||
|
],
|
||
|
timeperiodlist: function() {
|
||
|
// TODO: Only define this once
|
||
|
var list = this.cannedTimeperiods.concat([]);
|
||
|
list.push({
|
||
|
value: "custom",
|
||
|
label: "* CUSTOM REPORT PERIOD *"
|
||
|
});
|
||
|
return list;
|
||
|
},
|
||
|
isCannedTimeperiod: function(timeperiod) {
|
||
|
for (var i = 0; i < this.cannedTimeperiods.length; i++) {
|
||
|
if (timeperiod == this.cannedTimeperiods[i].value) {
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
return false;
|
||
|
},
|
||
|
calculateReportTimes: function(now, period) {
|
||
|
// Calculate report start and end times based on current
|
||
|
// time and the pre-defined period selected
|
||
|
|
||
|
// Initialize the start and end times to something
|
||
|
// reasonable
|
||
|
var starttime = new Date(now.getFullYear(), now.getMonth(),
|
||
|
now.getDate(), 0, 0, 0);
|
||
|
var endtime = new Date(now);
|
||
|
|
||
|
// For canned report periods, calculate the start and
|
||
|
// end times
|
||
|
switch(period) {
|
||
|
case "today":
|
||
|
starttime = new Date(now.getFullYear(), now.getMonth(),
|
||
|
now.getDate(), 0, 0, 0);
|
||
|
endtime = new Date(now);
|
||
|
break;
|
||
|
case "last24hours":
|
||
|
starttime = new Date(now.getTime() -
|
||
|
(24 * 60 * 60 * 1000));
|
||
|
endtime = new Date(now);
|
||
|
break;
|
||
|
case "yesterday":
|
||
|
// This is a change from the legacy trends in that
|
||
|
// it accounts for DST changes. The legacy trends
|
||
|
// used the 24 hour period ending at midnight today.
|
||
|
var oneDayAgo = new Date(now.getTime() -
|
||
|
(24 * 60 * 60 * 1000));
|
||
|
starttime = new Date(oneDayAgo.getFullYear(),
|
||
|
oneDayAgo.getMonth(), oneDayAgo.getDate(),
|
||
|
0, 0, 0);
|
||
|
endtime = new Date(now.getFullYear(), now.getMonth(),
|
||
|
now.getDate(), 0, 0, 0);
|
||
|
break;
|
||
|
case "thisweek":
|
||
|
var thisTimeSunday = new Date(now.getTime() -
|
||
|
(24 * 60 * 60 * 1000 * now.getDay()));
|
||
|
starttime = new Date(thisTimeSunday.getFullYear(),
|
||
|
thisTimeSunday.getMonth(),
|
||
|
thisTimeSunday.getDate(), 0, 0, 0);
|
||
|
endtime = new Date(now);
|
||
|
break;
|
||
|
case "last7days":
|
||
|
// This is a change from the legacy trends in that
|
||
|
// it accounts for DST changes. The legacy trends
|
||
|
// set the start time to be a week's worth of
|
||
|
// seconds (7*24*60*60) before now.
|
||
|
var thisTimeLastWeek = new Date(now.getTime() -
|
||
|
(7 * 24 * 60 * 60 * 1000));
|
||
|
starttime = new Date(thisTimeLastWeek.getFullYear(),
|
||
|
thisTimeLastWeek.getMonth(),
|
||
|
thisTimeLastWeek.getDate(),
|
||
|
now.getHours(), now.getMinutes(),
|
||
|
now.getSeconds());
|
||
|
endtime = new Date(now);
|
||
|
break;
|
||
|
case "lastweek":
|
||
|
// This is a change from the legacy trends in that
|
||
|
// it accounts for DST changes. The legacy trends
|
||
|
// set the start time to be a week's worth of seconds
|
||
|
// (7*24*60*60) before last Sunday at midnight.
|
||
|
var thisTimeLastSunday = new Date(now.getTime() -
|
||
|
(24 * 60 * 60 * 1000 * (now.getDay() + 7)));
|
||
|
var thisTimeSunday = new Date(now.getTime() -
|
||
|
(24 * 60 * 60 * 1000 * now.getDay()));
|
||
|
starttime = new Date(thisTimeLastSunday.getFullYear(),
|
||
|
thisTimeLastSunday.getMonth(),
|
||
|
thisTimeLastSunday.getDate(), 0, 0, 0);
|
||
|
endtime = new Date(thisTimeSunday.getFullYear(),
|
||
|
thisTimeSunday.getMonth(),
|
||
|
thisTimeSunday.getDate(), 0, 0, 0);
|
||
|
break;
|
||
|
case "thismonth":
|
||
|
starttime = new Date(now.getFullYear(), now.getMonth(),
|
||
|
1, 0, 0, 0);
|
||
|
endtime = new Date(now);
|
||
|
break;
|
||
|
case "last31days":
|
||
|
// This is a change from the legacy trends in that
|
||
|
// it accounts for DST changes. The legacy trends
|
||
|
// set the start time to be a months's worth of
|
||
|
// seconds (31*24*60*60) before now.
|
||
|
var daysAgo31 = new Date(now.getTime() -
|
||
|
(31 * 24 * 60 * 60 * 1000));
|
||
|
starttime = new Date(daysAgo31.getFullYear(),
|
||
|
daysAgo31.getMonth(), daysAgo31.getDate(),
|
||
|
now.getHours(), now.getMinutes(),
|
||
|
now.getSeconds());
|
||
|
endtime = new Date(now);
|
||
|
break;
|
||
|
case "lastmonth":
|
||
|
endtime = new Date(now.getFullYear(), now.getMonth(),
|
||
|
1, 0, 0, 0);
|
||
|
var lastMonthEnd = new Date(endtime.getTime() - 1);
|
||
|
starttime = new Date(lastMonthEnd.getFullYear(),
|
||
|
lastMonthEnd.getMonth(), 1, 0, 0, 0);
|
||
|
break;
|
||
|
case "thisyear":
|
||
|
starttime = new Date(now.getFullYear(), 0, 1, 0, 0, 0);
|
||
|
endtime = new Date(now);
|
||
|
break;
|
||
|
case "lastyear":
|
||
|
starttime = new Date(now.getFullYear() - 1,
|
||
|
0, 1, 0, 0, 0);
|
||
|
endtime = new Date(now.getFullYear(), 0, 1, 0, 0, 0);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
return {start: starttime, end: endtime};
|
||
|
}
|
||
|
};
|
||
|
});
|