Add rank display in EventsController#show

This commit is contained in:
Petko Bordjukov 2016-10-11 02:33:39 +03:00
parent 28071e1d7a
commit 4870eff959
6 changed files with 63 additions and 26 deletions

View File

@ -5,3 +5,7 @@
.large {
font-size: 2rem;
}
.panel-rank {
margin-top: 18px;
}

View File

@ -44,6 +44,10 @@ class Conference < ActiveRecord::Base
vote_data_updated_at.present?
end
def has_voting_endpoint?
vote_data_endpoint.present?
end
private
def planned_cfp_end_date_is_before_start_date
@ -82,13 +86,13 @@ class Conference < ActiveRecord::Base
private
def conn
@conn ||= Faraday.new(url: conference.vote_data_endpoint + '/summary.json',
def connection
@connection ||= Faraday.new(url: conference.vote_data_endpoint + '/summary.json',
headers: {'Content-Type' => 'application/json'})
end
def remote_summary_data
@remote_summary_data ||= JSON.parse(conn.get do |request|
@remote_summary_data ||= JSON.parse(connection.get do |request|
request.body = {summary: {talk_ids: Conference.last.events.pluck(:id)}}.to_json
end.body)
end

View File

@ -92,11 +92,11 @@
h2
=> t '.voting_results'
small
- if @conference.vote_data_updated_at.present?
- if @conference.has_vote_results?
= t '.vote_data_updated_at', updated_at: l(@conference.vote_data_updated_at, format: :long)
.panel.panel-default
table.table.table-striped.table-hover.record-table
- if @conference.vote_data_updated_at.present?
- if @conference.has_vote_results?
thead
tr
th.text-right = t('.rank')
@ -104,7 +104,7 @@
th = Event.model_name.human.mb_chars.capitalize
th
tbody
- if @conference.vote_data_updated_at.present?
- if @conference.has_vote_results?
- current_conference.events.order(rank: :asc).group_by(&:rank).to_a[0..9].each do |rank, events|
- events.each.with_index do |event, index|
tr
@ -125,7 +125,7 @@
p
=< link_to update_vote_data_management_conference_path, method: :patch, class: ['btn', 'btn-primary'] do
= icon :refresh, t('.fetch_vote_results')
- if @conference.vote_data_updated_at.present?
- if @conference.has_vote_results?
.panel-footer.text-right
.btn-group
= link_to vote_results_management_conference_path, class: ['btn', 'btn-info'] do

View File

@ -5,7 +5,7 @@
.col-lg-12
h1.page-header
= t '.vote_results'
- if @conference.vote_data_updated_at.present?
- if @conference.has_vote_results?
small<
= t '.vote_data_updated_at', updated_at: l(@conference.vote_data_updated_at, format: :long)
- if @conference.vote_data_endpoint.present?
@ -13,7 +13,7 @@
.col-lg-12
.panel.panel-default
table.table.table-striped.table-hover.record-table
- if @conference.vote_data_updated_at.present?
- if @conference.has_vote_results?
thead
tr
th.text-right = t('.rank')
@ -21,7 +21,7 @@
th = Event.model_name.human.mb_chars.capitalize
th
tbody
- if @conference.vote_data_updated_at.present?
- if @conference.has_vote_results?
- current_conference.events.order(rank: :asc).group_by(&:rank).each do |rank, events|
- events.each.with_index do |event, index|
tr
@ -42,7 +42,7 @@
p
=< link_to update_vote_data_management_conference_path, method: :patch, class: ['btn', 'btn-primary'] do
= icon :refresh, t('.fetch_vote_results')
- if @conference.vote_data_updated_at.present?
- if @conference.has_vote_results?
.panel-footer.text-right
.btn-group
= link_to management_conference_path, class: ['btn', 'btn-info'] do

View File

@ -7,24 +7,27 @@
= @event.title
small<
= @event.subtitle
.row
.col-md-9
h4
= t 'events.metadata', type: @event.event_type.name, language: t("locales.#{@event.language}").mb_chars.downcase, length: @event.length
.pull-right.heading-actions
.dropdown>
button class="btn btn-sm dropdown-toggle btn-#{proposition_status_class(@event.status)}" type="button" data-toggle="dropdown" title="#{t "status.#{@event.status}"}"
= icon(proposition_status_glyph(@event.status))
span.caret<
ul.dropdown-menu
- Proposition.statuses.each do |(status, _)|
- next if status == @event.status
li
= link_to [:management, @conference, @event.proposition, proposition: {status: status}], method: :patch do
= proposition_status_icon(status)
=< t "status.#{status}"
div.btn-group.btn-group-sm
= action_buttons(@conference, @event, [:index, :edit])
.col-md-3.text-right
.heading-actions
.dropdown>
button class="btn btn-sm dropdown-toggle btn-#{proposition_status_class(@event.status)}" type="button" data-toggle="dropdown" title="#{t "status.#{@event.status}"}"
= icon(proposition_status_glyph(@event.status))
span.caret<
ul.dropdown-menu
- Proposition.statuses.each do |(status, _)|
- next if status == @event.status
li
= link_to [:management, @conference, @event.proposition, proposition: {status: status}], method: :patch do
= proposition_status_icon(status)
=< t "status.#{status}"
div.btn-group.btn-group-sm
= action_buttons(@conference, @event, [:index, :edit])
.row
.col-xs-12
= content_tag :div, class: @conference.has_vote_results? || @conference.has_voting_endpoint? ? 'col-md-9' : 'col-xs-12'
h3 = Event.human_attribute_name :abstract
p = simple_format @event.abstract
@ -33,6 +36,31 @@
- if @event.notes.present?
h3 = Event.human_attribute_name :notes
p = simple_format @event.notes
- if @conference.has_vote_results? or @conference.has_voting_endpoint?
.col-md-3
.panel.panel-info.panel-rank
.panel-heading
= t '.rank'
- if @conference.has_vote_results?
.panel-body
.row
.col-xs-3
.huge
.label.label-info
= @event.rank
.col-xs-9.text-right
.huge
= number_to_percentage(@event.per_cent_of_votes, strip_insignificant_zeros: true, precision: 2)
= t('management.conferences.vote_results.vote_ratio', votes: @event.number_of_votes, total_votes: @conference.number_of_ballots_cast)
- else
.panel-body.text-center
= t 'management.conferences.vote_results.vote_data_never_updated'
= link_to update_vote_data_management_conference_path(@conference), method: :patch do
.panel-footer.text-primary.text-right
= icon :refresh, t('management.conferences.vote_results.fetch_vote_results')
.row
.col-xs-12
h3 = Event.human_attribute_name :participants
= render partial: 'speaker', collection: @event.participants

View File

@ -50,6 +50,7 @@ bg:
previous_event_propositions: 'Предишни предложения за събития'
contacts: "Информация за контакт"
show:
rank: "Класиране"
review: "Преглед на %{event_type} „%{event_title}“"
index:
all: "Всички"