Commit d6c384c20f3798fffd0481cd758700a27bebd44f

Authored by Robert Speicher
1 parent b565f334

Reduce the amount of JavaScript written in views

Seeing `:javascript` all over Views feels like a code smell. This goes a
long way towards reducing the amount of JS in views, but there's still
plenty to be done on that front.
app/assets/javascripts/main.js.coffee
@@ -24,6 +24,9 @@ $ -> @@ -24,6 +24,9 @@ $ ->
24 # Click a .one_click_select field, select the contents 24 # Click a .one_click_select field, select the contents
25 $(".one_click_select").live 'click', -> $(this).select() 25 $(".one_click_select").live 'click', -> $(this).select()
26 26
  27 + # Initialize chosen selects
  28 + $('select.chosen').chosen()
  29 +
27 # Disable form buttons while a form is submitting 30 # Disable form buttons while a form is submitting
28 $('body').on 'ajax:complete, ajax:beforeSend, submit', 'form', (e) -> 31 $('body').on 'ajax:complete, ajax:beforeSend, submit', 'form', (e) ->
29 buttons = $('[type="submit"]', this) 32 buttons = $('[type="submit"]', this)
app/views/admin/projects/_form.html.haml
@@ -32,7 +32,7 @@ @@ -32,7 +32,7 @@
32 - unless project.new_record? 32 - unless project.new_record?
33 .clearfix 33 .clearfix
34 = f.label :owner_id 34 = f.label :owner_id
35 - .input= f.select :owner_id, User.all.map { |user| [user.name, user.id] } 35 + .input= f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'}
36 36
37 - if project.repo_exists? 37 - if project.repo_exists?
38 .clearfix 38 .clearfix
@@ -69,7 +69,6 @@ @@ -69,7 +69,6 @@
69 69
70 :javascript 70 :javascript
71 $(function(){ 71 $(function(){
72 - $('#project_owner_id').chosen();  
73 new Projects(); 72 new Projects();
74 }) 73 })
75 74
app/views/admin/projects/show.html.haml
@@ -71,25 +71,11 @@ @@ -71,25 +71,11 @@
71 %th Project Access: 71 %th Project Access:
72 72
73 %tr 73 %tr
74 - %td= select_tag :user_ids, options_from_collection_for_select(@users , :id, :name), multiple: true  
75 - %td= select_tag :project_access, options_for_select(Project.access_options), class: "project-access-select" 74 + %td= select_tag :user_ids, options_from_collection_for_select(@users , :id, :name), multiple: true, data: {placeholder: 'Select users'}, class: 'chosen span5'
  75 + %td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"}
76 76
77 %tr 77 %tr
78 %td= submit_tag 'Add', class: "btn primary" 78 %td= submit_tag 'Add', class: "btn primary"
79 %td 79 %td
80 Read more about project permissions 80 Read more about project permissions
81 %strong= link_to "here", help_permissions_path, class: "vlink" 81 %strong= link_to "here", help_permissions_path, class: "vlink"
82 -  
83 -:css  
84 - form select {  
85 - width:150px;  
86 - }  
87 -  
88 - #user_ids {  
89 - width:300px;  
90 - }  
91 -  
92 -:javascript  
93 - $('select#user_ids').chosen();  
94 - $('select#repo_access').chosen();  
95 - $('select#project_access').chosen();  
app/views/admin/team_members/_form.html.haml
@@ -8,20 +8,9 @@ @@ -8,20 +8,9 @@
8 .clearfix 8 .clearfix
9 %label Project Access: 9 %label Project Access:
10 .input 10 .input
11 - = f.select :project_access, options_for_select(Project.access_options, @admin_team_member.project_access), {}, class: "project-access-select" 11 + = f.select :project_access, options_for_select(Project.access_options, @admin_team_member.project_access), {}, class: "project-access-select chosen span3"
12 12
13 %br 13 %br
14 .actions 14 .actions
15 = f.submit 'Save', class: "btn primary" 15 = f.submit 'Save', class: "btn primary"
16 = link_to 'Cancel', :back, class: "btn" 16 = link_to 'Cancel', :back, class: "btn"
17 -  
18 -:css  
19 - form select {  
20 - width:300px;  
21 - }  
22 -  
23 -:javascript  
24 - $('select#team_member_user_id').chosen();  
25 - $('select#team_member_project_id').chosen();  
26 - $('select#team_member_repo_access').chosen();  
27 - $('select#team_member_project_access').chosen();  
app/views/admin/users/show.html.haml
@@ -68,8 +68,8 @@ @@ -68,8 +68,8 @@
68 %th Project Access: 68 %th Project Access:
69 69
70 %tr 70 %tr
71 - %td= select_tag :project_ids, options_from_collection_for_select(@projects , :id, :name), multiple: true  
72 - %td= select_tag :project_access, options_for_select(Project.access_options), class: "project-access-select" 71 + %td= select_tag :project_ids, options_from_collection_for_select(@projects , :id, :name), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5'
  72 + %td= select_tag :project_access, options_for_select(Project.access_options), class: "project-access-select chosen span3"
