diff --git a/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb b/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb index d19fcbe..20ab1a5 100644 --- a/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb +++ b/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb @@ -81,7 +81,9 @@ class MezuroPluginProfileController < ProfileController if project_content_has_errors? redirect_to_error_page(@content.errors[:base]) else - @score_history = modules_results.collect { |module_result| module_result.grade } + @score_history = modules_results.map do |module_result| + [module_result.grade, format_date_to_simple_form(module_result.date)] + end render :partial => 'content_viewer/score_history' end end @@ -90,7 +92,7 @@ class MezuroPluginProfileController < ProfileController def filtering_metric_history(metric_name, module_history) metrics_history = module_history.map do |module_result| - [module_result.metric_results, module_result.date.to_s[0..9]] + [module_result.metric_results, format_date_to_simple_form(module_result.date)] end metric_history = metrics_history.map do |metric_results_with_date| [(metric_results_with_date.first.select do |metric_result| @@ -110,5 +112,10 @@ class MezuroPluginProfileController < ProfileController def project_content_has_errors? not @content.errors[:base].nil? end + + def format_date_to_simple_form date + date.to_s[0..9] + end + end diff --git a/plugins/mezuro/lib/mezuro_plugin/helpers/content_viewer_helper.rb b/plugins/mezuro/lib/mezuro_plugin/helpers/content_viewer_helper.rb index 4529edd..6b424fa 100644 --- a/plugins/mezuro/lib/mezuro_plugin/helpers/content_viewer_helper.rb +++ b/plugins/mezuro/lib/mezuro_plugin/helpers/content_viewer_helper.rb @@ -1,6 +1,9 @@ require 'googlecharts' class MezuroPlugin::Helpers::ContentViewerHelper + + MAX_NUMBER_OF_LABELS = 5 + def self.format_grade(grade) sprintf("%.2f", grade.to_f) end @@ -8,7 +11,7 @@ class MezuroPlugin::Helpers::ContentViewerHelper def self.create_periodicity_options [["Not Periodically", 0], ["1 day", 1], ["2 days", 2], ["Weekly", 7], ["Biweeky", 15], ["Monthly", 30]] end - + def self.create_license_options options = YAML.load_file("#{RAILS_ROOT}/plugins/mezuro/licenses.yaml") options = options.split(";") @@ -16,7 +19,7 @@ class MezuroPlugin::Helpers::ContentViewerHelper options.each { |option| formated_options << [option, option] } formated_options end - + def self.generate_chart(score_history) values = [] labels = [] @@ -24,6 +27,7 @@ class MezuroPlugin::Helpers::ContentViewerHelper values << score_data.first labels << score_data.last end + labels = discretize_array labels Gchart.line( :title_color => 'FF0000', :size => '600x180', @@ -42,14 +46,33 @@ class MezuroPlugin::Helpers::ContentViewerHelper selected_option = options.find { |option| option.last == index.to_i } selected_option.first end - + def self.format_name(metric_result) metric_result.metric.name.delete("() ") end - + def self.get_license_option(selected) options = YAML.load_file("#{RAILS_ROOT}/plugins/mezuro/licenses.yaml") options.split(";") selected_option = options.find { |license| license == selected } end + + private + + def self.discretize_array(array) + if array.size > MAX_NUMBER_OF_LABELS + range_array.map { |i| discrete_element(array, i)} + else + array + end + end + + def self.range_array + (0..(MAX_NUMBER_OF_LABELS - 1)).to_a + end + + def self.discrete_element(array, i) + array[(i*(array.size - 1))/(MAX_NUMBER_OF_LABELS - 1)] + end + end diff --git a/plugins/mezuro/test/functional/mezuro_plugin_profile_controller_test.rb b/plugins/mezuro/test/functional/mezuro_plugin_profile_controller_test.rb index a171fb1..581ead8 100644 --- a/plugins/mezuro/test/functional/mezuro_plugin_profile_controller_test.rb +++ b/plugins/mezuro/test/functional/mezuro_plugin_profile_controller_test.rb @@ -126,7 +126,7 @@ class MezuroPluginProfileControllerTest < ActionController::TestCase get :module_metrics_history, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, :metric_name => @module_result.metric_result.first.metric.name.delete("() ") assert_equal @content, assigns(:content) - assert_equal [@module_result.metric_result[0].value], assigns(:score_history) + assert_equal [[@module_result.metric_result[0].value, @module_result.date.to_s[0..9]]], assigns(:score_history) assert_response 200 end @@ -134,7 +134,7 @@ class MezuroPluginProfileControllerTest < ActionController::TestCase Kalibro::ModuleResult.expects(:request).with("ModuleResult", :get_result_history, {:project_name => @project.name, :module_name => @project.name}).returns({:module_result => @module_result}) get :module_grade_history, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name assert_equal @content, assigns(:content) - assert_equal [@module_result.grade], assigns(:score_history) + assert_equal [[@module_result.grade, @module_result.date.to_s[0..9]]], assigns(:score_history) assert_response 200 end -- libgit2 0.21.2