hackathon_manager 0.6.6 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +7 -1
  3. data/app/assets/javascripts/hackathon_manager/manage/application.js +4 -6
  4. data/app/assets/javascripts/hackathon_manager/manage/lib/datatables.js +82 -0
  5. data/app/assets/javascripts/hackathon_manager/manage/lib/setupDataTables.js +13 -64
  6. data/app/assets/javascripts/hackathon_manager/vendor/datatables.min.js +290 -0
  7. data/app/assets/stylesheets/hackathon_manager/dashboard.css +109 -0
  8. data/app/assets/stylesheets/hackathon_manager/datatables.min.css +18 -0
  9. data/app/assets/stylesheets/hackathon_manager/manage.sass +64 -47
  10. data/app/controllers/manage/stats_controller.rb +66 -30
  11. data/app/controllers/rsvps_controller.rb +2 -0
  12. data/app/datatables/admin_datatable.rb +3 -3
  13. data/app/datatables/message_datatable.rb +5 -5
  14. data/app/datatables/questionnaire_datatable.rb +6 -5
  15. data/app/datatables/school_datatable.rb +3 -3
  16. data/app/helpers/hackathon_manager_helper.rb +63 -4
  17. data/app/helpers/manage/bootstrap_form_helper.rb +98 -0
  18. data/app/models/bus_list.rb +1 -1
  19. data/app/models/message.rb +3 -3
  20. data/app/models/questionnaire.rb +1 -1
  21. data/app/models/school.rb +10 -4
  22. data/app/models/user.rb +3 -1
  23. data/app/views/application/_triggered_email_summary.html.haml +11 -9
  24. data/app/views/layouts/hackathon_manager/application.html.haml +4 -0
  25. data/app/views/layouts/manage/_flashes.html.haml +4 -0
  26. data/app/views/layouts/manage/_page_title.html.haml +8 -0
  27. data/app/views/layouts/manage/application.html.haml +72 -19
  28. data/app/views/manage/admins/_form.html.haml +4 -5
  29. data/app/views/manage/admins/edit.html.haml +5 -10
  30. data/app/views/manage/admins/index.html.haml +4 -8
  31. data/app/views/manage/admins/new.html.haml +5 -6
  32. data/app/views/manage/admins/show.html.haml +12 -14
  33. data/app/views/manage/bus_lists/_form.html.haml +3 -6
  34. data/app/views/manage/bus_lists/edit.html.haml +3 -7
  35. data/app/views/manage/bus_lists/index.html.haml +16 -23
  36. data/app/views/manage/bus_lists/new.html.haml +2 -5
  37. data/app/views/manage/bus_lists/show.html.haml +78 -66
  38. data/app/views/manage/configs/show.html.haml +31 -27
  39. data/app/views/manage/dashboard/index.html.haml +28 -19
  40. data/app/views/manage/dashboard/map_data.tsv.erb +6 -13
  41. data/app/views/manage/messages/_form.html.haml +3 -3
  42. data/app/views/manage/messages/edit.html.haml +3 -10
  43. data/app/views/manage/messages/index.html.haml +5 -10
  44. data/app/views/manage/messages/new.html.haml +2 -7
  45. data/app/views/manage/messages/show.html.haml +65 -67
  46. data/app/views/manage/questionnaires/_acc_status_badge.html.haml +2 -0
  47. data/app/views/manage/questionnaires/_check_in_badge.html.haml +4 -0
  48. data/app/views/manage/questionnaires/_checkin.html.haml +40 -0
  49. data/app/views/manage/questionnaires/_form.html.haml +21 -21
  50. data/app/views/manage/questionnaires/_history.html.haml +7 -0
  51. data/app/views/manage/questionnaires/_overview.html.haml +126 -0
  52. data/app/views/manage/questionnaires/edit.html.haml +5 -11
  53. data/app/views/manage/questionnaires/index.html.haml +19 -23
  54. data/app/views/manage/questionnaires/new.html.haml +2 -7
  55. data/app/views/manage/questionnaires/show.html.haml +28 -65
  56. data/app/views/manage/schools/_form.html.haml +2 -2
  57. data/app/views/manage/schools/edit.html.haml +5 -11
  58. data/app/views/manage/schools/index.html.haml +4 -8
  59. data/app/views/manage/schools/merge.html.haml +6 -8
  60. data/app/views/manage/schools/new.html.haml +2 -7
  61. data/app/views/manage/schools/show.html.haml +58 -55
  62. data/app/views/manage/stats/index.html.haml +18 -15
  63. data/app/views/questionnaires/_form.html.haml +2 -2
  64. data/config/initializers/simple_form.rb +4 -0
  65. data/config/initializers/simple_form_bootstrap.rb +412 -0
  66. data/config/locales/en.yml +73 -0
  67. data/db/migrate/20180701160855_remove_email_from_questionnaires.rb +5 -0
  68. data/lib/hackathon_manager/version.rb +1 -1
  69. metadata +39 -31
  70. data/app/assets/javascripts/hackathon_manager/vendor/buttons.colVis.min.js +0 -6
  71. data/app/assets/javascripts/hackathon_manager/vendor/buttons.html5.min.js +0 -22
  72. data/app/assets/javascripts/hackathon_manager/vendor/dataTables.buttons.min.js +0 -35
  73. data/app/assets/javascripts/hackathon_manager/vendor/jquery.dataTables.min.js +0 -164
  74. data/app/assets/javascripts/hackathon_manager/vendor/pdfmake.min.js +0 -22
  75. data/app/assets/stylesheets/hackathon_manager/datatables/buttons.dataTables.min.css +0 -1
  76. data/app/assets/stylesheets/hackathon_manager/datatables/jquery.dataTables.min.css +0 -1
