Description:
- countdown timer
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r572:10160025d8ee - - 9 files changed: 65 inserted, 14 deleted

@@ -44,12 +44,13
44
44
45 # jquery addition
45 # jquery addition
46 gem 'jquery-rails'
46 gem 'jquery-rails'
47 gem 'jquery-ui-sass-rails'
47 gem 'jquery-ui-sass-rails'
48 gem 'jquery-timepicker-addon-rails'
48 gem 'jquery-timepicker-addon-rails'
49 gem 'jquery-tablesorter'
49 gem 'jquery-tablesorter'
50 + gem 'jquery-countdown-rails'
50
51
51 #syntax highlighter
52 #syntax highlighter
52 gem 'rouge'
53 gem 'rouge'
53
54
54 #add bootstrap
55 #add bootstrap
55 gem 'bootstrap-sass', '~> 3.2.0'
56 gem 'bootstrap-sass', '~> 3.2.0'
@@ -68,12 +68,13
68 haml (>= 3.1, < 4.1)
68 haml (>= 3.1, < 4.1)
69 railties (>= 3.1, < 4.1)
69 railties (>= 3.1, < 4.1)
70 hike (1.2.3)
70 hike (1.2.3)
71 i18n (0.7.0)
71 i18n (0.7.0)
72 in_place_editing (1.2.0)
72 in_place_editing (1.2.0)
73 journey (1.0.4)
73 journey (1.0.4)
74 + jquery-countdown-rails (2.0.2)
74 jquery-rails (3.1.2)
75 jquery-rails (3.1.2)
75 railties (>= 3.0, < 5.0)
76 railties (>= 3.0, < 5.0)
76 thor (>= 0.14, < 2.0)
77 thor (>= 0.14, < 2.0)
77 jquery-tablesorter (1.13.4)
78 jquery-tablesorter (1.13.4)
78 railties (>= 3.1, < 5)
79 railties (>= 3.1, < 5)
79 jquery-timepicker-addon-rails (1.4.1)
80 jquery-timepicker-addon-rails (1.4.1)
@@ -179,12 +180,13
179 bootstrap-toggle-rails
180 bootstrap-toggle-rails
180 coffee-rails (~> 3.2.2)
181 coffee-rails (~> 3.2.2)
181 dynamic_form
182 dynamic_form
182 haml
183 haml
183 haml-rails
184 haml-rails
184 in_place_editing
185 in_place_editing
186 + jquery-countdown-rails
185 jquery-rails
187 jquery-rails
186 jquery-tablesorter
188 jquery-tablesorter
187 jquery-timepicker-addon-rails
189 jquery-timepicker-addon-rails
188 jquery-ui-sass-rails
190 jquery-ui-sass-rails
189 mail
191 mail
190 momentjs-rails
192 momentjs-rails
@@ -14,21 +14,28
14 //= require jquery_ujs
14 //= require jquery_ujs
15 //= require jquery.ui.all
15 //= require jquery.ui.all
16 //= require bootstrap-sprockets
16 //= require bootstrap-sprockets
17 //= require moment
17 //= require moment
18 //= require bootstrap-sortable
18 //= require bootstrap-sortable
19 //= require select2
19 //= require select2
20 - //= require custom
21 //= require ace-rails-ap
20 //= require ace-rails-ap
22 //= require ace/mode-c_cpp
21 //= require ace/mode-c_cpp
23 //= require ace/mode-ruby
22 //= require ace/mode-ruby
24 //= require ace/mode-pascal
23 //= require ace/mode-pascal
25 //= require ace/mode-javascript
24 //= require ace/mode-javascript
26 //= require ace/mode-java
25 //= require ace/mode-java
27 //= require ace/theme-merbivore
26 //= require ace/theme-merbivore
28 -
27 + //= require custom
28 + //= require jquery.countdown
29 + //-------------- addition from local_jquery -----------
30 + //= require jquery.ui.datepicker
31 + //= require jquery.ui.slider
32 + //= require jquery-ui-timepicker-addon
33 + //= require jquery-tablesorter
34 + //= require best_in_place
35 + //= require best_in_place.jquery-ui
29
36
30 // since this is after blank line, it is not downloaded
37 // since this is after blank line, it is not downloaded
31 //x= require prototype
38 //x= require prototype
32 //x= require prototype_ujs
39 //x= require prototype_ujs
33 //x= require effects
40 //x= require effects
34 //x= require dragdrop
41 //x= require dragdrop
@@ -11,13 +11,13
11
11
12 # document ready
12 # document ready
13
13
14 $ ->
14 $ ->
15 $(".select2").select2()
15 $(".select2").select2()
16 #$(".bootstrap-switch").bootstrapSwitch()
16 #$(".bootstrap-switch").bootstrapSwitch()
17 - $(".bootstrap-toggle").bootstrapToggle()
17 + #$(".bootstrap-toggle").bootstrapToggle()
18 $('.btn-file :file').on 'fileselect', (event, numFiles, label) ->
18 $('.btn-file :file').on 'fileselect', (event, numFiles, label) ->
19 input = $(this).parents('.input-group').find(':text')
19 input = $(this).parents('.input-group').find(':text')
20 log = if numFiles > 1 then numFiles + ' files selected' else label
20 log = if numFiles > 1 then numFiles + ' files selected' else label
21 if input.length
21 if input.length
22 input.val log
22 input.val log
23 else
23 else
@@ -35,13 +35,18
35 target.removeClass 'btn-default'
35 target.removeClass 'btn-default'
36 target.removeClass 'btn-success'
36 target.removeClass 'btn-success'
37 target.addClass 'btn-warning'
37 target.addClass 'btn-warning'
38 target.text '...'
38 target.text '...'
39 return
39 return
40
40
41 +
41 #ace editor
42 #ace editor
42 - e = ace.edit("editor")
43 + if $("#editor").length > 0
43 - e.setTheme('ace/theme/merbivore')
44 + e = ace.edit("editor")
44 - e.getSession().setTabSize(2)
45 + e.setTheme('ace/theme/merbivore')
45 - e.getSession().setUseSoftTabs(true)
46 + e.getSession().setTabSize(2)
47 + e.getSession().setUseSoftTabs(true)
48 +
49 + #best in place
50 + jQuery(".best_in_place").best_in_place()
46
51
47 return
52 return
@@ -14,18 +14,18
14 # *= require_tree .
14 # *= require_tree .
15 # *= require_self
15 # *= require_self
16 */
16 */
17
17
18 @import jquery.ui.all
18 @import jquery.ui.all
19 @import jquery.ui.core
19 @import jquery.ui.core
20 - @import jquery.ui.core
21 @import jquery.ui.theme
20 @import jquery.ui.theme
22 @import jquery.ui.datepicker
21 @import jquery.ui.datepicker
23 @import jquery.ui.slider
22 @import jquery.ui.slider
24 @import jquery-ui-timepicker-addon
23 @import jquery-ui-timepicker-addon
25 @import jquery-tablesorter/theme.metro-dark
24 @import jquery-tablesorter/theme.metro-dark
25 + @import jquery.countdown
26 @import tablesorter-theme.cafe
26 @import tablesorter-theme.cafe
27
27
28 //bootstrap
28 //bootstrap
29 @import bootstrap-sprockets
29 @import bootstrap-sprockets
30 @import bootstrap
30 @import bootstrap
31 @import select2
31 @import select2
@@ -131,12 +131,13
131 'ace/mode/java'
131 'ace/mode/java'
132 else
132 else
133 'ace/mode/c_cpp'
133 'ace/mode/c_cpp'
134 end
134 end
135 end
135 end
136
136
137 +
137 def user_title_bar(user)
138 def user_title_bar(user)
138 header = ''
139 header = ''
139 time_left = ''
140 time_left = ''
140
141
141 #
142 #
142 # if the contest is over
143 # if the contest is over
@@ -1,8 +1,8
1 - - content_for :header do
1 + /- content_for :header do
2 - = javascript_include_tag 'local_jquery'
2 + / = javascript_include_tag 'local_jquery'
3
3
4 %h1 System configuration
4 %h1 System configuration
5
5
6 %table.info
6 %table.info
7 %tr.info-head
7 %tr.info-head
8 %th Key
8 %th Key
@@ -10,15 +10,17
10 %th Value
10 %th Value
11 %th Description
11 %th Description
12 - @configurations.each do |conf|
12 - @configurations.each do |conf|
13 - @grader_configuration = conf
13 - @grader_configuration = conf
14 %tr{:class => cycle("info-odd", "info-even")}
14 %tr{:class => cycle("info-odd", "info-even")}
15 %td
15 %td
16 - = in_place_editor_field :grader_configuration, :key, {}, :rows=>1
16 + /= in_place_editor_field :grader_configuration, :key, {}, :rows=>1
17 + = @grader_configuration.key
17 %td
18 %td
18 - = in_place_editor_field :grader_configuration, :value_type, {}, :rows=>1
19 + /= in_place_editor_field :grader_configuration, :value_type, {}, :rows=>1
20 + = @grader_configuration.value_type
19 %td
21 %td
20 = best_in_place @grader_configuration, :value, ok_button: "ok", cancel_button: "cancel"
22 = best_in_place @grader_configuration, :value, ok_button: "ok", cancel_button: "cancel"
21 %td= conf.description
23 %td= conf.description
22
24
23 - if GraderConfiguration.config_cached?
25 - if GraderConfiguration.config_cached?
24 %br/
26 %br/
@@ -15,12 +15,25
15 %span.caret
15 %span.caret
16 %ul.dropdown-menu
16 %ul.dropdown-menu
17 = add_menu("View", 'main', 'submission')
17 = add_menu("View", 'main', 'submission')
18 = add_menu("Self Test", 'test', 'index')
18 = add_menu("Self Test", 'test', 'index')
19 - if GraderConfiguration['right.user_hall_of_fame']
19 - if GraderConfiguration['right.user_hall_of_fame']
20 = add_menu("#{I18n.t 'menu.hall_of_fame'}", 'report', 'problem_hof')
20 = add_menu("#{I18n.t 'menu.hall_of_fame'}", 'report', 'problem_hof')
21 + / display MODE button (with countdown in contest mode)
22 + - if GraderConfiguration.analysis_mode?
23 + %div.navbar-btn.btn.btn-success#countdown= "ANALYSIS MODE"
24 + - elsif GraderConfiguration.time_limit_mode?
25 + - if @current_user.contest_finished?
26 + %div.navbar-btn.btn.btn-danger#countdown= "Contest is over"
27 + - elsif !@current_user.contest_started?
28 + %div.navbar-btn.btn.btn-primary#countdown= (t 'title_bar.contest_not_started')
29 + - else
30 + %div.navbar-btn.btn.btn-primary#countdown asdf
31 + :javascript
32 + $("#countdown").countdown({until: "+#{@current_user.contest_time_left.to_i}s", layout: 'Time left: {hnn}:{mnn}:{snn}'});
33 + / admin section
21 - if (@current_user!=nil) and (session[:admin])
34 - if (@current_user!=nil) and (session[:admin])
22 %li.dropdown
35 %li.dropdown
23 %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"}
36 %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"}
24 Manage
37 Manage
25 %span.caret
38 %span.caret
26 %ul.dropdown-menu
39 %ul.dropdown-menu
@@ -42,14 +55,12
42 = add_menu( 'Results', 'user_admin', 'user_stat')
55 = add_menu( 'Results', 'user_admin', 'user_stat')
43 = add_menu( 'Report', 'report', 'multiple_login')
56 = add_menu( 'Report', 'report', 'multiple_login')
44 - if (ungraded = Submission.where('graded_at is null').where('submitted_at < ?', 1.minutes.ago).count) > 0
57 - if (ungraded = Submission.where('graded_at is null').where('submitted_at < ?', 1.minutes.ago).count) > 0
45 =link_to "#{ungraded} backlogs!",
58 =link_to "#{ungraded} backlogs!",
46 grader_list_path,
59 grader_list_path,
47 class: 'navbar-btn btn btn-default btn-warning', data: {toggle: 'tooltip'},title: 'Number of ungraded submission'
60 class: 'navbar-btn btn btn-default btn-warning', data: {toggle: 'tooltip'},title: 'Number of ungraded submission'
48 - =link_to 'Contest Mode, time remain: 00:20:33',grader_list_path,
49 - class: 'navbar-btn btn btn-primary'
50
61
51 %ul.nav.navbar-nav.navbar-right
62 %ul.nav.navbar-nav.navbar-right
52 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-question-sign')}".html_safe, 'main', 'help')
63 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-question-sign')}".html_safe, 'main', 'help')
53 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-comment')}".html_safe, 'messages', 'list', {title: I18n.t('menu.messages'), data: {toggle: 'tooltip'}})
64 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-comment')}".html_safe, 'messages', 'list', {title: I18n.t('menu.messages'), data: {toggle: 'tooltip'}})
54 - if GraderConfiguration['system.user_setting_enabled']
65 - if GraderConfiguration['system.user_setting_enabled']
55 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-cog')}".html_safe, 'users', 'index', {title: I18n.t('menu.settings'), data: {toggle: 'tooltip'}})
66 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-cog')}".html_safe, 'users', 'index', {title: I18n.t('menu.settings'), data: {toggle: 'tooltip'}})
@@ -19,12 +19,34
19 = text_field 'user', 'password_confirmation', :size => 10,class: 'form-control'
19 = text_field 'user', 'password_confirmation', :size => 10,class: 'form-control'
20 .form-group
20 .form-group
21 = label_tag 'user_email', 'email'
21 = label_tag 'user_email', 'email'
22 = text_field 'user', 'email', :size => 10,class: 'form-control'
22 = text_field 'user', 'email', :size => 10,class: 'form-control'
23 =submit_tag "Create", class: 'btn btn-primary'
23 =submit_tag "Create", class: 'btn btn-primary'
24
24
25 + .panel.panel-primary
26 + .panel-title.panel-heading
27 + Import from site management
28 + .panel-body
29 + = form_tag( {method: 'post',multipart: true, action: 'import'}, {class: 'form-inline'}) do
30 + .form-group
31 + = label_tag 'user_login', 'Login'
32 + = text_field 'user', 'login', :size => 10,class: 'form-control'
33 + .form-group
34 + = label_tag 'user_full_name', 'Full Name'
35 + = text_field 'user', 'full_name', :size => 10,class: 'form-control'
36 + .form-group
37 + = label_tag 'user_password', 'Password'
38 + = text_field 'user', 'password', :size => 10,class: 'form-control'
39 + .form-group
40 + = label_tag 'user_password_confirmation', 'Confirm'
41 + = text_field 'user', 'password_confirmation', :size => 10,class: 'form-control'
42 + .form-group
43 + = label_tag 'user_email', 'email'
44 + = text_field 'user', 'email', :size => 10,class: 'form-control'
45 + =submit_tag "Create", class: 'btn btn-primary'
46 +
25 .submitbox
47 .submitbox
26 %b Import from site management
48 %b Import from site management
27 = form_tag({:action => 'import'}, :multipart => true) do
49 = form_tag({:action => 'import'}, :multipart => true) do
28 File: #{file_field_tag 'file'} #{submit_tag 'Import'}
50 File: #{file_field_tag 'file'} #{submit_tag 'Import'}
29 %br/
51 %br/
30 %b What else:
52 %b What else:
You need to be logged in to leave comments. Login now