Merge pull request #39 from differentreality/events_stats

fix events stats table
This commit is contained in:
Henne Vogelsang 2013-09-04 04:00:29 -07:00
commit c26a0a0bc9
3 changed files with 97 additions and 96 deletions

View file

@ -11,8 +11,51 @@ class Admin::EventsController < ApplicationController
def index
@events = @conference.events
@tracks = @conference.tracks
@event_states = @events.state_machine.states.map
@machine_states = @events.state_machine.states.map
@event_types = @conference.event_types
@mystates = []
@mytypes = []
@eventstats = Hash.new
statelength = 0
@totallength = 0
@machine_states.each do |mystate|
length = 0
events_mystate= @events.where("state" => mystate.name)
if events_mystate.count > 0
@mystates << mystate
events_mystate.each do |myevent|
length += myevent.event_type.length
end
@eventstats["#{mystate.name}"] = {"count" => events_mystate.count, "length" => length}
end
end
@event_types.each do |mytype|
events_mytype = @events.where("event_type_id" => mytype.id)
if events_mytype.count > 0
@mytypes << mytype
end
end
@mytypes.each do |mytype|
@mystates.each do |mystate|
events_mytype = @events.where("event_type_id" => mytype.id)
events_mytype_mystate= events_mytype.where("state" => mystate.name)
typelength = 0
if events_mytype_mystate.count > 0
events_mytype_mystate.each do |myevent|
typelength += myevent.event_type.length
@totallength += myevent.event_type.length
end
@eventstats[mytype.title] = {"count" => events_mytype.count, "length" => events_mytype.count * mytype.length} if @eventstats[mytype.title] == nil
tmp = {"#{mystate.name}" => {"type_state_count" => events_mytype_mystate.count, "type_state_length" => typelength}}
@eventstats[mytype.title].merge!(tmp)
end
end
end
@eventstats["totallength"] = @totallength
respond_to do |format|
format.html
# Explicity call #to_json to avoid the use of EventSerializer
@ -77,7 +120,7 @@ class Admin::EventsController < ApplicationController
expire_page :controller => '/schedule', :action => :index
redirect_to(admin_conference_events_path(:conference_id => @conference.short_title), :notice => "Updated state")
end
def vote
event = Event.find(params[:id])

View file

@ -0,0 +1,51 @@
.row-fluid
.row
.span12
%h5{:style=>"text-align: right"}
= link_to "Events Stats", "#", :id => "events-stats-link", :class => "btn btn-success"
#events-stats
.span12
%table.table.table-bordered.table-striped
%thead
%th
- @mystates.each do |state|
%th{:colspan => 2, :style => "text-align:center"}
State "#{state.name}"
%th{:colspan => 2, :style => "text-align:center"}
Total
%br
No & Time
%tr
%td
%b Total
- @mystates.each do |mystate|
%td
%b
= @eventstats["#{mystate.name}"]["count"]
%td
%b
#{@eventstats["#{mystate.name}"]["length"] / 60} h #{@eventstats["#{mystate.name}"]["length"] - @eventstats["#{mystate.name}"]["length"] / 60 * 60} m
%td
%b= @events.count
%td
%b= show_time(@eventstats["totallength"])
- @mytypes.each do |mytype|
%tr
%td= "#{mytype.title} (#{show_time(mytype.length)})"
- @mystates.each do |mystate|
%td= @eventstats["#{mytype.title}"]["#{mystate.name}"]["type_state_count"] unless @eventstats["#{mytype.title}"]["#{mystate.name}"] == nil
%td= show_time(@eventstats["#{mytype.title}"]["#{mystate.name}"]["type_state_length"]) unless @eventstats["#{mytype.title}"]["#{mystate.name}"] == nil
%td= @eventstats["#{mytype.title}"]["count"]
%td= show_time(@eventstats["#{mytype.title}"]["length"])
:javascript
$(document).ready( function() {
$("#events-stats").hide();
$("#events-stats-link").click(function() {
$("#events-stats").toggle();
});
});

View file

@ -1,90 +1,4 @@
.row-fluid
.span
.row
%h5{:style=>"text-align: right"}
= link_to "Events Stats", "#", :id => "events-stats-link", :class => "btn btn-success"
#events-stats
%table.table.table-bordered.table-striped
%thead
%th
- @event_states.each do |state|
- totalstate = @events.where("state = ?", state.name).count
- if totalstate > 0
%th{:colspan => 2, :style => "text-align:center"}
Type "#{state.name}"
%th{:colspan => 2, :style => "text-align:center"}
Total
%br
No & Time
%tr
%td
%b Total
- @event_states.each do |state|
- totalstate = @events.where("state = ?", state.name).count
- if totalstate > 0
%td
%b= totalstate
%td
- length = 0
- @events.where("state = ?", state.name).each do |event|
- length += event.event_type.length
- length_hour = length / 60
%b
#{length_hour} h #{length-(length_hour*60)} m
%td
%b= @events.count
%td
- length = 0
- @events.each do |event|
- length += event.event_type.length
- length_hour = length / 60
%b
= length_hour
h
%b
= length-(length_hour*60)
m
- @conference.event_types.each do |type|
%tr
%td
%b= type.title
- @event_states.each do |state|
- totalstate = @events.where("state = ?", state.name).count
- if totalstate > 0
%td
- var = @events.where("event_type_id = ? AND state = ?", type.id, state.name)
- if var.count == 0
-
- else
= var.count
- length = 0
%td
- var.each do |e|
- length += e.event_type.length
- hour = length / 60
- min = length-(hour*60)
- if hour == 0 && min == 0
-
- else
= hour
h
= min
m
%td
= @events.where("event_type_id = ?", type.id).count
%td
- length = 0
- @events.where("event_type_id = ?", type.id).each do |event|
- length += event.event_type.length
- length_hour = length / 60
= length_hour
h
= length-(length_hour*60)
m
= render :partial => "events_stats"
.row-fluid
.span12
@ -211,10 +125,3 @@
"bPaginate": false
} );
} );
$(document).ready( function() {
$("#events-stats").hide();
$("#events-stats-link").click(function() {
$("#events-stats").toggle();
});
});