mezuro_plugin_profile_controller.rb 2.32 KB
class MezuroPluginProfileController < ProfileController

  append_view_path File.join(File.dirname(__FILE__) + '/../views')
  
  def project_state
    @content = profile.articles.find(params[:id])
    project = @content.project
    state = project.error.nil? ? project.state : "ERROR"
    render :text => state
  end

  def project_error
    @content = profile.articles.find(params[:id])
    @project = @content.project
    render :partial => 'content_viewer/project_error'
  end

  def project_result
    @content = profile.articles.find(params[:id])
    date = params[:date]
    @project_result = date.nil? ? @content.project_result : @content.project_result_with_date(date)
    render :partial => 'content_viewer/project_result'
  end 	

  def module_result
    @content = profile.articles.find(params[:id])
    @module_result = @content.module_result(params)
    render :partial => 'content_viewer/module_result'
  end

  def project_tree
    @content = profile.articles.find(params[:id])
    date = params[:date]
    project_result = date.nil? ? @content.project_result : @content.project_result_with_date(date)
    @project_name = @content.project.name
    @source_tree = project_result.node_of(params[:module_name])
    render :partial =>'content_viewer/source_tree'
  end

  def module_metrics_history
    metric_name = params[:metric_name]
    @content = profile.articles.find(params[:id])
    module_history = @content.result_history(params[:module_name])
    @score_history = filtering_metric_history(metric_name, module_history)
    render :partial => 'content_viewer/score_history'
  end

  def module_grade_history
    @content = profile.articles.find(params[:id])
    modules_results = @content.result_history(params[:module_name])
    @score_history = modules_results.collect { |module_result| module_result.grade }
    render :partial => 'content_viewer/score_history'
  end
  
  private
  
  def filtering_metric_history(metric_name, module_history)
    metrics_history = module_history.map do |module_result|
      module_result.metric_results
    end
    metric_history =  metrics_history.map do |array_of_metric_result|
      (array_of_metric_result.select do |metric_result|
        metric_result.metric.name.delete("() ") == metric_name
      end).first
    end
    metric_history.map do |metric_result|
      metric_result.value
    end
  end
end