73 73
74 %tr 74 %tr
75 %td= submit_tag 'Add', class: "btn primary" 75 %td= submit_tag 'Add', class: "btn primary"
@@ -97,17 +97,3 @@ @@ -97,17 +97,3 @@
97 %td= select_tag :tm_project_access, options_for_select(Project.access_options, tm.project_access), class: "medium project-access-select", disabled: :disabled 97 %td= select_tag :tm_project_access, options_for_select(Project.access_options, tm.project_access), class: "medium project-access-select", disabled: :disabled
98 %td= link_to 'Edit Access', edit_admin_team_member_path(tm), class: "btn small" 98 %td= link_to 'Edit Access', edit_admin_team_member_path(tm), class: "btn small"
99 %td= link_to 'Remove from team', admin_team_member_path(tm), confirm: 'Are you sure?', method: :delete, class: "btn small danger" 99 %td= link_to 'Remove from team', admin_team_member_path(tm), confirm: 'Are you sure?', method: :delete, class: "btn small danger"
100 -  
101 -:css  
102 - form select {  
103 - width:150px;  
104 - }  
105 -  
106 - #project_ids {  
107 - width:300px;  
108 - }  
109 -  
110 -:javascript  
111 - $('select#project_ids').chosen();  
112 - $('select#repo_access').chosen();  
113 - $('select#project_access').chosen();  
app/views/commits/_head.html.haml
1 %ul.nav.nav-tabs 1 %ul.nav.nav-tabs
2 %li 2 %li
3 = form_tag switch_project_refs_path(@project), method: :get, class: "project-refs-form" do 3 = form_tag switch_project_refs_path(@project), method: :get, class: "project-refs-form" do
4 - = select_tag "ref", grouped_options_refs, onchange: "$(this.form).trigger('submit');", class: "project-refs-select" 4 + = select_tag "ref", grouped_options_refs, onchange: "$(this.form).trigger('submit');", class: "project-refs-select chosen"
5 = hidden_field_tag :destination, "commits" 5 = hidden_field_tag :destination, "commits"
6 6
7 %li{class: "#{'active' if current_page?(project_commits_path(@project)) }"} 7 %li{class: "#{'active' if current_page?(project_commits_path(@project)) }"}
@@ -26,8 +26,3 @@ @@ -26,8 +26,3 @@
26 %span.rss-icon 26 %span.rss-icon
27 = link_to project_commits_path(@project, :atom, { private_token: current_user.private_token, ref: @ref }), title: "Feed" do 27 = link_to project_commits_path(@project, :atom, { private_token: current_user.private_token, ref: @ref }), title: "Feed" do
28 = image_tag "rss_ui.png", title: "feed" 28 = image_tag "rss_ui.png", title: "feed"
29 -  
30 -:javascript  
31 - $(function(){  
32 - $('.project-refs-select').chosen();  
33 - });  
app/views/issues/_form.html.haml
@@ -18,12 +18,12 @@ @@ -18,12 +18,12 @@
18 = f.label :assignee_id do 18 = f.label :assignee_id do
19 %i.icon-user 19 %i.icon-user
20 Assign to 20 Assign to
21 - .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { include_blank: "Select a user" }) 21 + .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { include_blank: "Select a user" }, {class: 'chosen'})
22 .issue_milestone 22 .issue_milestone
23 = f.label :milestone_id do 23 = f.label :milestone_id do
24 %i.icon-time 24 %i.icon-time
25 Milestone 25 Milestone
26 - .input= f.select(:milestone_id, @project.milestones.active.all.collect {|p| [ p.title, p.id ] }, { include_blank: "Select milestone" }) 26 + .input= f.select(:milestone_id, @project.milestones.active.all.collect {|p| [ p.title, p.id ] }, { include_blank: "Select milestone" }, {class: 'chosen'})
27 27
28 .issue_description 28 .issue_description
29 .clearfix 29 .clearfix
app/views/issues/edit.html.haml
1 = render "form" 1 = render "form"
2 -  
3 -:javascript  
4 - $(function(){  
5 - $('select#issue_assignee_id').chosen();  
6 - $('select#issue_milestone_id').chosen();  
7 - });  
8 -  
app/views/issues/new.html.haml
1 = render "form" 1 = render "form"
2 -  
3 -:javascript  
4 - $(function(){  
5 - $('select#issue_assignee_id').chosen();  
6 - $('select#issue_milestone_id').chosen();  
7 - });  
8 -  
app/views/merge_requests/_form.html.haml
@@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
16 .padded 16 .padded
17 = f.label :source_branch, "From", class: "control-label" 17 = f.label :source_branch, "From", class: "control-label"
18 .controls 18 .controls
19 - = f.select(:source_branch, @project.heads.map(&:name), { include_blank: "Select branch" }, style: "width:250px") 19 + = f.select(:source_branch, @project.heads.map(&:name), { include_blank: "Select branch" }, {class: 'chosen span3'})
20 .mr_source_commit 20 .mr_source_commit
21 21
22 .span2 22 .span2
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 .padded 28 .padded
29 = f.label :target_branch, "To", class: "control-label" 29 = f.label :target_branch, "To", class: "control-label"
30 .controls 30 .controls
31 - = f.select(:target_branch, @project.heads.map(&:name), { include_blank: "Select branch" }, style: "width:250px") 31 + = f.select(:target_branch, @project.heads.map(&:name), { include_blank: "Select branch" }, {class: 'chosen span3'})
32 .mr_target_commit 32 .mr_target_commit
33 33
34 %h4.cdark 2. Fill info 34 %h4.cdark 2. Fill info
@@ -43,7 +43,7 @@ @@ -43,7 +43,7 @@
43 = f.label :assignee_id do 43 = f.label :assignee_id do
44 %i.icon-user 44 %i.icon-user
45 Assign to 45 Assign to
46 - .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { include_blank: "Select user" }, style: "width:250px") 46 + .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { include_blank: "Select user" }, {class: 'chosen span3'})
47 47
48 .control-group 48 .control-group
49 49
@@ -56,18 +56,12 @@ @@ -56,18 +56,12 @@
56 = link_to project_merge_request_path(@project, @merge_request), class: "btn cancel-btn" do 56 = link_to project_merge_request_path(@project, @merge_request), class: "btn cancel-btn" do
57 Cancel 57 Cancel
58 58
59 -  
60 -  
61 :javascript 59 :javascript
62 $(function(){ 60 $(function(){
63 disableButtonIfEmptyField("#merge_request_title", ".save-btn"); 61 disableButtonIfEmptyField("#merge_request_title", ".save-btn");
64 - $('select#merge_request_assignee_id').chosen();  
65 - $('select#merge_request_source_branch').chosen();  
66 - $('select#merge_request_target_branch').chosen();  
67 var source_branch = $("#merge_request_source_branch"); 62 var source_branch = $("#merge_request_source_branch");
68 var target_branch = $("#merge_request_target_branch"); 63 var target_branch = $("#merge_request_target_branch");
69 64
70 -  
71 $.get("#{branch_from_project_merge_requests_path(@project)}", {ref: source_branch.val() }); 65 $.get("#{branch_from_project_merge_requests_path(@project)}", {ref: source_branch.val() });
72 $.get("#{branch_to_project_merge_requests_path(@project)}", {ref: target_branch.val() }); 66 $.get("#{branch_to_project_merge_requests_path(@project)}", {ref: target_branch.val() });
73 67
@@ -79,4 +73,3 @@ @@ -79,4 +73,3 @@
79 $.get("#{branch_to_project_merge_requests_path(@project)}", {ref: $(this).val() }); 73 $.get("#{branch_to_project_merge_requests_path(@project)}", {ref: $(this).val() });
80 }); 74 });
81 }); 75 });
82 -  
app/views/milestones/edit.html.haml
1 = render "form" 1 = render "form"
2 -  
3 -:javascript  
4 - $(function(){  
5 - $('select#issue_assignee_id').chosen();  
6 - });  
7 -  
app/views/projects/_refs.html.haml
1 = form_tag switch_project_refs_path(@project), method: :get, class: "project-refs-form" do 1 = form_tag switch_project_refs_path(@project), method: :get, class: "project-refs-form" do
2 - = select_tag "ref", grouped_options_refs, onchange: "this.form.submit();", class: "project-refs-select" 2 + = select_tag "ref", grouped_options_refs, onchange: "this.form.submit();", class: "project-refs-select chosen"
3 = hidden_field_tag :destination, destination 3 = hidden_field_tag :destination, destination
4 -  
5 -:javascript  
6 - $(function(){  
7 - $('.project-refs-select').chosen();  
8 - })  
app/views/protected_branches/index.html.haml
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 .entry.clearfix 19 .entry.clearfix
20 = f.label :name, "Branch" 20 = f.label :name, "Branch"
21 .span3 21 .span3
22 - = f.select(:name, @project.open_branches.map { |br| [br.name, br.name] } , { include_blank: "-- Select branch" }, { class: "span3" }) 22 + = f.select(:name, @project.open_branches.map { |br| [br.name, br.name] } , {include_blank: "Select branch"}, {class: "chosen span3"})
23   23  
24 = f.submit 'Protect', class: "primary btn" 24 = f.submit 'Protect', class: "primary btn"
25 25
@@ -46,6 +46,3 @@ @@ -46,6 +46,3 @@
46 %td 46 %td
47 - if can? current_user, :admin_project, @project 47 - if can? current_user, :admin_project, @project
48 = link_to 'Unprotect', [@project, branch], confirm: 'Are you sure?', method: :delete, class: "danger btn small" 48 = link_to 'Unprotect', [@project, branch], confirm: 'Are you sure?', method: :delete, class: "danger btn small"
49 -  
50 -:javascript  
51 - $('select#protected_branch_name').chosen();  
app/views/refs/_head.html.haml
1 %ul.nav.nav-tabs 1 %ul.nav.nav-tabs
2 %li 2 %li
3 = form_tag switch_project_refs_path(@project), method: :get, class: "project-refs-form", remote: true do 3 = form_tag switch_project_refs_path(@project), method: :get, class: "project-refs-form", remote: true do
4 - = select_tag "ref", grouped_options_refs, onchange: "$(this.form).trigger('submit');", class: "project-refs-select" 4 + = select_tag "ref", grouped_options_refs, onchange: "$(this.form).trigger('submit');", class: "project-refs-select chosen"
5 = hidden_field_tag :destination, "tree" 5 = hidden_field_tag :destination, "tree"
6 = hidden_field_tag :path, params[:path] 6 = hidden_field_tag :path, params[:path]
7 %li{class: "#{'active' if (controller.controller_name == "refs") }"} 7 %li{class: "#{'active' if (controller.controller_name == "refs") }"}
app/views/refs/_tree.html.haml
@@ -47,10 +47,7 @@ @@ -47,10 +47,7 @@
47 47
48 :javascript 48 :javascript
49 $(function(){ 49 $(function(){
50 - $('.project-refs-select').chosen();  
51 -  
52 history.pushState({ path: this.path }, '', "#{@history_path}"); 50 history.pushState({ path: this.path }, '', "#{@history_path}");
53 -  
54 }); 51 });
55 52
56 // Load last commit log for each file in tree 53 // Load last commit log for each file in tree
app/views/refs/blame.html.haml
@@ -38,8 +38,3 @@ @@ -38,8 +38,3 @@
38 = preserve do 38 = preserve do
39 %pre 39 %pre
40 = Gitlab::Encode.utf8 lines.join("\n") 40 = Gitlab::Encode.utf8 lines.join("\n")
41 -  
42 -:javascript  
43 - $(function(){  
44 - $('.project-refs-select').chosen();  
45 - });  
app/views/snippets/_form.html.haml
@@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
16 .input= f.text_field :file_name, placeholder: "example.rb" 16 .input= f.text_field :file_name, placeholder: "example.rb"
17 .clearfix 17 .clearfix
18 = f.label "Lifetime" 18 = f.label "Lifetime"
19 - .input= f.select :expires_at, lifetime_select_options, {}, style: "width:200px;" 19 + .input= f.select :expires_at, lifetime_select_options, {}, {class: 'chosen span2'}
20 .clearfix 20 .clearfix
21 = f.label :content, "Code" 21 = f.label :content, "Code"
22 .input= f.text_area :content, class: "span8" 22 .input= f.text_area :content, class: "span8"
@@ -26,11 +26,3 @@ @@ -26,11 +26,3 @@
26 = link_to "Cancel", project_snippets_path(@project), class: " btn" 26 = link_to "Cancel", project_snippets_path(@project), class: " btn"
27 - unless @snippet.new_record? 27 - unless @snippet.new_record?
28 .right= link_to 'Destroy', [@project, @snippet], confirm: 'Are you sure?', method: :delete, class: "btn right danger delete-snippet", id: "destroy_snippet_#{@snippet.id}" 28 .right= link_to 'Destroy', [@project, @snippet], confirm: 'Are you sure?', method: :delete, class: "btn right danger delete-snippet", id: "destroy_snippet_#{@snippet.id}"
29 -  
30 -  
31 -  
32 -:javascript  
33 - $(function(){  
34 - $('select#snippet_expires_at').chosen();  
35 - });  
36 -  
app/views/team_members/_form.html.haml
@@ -10,21 +10,14 @@ @@ -10,21 +10,14 @@
10 10
11 %h6 1. Choose people you want in the team 11 %h6 1. Choose people you want in the team
12 .clearfix 12 .clearfix
13 - = f.label :user_ids, "Peolpe"  
14 - .input= select_tag(:user_ids, options_from_collection_for_select(User.not_in_project(@project).all, :id, :name), { class: "xxlarge", multiple: true })  
15 - 13 + = f.label :user_ids, "People"
  14 + .input= select_tag(:user_ids, options_from_collection_for_select(User.not_in_project(@project).all, :id, :name), {data: {placeholder: "Select users"}, class: "chosen xxlarge", multiple: true})
16 15
17 %h6 2. Set access level for them 16 %h6 2. Set access level for them
18 .clearfix 17 .clearfix
19 = f.label :project_access, "Project Access" 18 = f.label :project_access, "Project Access"
20 - .input= select_tag :project_access, options_for_select(Project.access_options, @team_member.project_access), class: "project-access-select"  
21 - 19 + .input= select_tag :project_access, options_for_select(Project.access_options, @team_member.project_access), class: "project-access-select chosen"
22 20
23 .actions 21 .actions
24 = f.submit 'Save', class: "btn save-btn" 22 = f.submit 'Save', class: "btn save-btn"
25 = link_to "Cancel", team_project_path(@project), class: "btn cancel-btn" 23 = link_to "Cancel", team_project_path(@project), class: "btn cancel-btn"
26 -  
27 -  
28 -:javascript  
29 - $('select#user_ids').chosen();  
30 - $('select#project_access').chosen();