Commit 65f1356b142ef08b108199c6c06600bdf3a2775d

Authored by Paulo Meireles
Committed by Alessandro Palmeira
2 parents 79677043 1f929062

Merge branch 'metrics_in_configuration' into merging_configuration

Conflicts:
	plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb
	plugins/mezuro/public/javascripts/project_content.js
plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb
... ... @@ -35,4 +35,64 @@ class MezuroPluginProfileController < ProfileController
35 35 render :partial =>'content_viewer/source_tree', :locals => { :source_tree => source_tree, :project_name => content.project.name}
36 36 end
37 37  
  38 + def choose_base_tool
  39 + @configuration_name = params[:configuration_name]
  40 + @tool_names = Kalibro::Client::BaseToolClient.new
  41 + end
  42 +
  43 + def choose_metric
  44 + @configuration_name = params[:configuration_name]
  45 + @collector_name = params[:collector_name]
  46 +
  47 + @collector = Kalibro::Client::BaseToolClient.new.base_tool(@collector_name)
  48 + end
  49 +
  50 + def new_metric_configuration
  51 + @metric_name = params[:metric_name]
  52 + @configuration_name = params[:configuration_name]
  53 + @collector_name = params[:collector_name]
  54 + end
  55 +
  56 + def edit_metric_configuration
  57 + @metric_configuration_code = params[:metric_code]
  58 + @configuration_name = params[:configuration_name]
  59 +
  60 + @metric_configuration = Kalibro::Entities::MetricConfiguration.new
  61 + @metric_configuration.code = @metric_configuration_code
  62 + @metric_configuration.aggregation_form = "MEDIAN"
  63 + @metric_configuration.weight = "1"
  64 + @metric_configuration.metric = Kalibro::Entities::NativeMetric.new
  65 + @metric_configuration.metric.name = "Nome falso"
  66 + @metric_configuration.metric.origin = "Origem Falsa"
  67 + range = Kalibro::Entities::Range.new
  68 + range.beginning = "0"
  69 + range.end = "100"
  70 + range.label = "fake label"
  71 + range.grade = "100"
  72 + range.color = "FFFFFF"
  73 + @metric_configuration.range = [range]
  74 + end
  75 +
  76 + def create_metric_configuration
  77 + @configuration_name = params[:configuration_name]
  78 + redirect_to "/#{profile.identifier}/#{@configuration_name.downcase.gsub(/\s/, '-')}"
  79 + end
  80 +
  81 + def update_metric_configuration
  82 + @configuration_name = params[:configuration_name]
  83 + redirect_to "/#{profile.identifier}/#{@configuration_name.downcase.gsub(/\s/, '-')}"
  84 + end
  85 +
  86 + def new_range
  87 + end
  88 +
  89 + def create_range
  90 + @range = Kalibro::Entities::Range.new
  91 + @range.beginning = params[:range][:beginning]
  92 + @range.end = params[:range][:end]
  93 + @range.label = params[:range][:label]
  94 + @range.grade = params[:range][:grade]
  95 + @range.color = params[:range][:color]
  96 + @range.comments = params[:range][:comments]
  97 + end
38 98 end
... ...
plugins/mezuro/lib/kalibro/client/base_tool_client.rb
... ... @@ -13,4 +13,4 @@ class Kalibro::Client::BaseToolClient
13 13 Kalibro::Entities::BaseTool.from_hash(hash)
14 14 end
15 15  
16   -end
17 16 \ No newline at end of file
  17 +end
... ...
plugins/mezuro/lib/kalibro/entities/configuration.rb
... ... @@ -14,4 +14,11 @@ class Kalibro::Entities::Configuration < Kalibro::Entities::Entity
14 14 @metric_configuration = metric_configurations
15 15 end
16 16  
  17 + def create_metric_configurations(metrics)
  18 + @metric_configuration = []
  19 + metrics.each do |metric|
  20 + @metric_configuration << create_metric_configuration(metric)
  21 + end
  22 + end
  23 +
