mezuro_plugin_metric_configuration_controller.rb
4.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
class MezuroPluginMetricConfigurationController < MezuroPluginMyprofileController
append_view_path File.join(File.dirname(__FILE__) + '/../../views')
def choose_metric
@configuration_content = profile.articles.find(params[:id])
@base_tools = Kalibro::BaseTool.all
end
def new_native
@configuration_content = profile.articles.find(params[:id])
@reading_group_names_and_ids = reading_group_names_and_ids
@metric = Kalibro::BaseTool.find_by_name(params[:base_tool_name]).metric params[:metric_name]
@metric_configuration = Kalibro::MetricConfiguration.new :base_tool_name => params[:base_tool_name], :metric => @metric
end
def edit_native
params_to_edit_view
end
def new_compound
@configuration_content = profile.articles.find(params[:id])
@metric_configurations = @configuration_content.metric_configurations
@reading_group_names_and_ids = reading_group_names_and_ids
metric = Kalibro::Metric.new :compound => true
@metric_configuration = Kalibro::MetricConfiguration.new :metric => metric
if configuration_content_has_errors?
redirect_to_error_page @configuration_content.errors[:base]
end
end
def edit_compound
params_to_edit_view
end
def create
configuration_content = profile.articles.find(params[:id])
metric_configuration = Kalibro::MetricConfiguration.create(params[:metric_configuration])
if metric_configuration_has_errors? metric_configuration
redirect_to_error_page metric_configuration.errors[0].message
else
redirect_to(metric_configuration_url(configuration_content, metric_configuration.id))
end
end
def update
@configuration_content = profile.articles.find(params[:id])
metric_configurations = @configuration_content.metric_configurations
metric_configuration = find_metric_configuration(metric_configurations, params[:metric_configuration][:id].to_i)
metric_configuration.update_attributes params[:metric_configuration]
if metric_configuration_has_errors? metric_configuration
redirect_to_error_page metric_configuration.errors[0].message
else
redirect_to @configuration_content.view_url
end
end
def remove
configuration_content = profile.articles.find(params[:id])
configuration_id = configuration_content.configuration_id
metric_configuration = Kalibro::MetricConfiguration.new({:id => params[:metric_configuration_id].to_i})
metric_configuration.destroy
if metric_configuration_has_errors? metric_configuration
redirect_to_error_page metric_configuration.errors[0].message
else
redirect_to configuration_content.view_url
end
end
private
def find_metric_configuration (metric_configurations, metric_configuration_id)
metric_configurations.select {|metric_configuration| metric_configuration.id == metric_configuration_id }.first
end
def reading_group_names_and_ids
array = Kalibro::ReadingGroup.all.map { |reading_group| [reading_group.name, reading_group.id] }
array.sort { |x,y| x.first.downcase <=> y.first.downcase }
end
def metric_configuration_has_errors? metric_configuration
not metric_configuration.errors.empty?
end
def configuration_content_has_errors?
not @configuration_content.errors[:base].nil?
end
def metric_configuration_url(configuration_content, metric_configuration_id)
url = configuration_content.view_url
url[:controller] = controller_name
url[:id] = configuration_content.id
url[:metric_configuration_id] = metric_configuration_id
url[:action] = (params[:metric_configuration][:metric][:compound] == "true" ? "edit_compound" : "edit_native")
url
end
def params_to_edit_view
@configuration_content = profile.articles.find(params[:id])
@metric_configurations = @configuration_content.metric_configurations
@metric_configuration = find_metric_configuration(@metric_configurations, params[:metric_configuration_id].to_i)
@metric = @metric_configuration.metric
@reading_group_names_and_ids = reading_group_names_and_ids
@ranges = Kalibro::Range.ranges_of(@metric_configuration.id)
end
end