Description:
manage
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r877:93c4562b9761 - - The requested commit is too big and content was truncated. 14 files changed. Show full diff
new file 100644 |
@@ -1,1 +1,5 | |||||
|
1 | $font-size-base: 0.875rem; |
|
1 | $font-size-base: 0.875rem; |
|
|
2 | + | ||
|
|
3 | + $primary: #0074d9; | ||
|
|
4 | + //$danger: #ff4136; | ||
|
|
5 | + |
@@ -35,6 +35,7 | |||||
|
35 | def create |
|
35 | def create |
|
36 | @user = User.new(user_params) |
|
36 | @user = User.new(user_params) |
|
37 | @user.activated = true |
|
37 | @user.activated = true |
|
|
38 | + byebug | ||
|
38 | if @user.save |
|
39 | if @user.save |
|
39 | flash[:notice] = 'User was successfully created.' |
|
40 | flash[:notice] = 'User was successfully created.' |
|
40 | redirect_to :action => 'index' |
|
41 | redirect_to :action => 'index' |
@@ -44,6 +44,7 | |||||
|
44 | /* */ |
|
44 | /* */ |
|
45 |
|
45 | ||
|
46 | import "select2" |
|
46 | import "select2" |
|
|
47 | + import "chart" | ||
|
47 |
|
48 | ||
|
48 | //my own customization |
|
49 | //my own customization |
|
49 | import 'custom' |
|
50 | import 'custom' |
@@ -43,6 +43,3 | |||||
|
43 |
|
43 | ||
|
44 | //jQuery(".best_in_place").best_in_place(); |
|
44 | //jQuery(".best_in_place").best_in_place(); |
|
45 | }); |
|
45 | }); |
|
46 | - |
|
||
|
47 | - // --- |
|
||
|
48 | - // generated by coffee-script 1.9.2 |
|
@@ -26,8 +26,8 | |||||
|
26 |
|
26 | ||
|
27 | has_one :contest_stat, :class_name => "UserContestStat", :dependent => :destroy |
|
27 | has_one :contest_stat, :class_name => "UserContestStat", :dependent => :destroy |
|
28 |
|
28 | ||
|
29 | - belongs_to :site |
|
29 | + belongs_to :site, optional: true |
|
30 | - belongs_to :country |
|
30 | + belongs_to :country, optional: true |
|
31 |
|
31 | ||
|
32 | has_and_belongs_to_many :contests, -> { order(:name)} |
|
32 | has_and_belongs_to_many :contests, -> { order(:name)} |
|
33 |
|
33 | ||
@@ -45,12 +45,12 | |||||
|
45 | validates_length_of :password, :within => 4..50, :if => :password_required? |
|
45 | validates_length_of :password, :within => 4..50, :if => :password_required? |
|
46 | validates_confirmation_of :password, :if => :password_required? |
|
46 | validates_confirmation_of :password, :if => :password_required? |
|
47 |
|
47 | ||
|
48 |
- validates_format_of :email, |
|
48 | + validates_format_of :email, |
|
49 |
- :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, |
|
49 | + :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, |
|
50 | :if => :email_validation? |
|
50 | :if => :email_validation? |
|
51 |
- validate :uniqueness_of_email_from_activated_users, |
|
51 | + validate :uniqueness_of_email_from_activated_users, |
|
52 | :if => :email_validation? |
|
52 | :if => :email_validation? |
|
53 |
- validate :enough_time_interval_between_same_email_registrations, |
|
53 | + validate :enough_time_interval_between_same_email_registrations, |
|
54 | :if => :email_validation? |
|
54 | :if => :email_validation? |
|
55 |
|
55 | ||
|
56 | # these are for ytopc |
|
56 | # these are for ytopc |
@@ -10,10 +10,10 | |||||
|
10 | .panel-heading |
|
10 | .panel-heading |
|
11 | Grader control: |
|
11 | Grader control: |
|
12 | .panel-body |
|
12 | .panel-body |
|
13 |
- =link_to 'Start Graders in grading env', { action: 'start_grading'}, class: 'btn btn- |
|
13 | + =link_to 'Start Graders in grading env', { action: 'start_grading'}, class: 'btn btn-secondary' |
|
14 |
- =link_to 'Start Graders in exam env', { action: 'start_exam'}, class: 'btn btn- |
|
14 | + =link_to 'Start Graders in exam env', { action: 'start_exam'}, class: 'btn btn-secondary' |
|
15 |
- =link_to 'Stop all running Graders', { action: 'stop_all'}, class: 'btn btn- |
|
15 | + =link_to 'Stop all running Graders', { action: 'stop_all'}, class: 'btn btn-secondary' |
|
16 |
- =link_to 'Clear all data', { action: 'clear_all'}, class: 'btn btn- |
|
16 | + =link_to 'Clear all data', { action: 'clear_all'}, class: 'btn btn-secondary' |
|
17 |
|
17 | ||
|
18 | .row |
|
18 | .row |
|
19 | .col-md-6 |
|
19 | .col-md-6 |
@@ -1,27 +1,7 | |||||
|
1 | - = form_for @group do |f| |
|
1 | + .row |
|
2 | - - if @group.errors.any? |
|
2 | + .col-md-6 |
|
3 | - #error_explanation |
|
3 | + = simple_form_for @group do |f| |
|
4 | - %h2= "#{pluralize(@group.errors.count, "error")} prohibited this group from being saved:" |
|
4 | + = f.input :name |
|
5 | - %ul |
|
5 | + = f.input :description |
|
6 | - - @group.errors.full_messages.each do |msg| |
|
6 | + = f.input :enabled |
|
7 | - %li= msg |
|
7 | + = f.button :submit, class: 'btn btn-primary' |
|
8 | - .row |
|
||
|
9 | - .col-md-6 |
|
||
|
10 | - .form-group.field |
|
||
|
11 | - = f.label :name |
|
||
|
12 | - = f.text_field :name, class: 'form-control' |
|
||
|
13 | - .row |
|
||
|
14 | - .col-md-6 |
|
||
|
15 | - .form-group.field |
|
||
|
16 | - = f.label :description |
|
||
|
17 | - = f.text_field :description, class: 'form-control' |
|
||
|
18 | - .row |
|
||
|
19 | - .col-md-6 |
|
||
|
20 | - .checkbox |
|
||
|
21 | - = f.label :enabled do |
|
||
|
22 | - = f.check_box :enabled |
|
||
|
23 | - Enabled |
|
||
|
24 | - .row |
|
||
|
25 | - .col-md-6 |
|
||
|
26 | - .form-group.actions |
|
||
|
27 | - = f.submit 'Save', class: 'btn btn-primary' |
|
@@ -2,6 +2,8 | |||||
|
2 |
|
2 | ||
|
3 | = render 'form' |
|
3 | = render 'form' |
|
4 |
|
4 | ||
|
5 | - = link_to 'Show', @group |
|
5 | + .row.my-3 |
|
6 | - \| |
|
6 | + .col-auto |
|
7 | - = link_to 'Back', groups_path |
|
7 | + = link_to 'Edit members and problems', @group, class: 'btn btn-info' |
|
|
8 | + .col-auto | ||
|
|
9 | + = link_to 'Back', groups_path, class: 'btn btn-secondary' |
@@ -1,7 +1,7 | |||||
|
1 | %h1 Groups |
|
1 | %h1 Groups |
|
2 |
|
2 | ||
|
3 | %p |
|
3 | %p |
|
4 |
- = link_to 'New Group', new_group_path, class: 'btn btn- |
|
4 | + = link_to 'New Group', new_group_path, class: 'btn btn-success' |
|
5 | %table.table.table-hover |
|
5 | %table.table.table-hover |
|
6 | %thead |
|
6 | %thead |
|
7 | %tr |
|
7 | %tr |
@@ -9,16 +9,15 | |||||
|
9 | %th Description |
|
9 | %th Description |
|
10 | %th Enabled? |
|
10 | %th Enabled? |
|
11 | %th |
|
11 | %th |
|
12 | - %th |
|
||
|
13 | - |
|
||
|
14 | %tbody |
|
12 | %tbody |
|
15 | - @groups.each do |group| |
|
13 | - @groups.each do |group| |
|
16 | %tr{:class => "#{(group.enabled?) ? "success" : "danger"}", id: "group-#{group.id}"} |
|
14 | %tr{:class => "#{(group.enabled?) ? "success" : "danger"}", id: "group-#{group.id}"} |
|
17 | %td= group.name |
|
15 | %td= group.name |
|
18 | %td= group.description |
|
16 | %td= group.description |
|
19 |
- %td= toggle_button(group.enabled?, toggle_group_path(group), "group-enabled-#{group.id}", |
|
17 | + %td= toggle_button(group.enabled?, toggle_group_path(group), "group-enabled-#{group.id}", block: ' ') |
|
20 | - %td= link_to 'View', group, class: 'btn btn-default' |
|
18 | + %td |
|
21 | - %td= link_to 'Destroy', group, :method => :delete, :data => { :confirm => 'Are you sure?' }, class: 'btn btn-danger' |
|
19 | + = link_to 'Edit members and problems', group, class: 'btn btn-secondary btn-sm' |
|
|
20 | + = link_to 'Destroy', group, :method => :delete, :data => { :confirm => 'Are you sure?' }, class: 'btn btn-danger btn-sm' | ||
|
22 |
|
21 | ||
|
23 | %br |
|
22 | %br |
|
24 |
|
23 |
@@ -1,82 +1,92 | |||||
|
1 | - .container-fluid |
|
1 | + .row.mb-3 |
|
2 | - .row |
|
2 | + .col-md-6 |
|
3 | - .col-md-6 |
|
3 | + %h1 Editing Group members and problems |
|
4 | - %h1 Group #{@group.name} |
|
4 | + .row.mb-3 |
|
5 | - .row |
|
5 | + .col-md-6 |
|
6 | - .col-md-6 |
|
6 | + %b Name: |
|
7 | - %b Description: |
|
7 | + = @group.name |
|
8 | - = @group.description |
|
8 | + .row.mb-3 |
|
9 | - %br |
|
9 | + .col-md-6 |
|
10 | - = link_to 'Edit', edit_group_path(@group), class: 'btn btn-primary' |
|
10 | + %b Description: |
|
11 | - .row |
|
11 | + = @group.description |
|
12 | - .col-md-12 |
|
12 | + .row.mb-3 |
|
13 | - %h1 Group details |
|
13 | + .col-md-6 |
|
14 | - .row |
|
14 | + = link_to 'Edit', edit_group_path(@group), class: 'btn btn-primary' |
|
15 | - .col-md-6 |
|
15 | + .row.mb-3 |
|
16 | - .panel.panel-default |
|
16 | + .col-md-12 |
|
17 | - .panel-heading |
|
17 | + %h1 Group details |
|
18 | - .panel-title Users in this group |
|
18 | + .row |
|
19 | - .panel-body |
|
19 | + .col-md-6 |
|
20 | - %ul |
|
20 | + .card |
|
21 | - %li |
|
21 | + .card-header |
|
22 | - If you want to add several users to a group, it may be easier to just re-import those users in |
|
22 | + Users in this group |
|
23 | - = link_to 'New list of users', new_list_user_admin_index_path |
|
23 | + .card-body |
|
24 | - page. You can also use |
|
24 | + %ul |
|
25 | - = link_to 'Bulk Manage User', bulk_manage_user_admin_index_path |
|
25 | + %li |
|
26 | - page. |
|
26 | + If you want to add several users to a group, it may be easier to just re-import those users in |
|
27 | - =form_tag add_user_group_path(@group), class: 'form-inline' do |
|
27 | + = link_to 'New list of users', new_list_user_admin_index_path |
|
28 | - .form-group |
|
28 | + page. You can also use |
|
29 | - =label_tag :user_id, "User" |
|
29 | + = link_to 'Bulk Manage User', bulk_manage_user_admin_index_path |
|
|
30 | + page. | ||
|
|
31 | + =form_tag add_user_group_path(@group), class: 'form-inline' do | ||
|
|
32 | + .row | ||
|
|
33 | + .col-auto | ||
|
|
34 | + =label_tag :user_id, "User", class: 'col-form-label' | ||
|
|
35 | + .col-auto | ||
|
30 | =select_tag :user_id, options_from_collection_for_select(User.all,'id','login_with_name'), class: 'select2', style: 'width: 25em'; |
|
36 | =select_tag :user_id, options_from_collection_for_select(User.all,'id','login_with_name'), class: 'select2', style: 'width: 25em'; |
|
31 | - =submit_tag "Add",class: 'btn btn-primary' |
|
37 | + .col-auto |
|
|
38 | + =submit_tag "Add",class: 'btn btn-primary' | ||
|
32 |
|
39 | ||
|
33 |
|
40 | ||
|
34 |
- |
|
41 | + %table.table.table-hover |
|
35 |
- |
|
42 | + %thead |
|
36 |
- |
|
43 | + %tr |
|
37 |
- |
|
44 | + %th Login |
|
38 |
- |
|
45 | + %th Full name |
|
39 |
- |
|
46 | + %th Remark |
|
40 |
- |
|
47 | + %th= link_to 'Remove All', remove_all_user_group_path(@group), method: :delete, :data => { :confirm => "Remove ALL USERS from group?" }, class: 'btn btn-danger btn-sm' |
|
41 |
|
48 | ||
|
42 |
- |
|
49 | + %tbody |
|
43 |
- |
|
50 | + - @group.users.each do |user| |
|
44 |
- |
|
51 | + %tr |
|
45 |
- |
|
52 | + %td= user.login |
|
46 |
- |
|
53 | + %td= user.full_name |
|
47 |
- |
|
54 | + %td= user.remark |
|
48 |
- |
|
55 | + %td= link_to 'Remove', remove_user_group_path(@group,user), :method => :delete, :data => { :confirm => "Remove #{user.full_name}?" }, class: 'btn btn-danger btn-sm' |
|
49 |
- |
|
56 | + .col-md-6 |
|
50 | - .panel.panel-default |
|
57 | + .card |
|
51 |
- |
|
58 | + .card-header |
|
52 |
- |
|
59 | + Problems |
|
53 |
- |
|
60 | + .card-body |
|
54 |
- |
|
61 | + %ul |
|
55 |
- |
|
62 | + %li |
|
56 |
- |
|
63 | + If you want to add several problem to a group, it may be easier to bulk manage them in the |
|
57 |
- |
|
64 | + = link_to 'Bulk Manage Problems', manage_problems_path |
|
58 |
- |
|
65 | + page |
|
59 |
- |
|
66 | + =form_tag add_problem_group_path(@group) do |
|
60 |
- |
|
67 | + .row |
|
61 | - =label_tag :problem_id, "Problem" |
|
68 | + .col-auto |
|
|
69 | + =label_tag :problem_id, "Problem",class: 'col-form-label' | ||
|
|
70 | + .col-auto | ||
|
62 | =select_tag :problem_id, options_from_collection_for_select(Problem.all,'id','long_name'), class: 'select2', style: 'width: 25em'; |
|
71 | =select_tag :problem_id, options_from_collection_for_select(Problem.all,'id','long_name'), class: 'select2', style: 'width: 25em'; |
|
63 | - =submit_tag "Add",class: 'btn btn-primary' |
|
72 | + .col-auto |
|
|
73 | + =submit_tag "Add",class: 'btn btn-primary' | ||
|
64 |
|
74 | ||
|
65 |
|
75 | ||
|
66 |
- |
|
76 | + %table.table.table-hover |
|
67 |
- |
|
77 | + %thead |
|
68 |
- |
|
78 | + %tr |
|
69 |
- |
|
79 | + %th name |
|
70 |
- |
|
80 | + %th Full name |
|
71 |
- |
|
81 | + %th Full score |
|
72 |
- |
|
82 | + %th= link_to 'Remove All', remove_all_problem_group_path(@group), method: :delete, :data => { :confirm => "Remove ALL PROBLEMS from group?" }, class: 'btn btn-danger btn-sm' |
|
73 |
|
83 | ||
|
74 |
- |
|
84 | + %tbody |
|
75 |
- |
|
85 | + - @group.problems.each do |problem| |
|
76 |
- |
|
86 | + %tr |
|
77 |
- |
|
87 | + %td= problem.name |
|
78 |
- |
|
88 | + %td= problem.full_name |
|
79 |
- |
|
89 | + %td= problem.full_score |
|
80 |
- |
|
90 | + %td= link_to 'Remove', remove_problem_group_path(@group,problem), :method => :delete, :data => { :confirm => "Remove #{problem.full_name}?" }, class: 'btn btn-danger btn-sm' |
|
81 |
|
91 | ||
|
82 |
|
92 |
@@ -135,21 +135,22 | |||||
|
135 | = "#{value[:first][:value]} @" |
|
135 | = "#{value[:first][:value]} @" |
|
136 | = link_to "#" + value[:first][:sub_id].to_s, submission_path( value[:first][:sub_id]) |
|
136 | = link_to "#" + value[:first][:sub_id].to_s, submission_path( value[:first][:sub_id]) |
|
137 |
|
137 | ||
|
138 | - %script{src:"https://cdn.jsdelivr.net/npm/chart.js"} |
|
||
|
139 | :javascript |
|
138 | :javascript |
|
140 | - data = #{@chart_dataset} |
|
139 | + $(document).on('import-map-loaded',(e) => { |
|
141 | - config = { |
|
140 | + data = #{@chart_dataset} |
|
142 | - type: 'bar', |
|
141 | + config = { |
|
143 | - data: data, |
|
142 | + type: 'bar', |
|
144 | - options: { |
|
143 | + data: data, |
|
145 |
- |
|
144 | + options: { |
|
146 |
- |
|
145 | + plugins: { |
|
147 |
- |
|
146 | + legend: { |
|
|
147 | + display: false | ||
|
|
148 | + }, | ||
|
148 | }, |
|
149 | }, |
|
149 |
- } |
|
150 | + } |
|
150 | } |
|
151 | } |
|
151 | - } |
|
152 | + Chart.defaults.font.size = 15 |
|
152 |
- Chart.defaults.font. |
|
153 | + //Chart.defaults.font.family = 'Sarabun Light' |
|
153 | - //Chart.defaults.font.family = 'Sarabun Light' |
|
154 | + chart = new Chart($('#chart'),config) |
|
154 | - chart = new Chart($('#chart'),config) |
|
155 | + }); |
|
155 |
|
156 |
@@ -49,16 +49,6 | |||||
|
49 | = link_to "[#{contest.name}]", :action => 'contests', :id => contest.id |
|
49 | = link_to "[#{contest.name}]", :action => 'contests', :id => contest.id |
|
50 | = link_to "[no contest]", :action => 'contests', :id => 'none' |
|
50 | = link_to "[no contest]", :action => 'contests', :id => 'none' |
|
51 |
|
51 | ||
|
52 | - -# Total #{@user_count} users | |
|
||
|
53 | - -# - if !@paginated |
|
||
|
54 | - -# Display all users. |
|
||
|
55 | - -# \#{link_to '[show in pages]', :action => 'index', :page => '1'} |
|
||
|
56 | - -# - else |
|
||
|
57 | - -# Display in pages. |
|
||
|
58 | - -# \#{link_to '[display all]', :action => 'index', :page => 'all'} | |
|
||
|
59 | - -# \#{will_paginate @users, :container => false} |
|
||
|
60 | - |
|
||
|
61 | - |
|
||
|
62 | %table.table.table-hover.table-condense.datatable |
|
52 | %table.table.table-hover.table-condense.datatable |
|
63 | %thead |
|
53 | %thead |
|
64 | %th Login |
|
54 | %th Login |
@@ -85,10 +75,10 | |||||
|
85 | %td= toggle_button(user.activated?, toggle_activate_user_path(user),"toggle_activate_user_#{user.id}") |
|
75 | %td= toggle_button(user.activated?, toggle_activate_user_path(user),"toggle_activate_user_#{user.id}") |
|
86 | %td= toggle_button(user.enabled?, toggle_enable_user_path(user),"toggle_enable_user_#{user.id}") |
|
76 | %td= toggle_button(user.enabled?, toggle_enable_user_path(user),"toggle_enable_user_#{user.id}") |
|
87 | %td= user.last_ip |
|
77 | %td= user.last_ip |
|
88 |
- %td= link_to 'Clear IP', {:action => 'clear_last_ip', :id => user, :page=>params[:page]}, :confirm => 'This will reset last logging in ip of the user, are you sure?', class: 'btn btn- |
|
78 | + %td= link_to 'Clear IP', {:action => 'clear_last_ip', :id => user, :page=>params[:page]}, :confirm => 'This will reset last logging in ip of the user, are you sure?', class: 'btn btn-secondary btn-sm btn-block' |
|
89 |
- %td= link_to 'Show', {:action => 'show', :id => user}, class: 'btn btn- |
|
79 | + %td= link_to 'Show', {:action => 'show', :id => user}, class: 'btn btn-secondary btn-sm btn-block' |
|
90 |
- %td= link_to 'Edit', {:action => 'edit', :id => user}, class: 'btn btn- |
|
80 | + %td= link_to 'Edit', {:action => 'edit', :id => user}, class: 'btn btn-secondary btn-sm btn-block' |
|
91 |
- %td= link_to 'Destroy', {action: :destroy, id: user}, data: {confirm: 'Are you sure?'}, method: :delete, class: 'btn btn-danger btn- |
|
81 | + %td= link_to 'Destroy', {action: :destroy, id: user}, data: {confirm: 'Are you sure?'}, method: :delete, class: 'btn btn-danger btn-sm btn-block' |
|
92 | %br/ |
|
82 | %br/ |
|
93 | = link_to '+ New user', { :action => 'new' }, { class: 'btn btn-success '} |
|
83 | = link_to '+ New user', { :action => 'new' }, { class: 'btn btn-success '} |
|
94 | = link_to '+ New list of users', { :action => 'new_list' }, { class: 'btn btn-success '} |
|
84 | = link_to '+ New list of users', { :action => 'new_list' }, { class: 'btn btn-success '} |
You need to be logged in to leave comments.
Login now