17 24 end
... ...
plugins/mezuro/lib/kalibro/entities/metric.rb
... ... @@ -2,4 +2,4 @@ class Kalibro::Entities::Metric &lt; Kalibro::Entities::Entity
2 2  
3 3 attr_accessor :name, :scope, :description
4 4  
5   -end
6 5 \ No newline at end of file
  6 +end
... ...
plugins/mezuro/lib/kalibro/entities/metric_configuration.rb
... ... @@ -27,4 +27,4 @@ class Kalibro::Entities::MetricConfiguration &lt; Kalibro::Entities::Entity
27 27 @range = ranges
28 28 end
29 29  
30   -end
31 30 \ No newline at end of file
  31 +end
... ...
plugins/mezuro/lib/mezuro_plugin/configuration_content.rb
... ... @@ -8,7 +8,7 @@ class MezuroPlugin::ConfigurationContent &lt; Article
8 8 'Sets of thresholds to interpret metrics'
9 9 end
10 10  
11   - settings_items :description
  11 + settings_items :description, :metrics
12 12  
13 13 include ActionView::Helpers::TagHelper
14 14 def to_html(options = {})
... ...
plugins/mezuro/lib/mezuro_plugin/metric_configuration_content.rb 0 → 100644
... ... @@ -0,0 +1,37 @@
  1 +class MezuroPlugin::MetricConfigurationContent < Article
  2 +
  3 + def self.short_description
  4 + 'Kalibro Configurated Metric'
  5 + end
  6 +
  7 + def self.description
  8 + 'Sets of thresholds to interpret a metric'
  9 + end
  10 +
  11 + settings_items :description, :code, :weight, :scope, :aggregation_form, :range
  12 +
  13 + include ActionView::Helpers::TagHelper
  14 + def to_html(options = {})
  15 + lambda do
  16 + render :file => 'content_viewer/show_configuration.rhtml'
  17 + end
  18 + end
  19 +
  20 + def metric_configuration
  21 + Kalibro::Client::MetricConfigurationClient.metric_configuration(name)
  22 + end
  23 +
  24 + after_save :send_metric_configuration_to_service
  25 + after_destroy :remove_metric_configuration_from_service
  26 +
  27 + private
  28 +
  29 + def send_metric_configuration_to_service
  30 + Kalibro::Client::MetricConfigurationClient.save(self)
  31 + end
  32 +
  33 + def remove_metric_configuration_from_service
  34 + Kalibro::Client::MetricConfigurationClient.remove(name)
  35 + end
  36 +
  37 +end
... ...
plugins/mezuro/public/javascripts/project_content.js
... ... @@ -79,4 +79,10 @@ function showLoadingProcess(firstLoad){
79 79  
80 80 showProjectTree("<img src='/images/loading-small.gif'/>");
81 81 showModuleResult("<img src='/images/loading-small.gif'/>");
82   -}
  82 +}
  83 +
  84 +function sourceNodeToggle(id){
  85 + var suffixes = ['_hidden', '_plus', '_minus'];
  86 + for (var i in suffixes)
  87 + jQuery('#' + id + suffixes[i]).toggle();
  88 +}
... ...
plugins/mezuro/test/unit/kalibro/entities/configuration_test.rb
... ... @@ -17,4 +17,13 @@ class ConfigurationTest &lt; ActiveSupport::TestCase
17 17 assert_equal @hash, @configuration.to_hash
18 18 end
19 19  
20   -end
21 20 \ No newline at end of file
  21 + should 'create metric configuration' do
  22 + configuration = Kalibro::Entities::Configuration.new
  23 + configuration.create_metric_configurations(["Analizo:Metric Name"])
  24 + metric_configuration = configuration.metric_configurations[0]
  25 + assert_equal metric_configuration.code, "Metric Name"
  26 + assert_equal metric_configuration.metric.name, "Metric Name"
  27 + assert_equal metric_configuration.metric.origin, "Analizo"
  28 + end
  29 +
  30 +end
... ...
plugins/mezuro/test/unit/mezuro_plugin/configuration_content_test.rb
... ... @@ -42,7 +42,7 @@ class ConfigurationContentTest &lt; ActiveSupport::TestCase
42 42 @content.send :send_configuration_to_service
43 43 end
44 44  
45   - should 'remove project from service' do
  45 + should 'remove configuration from service' do