@@ -1,5 +1,5 @@
1
1
  .form-container
2
- = simple_form_for @user, url: url_for(action: @user.new_record? ? "create" : "update", controller: "admins"), html: { "data-validate" => "form" } do |f|
2
+ = bs_horizontal_simple_form_for @user, url: url_for(action: @user.new_record? ? "create" : "update", controller: "admins"), html: { "data-validate" => "form" } do |f|
3
3
 
4
4
  - if @user.new_record?
5
5
  %p
@@ -10,9 +10,8 @@
10
10
  = f.error_notification
11
11
 
12
12
  .form-inputs
13
- = f.input :email, placeholder: "joe@example.com", input_html: { "data-validate" => "presence" }, required: true
14
- = f.input :admin_limited_access, as: :formatted_boolean, label: "Limited Access"
15
- %p Limited access prevents the admin from adding, modifying, or deleting any records. Modifications through the check-in process are allowed.
13
+ = f.input :email, input_html: { "data-validate" => "presence" }, required: true
14
+ = f.input :admin_limited_access, label: "Limited Access"
16
15
 
17
16
  .center
18
- = f.button :submit, value: ( @user.new_record? ? 'Create' : 'Save' )
17
+ = f.button :submit, value: ( @user.new_record? ? 'Create' : 'Save' ), class: 'btn-primary'
@@ -1,12 +1,7 @@
1
- %section.section.manage
2
- %h1.section-title= title "Editing Admin"
1
+ = render "layouts/manage/page_title", title: "Edit Admin", subtitle: @user.email do
2
+ .btn-group
3
+ = link_to 'Cancel', manage_admin_path(@user), class: 'btn btn-sm btn-outline-secondary'
4
+ = link_to 'Delete', manage_admin_path(@user), method: :delete, data: { confirm: "Are you sure? #{@user.email} will be permanently deleted. This action is irreversible." }, class: 'btn btn-sm btn-outline-secondary'
3
5
 
4
- = render 'form'
5
6
 
6
- .form-container
7
- .center
8
- = link_to 'Back', manage_admins_path
9
- \|
10
- = link_to 'Delete', manage_admin_path(@user), method: :delete, data: { confirm: 'Are you sure? This action is irreversible.' }
11
- \|
12
- = link_to 'Show', manage_admin_path(@user)
7
+ = render 'form'
@@ -1,15 +1,11 @@
1
- %section.section.manage
2
- %h1.section-title= title "Listing Admins"
1
+ = render "layouts/manage/page_title", title: "Admins" do
2
+ = link_to "New Admin", new_manage_admin_path, class: "btn btn-sm btn-outline-secondary"
3
3
 
4
- %table.users.datatable.row-border.stripe.hover.order-column{ "data-source" => datatable_manage_admins_path(format: :json) }
4
+ %div
5
+ %table.users.datatable.table.table-striped.table-hover{ "data-source" => datatable_manage_admins_path(format: :json) }
5
6
  %thead
6
7
  %tr
7
- %th
8
8
  %th ID
9
9
  %th Email
