Commit 5666ddf2289c3d6a1529d3ce661514d7e82c6324
Committed by
Paulo Meireles
Exists in
master
and in
29 other branches
[Mezuro] Merge branch 'metric_history' of gitorious.org:+mezuro/noosfero/mezuro into metric_history
Conflicts: plugins/mezuro/public/javascripts/project_content.js
Showing
9 changed files
with
100 additions
and
32 deletions
Show diff stats
plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb
@@ -136,6 +136,14 @@ class MezuroPluginProfileController < ProfileController | @@ -136,6 +136,14 @@ class MezuroPluginProfileController < ProfileController | ||
136 | redirect_to "/#{profile.identifier}/#{configuration_name.downcase.gsub(/\s/, '-')}" | 136 | redirect_to "/#{profile.identifier}/#{configuration_name.downcase.gsub(/\s/, '-')}" |
137 | end | 137 | end |
138 | 138 | ||
139 | + def module_metrics_history | ||
140 | + metric_name = params[:metric_name] | ||
141 | + content = profile.articles.find(params[:id]) | ||
142 | + module_history = content.result_history(params[:module_name]) | ||
143 | + date_history = module_history.collect { |x| x.date } | ||
144 | + metric_history = module_history.collect { |x| (x.metric_results.select { |y| y.metric.name.delete("() ") == metric_name })[0] } | ||
145 | + render :partial => 'content_viewer/metric_history', :locals => {:metric_history => metric_history, :date_history => date_history } | ||
146 | + end | ||
139 | private | 147 | private |
140 | 148 | ||
141 | def new_metric_configuration_instance | 149 | def new_metric_configuration_instance |
@@ -166,5 +174,5 @@ class MezuroPluginProfileController < ProfileController | @@ -166,5 +174,5 @@ class MezuroPluginProfileController < ProfileController | ||
166 | range.comments = params[:range][:comments] | 174 | range.comments = params[:range][:comments] |
167 | range | 175 | range |
168 | end | 176 | end |
169 | -end | ||
170 | 177 | ||
178 | +end |
plugins/mezuro/lib/kalibro/client/module_result_client.rb
1 | class Kalibro::Client::ModuleResultClient | 1 | class Kalibro::Client::ModuleResultClient |
2 | 2 | ||
3 | - # TODO test this | ||
4 | - def self.module_result(project_content, module_name) | ||
5 | - project_result = project_content.project_result | ||
6 | - new.module_result(project_result.project.name, module_name, project_result.date) | ||
7 | - end | ||
8 | - | ||
9 | def initialize | 3 | def initialize |
10 | @port = Kalibro::Client::Port.new('ModuleResult') | 4 | @port = Kalibro::Client::Port.new('ModuleResult') |
11 | end | 5 | end |
@@ -23,4 +17,11 @@ class Kalibro::Client::ModuleResultClient | @@ -23,4 +17,11 @@ class Kalibro::Client::ModuleResultClient | ||
23 | Kalibro::Entities::Entity.new.to_entity_array(value, Kalibro::Entities::ModuleResult) | 17 | Kalibro::Entities::Entity.new.to_entity_array(value, Kalibro::Entities::ModuleResult) |
24 | end | 18 | end |
25 | 19 | ||
26 | -end | ||
27 | \ No newline at end of file | 20 | \ No newline at end of file |
21 | + private | ||
22 | + | ||
23 | + def date_with_milliseconds(date) | ||
24 | + milliseconds = "." + (date.sec_fraction * 60 * 60 * 24 * 1000).to_s | ||
25 | + date.to_s[0..18] + milliseconds + date.to_s[19..-1] | ||
26 | + end | ||
27 | + | ||
28 | +end |
plugins/mezuro/lib/mezuro_plugin/project_content.rb
@@ -35,7 +35,16 @@ class MezuroPlugin::ProjectContent < Article | @@ -35,7 +35,16 @@ class MezuroPlugin::ProjectContent < Article | ||
35 | end | 35 | end |
36 | 36 | ||
37 | def module_result(module_name) | 37 | def module_result(module_name) |
38 | - @module_client ||= Kalibro::Client::ModuleResultClient.module_result(self, module_name) | 38 | + module_name = project.name if module_name.nil? |
39 | + @module_client ||= module_result_client.module_result(project.name, module_name, project_result.date) | ||
40 | + end | ||
41 | + | ||
42 | + def result_history(module_name) | ||
43 | + @result_history ||= module_result_client.result_history(project.name, module_name) | ||
44 | + end | ||
45 | + | ||
46 | + def module_result_client | ||
47 | + @module_result_client ||= Kalibro::Client::ModuleResultClient.new | ||
39 | end | 48 | end |
40 | 49 | ||
41 | after_save :send_project_to_service | 50 | after_save :send_project_to_service |
plugins/mezuro/public/javascripts/project_content.js
1 | var processingTree = false; | 1 | var processingTree = false; |
2 | +var metricName; | ||
2 | jQuery(function (){ | 3 | jQuery(function (){ |
3 | jQuery('.source-tree-link').live("click", reloadModule); | 4 | jQuery('.source-tree-link').live("click", reloadModule); |
4 | jQuery('[data-show]').live("click", toggle_mezuro); | 5 | jQuery('[data-show]').live("click", toggle_mezuro); |
5 | - jQuery('#project_history_date').live("submit", reloadProjectWithDate); | 6 | + jQuery('[show-metric-history]').live("click", display_metric_history); |
6 | showLoadingProcess(true); | 7 | showLoadingProcess(true); |
7 | showProjectContent(); | 8 | showProjectContent(); |
8 | }); | 9 | }); |
@@ -11,6 +12,18 @@ function showProjectContent() { | @@ -11,6 +12,18 @@ function showProjectContent() { | ||
11 | callAction('project_state', {}, showProjectContentFor); | 12 | callAction('project_state', {}, showProjectContentFor); |
12 | } | 13 | } |
13 | 14 | ||
15 | +function display_metric_history() { | ||
16 | + var module_name = jQuery(this).attr('data-module-name'); | ||
17 | + var metric_name = jQuery(this).attr('data-metric-name'); | ||
18 | + metricName = metric_name; | ||
19 | + callAction('module_metrics_history', {module_name: module_name, metric_name: metric_name}, show_metrics); | ||
20 | + return false; | ||
21 | +} | ||
22 | + | ||
23 | +function show_metrics(content) { | ||
24 | + jQuery('#historical-' + metricName).html(content); | ||
25 | +} | ||
26 | + | ||
14 | function toggle_mezuro(){ | 27 | function toggle_mezuro(){ |
15 | var element = jQuery(this).attr('data-show'); | 28 | var element = jQuery(this).attr('data-show'); |
16 | jQuery(element).toggle(); | 29 | jQuery(element).toggle(); |
plugins/mezuro/test/functional/mezuro_plugin_profile_controller_test.rb
@@ -68,7 +68,10 @@ class MezuroPluginProfileControllerTest < ActionController::TestCase | @@ -68,7 +68,10 @@ class MezuroPluginProfileControllerTest < ActionController::TestCase | ||
68 | 68 | ||
69 | should 'get module result' do | 69 | should 'get module result' do |
70 | create_project_content | 70 | create_project_content |
71 | - Kalibro::Client::ModuleResultClient.expects(:module_result).with(@content, @name).returns(@module_result) | 71 | + module_result_client = mock |
72 | + Kalibro::Client::ProjectResultClient.expects(:last_result).with(@name).returns(@project_result) | ||
73 | + Kalibro::Client::ModuleResultClient.expects(:new).returns(module_result_client) | ||
74 | + module_result_client.expects(:module_result).with(@name, @name, @project_result.date).returns(@module_result) | ||
72 | get :module_result, :profile => @profile.identifier, :id => @content.id, :module_name => @name | 75 | get :module_result, :profile => @profile.identifier, :id => @content.id, :module_name => @name |
73 | assert_response 200 | 76 | assert_response 200 |
74 | assert_select('h5', 'Metric results for: Qt-Calculator (APPLICATION)') | 77 | assert_select('h5', 'Metric results for: Qt-Calculator (APPLICATION)') |
plugins/mezuro/test/unit/kalibro/client/module_result_client_test.rb
@@ -26,5 +26,4 @@ class ModuleResultClientTest < ActiveSupport::TestCase | @@ -26,5 +26,4 @@ class ModuleResultClientTest < ActiveSupport::TestCase | ||
26 | @port.expects(:request).with(:get_result_history, request_body).returns(response) | 26 | @port.expects(:request).with(:get_result_history, request_body).returns(response) |
27 | assert_equal [@result], @client.result_history('Qt-Calculator', 'main') | 27 | assert_equal [@result], @client.result_history('Qt-Calculator', 'main') |
28 | end | 28 | end |
29 | - | ||
30 | -end | ||
31 | \ No newline at end of file | 29 | \ No newline at end of file |
30 | +end |
plugins/mezuro/test/unit/mezuro_plugin/project_content_test.rb
@@ -46,17 +46,35 @@ class ProjectContentTest < ActiveSupport::TestCase | @@ -46,17 +46,35 @@ class ProjectContentTest < ActiveSupport::TestCase | ||
46 | should 'get module result from service' do | 46 | should 'get module result from service' do |
47 | module_name = 'My module name' | 47 | module_name = 'My module name' |
48 | module_result = mock | 48 | module_result = mock |
49 | - Kalibro::Client::ModuleResultClient.expects(:module_result).with(@content, module_name). | 49 | + module_result_client = mock |
50 | + project_result = mock | ||
51 | + @content.expects(:project_result).returns(project_result) | ||
52 | + project_result.expects(:date).returns('12/04/2012') | ||
53 | + @content.expects(:module_result_client).returns(module_result_client) | ||
54 | + module_result_client.expects(:module_result).with(@project.name, module_name, '12/04/2012'). | ||
50 | returns(module_result) | 55 | returns(module_result) |
51 | assert_equal module_result, @content.module_result(module_name) | 56 | assert_equal module_result, @content.module_result(module_name) |
52 | end | 57 | end |
53 | 58 | ||
54 | - should 'get module result root when project name is give' do | 59 | + should 'get module result root when nil is given' do |
55 | module_result = mock | 60 | module_result = mock |
56 | - Kalibro::Client::ModuleResultClient.expects(:module_result).with(@content, @project.name). | 61 | + module_result_client = mock |
62 | + project_result = mock | ||
63 | + @content.expects(:project_result).returns(project_result) | ||
64 | + project_result.expects(:date).returns('12/04/2012') | ||
65 | + @content.expects(:module_result_client).returns(module_result_client) | ||
66 | + module_result_client.expects(:module_result).with(@project.name, @project.name, '12/04/2012'). | ||
57 | returns(module_result) | 67 | returns(module_result) |
58 | - assert_equal module_result, @content.module_result(@project.name) | ||
59 | - end | 68 | + assert_equal module_result, @content.module_result(nil) |
69 | + end | ||
70 | + | ||
71 | + should 'get result history' do | ||
72 | + module_name = 'Qt-Calculator' | ||
73 | + module_result_client = mock | ||
74 | + @content.expects(:module_result_client).returns(module_result_client) | ||
75 | + module_result_client.expects(:result_history).with(@project.name, module_name) | ||
76 | + @content.result_history(module_name) | ||
77 | + end | ||
60 | 78 | ||
61 | should 'send project to service after saving' do | 79 | should 'send project to service after saving' do |
62 | @content.expects :send_project_to_service | 80 | @content.expects :send_project_to_service |
plugins/mezuro/views/content_viewer/_metric_history.rhtml
0 → 100644
@@ -0,0 +1,14 @@ | @@ -0,0 +1,14 @@ | ||
1 | +<table width="100%"> | ||
2 | + <tr> | ||
3 | + <% date_history.each do |date| %> | ||
4 | + <td> <b> <%= date %> </b> </td> | ||
5 | + <% end %> | ||
6 | + </tr> | ||
7 | + <tr> | ||
8 | + <% metric_history.each do |metric_result| %> | ||
9 | + <td> | ||
10 | + <%= MezuroPlugin::Helpers::ContentViewerHelper.format_grade(metric_result.value) %> | ||
11 | + </td> | ||
12 | + <% end %> | ||
13 | + </tr> | ||
14 | + </table> |
plugins/mezuro/views/content_viewer/_module_result.rhtml
@@ -17,21 +17,24 @@ | @@ -17,21 +17,24 @@ | ||
17 | <tbody> | 17 | <tbody> |
18 | <% module_result.metric_results.each do |metric_result| %> | 18 | <% module_result.metric_results.each do |metric_result| %> |
19 | <% range = metric_result.range %> | 19 | <% range = metric_result.range %> |
20 | - <tr> | ||
21 | - <td><a href="#" data-show=".<%= metric_result.metric.name.delete("() ")%>"><%= metric_result.metric.name %></a></td> | ||
22 | - <td><%= "%.02f" % metric_result.value %></td> | ||
23 | - <td><%= metric_result.weight %></td> | ||
24 | - <% if range.nil? %> | ||
25 | - <td></td> | ||
26 | - <% else %> | 20 | + <% if !range.nil? %> |
21 | + <tr> | ||
22 | + <td><a href="#" data-show=".<%= metric_result.metric.name.delete("() ")%>"><%= metric_result.metric.name %></a></td> | ||
23 | + <td><%= MezuroPlugin::Helpers::ContentViewerHelper.format_grade(metric_result.value) %></td> | ||
24 | + <td><%= metric_result.weight %></td> | ||
27 | <td style="background-color: #<%= range.color[2..-1] %>"><%= range.label %></td> | 25 | <td style="background-color: #<%= range.color[2..-1] %>"><%= range.label %></td> |
28 | - <% end %> | ||
29 | - </tr> | ||
30 | - <tr class="<%= metric_result.metric.name.delete("() ")%>" style="display: none;"> | ||
31 | - <td colspan="4" align="right"> | ||
32 | - <%= range.nil? or range.comments.nil? ? 'comment empty' : range.comments %> | ||
33 | - </td> | ||
34 | - </tr> | 26 | + </tr> |
27 | + <tr class="<%= metric_result.metric.name.delete("() ")%>" style="display: none;"> | ||
28 | + <td colspan="4"> | ||
29 | + <div id='historical-<%= metric_result.metric.name.delete("() ") %>'> | ||
30 | + <a href="#" show-metric-history="<%= metric_result.metric.name.delete("() ") %>" data-module-name="<%= the_module.name %>" data-metric-name="<%= metric_result.metric.name.delete("() ") %>"> <p style="text-indent: 3em;"> Draw Historical Graphic </p> </a> | ||
31 | + </div> | ||
32 | + </td> | ||
33 | + <td colspan="3" align="right"> | ||
34 | + <%= range.comments.nil? ? '' : range.comments %> | ||
35 | + </td> | ||
36 | + </tr> | ||
37 | + <% end %> | ||
35 | <% end %> | 38 | <% end %> |
36 | </tbody> | 39 | </tbody> |
37 | <tfoot> | 40 | <tfoot> |