46 46 Kalibro::Client::ConfigurationClient.expects(:remove).with(@content.name)
47 47 @content.send :remove_configuration_from_service
48 48 end
... ...
plugins/mezuro/views/cms/mezuro_plugin/_configuration_content.html.erb
1 1 <h1> <%= _(MezuroPlugin::ConfigurationContent.short_description) %> </h1>
2 2  
3 3 <%
4   - begin
5   - @configuration = @article.title.nil? ? nil : Kalibro::Client::ConfigurationClient.new.configuration(@article.title)
6   - rescue
7   - @configuration = nil
8   - end
  4 +begin
  5 + @configuration = @article.title.nil? ? nil : Kalibro::Client::ConfigurationClient.new.configuration(@article.title)
  6 +rescue
  7 + @configuration = nil
  8 +end
9 9 %>
10 10  
11 11 <%= error_messages_for 'kalibro_configuration' %>
... ...
plugins/mezuro/views/content_viewer/show_configuration.rhtml
1   -<% @configuration = @page.configuration %>
  1 +<% @configuration_content = @page
  2 +@configuration = Kalibro::Entities::Configuration.new
  3 +@configuration.name = @configuration_content.name
  4 +@configuration.description = @configuration_content.description
  5 +@fake_metric_configuration = Kalibro::Entities::MetricConfiguration.new
  6 +@fake_metric_configuration.metric = {:name => "fake_name", :origin => "Analizo"}
  7 +@fake_metric_configuration.code = "fake_code"
  8 +@configuration.metric_configurations = [@fake_metric_configuration] %>
2 9  
3 10 <table id="project_info">
4 11 <tr>
... ... @@ -10,3 +17,26 @@
10 17 <td><%= @configuration.description %></td>
11 18 </tr>
12 19 </table>
  20 +
  21 +
  22 +<br/>
  23 +
  24 +<%= link_to "#{image_tag ('/plugins/mezuro/images/plus.png')}Add Metric", :controller => "mezuro_plugin_profile", :action => "choose_base_tool", :params =>
  25 +{:configuration_name => @configuration.name} %><br/>
  26 +
  27 +<table>
  28 +<% @configuration.metric_configurations.each do |metric_configuration| %>
  29 + <tr class="titles">
  30 + <td><h5>Metric Name</h5></td>
  31 + <td><h5>Collector Name</h5></td>
  32 + <td><h5>Metric Code</h5></td>
  33 + </tr>
  34 + <tr class="metric">
  35 + <td><%= metric_configuration.metric.name %></td>
  36 + <td><%= metric_configuration.metric.origin %></td>
  37 + <td><%= metric_configuration.code %></td>
  38 + <td><%= link_to "Edit", :controller => "mezuro_plugin_profile", :action => "edit_metric_configuration", :params =>
  39 + {:configuration_name => @configuration.name, :metric_code => metric_configuration.code} %></td>
  40 + </tr>
  41 +<% end %>
  42 +</table>
... ...
plugins/mezuro/views/mezuro_plugin_profile/_new_range.html.erb 0 → 100644
... ... @@ -0,0 +1,55 @@
  1 +<% remote_form_for :range, :url => {:action =>"create_range", :controller => "mezuro_plugin_profile"}, :method => :get do |f| %>
  2 + <%= hidden_field_tag :configuration_name, @configuration_name %>
  3 + <%= hidden_field_tag :metric_name, @metric_name %>
  4 + <table>
  5 + <tr>
  6 + <td>
  7 + <%= f.label :label, "Label:" %>
  8 + </td>
  9 + <td>
  10 + <%= f.text_field :label %>
  11 + </td>
  12 + </tr>
  13 + <tr>
  14 + <td>
  15 + <%= f.label :beginning, "Beginning:" %>
  16 + </td>
  17 + <td>
  18 + <%= f.text_field :beginning %>
  19 + </td>
  20 + </tr>
  21 + <tr>
  22 + <td>
  23 + <%= f.label :end, "End:" %>
  24 + </td>
  25 + <td>
  26 + <%= f.text_field :end %>
  27 + </td>
  28 + </tr>
  29 + <tr>
  30 + <td>
  31 + <%= f.label :grade, "Grade:" %>
  32 + </td>
  33 + <td>
  34 + <%= f.text_field :grade %>
  35 + </td>
  36 + </tr>
  37 + <tr>
  38 + <td>
  39 + <%= f.label :color, "Color:" %>
  40 + </td>
  41 + <td>
  42 + <%= f.text_field :color %>
  43 + </td>
  44 + </tr>
  45 + <tr>
  46 + <td>
  47 + <%= f.label :comments, "Comments:" %>
  48 + </td>
  49 + <td>
  50 + <%= f.text_field :comments %>
  51 + </td>
  52 + </tr>
  53 + </table>
  54 + <%= f.submit "Save Range" %>
  55 +<% end %>