10
10
  %th Access Level
11
11
  %tbody
12
-
13
- - unless current_user.admin_limited_access
14
- %br
15
- = btn_link_to 'New Admin', new_manage_admin_path
@@ -1,8 +1,7 @@
1
- %section.section.manage
2
- %h1.section-title= title "New Admin"
1
+ = render "layouts/manage/page_title", title: "New Admin"
3
2
 
4
- = render 'form'
3
+ = render 'form'
5
4
 
6
- .form-container
7
- .center
8
- = link_to 'Back', manage_admins_path
5
+ .form-container
6
+ .center
7
+ = link_to 'Back', manage_admins_path
@@ -1,15 +1,13 @@
1
- %section.section.manage
2
- %h1.section-title= title "Edit Admin"
1
+ = render "layouts/manage/page_title", title: @user.email do
2
+ - unless current_user.admin_limited_access
3
+ .btn-group
4
+ = link_to 'Edit', edit_manage_admin_path(@user), class: 'btn btn-sm btn-outline-secondary'
5
+ = link_to 'Delete', manage_admin_path(@user), method: :delete, data: { confirm: "Are you sure? #{@user.email} will be permanently deleted. This action is irreversible." }, class: 'btn btn-sm btn-outline-secondary'
3
6
 
4
- .form-container
5
- %p
6
- %b Email Address:
7
- = @user.email
8
- %p
9
- %b Access Level:
10
- = @user.admin_limited_access ? "Limited Access" : "Full Access"
11
-
12
- - unless current_user.admin_limited_access
13
- = link_to 'Edit', edit_manage_admin_path(@user)
14
- \|
15
- = link_to 'Back', manage_admins_path
7
+ %div
8
+ %p
9
+ %b Email address:
10
+ = @user.email
11
+ %p
12
+ %b Access level:
13
+ = @user.admin_limited_access ? "Limited Access" : "Full Access"
@@ -1,15 +1,12 @@
1
1
  .form-container
2
- = simple_form_for(@bus_list, url: url_for(action: @bus_list.new_record? ? "create" : "update", controller: "bus_lists")) do |f|
2
+ = bs_horizontal_simple_form_for(@bus_list, url: url_for(action: @bus_list.new_record? ? "create" : "update", controller: "bus_lists")) do |f|
3
3
  = f.error_notification
4
4
 
5
5
  .form-inputs
6
6
  = f.input :name
7
7
  = f.input :capacity
8
8
  = f.input :needs_bus_captain
9
- = f.input :notes, input_html: { rows: 10 }
10
- %p
11
- %small
12
- %em Notes support Markdown and HTML.
9
+ = f.input :notes, input_html: { rows: 15 }
13
10
 
14
11
  .form-actions
15
- = f.button :submit
12
+ = f.button :submit, class: 'btn-primary'
@@ -1,8 +1,4 @@
1
- %section.section.manage
2
- %h1.section-title= title "Edit Bus List"
1
+ = render "layouts/manage/page_title", title: "Edit Bus List", subtitle: @bus_list.name do
2
+ = link_to 'Cancel', manage_bus_list_path(@bus_list), class: 'btn btn-sm btn-outline-secondary'
3
3
 
4
- = render 'form'
5
-
6
- = link_to 'Show', manage_bus_list_path(@bus_list)
7
- \|
8
- = link_to 'Back', manage_bus_list_path
4
+ = render 'form'
@@ -1,26 +1,19 @@
1
- %section.section.manage
2
- %h1.section-title= title "Listing Bus Lists"
1
+ = render "layouts/manage/page_title", title: "Bus Lists" do
2
+ = link_to "New Bus List", new_manage_bus_list_path, class: "btn btn-sm btn-outline-secondary"
3
3
 
4
- %table.table
5
- %tr
6
- %th Name
7
- %th Capacity
8
- %th Needs Captain?
9
- %th Schools
10
- %th Actions
11
- %th
12
- %th
13
-
14
- - @bus_lists.each do |bus_list|
4
+ %div
5
+ %table.table.table-striped.table-hover
6
+ %thead
15
7
  %tr
