Merge pull request #39 from differentreality/events_stats
fix events stats table
This commit is contained in:
commit
c26a0a0bc9
3 changed files with 97 additions and 96 deletions
|
|
@ -11,8 +11,51 @@ class Admin::EventsController < ApplicationController
|
||||||
def index
|
def index
|
||||||
@events = @conference.events
|
@events = @conference.events
|
||||||
@tracks = @conference.tracks
|
@tracks = @conference.tracks
|
||||||
@event_states = @events.state_machine.states.map
|
@machine_states = @events.state_machine.states.map
|
||||||
@event_types = @conference.event_types
|
@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|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
# Explicity call #to_json to avoid the use of EventSerializer
|
# Explicity call #to_json to avoid the use of EventSerializer
|
||||||
|
|
@ -77,7 +120,7 @@ class Admin::EventsController < ApplicationController
|
||||||
expire_page :controller => '/schedule', :action => :index
|
expire_page :controller => '/schedule', :action => :index
|
||||||
redirect_to(admin_conference_events_path(:conference_id => @conference.short_title), :notice => "Updated state")
|
redirect_to(admin_conference_events_path(:conference_id => @conference.short_title), :notice => "Updated state")
|
||||||
end
|
end
|
||||||
|
|
||||||
def vote
|
def vote
|
||||||
event = Event.find(params[:id])
|
event = Event.find(params[:id])
|
||||||
|
|
||||||
|
|
|
||||||
51
app/views/admin/events/_events_stats.html.haml
Normal file
51
app/views/admin/events/_events_stats.html.haml
Normal 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();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
@ -1,90 +1,4 @@
|
||||||
.row-fluid
|
= render :partial => "events_stats"
|
||||||
.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
|
|
||||||
|
|
||||||
.row-fluid
|
.row-fluid
|
||||||
.span12
|
.span12
|
||||||
|
|
@ -211,10 +125,3 @@
|
||||||
"bPaginate": false
|
"bPaginate": false
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
$(document).ready( function() {
|
|
||||||
$("#events-stats").hide();
|
|
||||||
$("#events-stats-link").click(function() {
|
|
||||||
$("#events-stats").toggle();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue