diff -ur zabbix-1.4.1-orig/frontends/php/chart_sla.php zabbix-1.4.1/frontends/php/chart_sla.php
--- zabbix-1.4.1-orig/frontends/php/chart_sla.php 2007-06-29 22:50:30.000000000 +0200
+++ zabbix-1.4.1/frontends/php/chart_sla.php 2007-08-18 21:24:15.000000000 +0200
@@ -32,7 +32,9 @@
array(T_ZBX_INT, O_MAND,P_SYS, DB_ID, null)
+ "serviceid"=> array(T_ZBX_INT, O_MAND,P_SYS, DB_ID, null),
+ "period_start"=> array(T_ZBX_STR, O_OPT,null, null,null),
+ "period_end"=> array(T_ZBX_STR, O_OPT,null, null,null)
);
check_fields($fields);
@@ -70,8 +72,9 @@
ImageFilledRectangle($im,0,0,$sizeX,$sizeY,ImageColorAllocate($im,120,200,120));
$now=time(NULL);
- $period_start=$now-7*24*3600;
- $period_end=$now;
+ $period_start = get_request("period_start", $now-7*24*3600);
+ $period_end = get_request("period_end", $now);
+
$stat=calculate_service_availability($_REQUEST["serviceid"],$period_start,$period_end);
$problem=$stat["problem"];
diff -ur zabbix-1.4.1-orig/frontends/php/include/locales/de_de.inc.php zabbix-1.4.1/frontends/php/include/locales/de_de.inc.php
--- zabbix-1.4.1-orig/frontends/php/include/locales/de_de.inc.php 2007-06-29 22:50:27.000000000 +0200
+++ zabbix-1.4.1/frontends/php/include/locales/de_de.inc.php 2007-08-18 21:24:15.000000000 +0200
@@ -622,7 +622,14 @@
"S_IT_SERVICES_BIG"=> "IT DIENSTE",
"S_SERVICE"=> "Dienst",
"S_REASON"=> "Grund",
- "S_SLA_LAST_7_DAYS"=> "SLA (letzte 7 Tage)",
+ 'S_SLA_TODAY'=> 'Heute',
+ 'S_SLA_THIS_WEEK'=> 'diese Woche',
+ 'S_SLA_THIS_MONTH'=> 'dieser Monat',
+ 'S_SLA_THIS_YEAR'=> 'dieses Jahr',
+ 'S_SLA_LAST_24_HOURS'=> 'letzten 24 Stunden',
+ 'S_SLA_LAST_7_DAYS'=> 'letzten 7 Tage',
+ 'S_SLA_LAST_30_DAYS'=> 'letzten 30 Tage',
+ 'S_SLA_LAST_365_DAYS'=> 'letzten 365 Tage',
"S_PLANNED_CURRENT_SLA"=> "geplanter/aktueller SLA",
"S_TRIGGER_BIG"=> "AUSLÖSER",
diff -ur zabbix-1.4.1-orig/frontends/php/include/locales/en_gb.inc.php zabbix-1.4.1/frontends/php/include/locales/en_gb.inc.php
--- zabbix-1.4.1-orig/frontends/php/include/locales/en_gb.inc.php 2007-06-29 22:50:27.000000000 +0200
+++ zabbix-1.4.1/frontends/php/include/locales/en_gb.inc.php 2007-08-18 21:24:15.000000000 +0200
@@ -1110,7 +1110,14 @@
'S_SERVICE'=> 'Service',
'S_SERVICES'=> 'Services',
'S_REASON'=> 'Reason',
- 'S_SLA_LAST_7_DAYS'=> 'SLA (last 7 days)',
+ 'S_SLA_TODAY'=> 'today',
+ 'S_SLA_THIS_WEEK'=> 'this week',
+ 'S_SLA_THIS_MONTH'=> 'this month',
+ 'S_SLA_THIS_YEAR'=> 'this year',
+ 'S_SLA_LAST_24_HOURS'=> 'last 24 hours',
+ 'S_SLA_LAST_7_DAYS'=> 'last 7 days',
+ 'S_SLA_LAST_30_DAYS'=> 'last 30 days',
+ 'S_SLA_LAST_365_DAYS'=> 'last 365 days',
'S_PLANNED_CURRENT_SLA'=> 'Planned/current SLA',
'S_TRIGGER_BIG'=> 'TRIGGER',
diff -ur zabbix-1.4.1-orig/frontends/php/include/services.inc.php zabbix-1.4.1/frontends/php/include/services.inc.php
--- zabbix-1.4.1-orig/frontends/php/include/services.inc.php 2007-06-29 22:50:28.000000000 +0200
+++ zabbix-1.4.1/frontends/php/include/services.inc.php 2007-08-18 21:24:15.000000000 +0200
@@ -275,7 +275,7 @@
)
{
/* calculate period from '-1 week' to know period name for $period_start */
- for($curr = ($period_start - (7*24*36000)); $curr<=$period_end; $curr += 6*3600)
+ for($curr = ($period_start - (7*24*3600)); $curr<=$period_end; $curr += 6*3600)
{
$curr_date = getdate($curr);
$from_date = getdate($ts_from);
diff -ur zabbix-1.4.1-orig/frontends/php/srv_status.php zabbix-1.4.1/frontends/php/srv_status.php
--- zabbix-1.4.1-orig/frontends/php/srv_status.php 2007-06-29 22:50:30.000000000 +0200
+++ zabbix-1.4.1/frontends/php/srv_status.php 2007-08-18 21:24:15.000000000 +0200
@@ -34,10 +34,13 @@
// VAR TYPE OPTIONAL FLAGS VALIDATION EXCEPTION
$fields=array(
"serviceid"=> array(T_ZBX_INT, O_OPT, P_SYS|P_NZERO, DB_ID, NULL),
- "showgraph"=> array(T_ZBX_INT, O_OPT, P_SYS, IN("1")."isset({serviceid})",NULL)
+ "showgraph"=> array(T_ZBX_INT, O_OPT, P_SYS, IN("1")."isset({serviceid})",NULL),
+ "period"=> array(T_ZBX_STR, O_OPT, null, IN('"today","thisweek","thismonth","thisyear","last24h","last7days","last30days","last365days"'), NULL)
);
check_fields($fields);
+
+ $period = get_request("period", "thismonth");
?>
AddItem("today",S_SLA_TODAY);
+ $cmbPeriod->AddItem("thisweek",S_SLA_THIS_WEEK);
+ $cmbPeriod->AddItem("thismonth",S_SLA_THIS_MONTH);
+ $cmbPeriod->AddItem("thisyear",S_SLA_THIS_YEAR);
+ $cmbPeriod->AddItem("last24h",S_SLA_LAST_24_HOURS);
+ $cmbPeriod->AddItem("last7days",S_SLA_LAST_7_DAYS);
+ $cmbPeriod->AddItem("last30days",S_SLA_LAST_30_DAYS);
+ $cmbPeriod->AddItem("last365days",S_SLA_LAST_365_DAYS);
+ $form->AddItem(array(SPACE.S_PERIOD.SPACE, $cmbPeriod));
+
+ show_table_header(S_IT_SERVICES_BIG, $form);
if(isset($service)&&isset($_REQUEST["showgraph"])){
$table = new CTable(null,'chart');
@@ -127,12 +143,51 @@
}
if($row["showsla"]==1){
- $row['sla'] = new CLink(new CImg("chart_sla.php?serviceid=".$row["serviceid"]),
- "report3.php?serviceid=".$row["serviceid"]."&year=".date("Y"));
$now = time(NULL);
- $period_start = $now-7*24*3600;
+ switch($period)
+ {
+ case "today":
+ $period_start = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
+ $sla_description = S_SLA_TODAY;
+ break;
+ case "thisweek":
+ // TODO: this is wrong if the week started last month or last year
+ $period_start = mktime(0, 0, 0, date("m"), date("d") - date("w"), date("Y"));
+ $sla_description = S_SLA_THIS_WEEK;
+ break;
+ case "thismonth":
+ $period_start = mktime(0, 0, 0, date("m"), 1, date("Y"));
+ $sla_description = S_SLA_THIS_MONTH;
+ break;
+ case "thisyear":
+ $period_start = mktime(0, 0, 0, 1, 1, date("Y"));
+ $sla_description = S_SLA_THIS_YEAR;
+ break;
+ case "last24h":
+ $period_start = $now-24*3600;
+ $sla_description = S_SLA_LAST_24_HOURS;
+ break;
+ case "last7days":
+ $period_start = $now-7*24*3600;
+ $sla_description = S_SLA_LAST_7_DAYS;
+ break;
+ case "last30days":
+ $period_start = $now-30*24*3600;
+ $sla_description = S_SLA_LAST_30_DAYS;
+ break;
+ case "last365days":
+ $period_start = $now-365*24*3600;
+ $sla_description = S_SLA_LAST_365_DAYS;
+ break;
+ default:
+ echo "uhm";
+ }
$period_end = $now;
+
+ $row['sla'] = new CLink(new CImg("chart_sla.php?serviceid=".$row["serviceid"]
+ ."&period_start=".$period_start."&period_end=".$period_end),
+ "report3.php?serviceid=".$row["serviceid"]."&year=".date("Y"));
$stat = calculate_service_availability($row["serviceid"],$period_start,$period_end);
@@ -174,8 +229,8 @@
$tree = new CTree($treeServ,array('caption' => ''.S_SERVICE.'',
'status' => ''.S_STATUS.'',
'reason' => ''.S_REASON.'',
- 'sla' => ''.S_SLA_LAST_7_DAYS.'',
- 'sla2' => ''.nbsp(S_PLANNED_CURRENT_SLA).'',
+ 'sla' => 'SLA ('.$sla_description.')',
+ 'sla2' => ''.nbsp("SLA (".S_PLANNED_CURRENT_SLA.")").'',
'graph' => ''.S_GRAPH.''));
if($tree){