16
- %td= bus_list.name
17
- %td= "#{bus_list.passengers.count} / #{bus_list.capacity}"
18
- %td= bus_list.needs_bus_captain ? "Yes" : "No"
19
- %td= bus_list.schools.count
20
- %td= link_to 'Show', manage_bus_list_path(bus_list)
21
- %td= link_to 'Edit', edit_manage_bus_list_path(bus_list)
22
- %td= link_to 'Destroy', manage_bus_list_path(bus_list), :method => :delete, :data => { :confirm => 'Are you sure?' }
23
-
24
- %br
8
+ %th Name
9
+ %th Capacity
10
+ %th Needs Captain?
11
+ %th Schools
25
12
 
26
- = btn_link_to 'New Bus List', new_manage_bus_list_path
13
+ %tbody
14
+ - @bus_lists.each do |bus_list|
15
+ %tr
16
+ %td= link_to(bus_list.name, manage_bus_list_path(bus_list))
17
+ %td #{bus_list.passengers.count} / #{bus_list.capacity}
18
+ %td= bus_list.needs_bus_captain ? "<strong class=\"text-danger\">Yes</strong>".html_safe : "No"
19
+ %td= bus_list.schools.count
@@ -1,6 +1,3 @@
1
- %section.section.manage
2
- %h1.section-title= title "New Bus List"
1
+ = render "layouts/manage/page_title", title: "New Bus List"
3
2
 
4
- = render 'form'
5
-
6
- = link_to 'Back', manage_bus_lists_path
3
+ = render 'form'
@@ -1,59 +1,45 @@
1
- %section.section.manage
2
- %h1.section-title= title "Bus List"
1
+ = render "layouts/manage/page_title", title: @bus_list.name, subtitle: "Bus List" do
2
+ .btn-group
3
+ = link_to 'Edit', edit_manage_bus_list_path(@bus_list), class: 'btn btn-sm btn-outline-secondary'
4
+ = link_to 'Delete', manage_bus_list_path(@bus_list), method: :delete, data: { confirm: "Are you sure? The bus list \"#{@bus_list.name}\" will be permanently erased. This action is irreversible." }, class: 'btn btn-sm btn-outline-secondary'
5
+ = link_to 'Send Email Update', send_update_email_manage_bus_list_path(@bus_list), method: :patch, data: { confirm: "Are you sure? All passengers for \"#{@bus_list.name}\" will be emailed the current bus notes." }, class: 'btn btn-sm btn-outline-secondary'
3
6
 
4
- %p
5
- %b Name:
6
- = @bus_list.name
7
- %p
8
- %b Capacity:
9
- = @bus_list.capacity
10
- %p
11
- %b Needs bus captain:
12
- = @bus_list.needs_bus_captain ? "Yes" : "No"
13
- %p
14
- %b Schools:
7
+ .row
8
+ .col-lg-6
9
+ %h4.border-bottom.pb-2.mb-3 Details
10
+ %dl.row
11
+ %dt.col-md-5 Name
12
+ %dd.col-md-7= @bus_list.name
13
+ %dt.col-md-5 Capacity
14
+ %dd.col-md-7= @bus_list.capacity
15
+ %dt.col-md-5 Needs bus captain?
16
+ %dd.col-md-7= @bus_list.needs_bus_captain ? "Yes" : "No"
17
+ %h4.border-bottom.pb-2.mb-3 Schools
15
18
  %ul
16
19
  - @bus_list.schools.each do |school|
17
- %li= link_to(school.name, manage_school_path(school))
20
+ %li.pb-2
21
+ = link_to(school.name, manage_school_path(school))
22
+ %br
23
+ %small.text-muted
24
+ - accepted = school.questionnaires.where(acc_status: 'accepted').count
25
+ - no_bus = school.questionnaires.where(acc_status: 'rsvp_confirmed', riding_bus: false).count
26
+ #{accepted} yet to RSVP, #{no_bus} attending but not using bus
18
27
 