... ...
plugins/mezuro/views/mezuro_plugin_profile/_range.html.erb 0 → 100644
... ... @@ -0,0 +1,15 @@
  1 +<tr>
  2 + <td>
  3 + <%=range.label%>
  4 + </td>
  5 + <td>
  6 + <%=range.beginning%>
  7 + </td>
  8 + <td>
  9 + <%=range.end%>
  10 + </td>
  11 + <td>
  12 + <%=range.grade%>
  13 + </td>
  14 + <td style="<%= range.color %>"/>
  15 +</tr>
... ...
plugins/mezuro/views/mezuro_plugin_profile/choose_base_tool.html.erb 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +<h2><%= @configuration_name%> Configuration</h2>
  2 +
  3 +<h5>Base Tools:</h5>
  4 +<table id="project_info">
  5 + <% @tool_names.base_tool_names.each do |collector_name| %>
  6 + <tr>
  7 + <td>
  8 + <%= link_to collector_name, :controller => "mezuro_plugin_profile", :action => "choose_metric", :params =>
  9 + {:configuration_name => @configuration_name, :collector_name => collector_name} %>
  10 + </td>
  11 + </tr>
  12 + <% end %>
  13 +</table>
... ...
plugins/mezuro/views/mezuro_plugin_profile/choose_metric.html.erb 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +<h2><%= @configuration_name %> Configuration</h2>
  2 +
  3 +<table id="project_info">
  4 + <tr>
  5 + <h5>Metric Collector: <%= @collector_name %></h5>
  6 + </tr>
  7 + <tr>
  8 + <h5>Choose a metric to add:</h5>
  9 + </tr>
  10 + <% @collector.supported_metrics.each do |metric| %>
  11 + <tr class="metric" title="<%= metric.name %>">
  12 + <td>
  13 + <%= link_to metric.name, :controller => "mezuro_plugin_profile", :action => "new_metric_configuration", :params => {:metric_name => metric.name,
  14 + :collector_name => @collector_name, :configuration_name => @configuration_name} %>
  15 + </td>
  16 + </tr>
  17 + <% end %>
  18 +</table>
... ...
plugins/mezuro/views/mezuro_plugin_profile/create_range.rjs 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +page.visual_effect :toggle_slide, "new_range"
  2 +page.insert_html :bottom, "ranges", :partial => "range", :locals => {:range => @range}
