From ffcb4d137410772c8f2e4dd2ee63d5dbe05f5dcd Mon Sep 17 00:00:00 2001 From: Rishabh Singh Date: Sun, 18 Aug 2019 22:59:41 +0530 Subject: [PATCH] Update booth views --- app/controllers/admin/booths_controller.rb | 1 + app/helpers/application_helper.rb | 20 ++++ app/views/admin/booth_groups/_form.html.haml | 29 +++++ app/views/admin/booths/_booths.html.haml | 74 +++++++++++++ app/views/admin/booths/index.html.haml | 106 +++++++------------ 5 files changed, 161 insertions(+), 69 deletions(-) create mode 100644 app/views/admin/booth_groups/_form.html.haml create mode 100644 app/views/admin/booths/_booths.html.haml diff --git a/app/controllers/admin/booths_controller.rb b/app/controllers/admin/booths_controller.rb index 0a8027ca..a7de76a0 100644 --- a/app/controllers/admin/booths_controller.rb +++ b/app/controllers/admin/booths_controller.rb @@ -8,6 +8,7 @@ module Admin def index @file_name = "#{(t 'booth').pluralize}_for_#{@conference.short_title}" + @booth_groups = @conference.program.booth_groups @booth_export_option = params[:booth_export_option] respond_to do |format| format.html diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 1ddca489..a90df1cf 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -151,6 +151,26 @@ module ApplicationHelper ) end + def booth_selector_input(field, form, hint = '', multiple = true) + booths = Booth.pluck(:id, :title).map { |booth| [booth[0], booth[1]]} + form.input( + field, + as: :select, + include_blank: true, + label: field.to_s.titleize, + hint: hint, + collection: options_for_select( + booths.map { |booth| [booth[1].to_s, booth[0]]}, + (form.object.send(field)&.map(&:id) || form.object.send(field)&.id) + ), + input_html: { + class: 'select-help-toggle', + multiple: multiple, + placeholder: (multiple ? "Select #{(t 'booth').pluralize}..." : "Select a #{t 'booth'}...") + } + ) + end + def event_types_sentence(conference) conference.event_types.map { |et| et.title.pluralize }.to_sentence end diff --git a/app/views/admin/booth_groups/_form.html.haml b/app/views/admin/booth_groups/_form.html.haml new file mode 100644 index 00000000..d9386c3a --- /dev/null +++ b/app/views/admin/booth_groups/_form.html.haml @@ -0,0 +1,29 @@ +.row + .col-md-12 + .page-header + %h1 + - if @booth_group.new_record? + New + #{(t 'booth').capitalize} Group + = @booth_group.name +.row + .col-md-12 + = semantic_form_for(@booth_group, url: (@booth_group.new_record? ? admin_conference_program_booth_groups_path : admin_conference_program_booth_group_path(@conference.short_title, @booth_group))) do |f| + = f.input :name, input_html: { autofocus: true } + = f.input :color, input_html: {size: 6, type: 'color'}, required: true + + - if @conference.try(:booths).present? + = booth_selector_input :booths, f, "The #{(t 'booth').pluralize} that you want to add to this Group." + - else + %b Please add #{(t 'booth').pluralize} before combining them. + + %p.text-right + = f.action :submit, as: :button, button_html: { class: 'btn btn-primary' } + + :javascript + $(document).ready(function() { + $('#booth_group_booth_ids').selectize({ + plugins: ['remove_button'], + minItems: 2 + } ) + }); \ No newline at end of file diff --git a/app/views/admin/booths/_booths.html.haml b/app/views/admin/booths/_booths.html.haml new file mode 100644 index 00000000..e91e446a --- /dev/null +++ b/app/views/admin/booths/_booths.html.haml @@ -0,0 +1,74 @@ +.row + .col-md-12 + %h4 + - if @conference.booth_limit == 0 + %p + Set the + = link_to "#{(t'booth').capitalize } limit", edit_admin_conference_path(@conference.short_title) + to make sure you are not accepting more #{(t'booth').pluralize} than you can accommodate. + - elsif !@conference.maximum_accepted_booths? + %p + You cannot accept more than + %b + = pluralize(@conference.booth_limit, "#{t'booth'}") + ( + = pluralize(@conference.booths.accepted.count + @conference.booths.confirmed.count, "accepted #{t'booth'}") + so far) + - else + %p + You have reached the maximum number of accepted #{(t'booth').pluralize}. + ( + = link_to "#{@conference.booth_limit} #{(t'booth').pluralize}", edit_admin_conference_path(@conference.short_title) + ) + - if @booths.any? + %table.datatable + %thead + %th + %b ID + %th + %b Logo + %th + %b Title + %th + %b Submitter + %th + %b Responsibles + %th + %b State + %th + %b Actions + - @booths.each do |booth| + %tr + %td + = booth.id + %td + - if booth.logo_link + = image_tag(booth.picture.thumb.url, width: '20%') + %td{ style: 'padding: 15px 0px 0px 10px;' } + - if booth.try(:booth_group).present? + = link_to admin_conference_booth_path(@conference.short_title, booth), class: 'btn' do + %span.label{style: "background-color: #{booth.booth_group.color}; color: #{ contrast_color(booth.booth_group.color) }"} + = booth.title + - else + = link_to booth.title, admin_conference_booth_path(@conference.short_title, booth) + %td + = link_to booth.submitter.name, admin_user_path(booth.submitter) if booth.submitter + %td + .responsibles + - booth.responsibles.each_with_index do |responsible, i| + = link_to responsible.name, admin_user_path(responsible) + = ", " unless i == booth.responsibles.length - 1 + %td + .btn-group + %button{ type: 'button', class: 'btn btn-link dropdown-toggle', 'data-toggle' => 'dropdown' } + = booth.state.humanize + %span.caret + %ul.dropdown-menu{ role: 'menu' } + = render 'change_state_dropdown', booth: booth + %td + = link_to 'Edit', edit_admin_conference_booth_path(@conference.short_title, booth.id), + class: 'btn btn-primary' +.row + .col-md-12.text-right + - if can? :create, Booth + = link_to 'New Booth', new_admin_conference_booth_path(@conference.short_title), class: 'button btn btn-primary' \ No newline at end of file diff --git a/app/views/admin/booths/index.html.haml b/app/views/admin/booths/index.html.haml index d5c02bdc..4652f45a 100644 --- a/app/views/admin/booths/index.html.haml +++ b/app/views/admin/booths/index.html.haml @@ -31,72 +31,40 @@ %p.text-muted All the #{t'booth'} requests -.row - .col-md-12 - %h4 - - if @conference.booth_limit == 0 - %p - Set the - = link_to "#{(t'booth').capitalize } limit", edit_admin_conference_path(@conference.short_title) - to make sure you are not accepting more #{(t'booth').pluralize} than you can accommodate. - - elsif !@conference.maximum_accepted_booths? - %p - You cannot accept more than - %b - = pluralize(@conference.booth_limit, "#{t'booth'}") - ( - = pluralize(@conference.booths.accepted.count + @conference.booths.confirmed.count, "accepted #{t'booth'}") - so far) - - else - %p - You have reached the maximum number of accepted #{(t'booth').pluralize}. - ( - = link_to "#{@conference.booth_limit} #{(t'booth').pluralize}", edit_admin_conference_path(@conference.short_title) - ) - - if @booths.any? - %table.datatable - %thead - %th - %b ID - %th - %b Logo - %th - %b Title - %th - %b Submitter - %th - %b Responsibles - %th - %b State - %th - %b Actions - - @booths.each do |booth| - %tr - %td - = booth.id - %td - - if booth.logo_link - = image_tag(booth.picture.thumb.url, width: '20%') - %td - = link_to booth.title, admin_conference_booth_path(@conference.short_title, booth) - %td - = link_to booth.submitter.name, admin_user_path(booth.submitter) if booth.submitter - %td - .responsibles - - booth.responsibles.each_with_index do |responsible, i| - = link_to responsible.name, admin_user_path(responsible) - = ", " unless i == booth.responsibles.length - 1 - %td - .btn-group - %button{ type: 'button', class: 'btn btn-link dropdown-toggle', 'data-toggle' => 'dropdown' } - = booth.state.humanize - %span.caret - %ul.dropdown-menu{ role: 'menu' } - = render 'change_state_dropdown', booth: booth - %td - = link_to 'Edit', edit_admin_conference_booth_path(@conference.short_title, booth.id), - class: 'btn btn-primary' -.row - .col-md-12.text-right - - if can? :create, Booth - = link_to 'New Booth', new_admin_conference_booth_path(@conference.short_title), class: 'button btn btn-primary' +.tabbable + %ul.nav.nav-tabs + %li.active + = link_to "All #{(t 'booth').pluralize}", '#all-stands', 'data-toggle' => 'tab' + %li + = link_to "Combined #{(t 'booth').pluralize}", '#combined-stands', 'data-toggle' => 'tab' + .tab-content + #all-stands.tab-pane.active + = render 'booths' + #combined-stands.tab-pane + .col-md-12 + %table.datatable + %thead + %th ID + %th Title + %th #{(t 'booth').pluralize.capitalize} + %th Actions + %tbody + - @booth_groups.each do |booth_group| + %tr + %td + = booth_group.id + %td + = booth_group.name + %td + - booth_group.booths.each do |booth| + = link_to booth.title, admin_conference_booth_path(@conference.short_title, booth) + %td + .btn-group{ role: 'group' } + = link_to 'Edit', edit_admin_conference_program_booth_group_path(@conference.short_title, booth_group.id), + method: :get, class: 'btn btn-primary' + = link_to 'Delete', admin_conference_program_booth_group_path(@conference.short_title, booth_group.id), + method: :delete, class: 'btn btn-danger', data: { confirm: "Do you really want to delete #{booth_group.name}?" } + .row + .col-md-12.text-right + = link_to "Create #{(t 'booth').capitalize} Group", new_admin_conference_program_booth_group_path(@conference.short_title), class: 'btn btn-primary' +