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.
- checksums.yaml +5 -5
- data/README.md +7 -1
- data/app/assets/javascripts/hackathon_manager/manage/application.js +4 -6
- data/app/assets/javascripts/hackathon_manager/manage/lib/datatables.js +82 -0
- data/app/assets/javascripts/hackathon_manager/manage/lib/setupDataTables.js +13 -64
- data/app/assets/javascripts/hackathon_manager/vendor/datatables.min.js +290 -0
- data/app/assets/stylesheets/hackathon_manager/dashboard.css +109 -0
- data/app/assets/stylesheets/hackathon_manager/datatables.min.css +18 -0
- data/app/assets/stylesheets/hackathon_manager/manage.sass +64 -47
- data/app/controllers/manage/stats_controller.rb +66 -30
- data/app/controllers/rsvps_controller.rb +2 -0
- data/app/datatables/admin_datatable.rb +3 -3
- data/app/datatables/message_datatable.rb +5 -5
- data/app/datatables/questionnaire_datatable.rb +6 -5
- data/app/datatables/school_datatable.rb +3 -3
- data/app/helpers/hackathon_manager_helper.rb +63 -4
- data/app/helpers/manage/bootstrap_form_helper.rb +98 -0
- data/app/models/bus_list.rb +1 -1
- data/app/models/message.rb +3 -3
- data/app/models/questionnaire.rb +1 -1
- data/app/models/school.rb +10 -4
- data/app/models/user.rb +3 -1
- data/app/views/application/_triggered_email_summary.html.haml +11 -9
- data/app/views/layouts/hackathon_manager/application.html.haml +4 -0
- data/app/views/layouts/manage/_flashes.html.haml +4 -0
- data/app/views/layouts/manage/_page_title.html.haml +8 -0
- data/app/views/layouts/manage/application.html.haml +72 -19
- data/app/views/manage/admins/_form.html.haml +4 -5
- data/app/views/manage/admins/edit.html.haml +5 -10
- data/app/views/manage/admins/index.html.haml +4 -8
- data/app/views/manage/admins/new.html.haml +5 -6
- data/app/views/manage/admins/show.html.haml +12 -14
- data/app/views/manage/bus_lists/_form.html.haml +3 -6
- data/app/views/manage/bus_lists/edit.html.haml +3 -7
- data/app/views/manage/bus_lists/index.html.haml +16 -23
- data/app/views/manage/bus_lists/new.html.haml +2 -5
- data/app/views/manage/bus_lists/show.html.haml +78 -66
- data/app/views/manage/configs/show.html.haml +31 -27
- data/app/views/manage/dashboard/index.html.haml +28 -19
- data/app/views/manage/dashboard/map_data.tsv.erb +6 -13
- data/app/views/manage/messages/_form.html.haml +3 -3
- data/app/views/manage/messages/edit.html.haml +3 -10
- data/app/views/manage/messages/index.html.haml +5 -10
- data/app/views/manage/messages/new.html.haml +2 -7
- data/app/views/manage/messages/show.html.haml +65 -67
- data/app/views/manage/questionnaires/_acc_status_badge.html.haml +2 -0
- data/app/views/manage/questionnaires/_check_in_badge.html.haml +4 -0
- data/app/views/manage/questionnaires/_checkin.html.haml +40 -0
- data/app/views/manage/questionnaires/_form.html.haml +21 -21
- data/app/views/manage/questionnaires/_history.html.haml +7 -0
- data/app/views/manage/questionnaires/_overview.html.haml +126 -0
- data/app/views/manage/questionnaires/edit.html.haml +5 -11
- data/app/views/manage/questionnaires/index.html.haml +19 -23
- data/app/views/manage/questionnaires/new.html.haml +2 -7
- data/app/views/manage/questionnaires/show.html.haml +28 -65
- data/app/views/manage/schools/_form.html.haml +2 -2
- data/app/views/manage/schools/edit.html.haml +5 -11
- data/app/views/manage/schools/index.html.haml +4 -8
- data/app/views/manage/schools/merge.html.haml +6 -8
- data/app/views/manage/schools/new.html.haml +2 -7
- data/app/views/manage/schools/show.html.haml +58 -55
- data/app/views/manage/stats/index.html.haml +18 -15
- data/app/views/questionnaires/_form.html.haml +2 -2
- data/config/initializers/simple_form.rb +4 -0
- data/config/initializers/simple_form_bootstrap.rb +412 -0
- data/config/locales/en.yml +73 -0
- data/db/migrate/20180701160855_remove_email_from_questionnaires.rb +5 -0
- data/lib/hackathon_manager/version.rb +1 -1
- metadata +39 -31
- data/app/assets/javascripts/hackathon_manager/vendor/buttons.colVis.min.js +0 -6
- data/app/assets/javascripts/hackathon_manager/vendor/buttons.html5.min.js +0 -22
- data/app/assets/javascripts/hackathon_manager/vendor/dataTables.buttons.min.js +0 -35
- data/app/assets/javascripts/hackathon_manager/vendor/jquery.dataTables.min.js +0 -164
- data/app/assets/javascripts/hackathon_manager/vendor/pdfmake.min.js +0 -22
- data/app/assets/stylesheets/hackathon_manager/datatables/buttons.dataTables.min.css +0 -1
- data/app/assets/stylesheets/hackathon_manager/datatables/jquery.dataTables.min.css +0 -1
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
body {
|
|
2
|
+
font-size: .875rem;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* Sidebar
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
.sidebar {
|
|
10
|
+
position: fixed;
|
|
11
|
+
top: 0;
|
|
12
|
+
bottom: 0;
|
|
13
|
+
left: 0;
|
|
14
|
+
z-index: 100; /* Behind the navbar */
|
|
15
|
+
padding: 48px 0 0; /* Height of navbar */
|
|
16
|
+
box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.sidebar-sticky {
|
|
20
|
+
position: relative;
|
|
21
|
+
top: 0;
|
|
22
|
+
height: calc(100vh - 48px);
|
|
23
|
+
padding-top: .5rem;
|
|
24
|
+
overflow-x: hidden;
|
|
25
|
+
overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@supports ((position: -webkit-sticky) or (position: sticky)) {
|
|
29
|
+
.sidebar-sticky {
|
|
30
|
+
position: -webkit-sticky;
|
|
31
|
+
position: sticky;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.sidebar .nav-link {
|
|
36
|
+
font-weight: 500;
|
|
37
|
+
color: #333;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.sidebar .nav-link .fa {
|
|
41
|
+
margin-right: 4px;
|
|
42
|
+
color: #999;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.sidebar .nav-link.active {
|
|
46
|
+
color: #007bff;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.sidebar .nav-link:hover .fa,
|
|
50
|
+
.sidebar .nav-link.active .fa {
|
|
51
|
+
color: inherit;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.sidebar-heading {
|
|
55
|
+
font-size: .75rem;
|
|
56
|
+
text-transform: uppercase;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.nav-item-description {
|
|
60
|
+
font-size: 10px;
|
|
61
|
+
margin-top: 1px;
|
|
62
|
+
margin-left: 26px;
|
|
63
|
+
color: #999;
|
|
64
|
+
line-height: 1.2;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/*
|
|
68
|
+
* Content
|
|
69
|
+
*/
|
|
70
|
+
|
|
71
|
+
[role="main"] {
|
|
72
|
+
padding-top: 48px; /* Space for fixed navbar */
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/*
|
|
76
|
+
* Navbar
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
.navbar-brand {
|
|
80
|
+
padding-top: .75rem;
|
|
81
|
+
padding-bottom: .75rem;
|
|
82
|
+
font-size: 1rem;
|
|
83
|
+
background-color: rgba(0, 0, 0, .25);
|
|
84
|
+
box-shadow: inset -1px 0 0 rgba(0, 0, 0, .25);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.navbar .form-control {
|
|
88
|
+
padding: .75rem 1rem;
|
|
89
|
+
border-width: 0;
|
|
90
|
+
border-radius: 0;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.form-control-dark {
|
|
94
|
+
color: #fff;
|
|
95
|
+
background-color: rgba(255, 255, 255, .1);
|
|
96
|
+
border-color: rgba(255, 255, 255, .1);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.form-control-dark:focus {
|
|
100
|
+
border-color: transparent;
|
|
101
|
+
box-shadow: 0 0 0 3px rgba(255, 255, 255, .25);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/*
|
|
105
|
+
* Utilities
|
|
106
|
+
*/
|
|
107
|
+
|
|
108
|
+
.border-top { border-top: 1px solid #e5e5e5; }
|
|
109
|
+
.border-bottom { border-bottom: 1px solid #e5e5e5; }
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This combined file was created by the DataTables downloader builder:
|
|
3
|
+
* https://datatables.net/download
|
|
4
|
+
*
|
|
5
|
+
* To rebuild or modify this file with the latest versions of the included
|
|
6
|
+
* software please visit:
|
|
7
|
+
* https://datatables.net/download/#bs4/pdfmake-0.1.36/dt-1.10.18/b-1.5.2/b-colvis-1.5.1/b-html5-1.5.2
|
|
8
|
+
*
|
|
9
|
+
* Included libraries:
|
|
10
|
+
* pdfmake 0.1.36, DataTables 1.10.18, Buttons 1.5.2, Column visibility 1.5.1, HTML5 export 1.5.2
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important;border-spacing:0}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:0.85em;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:before,table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:0.9em;display:block;opacity:0.3}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;content:"\2191"}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{right:0.5em;content:"\2193"}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:before,div.dataTables_scrollBody table thead .sorting_asc:before,div.dataTables_scrollBody table thead .sorting_desc:before,div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-sm>thead>tr>th{padding-right:20px}table.dataTable.table-sm .sorting:before,table.dataTable.table-sm .sorting_asc:before,table.dataTable.table-sm .sorting_desc:before{top:5px;right:0.85em}table.dataTable.table-sm .sorting:after,table.dataTable.table-sm .sorting_asc:after,table.dataTable.table-sm .sorting_desc:after{top:5px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0}
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}ul.dt-button-collection.dropdown-menu{display:block;z-index:2002;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}ul.dt-button-collection.dropdown-menu.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}ul.dt-button-collection.dropdown-menu.fixed.two-column{margin-left:-150px}ul.dt-button-collection.dropdown-menu.fixed.three-column{margin-left:-225px}ul.dt-button-collection.dropdown-menu.fixed.four-column{margin-left:-300px}ul.dt-button-collection.dropdown-menu>*{-webkit-column-break-inside:avoid;break-inside:avoid}ul.dt-button-collection.dropdown-menu.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}ul.dt-button-collection.dropdown-menu.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}ul.dt-button-collection.dropdown-menu.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}ul.dt-button-collection.dropdown-menu .dt-button{border-radius:0}ul.dt-button-collection{-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}ul.dt-button-collection.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}ul.dt-button-collection.fixed.two-column{margin-left:-150px}ul.dt-button-collection.fixed.three-column{margin-left:-225px}ul.dt-button-collection.fixed.four-column{margin-left:-300px}ul.dt-button-collection>*{-webkit-column-break-inside:avoid;break-inside:avoid}ul.dt-button-collection.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}ul.dt-button-collection.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}ul.dt-button-collection.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}ul.dt-button-collection .dt-button{border-radius:0}ul.dt-button-collection.fixed{max-width:none}ul.dt-button-collection.fixed:before,ul.dt-button-collection.fixed:after{display:none}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:999}@media screen and (max-width: 767px){div.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:0.5em}div.dt-buttons a.btn{float:none}}div.dt-buttons button.btn.processing,div.dt-buttons div.btn.processing,div.dt-buttons a.btn.processing{color:rgba(0,0,0,0.2)}div.dt-buttons button.btn.processing:after,div.dt-buttons div.btn.processing:after,div.dt-buttons a.btn.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:' ';border:2px solid #282828;border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}
|
|
17
|
+
|
|
18
|
+
|
|
@@ -1,50 +1,68 @@
|
|
|
1
|
-
@import
|
|
2
|
-
@import
|
|
3
|
-
|
|
1
|
+
@import bootstrap
|
|
2
|
+
@import dashboard
|
|
3
|
+
|
|
4
|
+
$grey-dark: #555
|
|
5
|
+
$grey-med: #999
|
|
6
|
+
|
|
7
|
+
// external dependencies
|
|
8
|
+
@import font-awesome
|
|
9
|
+
@import datatables.min
|
|
4
10
|
@import selectize
|
|
5
11
|
@import selectize.default
|
|
6
12
|
|
|
7
|
-
.
|
|
8
|
-
|
|
9
|
-
padding-right: 20px
|
|
10
|
-
padding-top: 50px
|
|
11
|
-
|
|
12
|
-
.container-half, .container-full
|
|
13
|
-
max-width: none
|
|
14
|
-
@media (max-width: 600px)
|
|
15
|
-
padding-left: 0
|
|
16
|
-
padding-right: 0
|
|
17
|
-
.container-half
|
|
18
|
-
display: inline-block
|
|
19
|
-
width: 49.6% // weird issue with percentaces
|
|
20
|
-
vertical-align: top
|
|
21
|
-
@media (max-width: 600px)
|
|
22
|
-
width: 100%
|
|
23
|
-
.container-full
|
|
24
|
-
display: inline-block
|
|
25
|
-
width: 100%
|
|
26
|
-
vertical-align: top
|
|
27
|
-
margin: 0
|
|
13
|
+
.icon-space-r
|
|
14
|
+
margin-right: 0.5em
|
|
28
15
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
16
|
+
.icon-space-l
|
|
17
|
+
margin-left: 0.5em
|
|
18
|
+
|
|
19
|
+
.icon-space-r-half
|
|
20
|
+
margin-right: 0.25em
|
|
21
|
+
|
|
22
|
+
.icon-space-l-half
|
|
23
|
+
margin-left: 0.25em
|
|
24
|
+
|
|
25
|
+
// .manage
|
|
26
|
+
// padding-left: 20px
|
|
27
|
+
// padding-right: 20px
|
|
28
|
+
// padding-top: 50px
|
|
29
|
+
|
|
30
|
+
// .container-half, .container-full
|
|
31
|
+
// max-width: none
|
|
32
|
+
// @media (max-width: 600px)
|
|
33
|
+
// padding-left: 0
|
|
34
|
+
// padding-right: 0
|
|
35
|
+
// .container-half
|
|
36
|
+
// display: inline-block
|
|
37
|
+
// width: 49.6% // weird issue with percentaces
|
|
38
|
+
// vertical-align: top
|
|
39
|
+
// @media (max-width: 600px)
|
|
40
|
+
// width: 100%
|
|
41
|
+
// .container-full
|
|
42
|
+
// display: inline-block
|
|
43
|
+
// width: 100%
|
|
44
|
+
// vertical-align: top
|
|
45
|
+
// margin: 0
|
|
46
|
+
|
|
47
|
+
// #manageNav
|
|
48
|
+
// z-index: 1
|
|
49
|
+
// width: 100%
|
|
50
|
+
// background: $black
|
|
51
|
+
// color: $white
|
|
52
|
+
// padding: 16px 20px 6px
|
|
53
|
+
// p, a
|
|
54
|
+
// margin: 0 5px 10px
|
|
55
|
+
// p
|
|
56
|
+
// color: $primary
|
|
57
|
+
// display: inline-block
|
|
58
|
+
// margin-top: 0
|
|
59
|
+
// &:first-child
|
|
60
|
+
// margin-right: 10px
|
|
61
|
+
// a
|
|
62
|
+
// color: $white
|
|
63
|
+
// display: inline-block
|
|
64
|
+
// &:hover
|
|
65
|
+
// color: darken($grey-light, 5%)
|
|
48
66
|
|
|
49
67
|
.land
|
|
50
68
|
fill: #dadada
|
|
@@ -69,11 +87,10 @@
|
|
|
69
87
|
text-align: center
|
|
70
88
|
|
|
71
89
|
.dashboard-container-title
|
|
72
|
-
|
|
73
|
-
border-bottom: 5px solid $primary
|
|
90
|
+
border-bottom: 3px solid #e5e5e5
|
|
74
91
|
padding: 9px 12px
|
|
75
|
-
|
|
76
|
-
|
|
92
|
+
margin-top: 12px
|
|
93
|
+
margin-bottom: 8px
|
|
77
94
|
|
|
78
95
|
.graph-overlay
|
|
79
96
|
text-align: center
|
|
@@ -4,31 +4,51 @@ class Manage::StatsController < Manage::ApplicationController
|
|
|
4
4
|
|
|
5
5
|
def dietary_special_needs
|
|
6
6
|
data = Rails.cache.fetch(cache_key_for_questionnaires("dietary_special_needs")) do
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
select_attributes = [
|
|
8
|
+
:first_name,
|
|
9
|
+
:last_name,
|
|
10
|
+
:phone,
|
|
11
|
+
:checked_in_at,
|
|
12
|
+
:dietary_restrictions,
|
|
13
|
+
:special_needs,
|
|
14
|
+
:user_id
|
|
15
|
+
]
|
|
16
|
+
json_attributes = [
|
|
17
|
+
:first_name,
|
|
18
|
+
:last_name,
|
|
19
|
+
:email,
|
|
20
|
+
:phone,
|
|
21
|
+
:checked_in_at,
|
|
22
|
+
:dietary_restrictions,
|
|
23
|
+
:special_needs
|
|
24
|
+
]
|
|
15
25
|
data = Questionnaire.where("dietary_restrictions != '' AND acc_status = 'rsvp_confirmed' OR special_needs != '' AND acc_status = 'rsvp_confirmed'").select(select_attributes)
|
|
16
|
-
to_json_array(data,
|
|
26
|
+
to_json_array(data, json_attributes)
|
|
17
27
|
end
|
|
18
28
|
render json: { data: data }
|
|
19
29
|
end
|
|
20
30
|
|
|
21
31
|
def sponsor_info
|
|
22
32
|
data = Rails.cache.fetch(cache_key_for_questionnaires("sponsor_info")) do
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
33
|
+
select_attributes = [
|
|
34
|
+
:first_name,
|
|
35
|
+
:last_name,
|
|
36
|
+
:vcs_url,
|
|
37
|
+
:portfolio_url,
|
|
38
|
+
:user_id,
|
|
39
|
+
:school_id,
|
|
40
|
+
:resume_file_name
|
|
41
|
+
]
|
|
42
|
+
json_attributes = [
|
|
43
|
+
:first_name,
|
|
44
|
+
:last_name,
|
|
45
|
+
:email,
|
|
46
|
+
:school_name,
|
|
47
|
+
:vcs_url,
|
|
48
|
+
:portfolio_url
|
|
49
|
+
]
|
|
30
50
|
data = Questionnaire.where("can_share_info = '1' AND checked_in_at != 0").select(select_attributes)
|
|
31
|
-
json = to_json_array(data,
|
|
51
|
+
json = to_json_array(data, json_attributes)
|
|
32
52
|
json.map.with_index { |item, index| item.insert(5, data[index].resume? ? data[index].resume.url : '') }
|
|
33
53
|
end
|
|
34
54
|
render json: { data: data }
|
|
@@ -36,15 +56,25 @@ class Manage::StatsController < Manage::ApplicationController
|
|
|
36
56
|
|
|
37
57
|
def alt_travel
|
|
38
58
|
data = Rails.cache.fetch(cache_key_for_questionnaires("alt_travel")) do
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
59
|
+
select_attributes = [
|
|
60
|
+
:id,
|
|
61
|
+
:first_name,
|
|
62
|
+
:last_name,
|
|
63
|
+
:travel_location,
|
|
64
|
+
:acc_status,
|
|
65
|
+
:user_id,
|
|
66
|
+
:school_id
|
|
67
|
+
]
|
|
68
|
+
json_attributes = [
|
|
69
|
+
:id,
|
|
70
|
+
:first_name,
|
|
71
|
+
:last_name,
|
|
72
|
+
:email,
|
|
73
|
+
:travel_location,
|
|
74
|
+
:acc_status
|
|
75
|
+
]
|
|
46
76
|
data = Questionnaire.where("travel_not_from_school = '1'").select(select_attributes)
|
|
47
|
-
json = to_json_array(data,
|
|
77
|
+
json = to_json_array(data, json_attributes)
|
|
48
78
|
json.each do |e|
|
|
49
79
|
e[0] = view_context.link_to("View »".html_safe, manage_questionnaire_path(e[0]))
|
|
50
80
|
end
|
|
@@ -54,16 +84,22 @@ class Manage::StatsController < Manage::ApplicationController
|
|
|
54
84
|
|
|
55
85
|
def mlh_info
|
|
56
86
|
data = Rails.cache.fetch(cache_key_for_questionnaires("mlh_info")) do
|
|
57
|
-
|
|
87
|
+
select_attributes = [
|
|
88
|
+
:first_name,
|
|
89
|
+
:last_name,
|
|
90
|
+
:phone,
|
|
91
|
+
:user_id,
|
|
92
|
+
:school_id
|
|
93
|
+
]
|
|
94
|
+
json_attributes = [
|
|
58
95
|
:first_name,
|
|
59
96
|
:last_name,
|
|
60
97
|
:email,
|
|
61
|
-
:phone
|
|
98
|
+
:phone,
|
|
99
|
+
:school_name
|
|
62
100
|
]
|
|
63
|
-
select_attributes = Array.new(attributes) << [:user_id, :school_id]
|
|
64
|
-
json_attribute = Array.new(attributes) << :school_name
|
|
65
101
|
data = Questionnaire.joins(:school).select(select_attributes)
|
|
66
|
-
to_json_array(data,
|
|
102
|
+
to_json_array(data, json_attributes)
|
|
67
103
|
end
|
|
68
104
|
render json: { data: data }
|
|
69
105
|
end
|
|
@@ -14,16 +14,16 @@ class AdminDatatable < AjaxDatatablesRails::Base
|
|
|
14
14
|
def data
|
|
15
15
|
records.map do |record|
|
|
16
16
|
{
|
|
17
|
-
link: link_to('<i class="fa fa-search"></i>'.html_safe, manage_admin_path(record)),
|
|
18
17
|
id: record.id,
|
|
19
|
-
email: record.email,
|
|
18
|
+
email: link_to(record.email, manage_admin_path(record)),
|
|
20
19
|
admin_limited_access: record.admin_limited_access ? 'Limited Access' : 'Full Access'
|
|
21
20
|
}
|
|
22
21
|
end
|
|
23
22
|
end
|
|
24
23
|
|
|
25
|
-
# rubocop:disable
|
|
24
|
+
# rubocop:disable Naming/AccessorMethodName
|
|
26
25
|
def get_raw_records
|
|
27
26
|
User.where(admin: true)
|
|
28
27
|
end
|
|
28
|
+
# rubocop:enable Naming/AccessorMethodName
|
|
29
29
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
class MessageDatatable < AjaxDatatablesRails::Base
|
|
2
|
-
def_delegators :@view, :link_to, :manage_message_path
|
|
2
|
+
def_delegators :@view, :link_to, :manage_message_path, :display_datetime
|
|
3
3
|
|
|
4
4
|
def view_columns
|
|
5
5
|
@view_columns ||= {
|
|
@@ -16,19 +16,19 @@ class MessageDatatable < AjaxDatatablesRails::Base
|
|
|
16
16
|
def data
|
|
17
17
|
records.map do |record|
|
|
18
18
|
{
|
|
19
|
-
link: link_to('<i class="fa fa-search"></i>'.html_safe, manage_message_path(record)),
|
|
20
19
|
id: record.id,
|
|
21
|
-
name: record.name,
|
|
20
|
+
name: link_to(record.name, manage_message_path(record)),
|
|
22
21
|
subject: record.subject,
|
|
23
22
|
trigger: Message::POSSIBLE_TRIGGERS[record.trigger],
|
|
24
23
|
status: record.status.titleize,
|
|
25
|
-
delivered_at: record.delivered_at.present? ? record.delivered_at
|
|
24
|
+
delivered_at: record.delivered_at.present? ? display_datetime(record.delivered_at) : ''
|
|
26
25
|
}
|
|
27
26
|
end
|
|
28
27
|
end
|
|
29
28
|
|
|
30
|
-
# rubocop:disable
|
|
29
|
+
# rubocop:disable Naming/AccessorMethodName
|
|
31
30
|
def get_raw_records
|
|
32
31
|
Message.unscoped
|
|
33
32
|
end
|
|
33
|
+
# rubocop:enable Naming/AccessorMethodName
|
|
34
34
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
class QuestionnaireDatatable < AjaxDatatablesRails::Base
|
|
2
|
-
def_delegators :@view, :link_to, :manage_questionnaire_path, :manage_school_path, :current_user
|
|
2
|
+
def_delegators :@view, :link_to, :manage_questionnaire_path, :manage_school_path, :current_user, :acc_status_class, :display_datetime
|
|
3
3
|
|
|
4
4
|
def view_columns
|
|
5
5
|
@view_columns ||= {
|
|
@@ -33,16 +33,17 @@ class QuestionnaireDatatable < AjaxDatatablesRails::Base
|
|
|
33
33
|
phone: record.phone,
|
|
34
34
|
gender: record.gender,
|
|
35
35
|
date_of_birth: record.date_of_birth_formatted,
|
|
36
|
-
acc_status: "<span class=\"
|
|
37
|
-
checked_in: record.checked_in? ? '<span class="
|
|
36
|
+
acc_status: "<span class=\"text-#{acc_status_class(record.acc_status)}\">#{record.acc_status.titleize}</span>".html_safe,
|
|
37
|
+
checked_in: record.checked_in? ? '<span class="text-success">Yes</span>'.html_safe : 'No',
|
|
38
38
|
school: link_to(record.school.name, manage_school_path(record.school)),
|
|
39
|
-
created_at: record.created_at.present? ? record.created_at
|
|
39
|
+
created_at: record.created_at.present? ? display_datetime(record.created_at) : ''
|
|
40
40
|
}
|
|
41
41
|
end
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
-
# rubocop:disable
|
|
44
|
+
# rubocop:disable Naming/AccessorMethodName
|
|
45
45
|
def get_raw_records
|
|
46
46
|
Questionnaire.includes(:user, :school).references(:user, :school)
|
|
47
47
|
end
|
|
48
|
+
# rubocop:enable Naming/AccessorMethodName
|
|
48
49
|
end
|