---
src/app/controllers/dashboard_controller.rb | 12 +++
src/app/views/dashboard/summary.haml | 143 ++++++++++++++++-----------
src/public/stylesheets/components.css | 77 ++++++++++++++-
3 files changed, 173 insertions(+), 59 deletions(-)
diff --git a/src/app/controllers/dashboard_controller.rb
b/src/app/controllers/dashboard_controller.rb
index 716d7bb..6f02c4e 100644
--- a/src/app/controllers/dashboard_controller.rb
+++ b/src/app/controllers/dashboard_controller.rb
@@ -40,8 +40,20 @@ class DashboardController < ApplicationController
end
end
+ def account_quota_graph(opts = {})
+ entity = nil
+ params[:account] = CloudAccount.find(params[:id])
+ graph = GraphService.dashboard_quota(current_user,
params)[params[:account]][Graph::QUOTA_INSTANCES_IN_USE]
+ respond_to do |format|
+ format.svg { render :xml => graph.svg}
+ end
+ end
+
def index
+ # FIXME filter to just those that the user has access to
@providers = Provider.find(:all)
+ @cloud_accounts = CloudAccount.find(:all)
+ @pools = Pool.find(:all)
# FIXME remove general role based permission check, replace w/
# more granular / per-permission-object permission checks on the
diff --git a/src/app/views/dashboard/summary.haml
b/src/app/views/dashboard/summary.haml
index a0687a9..b556f7d 100644
--- a/src/app/views/dashboard/summary.haml
+++ b/src/app/views/dashboard/summary.haml
@@ -26,67 +26,96 @@
%input{ :id => "hide_getting_started", :type => "checkbox" }
Thanks, don't show this again
-#actions_dashboard_section
- %h2
- Actions
- - if @is_admin
- %a{:href => url_for(:controller => "cloud_accounts", :action => "new")}
- Add a Provider Account
- %a{:href => url_for(:controller => "provider", :action => "new")}
- Add a Provider
- %a{:href => url_for(:controller => "image_descriptor", :action => "new")}
- Create a Template
- %a{:href => url_for(:controller => "users", :action => "new")}
- Create a User
- %a{:href => url_for(:controller => "instance", :action => "index")}
- View Instances
- - else
- %a{:href => url_for(:controller => "", :action => "")}
- Launch Instances
- %a{:href => url_for(:controller => "", :action => "")}
- Enter a help ticket
+.dashboard_column
+ #actions_dashboard_section
+ %h2
+ Actions
+ - if @is_admin
+ %a{:href => url_for(:controller => "cloud_accounts", :action => "new")}
+ Add a Provider Account
+ %a{:href => url_for(:controller => "provider", :action => "new")}
+ Add a Provider
+ %a{:href => url_for(:controller => "", :action => "")}
+ Create a Template
+ %a{:href => url_for(:controller => "users", :action => "new")}
+ Create a User
+ - else
+ %a{:href => url_for(:controller => "", :action => "")}
+ Launch Instances
+ %a{:href => url_for(:controller => "", :action => "")}
+ Enter a help ticket
-#key_indicators_dashboard_section
- %h2
- Key indicators
- %ul
- %li
- Providers
- .count= @providers.size
- %li
- Accounts
- .count= @cloud_accounts.size
- %li
- Pools
- .count= @pools.size
- %li
- Running instances
- .count= @stats[:running_instances]
- %li
- Stopped instances
- .count= @stats[:stopped_instances]
- %li
- Total instances
- .count= @stats[:total_instances]
- .instance_graph #instance_graph
+ #service_quality_dashboard_section
+ - if @is_admin
+ %h2
+ Provider Service Quality
+ .dashboard_section_summary
+ <img src="images/dashboard_summary_next.png" /><img
src="images/dashboard_summary_prev.png" />
+ %p
+ Average time to submit tasks to provider, 24 hours
+ <div style="clear: both;" />
+ - @providers.each do |provider|
+ .provider_service_quality_graph
+ = "<object data='" + url_for(:action => :provider_qos_graph, :id =>
provider.id, :width => 100, :height => 50) + "' type='image/svg+xml' />"
+ .provider_service_quality_graph_summary
+ = provider.name
+ <!-- FIXME 'good/poor/average service... -->
+ <div style="clear: both;" />
+ - else
+ %h2
+ Service Quality
-#service_quality_dashboard_section
- - if @is_admin
+ #key_indicators_dashboard_section
%h2
- Provider Service Quality
- .dashboard_section_summary
- Average time to submit tasks to provider, 24 hours
- <img src="images/dashboard_summary_prev.png" /><img
src="images/dashboard_summary_next.png" />
- - @providers.each do |provider|
- .provider_service_quality_graph
- = "<object data='" + url_for(:action => :provider_qos_graph, :id =>
provider.id, :width => 100, :height => 50) + "' type='image/svg+xml' />"
- .provider_service_quality_graph_summary
- = provider.name
- <!-- FIXME 'good/poor/average service... -->
- <div style="clear: both;" />
- - else
+ Key indicators
+ %ul
+ %li
+ Providers
+ .count= @providers.size
+ %li
+ Accounts
+ .count= @cloud_accounts.size
+ %li
+ Pools
+ .count= @pools.size
+ %li
+ Running instances
+ .count= @stats[:running_instances]
+ %li
+ Stopped instances
+ .count= @stats[:stopped_instances]
+ %li
+ Total instances
+ .count= @stats[:total_instances]
+ .instance_graph #instance_graph
+
+.dashboard_column
+ #quota_usage_dashboard_section
%h2
- Service Quality
+ Quota Usage
+ .dashboard_section_summary
+ Instance utilization by account
+ - @cloud_accounts.each do |account|
+ .account_quota_usage_graph_summary
+ = "Account " + account.username
+ .account_quota_usage_history_graph
+ <!-- FIXME include graph -->
+ .account_quota_usage_current_graph
+ = "<object data='" + url_for(:action => :account_quota_graph, :id =>
account.id, :width => 100, :height => 50) + "' type='image/svg+xml' />"
+ <div style="clear: both;" />
+ .dashboard_section_summary
+ <img src="images/dashboard_summary_next.png" /><img
src="images/dashboard_summary_prev.png" />
+ %p
+ Quota usage by pool
+ <div style="clear: both;" />
+ - @pools.each do |pool|
+ .pool_quota_usage_summary
+ = pool.name
+ .pool_quota_usage_limit
+ <!-- FIXME 'quota limit met'... -->
+ .pool_quota_usage_instances
+ <!-- FIXME 'running instances'... -->
+ <div style="clear: both;" />
:javascript
$("#hide_getting_started").click(function(){
diff --git a/src/public/stylesheets/components.css
b/src/public/stylesheets/components.css
index 6ba5969..eec50c0 100644
--- a/src/public/stylesheets/components.css
+++ b/src/public/stylesheets/components.css
@@ -74,20 +74,32 @@ ul.nav li.selected {
}
/* dashboard style */
+.dashboard_column{
+ float: left;
+ width: 47%;
+}
+
.dashboard_section_summary {
background: #F2F2F2;
font-size: 0.8em;
font-weight: bolder;
- margin: 0 15px 10px 0;
+ margin: 10px 15px 10px 0;
padding: 5px 0px 5px 5px;
}
+.dashboard_section_summary p {
+ display: inline;
+ float: left;
+ margin: 3px 0 3px 0;
+}
+
.dashboard_section_summary img:first-child {
- padding-left: 40px;
+ padding-right: 5px;
}
.dashboard_section_summary img {
vertical-align: middle;
+ float: right;
}
#getting_started_dashboard_section {
@@ -210,6 +222,67 @@ ul.nav li.selected {
float: left;
}
+#quota_usage_dashboard_section {
+ width: 390px;
+ border: 1px solid black;
+ padding: 5px 0 5px 15px;
+ margin: 10px 0px 10px 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+}
+
+.account_quota_usage_graph_summary {
+ font-size: 0.8em;
+ padding-left: 15px;
+ display: inline;
+ float: left;
+}
+
+.account_quota_usage_history_graph {
+ display: inline;
+ float: left;
+ margin-left: 10px;
+ border: 1px solid black;
+ width: 120px;
+ height: 20px;
+}
+
+.account_quota_usage_current_graph {
+ display: inline;
+ float: left;
+ margin-left: 10px;
+ border: 1px solid black;
+ width: 140px;
+ height: 20px;
+}
+
+.pool_quota_usage_summary {
+ display: inline;
+ float: left;
+ padding-left: 15px;
+ width: 15%;
+}
+
+.pool_quota_usage_limit {
+ display: inline;
+ float: left;
+ width: 33%;
+ height: 25px;
+ border: 1px solid black;
+ margin-left: 17px;
+}
+
+.pool_quota_usage_instances {
+ display: inline;
+ float: left;
+ width: 33%;
+ height: 25px;
+ border: 1px solid black;
+ margin-left: 17px;
+ margin-bottom: 15px;
+}
+
+
#image_descriptor_form {
width: 800px;
margin: 20px;
--
1.6.2.5
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel