metric_admin 0.0.15 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,46 @@
|
|
1
|
+
module MetricsHelper
|
2
|
+
def summary_headers(summary)
|
3
|
+
if summary.action == "count"
|
4
|
+
[summary.group_by_key, summary.action]
|
5
|
+
else
|
6
|
+
[summary.group_by_key, summary.action, 'Amount']
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def summary_results(summary, results)
|
11
|
+
response = []
|
12
|
+
headers = results[0]
|
13
|
+
summary_key = summary.group_by_key.capitalize.gsub("_"," ")
|
14
|
+
summary_index = headers.index(summary_key)
|
15
|
+
|
16
|
+
if summary.action_on.present?
|
17
|
+
summary_action_on = summary.action_on.capitalize.gsub("_"," ")
|
18
|
+
summary_action_on_index = headers.index(summary_action_on)
|
19
|
+
end
|
20
|
+
|
21
|
+
summary_results = results.map{|x| x[summary_index]}.uniq.sort - [summary_key]
|
22
|
+
|
23
|
+
case summary.action
|
24
|
+
when 'count'
|
25
|
+
summary_results.each do |s|
|
26
|
+
response << {:key => s, :count => results.count{|x| x[summary_index] == s }}
|
27
|
+
end
|
28
|
+
when 'sum'
|
29
|
+
summary_results.each do |s|
|
30
|
+
response << {:key => s, :count => results.count{|x| x[summary_index] == s }, :sum => results.select{|x| x[summary_index] == s }.sum{|x| x[summary_action_on_index].to_f }}
|
31
|
+
end
|
32
|
+
when 'average'
|
33
|
+
summary_results.each do |s|
|
34
|
+
response << {:key => s, :count => results.count{|x| x[summary_index] == s }, :average => results.select{|x| x[summary_index] == s }.sum{|x| x[summary_action_on_index].to_f } / results.count{|x| x[summary_index] == s }}
|
35
|
+
end
|
36
|
+
when 'median'
|
37
|
+
summary_results.each do |s|
|
38
|
+
response << {:key => s, :count => results.count{|x| x[summary_index] == s }, :median => median(results.select{|x| x[summary_index] == s }.map{|x| x[summary_action_on_index].to_f })}
|
39
|
+
end
|
40
|
+
else
|
41
|
+
raise "#{summary.action.capitalize} is not defined, please define it in metrics_helper.rb"
|
42
|
+
end
|
43
|
+
|
44
|
+
return response
|
45
|
+
end
|
46
|
+
end
|
@@ -1,19 +1,27 @@
|
|
1
1
|
- f.fields_for :metric_summaries do |ms|
|
2
2
|
%div.summary
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
3
|
+
%div.summary-row
|
4
|
+
%div.form-field
|
5
|
+
= ms.label "Summary Title"
|
6
|
+
= ms.text_field :title
|
7
|
+
%div.form-field
|
8
|
+
= ms.label "Group By"
|
9
|
+
= ms.select :group_by_key, eval(@metric.logic.match(/\['(.*?)'\]/)[0]), :prompt => 'select one...'
|
10
|
+
and
|
11
|
+
%div.form-field
|
12
|
+
= ms.label "Action to Take"
|
13
|
+
= ms.select :action, %w( count sum average median), {}, { :class => "action-to-take" }
|
14
|
+
on
|
15
|
+
%div.form-field
|
16
|
+
%div.acton
|
17
|
+
%div.form-field
|
18
|
+
= ms.label "Acting On"
|
19
|
+
= ms.select :action_on, eval(@metric.logic.match(/\['(.*?)'\]/)[0]), :include_blank => true
|
20
|
+
%div.form-field
|
21
|
+
= link_to "Add", "#", :style=> "position: relative; top: -5px;", :class => "btn btn-default add_fields", :'data-id' => @metric.id
|
22
|
+
or
|
23
|
+
- if ms.object.new_record?
|
24
|
+
= link_to "Remove", "#", :style=> "position: relative; top: -5px;",:class => "btn btn-default remove_fields"
|
25
|
+
- else
|
26
|
+
= link_to "Remove", admin_metric_metric_summary_path(@metric, ms.object), :method => :delete, :remote => true, :style=> "position: relative; top: -5px;",:class => "btn btn-default remove_fields"
|
27
|
+
= ms.hidden_field :id
|
@@ -83,14 +83,15 @@
|
|
83
83
|
.controls
|
84
84
|
%label.control-label{:for => "staff_evaluation"} Staff: (for purposes of metric evaluation)
|
85
85
|
= collection_select :metric, :staff_evaluation, @metric.resource_type.resources, :code, :name
|
86
|
+
%button.btn.run_logic{"aria-hidden" => "true", "data-dismiss" => "modal"}
|
87
|
+
Run
|
88
|
+
%i.icon-play
|
86
89
|
%br
|
87
|
-
|
90
|
+
%hr
|
91
|
+
%h4 Configure Summaries
|
88
92
|
.controls
|
89
93
|
= render :partial => "metric_summaries", :locals => { :f => f } if @metric.logic.match(/\['(.*?)'\]/).present?
|
90
94
|
%br
|
91
|
-
%button.btn.run_logic{"aria-hidden" => "true", "data-dismiss" => "modal"}
|
92
|
-
Run
|
93
|
-
%i.icon-play
|
94
95
|
.loaderImage{:style=>"display:none;"}
|
95
96
|
Loading...
|
96
97
|
|
@@ -0,0 +1,82 @@
|
|
1
|
+
.row-fluid
|
2
|
+
.span9
|
3
|
+
%h1.page-title{:style=>"margin:20px;"}= @metric.title
|
4
|
+
.span3
|
5
|
+
- if current_user.role?(:administrator)
|
6
|
+
= link_to "View metric Logic", edit_admin_metric_path(@metric) , :class=>"btn btn-secondary pull-right", :style=>"margin:20px;"
|
7
|
+
.row-fluid
|
8
|
+
.span12
|
9
|
+
- if @metric.description.to_s != ""
|
10
|
+
.well
|
11
|
+
%strong Description:
|
12
|
+
%br
|
13
|
+
= @metric.description rescue nil
|
14
|
+
|
15
|
+
- @metric.metric_summaries.each do |summary|
|
16
|
+
.row-fluid
|
17
|
+
.span6
|
18
|
+
.well
|
19
|
+
%h5=summary.title
|
20
|
+
%table.table.table-striped.table-bordered
|
21
|
+
- headers = summary_headers(summary)
|
22
|
+
%thead
|
23
|
+
%tr
|
24
|
+
- headers.each_with_index do |x,i|
|
25
|
+
%th{:class=>i+1 == headers.count ? "tr" : "tl"}= x.capitalize.gsub("_"," ")
|
26
|
+
%tbody
|
27
|
+
- summary_results(summary, @result.detailed_results).each do |s|
|
28
|
+
%tr
|
29
|
+
%td= s[:key]
|
30
|
+
%td.tr= s[:count]
|
31
|
+
- if summary.action != "count" && ((summary.action_on.downcase["value"]) || (summary.action_on.downcase["amount"]) )
|
32
|
+
%td.tr= number_to_currency(s[summary.action.to_sym])
|
33
|
+
- elsif summary.action_on.downcase["date"]
|
34
|
+
%td.tr= display_date(s[summary.action.to_sym])
|
35
|
+
- else
|
36
|
+
%td.tr= s[summary.action.to_sym]
|
37
|
+
|
38
|
+
|
39
|
+
|
40
|
+
- if @result && @result.detailed_results
|
41
|
+
%table.table.tablesorter.table-striped.table-bordered
|
42
|
+
- headers = @result.detailed_results.first
|
43
|
+
%thead
|
44
|
+
%tr
|
45
|
+
- headers.each_with_index do |x,i|
|
46
|
+
%th{:class=> i+1 == headers.count ? "tr" : "tl"}= x
|
47
|
+
%tbody
|
48
|
+
- @result.detailed_results.shift
|
49
|
+
- @result.detailed_results.each do |x|
|
50
|
+
%tr
|
51
|
+
- x.each_with_index do |y, i|
|
52
|
+
%td{:class=> (i+1 == headers.count) || ((headers[i].downcase["value"]) || (headers[i].downcase["amount"]) ) ? "tr" : "tl", "data-sort-value"=>y.to_s.gsub(",","")}
|
53
|
+
- if headers[i].downcase["date"]
|
54
|
+
= display_date(y) rescue nil
|
55
|
+
- elsif ((headers[i].downcase["value"]) || (headers[i].downcase["amount"]) )
|
56
|
+
= number_to_currency(y)
|
57
|
+
- else
|
58
|
+
= y
|
59
|
+
%tfoot
|
60
|
+
- if @metric.data_type['average']
|
61
|
+
|
62
|
+
- if @metric.data_type == "averagecurrency" && (@metric.name.downcase['avg'] || @metric.name.downcase['average'])
|
63
|
+
%tr
|
64
|
+
%td{:style=>"border-top:2px solid #444;background:#fff;"} Average
|
65
|
+
- headers[1..-1].each_with_index do |col, i|
|
66
|
+
%td{:class=> (i+2 == headers.count) || ((col.downcase["value"]) || (col.downcase["amount"]) ) ? "tr" : "tl", :style=>"border-top:2px solid #444; background:#fff;"}
|
67
|
+
- if (i+2 == headers.count)
|
68
|
+
= number_to_currency(@result.result)
|
69
|
+
- if @metric.data_type == "average"
|
70
|
+
%tr
|
71
|
+
%td{:style=>"border-top:2px solid #444;background:#fff;"} Average
|
72
|
+
- headers[1..-1].each_with_index do |col, i|
|
73
|
+
%td{:class=> (i+2 == headers.count) || ((col.downcase["value"]) || (col.downcase["amount"]) ) ? "tr" : "tl", :style=>"border-top:2px solid #444; background:#fff;"}
|
74
|
+
- if (i+2 == headers.count)
|
75
|
+
= @result.result
|
76
|
+
- else
|
77
|
+
/ %tr
|
78
|
+
/ %td{:style=>"border-top:2px solid #444;background:#fff;"} Sum
|
79
|
+
/ - headers[1..-1].each_with_index do |col, i|
|
80
|
+
/ %td{:class=> (i+2 == headers.count) || ((col.downcase["value"]) || (col.downcase["amount"]) ) ? "tr" : "tl", :style=>"border-top:2px solid #444; background:#fff;"}
|
81
|
+
/ - if ((col.downcase["value"]) || (col.downcase["amount"]) )
|
82
|
+
/ = number_to_currency(@result.detailed_results.sum{|x| x[i+1].to_f })
|
data/lib/metric_admin/version.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 16
|
9
|
+
version: 0.0.16
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Analytics For Lawyers
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2016-
|
17
|
+
date: 2016-10-03 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -63,12 +63,14 @@ files:
|
|
63
63
|
- Rakefile
|
64
64
|
- app/controllers/admin/metric_summaries_controller.rb
|
65
65
|
- app/controllers/admin/metrics_controller.rb
|
66
|
+
- app/helpers/metrics_helper.rb
|
66
67
|
- app/views/admin/metrics/_metric_summaries.html.haml
|
67
68
|
- app/views/admin/metrics/edit.haml
|
68
69
|
- app/views/admin/metrics/evaluate.js.erb
|
69
70
|
- app/views/admin/metrics/index.haml
|
70
71
|
- app/views/admin/metrics/new.html.haml
|
71
72
|
- app/views/admin/metrics/show.html.erb
|
73
|
+
- app/views/metrics/metric_detail.html.haml
|
72
74
|
- config
|
73
75
|
- hooks/ctags
|
74
76
|
- hooks/post-checkout
|