19
- = render partial: 'bus_list_info', locals: { bus_list: @bus_list }
28
+ .col-lg-6
29
+ %h4.border-bottom.pb-2.mb-3 Bus Notes
30
+ .card.mb-2
31
+ .card-body
32
+ = render partial: 'bus_list_info', locals: { bus_list: @bus_list }
33
+ %p.small.text-muted
34
+ %span.fa.fa-info-circle.icon-space-l.icon-space-r-half
35
+ These notes are provided to applicants, and included in email updates.
36
+
37
+ .row.mt-2
38
+ .col
39
+ %h4.pb-2
40
+ Passengers
41
+ %small.text-muted (#{@bus_list.passengers.count} total, #{@bus_list.checked_in_passengers.count} checked in)
20
42
 
21
- %p
22
- %strong Passengers:
23
- = "(#{@bus_list.passengers.count} total, #{@bus_list.checked_in_passengers.count} checked in)"
24
- %table.table
25
- %thead
26
- %tr
27
- %th
28
- %th First Name
29
- %th Last Name
30
- %th Email
31
- %th Phone Number
32
- %th School
33
- %th Boarded bus?
34
- %th Checked in?
35
- - unless current_user.admin_limited_access
36
- %th Actions
37
- %tbody
38
- - @bus_list.passengers.each do |p|
39
- %tr
40
- %td= link_to '<i class="fa fa-search"></i>'.html_safe, manage_questionnaire_path(p)
41
- %td= p.first_name
42
- %td= p.last_name
43
- %td= p.email
44
- %td= phone_link_to p.phone
45
- %td= link_to p.school.name, manage_school_path(p.school)
46
- %td= p.boarded_bus? ? '<span class="acc-status-accepted">Yes</span>'.html_safe : 'No'
47
- %td= p.checked_in? ? '<span class="acc-status-accepted">Yes</span>'.html_safe : 'No'
48
- - unless current_user.admin_limited_access
49
- %td
50
- - if p.is_bus_captain?
51
- = link_to "Remove Bus Captain", toggle_bus_captain_manage_bus_list_path(@bus_list, questionnaire_id: p.id, bus_captain: '0'), method: 'post'
52
- - else
53
- = link_to "Make Bus Captain", toggle_bus_captain_manage_bus_list_path(@bus_list, questionnaire_id: p.id, bus_captain: '1'), method: 'post', data: { confirm: 'Are you sure? This will send a confirmation email to the bus captain.' }
54
- - if @bus_list.needs_bus_captain
55
- %p
56
- %strong Possible Bus Captains:
57
43
  %table.table
58
44
  %thead
59
45
  %tr
@@ -63,10 +49,11 @@
63
49
  %th Email
64
50
  %th Phone Number
65
51
  %th School
66
- - unless current_user.admin_limited_access
67
- %th Actions
52
+ %th Boarded bus?
53
+ %th Checked in?
54
+ %th Bus Captain
68
55
  %tbody
69
- - @bus_list.passengers.select { |q| q.bus_captain_interest }.each do |p|
56
+ - @bus_list.passengers.each do |p|
70
57
  %tr
71
58
  %td= link_to '<i class="fa fa-search"></i>'.html_safe, manage_questionnaire_path(p)
72
59
  %td= p.first_name
@@ -74,20 +61,45 @@
74
61
  %td= p.email
75
62
  %td= phone_link_to p.phone
76
63
  %td= link_to p.school.name, manage_school_path(p.school)
77
- - unless current_user.admin_limited_access
64
+ %td= p.boarded_bus? ? '<span class="text-success">Yes</span>'.html_safe : 'No'
65
+ %td= p.checked_in? ? '<span class="text-success">Yes</span>'.html_safe : 'No'
66
+ - if current_user.admin_limited_access
67
+ %td= p.is_bus_captain? ? "Yes" : "No"
68
+ - else
78
69
  %td
79
70
  - if p.is_bus_captain?
80
- = link_to "Remove Bus Captain", toggle_bus_captain_manage_bus_list_path(@bus_list, questionnaire_id: p.id, bus_captain: '0'), method: 'post'
71
+ = link_to "Remove", toggle_bus_captain_manage_bus_list_path(@bus_list, questionnaire_id: p.id, bus_captain: '0'), method: 'post', class: 'text-danger'
81
72
  - else
82
- = link_to "Make Bus Captain", toggle_bus_captain_manage_bus_list_path(@bus_list, questionnaire_id: p.id, bus_captain: '1'), method: 'post', data: { confirm: 'Are you sure? This will send a confirmation email to the bus captain.' }
73
+ = link_to "Promote", toggle_bus_captain_manage_bus_list_path(@bus_list, questionnaire_id: p.id, bus_captain: '1'), method: 'post', data: { confirm: "Are you sure you want to make #{p.full_name} a bus captain? They will receive a confirmation email." }
83
74
 
84
- = render partial: 'bus_list_stats', locals: { bus_list: @bus_list }
85
-
86
- %hr
75
+ - if @bus_list.needs_bus_captain
76
+ %h4.mt-4.pb-2 Possible Bus Captains
77
+ %table.table
78
+ %thead
79
+ %tr
80
+ %th
81
+ %th First Name
82
+ %th Last Name
83
+ %th Email
84
+ %th Phone Number
85
+ %th School
86
+ - unless current_user.admin_limited_access
87
+ %th Actions
88
+ %tbody
89
+ - @bus_list.passengers.select { |q| q.bus_captain_interest }.each do |p|
90
+ %tr
91
+ %td= link_to '<i class="fa fa-search"></i>'.html_safe, manage_questionnaire_path(p)
92
+ %td= p.first_name
93
+ %td= p.last_name
94
+ %td= p.email
95
+ %td= phone_link_to p.phone
96
+ %td= link_to p.school.name, manage_school_path(p.school)
97
+ - unless current_user.admin_limited_access
98
+ %td
99
+ - if p.is_bus_captain?
100
+ = link_to "Remove Bus Captain", toggle_bus_captain_manage_bus_list_path(@bus_list, questionnaire_id: p.id, bus_captain: '0'), method: 'post', class: 'text-danger'
101
+ - else
102
+ = link_to "Make Bus Captain", toggle_bus_captain_manage_bus_list_path(@bus_list, questionnaire_id: p.id, bus_captain: '1'), method: 'post', data: { confirm: 'Are you sure? This will send a confirmation email to the bus captain.' }
87
103
 
88
- - unless current_user.admin_limited_access?
89
- = link_to 'Edit', edit_manage_bus_list_path(@bus_list)
90
- \|
91
- = link_to 'Send Email Update', send_update_email_manage_bus_list_path(@bus_list), method: :patch, data: { confirm: "Are you sure? All passengers for \"#{@bus_list.name}\" will be emailed the current bus notes." }
92
- \|
93
- = link_to 'Back', manage_bus_lists_path
104
+ .alert.alert-info
105
+ = render partial: 'bus_list_stats', locals: { bus_list: @bus_list }
@@ -1,29 +1,33 @@
1
- %section.section.manage
2
- %h1.section-title= title "Hackathon Configuration"
1
+ = render "layouts/manage/page_title", title: "Hackathon Configuration"
3
2
 
4
- %fieldset
5
- %legend Environment Variables
6
- %p
7
- %em
8
- Environment variables are configured on the production server.
9
- %p
10
- %b Carpool Link:
11
- %pre= ENV['CARPOOL_LINK'] || '[No value]'
12
- %p
13
- %b Slack Sign Up URL:
14
- %pre= ENV['SLACK_SIGNUP_URL'] || '[No value]'
15
- %p
16
- %b AWS S3 Bucket for Resumes:
17
- %pre= ENV['AWS_BUCKET'] || '[No value]'
3
+ .row
4
+ .col-lg-6
5
+ .card
6
+ .card-body
7
+ %h5.card-title Hackathon Manager Config
8
+ %h6.card-subtitle.mb-2.text-muted
9
+ Hackathon Manager configuration can be changed in the source code at
10
+ %code config/hackathon.yml
11
+ \.
12
+ %hr
13
+ - Rails.configuration.hackathon.keys.each do |key|
14
+ %p
15
+ %b #{key}:
16
+ %pre= Rails.configuration.hackathon[key]
18
17
 
19
- %fieldset
20
- %legend Hackathon Manager Config
21
- %p
22
- %em
23
- Hackathon Manager configuration can be changed in the source code at
24
- %code config/hackathon.yml
25
- \.
26
- - Rails.configuration.hackathon.keys.each do |key|
27
- %p
28
- %b #{key}:
29
- %pre= Rails.configuration.hackathon[key]
18
+ .col-lg-6
19
+ .card
20
+ .card-body
21
+ %h5.card-title Environment Variables
22
+ %h6.card-subtitle.mb-2.text-muted
23
+ Environment variables are configured on the production server.
24
+ %hr
25
+ %p
26
+ %b Carpool Link:
27
+ %pre= ENV['CARPOOL_LINK'] || '[No value]'
28
+ %p
29
+ %b Slack Sign Up URL:
30
+ %pre= ENV['SLACK_SIGNUP_URL'] || '[No value]'
31
+ %p
32
+ %b AWS S3 Bucket for Resumes:
33
+ %pre= ENV['AWS_BUCKET'] || '[No value]'
@@ -9,23 +9,25 @@
9
9
  = javascript_include_tag "hackathon_manager/vendor/queue.v1.min.js"
10
10
  = javascript_include_tag "hackathon_manager/vendor/topojson.v1.min.js"
11
11
 
12
- %section.section.manage
13
- %h1.section-title= title "Dashboard"
12
+ = render "layouts/manage/page_title", title: "Dashboard"
14
13
 
15
- .container.container-full
14
+ .row
15
+ .col
16
16
  #map
17
17
  :javascript
18
18
  $('#map').initMap();
19
19
 
20
- .container.container-half{ style: "width: 59%" }
21
- %h4.dashboard-container-title Today's Activity
20
+ .row
21
+ .col-7
22
+ %h5.dashboard-container-title Today's Activity
22
23
  = area_chart todays_activity_data_manage_dashboard_index_path, colors: [blue, green, red, grey]
23
- .container.container-half{ style: "width: 39%" }
24
- %h4.dashboard-container-title Today's Stats
24
+ .col
25
+ %h5.dashboard-container-title Today's Stats
25
26
  = pie_chart todays_stats_data_manage_dashboard_index_path, colors: [blue, green, red, grey]
26
27
 
27
- .container.container-full
28
- %h4.dashboard-container-title Confirmation Activity
28
+ .row
29
+ .col
30
+ %h5.dashboard-container-title Confirmation Activity
29
31
  .graph-overlay.double-metrics
30
32
  %h3= Questionnaire.where("checked_in_at != 0").count
31
33
  %p total checked in
@@ -33,29 +35,36 @@
33
35
  %p total confirmed
34
36
  = area_chart confirmation_activity_data_manage_dashboard_index_path, colors: [green, red], library: { legend: { enabled: false } }
35
37
 
36
- .container.container-full
37
- %h4.dashboard-container-title Application Activity
38
+ .row
39
+ .col
40
+ %h5.dashboard-container-title Application Activity
38
41
  .graph-overlay
39
42
  %h3= Questionnaire.count
40
43
  %p total applications
41
44
  = area_chart application_activity_data_manage_dashboard_index_path, colors: [blue, orange, grey], library: { legend: { enabled: false } }
42
45
 
43
- .container.container-half
44
- %h4.dashboard-container-title User Distribution
46
+ .row
47
+ .col
48
+ %h5.dashboard-container-title User Distribution
45
49
  = pie_chart user_distribution_data_manage_dashboard_index_path, colors: [grey, blue, orange]
46
- .container.container-half
47
- %h4.dashboard-container-title Application Distribution
50
+ .col
51
+ %h5.dashboard-container-title Application Distribution
48
52
  = pie_chart application_distribution_data_manage_dashboard_index_path, colors: [colors[:pending], colors[:accepted], colors[:waitlisted], colors[:denied], colors[:late_waitlist], colors[:rsvp_confirmed], colors[:rsvp_denied]]
49
53
 
50
- .container.container-full
51
- %h4.dashboard-container-title Schools (Confirmed)
54
+ .row
55
+ .col
56
+ %h5.dashboard-container-title Schools (Confirmed)
52
57
  %ul
53
58
  = bar_chart schools_confirmed_data_manage_dashboard_index_path, height: "600px", stacked: true, colors: [blue, orange]
54
- %h4.dashboard-container-title Schools (Applied)
59
+
60
+ .row
61
+ .col
62
+ %h5.dashboard-container-title Schools (Applied)
55
63
  %ul
56
64
  = bar_chart schools_applied_data_manage_dashboard_index_path, height: "600px", stacked: true, colors: [colors[:rsvp_confirmed], colors[:accepted], colors[:waitlist], colors[:late_waitlist], colors[:rsvp_denied], colors[:denied], colors[:pending]], library: { legend: { enabled: false } }
57
65
  - if School.where("questionnaire_count >= 1 AND questionnaire_count < 5").count > 0
58
- %button{ onclick: "$('#least-applied-schools').toggle()" }= "List schools with < 5 applicants"
66
+ %p
67
+ %button.btn.btn-light{ onclick: "$('#least-applied-schools').toggle()" }= "List schools with < 5 applicants"
59
68
  %ul#least-applied-schools{ style: "display: none" }
60
69
  - School.where("questionnaire_count >= 1 AND questionnaire_count < 5").select([:name, :questionnaire_count]).order("questionnaire_count DESC").each do |school|
61
70
  %li= "#{school.questionnaire_count} - #{school.name}"