... ...
plugins/mezuro/views/mezuro_plugin_profile/edit_metric_configuration.html.erb 0 → 100644
... ... @@ -0,0 +1,66 @@
  1 +<h2><%= @configuration_name %> Configuration</h2>
  2 +
  3 +<% form_for @metric_configuration, :url => {:action =>"update_metric_configuration", :controller => "mezuro_plugin_profile"}, :method => :get do |f| %>
  4 + <%= hidden_field_tag :configuration_name, @configuration_name %>
  5 + <p>
  6 + <%= f.label :collector_name, "Collector Name:" %>
  7 + <%= @metric_configuration.metric.origin %>
  8 + <%= hidden_field_tag "metric[origin]", @metric_origin %>
  9 + </p>
  10 + <p>
  11 + <%= f.label :metric_name, "Metric Name:" %>
  12 + <%= @metric_configuration.metric.name %>
  13 + <%= hidden_field_tag "metric[name]", @metric_name %>
  14 + </p>
  15 + <p>
  16 + <%= f.label :code, "Code:" %>
  17 + <%= @metric_configuration.code %>
  18 + <%= f.hidden_field :code, :value => @metric_configuration.code %>
  19 + </p>
  20 + <p>
  21 + <%= f.label :aggregation_form, "Aggregation Form:" %>
  22 + <%= f.select :aggregation_form, [["Average","AVERAGE"], ["Median", "MEDIAN"], ["Maximum", "MAXIMUM"], ["Minimum", "MINIMUM"],
  23 + ["Count", "COUNT"], ["Standard Deviation", "STANDARD_DEVIATION"]] %>
  24 + </p>
  25 + <p>
  26 + <%= f.label :weight, "Weight:" %>
  27 + <%= f.text_field :weight %>
  28 + </p>
  29 +
  30 + <p>
  31 + <%= f.submit "Save" %>
  32 + </p>
  33 +<% end %>
  34 +
  35 +
  36 +<h5> Ranges </h5><br/>
  37 +
  38 +<table id="ranges">
  39 + <tr>
  40 + <td>
  41 + Label
  42 + </td>
  43 + <td>
  44 + Beginning
  45 + </td>
  46 + <td>
  47 + End
  48 + </td>
  49 + <td>
  50 + Grade
  51 + </td>
  52 + <td>
  53 + Color
  54 + </td>
  55 + </tr>
  56 + <% if (@metric_configuration.ranges!=nil)
  57 + @metric_configuration.ranges.each do |range| %>
  58 + <%= render :partial => "range", :locals => {:range => range} %>
  59 + <% end
  60 + end %>
  61 +</table>
  62 +
  63 +<br/>
  64 +<%= link_to_remote "New Range", :url => {:action =>"new_range", :controller => "mezuro_plugin_profile"} %>
  65 +<div id="new_range" style="display:none"></div>
  66 +
... ...
plugins/mezuro/views/mezuro_plugin_profile/new_metric_configuration.html.erb 0 → 100644
... ... @@ -0,0 +1,36 @@
  1 +<h2><%= @configuration_name %> Configuration</h2>
  2 +
  3 +<% form_for :metric_configuration, :url => {:action =>"create_metric_configuration", :controller => "mezuro_plugin_profile"}, :method => :get do |f| %>
  4 + <%= hidden_field_tag :configuration_name, @configuration_name %>
  5 + <p>
  6 + <%= f.label :collector_name, "Collector Name:" %>
  7 + <%= @collector_name %>
  8 + <%= f.hidden_field :collector_name, :value => @collector_name %>
  9 + </p>
  10 + <p>
  11 + <%= f.label :metric_name, "Metric Name:" %>
  12 + <%= @metric_name %>
  13 + <%= f.hidden_field :metric_name, :value => @metric_name %>
  14 + </p>
  15 + <p>
  16 + <%= f.label :description, "Description:" %>
  17 + <%= f.text_field :description %>
  18 + </p>
  19 + <p>
  20 + <%= f.label :code, "Code:" %>
  21 + <%= f.text_field :code %>
  22 + </p>
  23 + <p>
  24 + <%= f.label :aggregation, "Aggregation:" %>
  25 + <%= f.select :aggregation, [["Average","AVERAGE"], ["Median", "MEDIAN"], ["Maximum", "MAXIMUM"], ["Minimum", "MINIMUM"],
  26 + ["Count", "COUNT"], ["Standard Deviation", "STANDARD_DEVIATION"]] %>
  27 + </p>
  28 + <p>
  29 + <%= f.label :weight, "Weight:" %>
  30 + <%= f.text_field :weight %>
  31 + </p>
  32 + <p>
  33 + <%= f.submit "Add" %>
  34 + </p>
  35 +
  36 +<% end %>
... ...
plugins/mezuro/views/mezuro_plugin_profile/new_range.rjs 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +page.replace_html 'new_range', :partial => "new_range"
  2 +page.visual_effect :toggle_slide, "new_range"
... ...
plugins/mezuro/views/mezuro_plugin_profile/teste.html.erb 0 → 100644
... ... @@ -0,0 +1 @@
  1 +<h3><%= @configuration_name %></h3>
... ...