mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-13 19:54:02 +00:00
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
|
||||
@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])
|
||||
|
||||
|
|
|
|||
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
|
||||
.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();
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue