Add Admin Summary page with statistics and alerts

This commit is contained in:
2011-12-23 01:35:38 +00:00
parent 79a2886e56
commit 803cbb6a3f
3 changed files with 102 additions and 9 deletions

View File

@@ -13,6 +13,8 @@ if ( ! $auth->isAuthenticated() || ! $auth->hasPermission(StatusBoard_Permission
$activity = null; $activity = null;
$success = true; $success = true;
$destination = $request->get('tab', 'summary');
if ($request->exists('do')) { if ($request->exists('do')) {
$activity = $request->get('do'); $activity = $request->get('do');
switch ($activity) { switch ($activity) {
@@ -89,14 +91,28 @@ if ($request->exists('do')) {
} }
} }
$destination = $request->get('tab', 'admin');
$destination = "admin/tab/{$destination}/"; $destination = "admin/tab/{$destination}/";
$session->set('messages', $messages); $session->set('messages', $messages);
StatusBoard_Page::redirect($destination); StatusBoard_Page::redirect($destination);
} }
$this->smarty->assign('tab', $request->get('tab', 'admin')); $this->smarty->assign('tab', $destination);
if ($destination == 'summary') {
$this->smarty->assign('service_count', StatusBoard_Service::count());
$this->smarty->assign('site_count', StatusBoard_Site::count());
$this->smarty->assign('incident_counts', StatusBoard_Incident::counts());
$incidents_near_deadline = StatusBoard_Incident::allNearDeadline();
usort($incidents_near_deadline, array('StatusBoard_Incident', 'compareEstimatedEndTimes'));
$incidents_past_deadline = StatusBoard_Incident::allPastDeadline();
usort($incidents_past_deadline, array('StatusBoard_Incident', 'compareEstimatedEndTimes'));
$this->smarty->assign('incidents_near_deadline', $incidents_near_deadline);
$this->smarty->assign('incidents_past_deadline', $incidents_past_deadline);
}
$services = StatusBoard_Service::all(); $services = StatusBoard_Service::all();
$this->smarty->assign('services', $services); $this->smarty->assign('services', $services);

View File

@@ -1,17 +1,94 @@
<div class="page-header"><!-- page-header (Header containing navigation menu and title) --> <div class="page-header"><!-- page-header (Header containing navigation menu and title) -->
<h1>Admin Control Panel</h1> <h1>Admin Control Panel</h1>
<ul class="tabs" data-tabs="tabs"> <ul class="tabs" data-tabs="tabs">
<li {if $tab == 'admin'}class="active"{/if}><a href="#tab_admin">Admin</a></li> <li {if $tab == 'summary'}class="active"{/if}><a href="#tab_summary">Summary</a></li>
<li {if $tab == 'services'}class="active"{/if}><a href="#tab_services">Services</a></li> <li {if $tab == 'services'}class="active"{/if}><a href="#tab_services">Services</a></li>
<li {if $tab == 'settings'}class="active"{/if}><a href="#tab_settings">Settings</a></li> <li {if $tab == 'settings'}class="active"{/if}><a href="#tab_settings">Settings</a></li>
</ul> </ul>
</div><!-- /page-header --> </div><!-- /page-header -->
<div id="my-tab-content" class="tab-content"><!--tab-content(container for all main div content on page --> <div id="my-tab-content" class="tab-content"><!--tab-content(container for all main div content on page -->
<div class="tab-pane {if $tab == 'admin'}active{/if}" id="tab_admin"><!--Toggled Div to hide admin content --> <div class="tab-pane {if $tab == 'summary'}active{/if}" id="tab_summary"><!--Toggled Div to hide admin content -->
<div class="span11"><!--Admin home content container --> <div class="span16"><!--Admin summary content container -->
<p>TODO</p> <div class="row">
</div><!--/Admin home content container --> <div class="span4 column">
<h3>Alerts</h3>
</div>
<div class="span11 column">
<p>
There {StatusBoard_Formatting::pluralise(count($incidents_near_deadline), 'is', 'are')} {$incidents_near_deadline|count} {StatusBoard_Formatting::pluralise(count($incidents_near_deadline), 'incident', 'incidents')}
within 1 hour of the current estimated end time.
</p>
{if $incidents_near_deadline}
<ol>
{foreach from=$incidents_near_deadline item=incident}
<li>{$incident->reference|escape:html}</li>
{/foreach}
</ol>
{/if}
<p>
There {StatusBoard_Formatting::pluralise(count($incidents_near_deadline), 'is', 'are')} {$incidents_past_deadline|count} {StatusBoard_Formatting::pluralise(count($incidents_past_deadline), 'incident', 'incidents')}
already past the set estimated end time.
</p>
{if $incidents_past_deadline}
<ol>
{foreach from=$incidents_past_deadline item=incident}
<li>{$incident->reference|escape:html}</li>
{/foreach}
</ol>
{/if}
</div>
</div>
<div class="row">
<div class="span4 column">
<h3>Statistics</h3>
</div>
<div class="span11 column">
<table>
<thead>
<tr>
<th>Statistic</th>
<th>Count</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Services</strong></td>
<td>{$service_count}</td>
</tr>
<tr>
<td><strong>Sites</strong></td>
<td>{$site_count}</td>
</tr>
<tr>
<td><strong>Incidents</strong></td>
<td>{array_sum(array_values($incident_counts))}</td>
</tr>
<tr>
<td>Major</td>
<td>{$incident_counts[StatusBoard_Status::STATUS_Major]}</td>
</tr>
<tr>
<td>Significant</td>
<td>{$incident_counts[StatusBoard_Status::STATUS_Significant]}</td>
</tr>
<tr>
<td>Minor</td>
<td>{$incident_counts[StatusBoard_Status::STATUS_Minor]}</td>
</tr>
<tr>
<td>Planned Maintenance</td>
<td>{$incident_counts[StatusBoard_Status::STATUS_Maintenance]}</td>
</tr>
<tr>
<td>Resolved</td>
<td>{$incident_counts[StatusBoard_Status::STATUS_Resolved]}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div><!--/Admin summary content container -->
</div><!--/Toggled Div to hide admin content --> </div><!--/Toggled Div to hide admin content -->
<div class="tab-pane {if $tab == 'services'}active{/if}" id="tab_services"><!--Toggled Div to hide services content --> <div class="tab-pane {if $tab == 'services'}active{/if}" id="tab_services"><!--Toggled Div to hide services content -->
@@ -129,7 +206,7 @@
</div><!-- /clearfix --> </div><!-- /clearfix -->
<div class="clearfix"> <div class="clearfix">
<label for="admin_quicksettings_templates_tmppath">Cache Base Directory</label> <label for="admin_quicksettings_templates_tmppath">Templates Temporary Path</label>
<div class="text"> <div class="text">
<input class="xlarge span5" id="admin_quicksettings_templates_tmppath" name="templates_tmp_path" type="text" value="{$templates_tmppath|escape:html}" /> <input class="xlarge span5" id="admin_quicksettings_templates_tmppath" name="templates_tmp_path" type="text" value="{$templates_tmppath|escape:html}" />
</div><!-- /text --> </div><!-- /text -->

View File

@@ -10,7 +10,7 @@
<li class="dropdown {if $requested_page == admin}active{/if}" data-dropdown="dropdown"> <li class="dropdown {if $requested_page == admin}active{/if}" data-dropdown="dropdown">
<a href="{$base_uri}admin/" class="dropdown-toggle" title="Admin">Admin</a> <a href="{$base_uri}admin/" class="dropdown-toggle" title="Admin">Admin</a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="{$base_uri}admin/tab/admin/" title="Admin">Admin</a></li> <li><a href="{$base_uri}admin/tab/summary/" title="Summary">Summary</a></li>
<li><a href="{$base_uri}admin/tab/services/" title="Manage Services">Services</a></li> <li><a href="{$base_uri}admin/tab/services/" title="Manage Services">Services</a></li>
<li><a href="{$base_uri}admin/tab/settings/" title="Manage Settings">Settings</a></li> <li><a href="{$base_uri}admin/tab/settings/" title="Manage Settings">Settings</a></li>
</ul> </ul>