Commit 1f5e2658f53b1214cd197ecad544ba2bd2975766

Authored by Dmitriy Zaporozhets
2 parents 2e8b5ebe 5dcca7e4

Merge pull request #1412 from tsigo/more_coffeescript

Convert main.js to CoffeeScript
app/assets/javascripts/issues.js
@@ -5,7 +5,7 @@ function switchToNewIssue(form){ @@ -5,7 +5,7 @@ function switchToNewIssue(form){
5 $('select#issue_milestone_id').chosen(); 5 $('select#issue_milestone_id').chosen();
6 $("#new_issue_dialog").show("fade", { direction: "right" }, 150); 6 $("#new_issue_dialog").show("fade", { direction: "right" }, 150);
7 $('.top-tabs .add_new').hide(); 7 $('.top-tabs .add_new').hide();
8 - disableButtonIfEmtpyField("#issue_title", ".save-btn"); 8 + disableButtonIfEmptyField("#issue_title", ".save-btn");
9 }); 9 });
10 } 10 }
11 11
@@ -16,7 +16,7 @@ function switchToEditIssue(form){ @@ -16,7 +16,7 @@ function switchToEditIssue(form){
16 $('select#issue_milestone_id').chosen(); 16 $('select#issue_milestone_id').chosen();
17 $("#edit_issue_dialog").show("fade", { direction: "right" }, 150); 17 $("#edit_issue_dialog").show("fade", { direction: "right" }, 150);
18 $('.add_new').hide(); 18 $('.add_new').hide();
19 - disableButtonIfEmtpyField("#issue_title", ".save-btn"); 19 + disableButtonIfEmptyField("#issue_title", ".save-btn");
20 }); 20 });
21 } 21 }
22 22
app/assets/javascripts/main.js
@@ -1,130 +0,0 @@ @@ -1,130 +0,0 @@
1 -$(document).ready(function(){  
2 -  
3 - $(".one_click_select").live("click", function(){  
4 - $(this).select();  
5 - });  
6 -  
7 - $('body').on('ajax:complete, ajax:beforeSend, submit', 'form', function(e){  
8 - var buttons = $('[type="submit"]', this);  
9 - switch( e.type ){  
10 - case 'ajax:beforeSend':  
11 - case 'submit':  
12 - buttons.attr('disabled', 'disabled');  
13 - break;  
14 - case ' ajax:complete':  
15 - default:  
16 - buttons.removeAttr('disabled');  
17 - break;  
18 - }  
19 - })  
20 -  
21 - $(".account-box").mouseenter(showMenu);  
22 - $(".account-box").mouseleave(resetMenu);  
23 -  
24 - $("#projects-list .project").live('click', function(e){  
25 - if(e.target.nodeName != "A" && e.target.nodeName != "INPUT") {  
26 - location.href = $(this).attr("url");  
27 - e.stopPropagation();  
28 - return false;  
29 - }  
30 - });  
31 -  
32 - /**  
33 - * Focus search field by pressing 's' key  
34 - */  
35 - $(document).keypress(function(e) {  
36 - if( $(e.target).is(":input") ) return;  
37 - switch(e.which) {  
38 - case 115: focusSearch();  
39 - e.preventDefault();  
40 - }  
41 - });  
42 -  
43 - /**  
44 - * Commit show suppressed diff  
45 - *  
46 - */  
47 - $(".supp_diff_link").bind("click", function() {  
48 - showDiff(this);  
49 - });  
50 -  
51 - /**  
52 - * Note markdown preview  
53 - *  
54 - */  
55 - $(document).on('click', '#preview-link', function(e) {  
56 - $('#preview-note').text('Loading...');  
57 -  
58 - var previewLinkText = ($(this).text() == 'Preview' ? 'Edit' : 'Preview');  
59 - $(this).text(previewLinkText);  
60 -  
61 - var note = $('#note_note').val();  
62 - if (note.trim().length === 0) { note = 'Nothing to preview'; }  
63 - $.post($(this).attr('href'), {note: note}, function(data) {  
64 - $('#preview-note').html(data);  
65 - });  
66 -  
67 - $('#preview-note, #note_note').toggle();  
68 - e.preventDefault();  
69 - });  
70 -});  
71 -  
72 -function focusSearch() {  
73 - $("#search").focus();  
74 -}  
75 -  
76 -function updatePage(data){  
77 - $.ajax({type: "GET", url: location.href, data: data, dataType: "script"});  
78 -}  
79 -  
80 -function showMenu() {  
81 - $(this).toggleClass('hover');  
82 -}  
83 -  
84 -function resetMenu() {  
85 - $(this).removeClass("hover");  
86 -}  
87 -  
88 -function slugify(text) {  
89 - return text.replace(/[^-a-zA-Z0-9]+/g, '_').toLowerCase();  
90 -}  
91 -  
92 -function showDiff(link) {  
93 - $(link).next('table').show();  
94 - $(link).remove();  
95 -}  
96 -  
97 -(function($){  
98 - var _chosen = $.fn.chosen;  
99 - $.fn.extend({  
100 - chosen: function(options) {  
101 - var default_options = {'search_contains' : 'true'};  
102 - $.extend(default_options, options);  
103 - return _chosen.apply(this, [default_options]);  
104 - }})  
105 -})(jQuery);  
106 -  
107 -  
108 -function ajaxGet(url) {  
109 - $.ajax({type: "GET", url: url, dataType: "script"});  
110 -}  
111 -  
112 -/**  
113 - * Disable button if text field is empty  
114 - */  
115 -function disableButtonIfEmtpyField(field_selector, button_selector) {  
116 - field = $(field_selector);  
117 - if(field.val() == "") {  
118 - field.closest("form").find(button_selector).attr("disabled", "disabled").addClass("disabled");  
119 - }  
120 -  
121 - field.on('keyup', function(){  
122 - var field = $(this);  
123 - var closest_submit = field.closest("form").find(button_selector);  
124 - if(field.val() == "") {  
125 - closest_submit.attr("disabled", "disabled").addClass("disabled");  
126 - } else {  
127 - closest_submit.removeAttr("disabled").removeClass("disabled");  
128 - }  
129 - })  
130 -}  
app/assets/javascripts/main.js.coffee 0 → 100644
@@ -0,0 +1,89 @@ @@ -0,0 +1,89 @@
  1 +window.updatePage = (data) ->
  2 + $.ajax({type: "GET", url: location.href, data: data, dataType: "script"})
  3 +
  4 +window.slugify = (text) ->
  5 + text.replace(/[^-a-zA-Z0-9]+/g, '_').toLowerCase()
  6 +
  7 +window.ajaxGet = (url) ->
  8 + $.ajax({type: "GET", url: url, dataType: "script"})
  9 +
  10 + # Disable button if text field is empty
  11 +window.disableButtonIfEmptyField = (field_selector, button_selector) ->
  12 + field = $(field_selector)
  13 + closest_submit = field.closest("form").find(button_selector)
  14 +
  15 + closest_submit.disable() if field.val() is ""
  16 +
  17 + field.on "keyup", ->
  18 + if $(this).val() is ""
  19 + closest_submit.disable()
  20 + else
  21 + closest_submit.enable()
  22 +
  23 +$ ->
  24 + # Click a .one_click_select field, select the contents
  25 + $(".one_click_select").live 'click', -> $(this).select()
  26 +
  27 + # Disable form buttons while a form is submitting
  28 + $('body').on 'ajax:complete, ajax:beforeSend, submit', 'form', (e) ->
  29 + buttons = $('[type="submit"]', this)
  30 +
  31 + switch e.type
  32 + when 'ajax:beforeSend', 'submit'
  33 + buttons.disable()
  34 + else
  35 + buttons.enable()
  36 +
  37 + # Show/Hide the profile menu when hovering the account box
  38 + $('.account-box').hover -> $(this).toggleClass('hover')
  39 +
  40 + # Focus search field by pressing 's' key
  41 + $(document).keypress (e) ->
  42 + # Don't do anything if typing in an input
  43 + return if $(e.target).is(":input")
  44 +
  45 + switch e.which
  46 + when 115
  47 + $("#search").focus()
  48 + e.preventDefault()
  49 +
  50 + # Commit show suppressed diff
  51 + $(".supp_diff_link").bind "click", ->
  52 + $(this).next('table').show()
  53 + $(this).remove()
  54 +
  55 + # Note markdown preview
  56 + $(document).on 'click', '#preview-link', (e) ->
  57 + $('#preview-note').text('Loading...')
  58 +
  59 + previewLinkText = if $(this).text() == 'Preview' then 'Edit' else 'Preview'
  60 + $(this).text(previewLinkText)
  61 +
  62 + note = $('#note_note').val()
  63 +
  64 + if note.trim().length == 0
  65 + $('#preview-note').text("Nothing to preview.")
  66 + else
  67 + $.post $(this).attr('href'), {note: note}, (data) ->
  68 + $('#preview-note').html(data)
  69 +
  70 + $('#preview-note, #note_note').toggle()
  71 + e.preventDefault()
  72 + false
  73 +
  74 +(($) ->
  75 + _chosen = $.fn.chosen
  76 + $.fn.extend chosen: (options) ->
  77 + default_options = search_contains: "true"
  78 + $.extend default_options, options
  79 + _chosen.apply this, [default_options]
  80 +
  81 + # Disable an element and add the 'disabled' Bootstrap class
  82 + $.fn.extend disable: ->
  83 + $(this).attr('disabled', 'disabled').addClass('disabled')
  84 +
  85 + # Enable an element and remove the 'disabled' Bootstrap class
  86 + $.fn.extend enable: ->
  87 + $(this).removeAttr('disabled').removeClass('disabled')
  88 +
  89 +)(jQuery)
app/assets/javascripts/note.js
@@ -25,14 +25,14 @@ var NoteList = { @@ -25,14 +25,14 @@ var NoteList = {
25 $(this).closest('li').fadeOut(); }); 25 $(this).closest('li').fadeOut(); });
26 26
27 $(".note-form-holder").live("ajax:before", function(){ 27 $(".note-form-holder").live("ajax:before", function(){
28 - $(".submit_note").attr("disabled", "disabled"); 28 + $(".submit_note").disable()
29 }) 29 })
30 30
31 $(".note-form-holder").live("ajax:complete", function(){ 31 $(".note-form-holder").live("ajax:complete", function(){
32 - $(".submit_note").removeAttr("disabled"); 32 + $(".submit_note").enable()
33 }) 33 })
34 34
35 - disableButtonIfEmtpyField(".note-text", ".submit_note"); 35 + disableButtonIfEmptyField(".note-text", ".submit_note");
36 36
37 $(".note-text").live("focus", function(){ 37 $(".note-text").live("focus", function(){
38 $(this).css("height", "80px"); 38 $(this).css("height", "80px");
@@ -177,6 +177,6 @@ var PerLineNotes = { @@ -177,6 +177,6 @@ var PerLineNotes = {
177 form.show(); 177 form.show();
178 return false; 178 return false;
179 }); 179 });
180 - disableButtonIfEmtpyField(".line-note-text", ".submit_inline_note"); 180 + disableButtonIfEmptyField(".line-note-text", ".submit_inline_note");
181 } 181 }
182 } 182 }
app/assets/javascripts/projects.js.coffee
@@ -8,7 +8,7 @@ window.Projects = -> @@ -8,7 +8,7 @@ window.Projects = ->
8 $('.save-project-loader').show() 8 $('.save-project-loader').show()
9 9
10 $('form #project_default_branch').chosen() 10 $('form #project_default_branch').chosen()
11 - disableButtonIfEmtpyField '#project_name', '.project-submit' 11 + disableButtonIfEmptyField '#project_name', '.project-submit'
12 12
13 # Git clone panel switcher 13 # Git clone panel switcher
14 $ -> 14 $ ->
app/views/layouts/_head_panel.html.haml
@@ -34,12 +34,4 @@ @@ -34,12 +34,4 @@
34 source: #{raw search_autocomplete_source}, 34 source: #{raw search_autocomplete_source},
35 select: function(event, ui) { location.href = ui.item.url } 35 select: function(event, ui) { location.href = ui.item.url }
36 }); 36 });
37 -  
38 - $(document).keypress(function(e) {  
39 - if($(e.target).is(":input")) return;  
40 - switch(e.which) {  
41 - case 115: focusSearch();  
42 - e.preventDefault();  
43 - }  
44 - });  
45 }); 37 });
app/views/merge_requests/_form.html.haml
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 60
61 :javascript 61 :javascript
62 $(function(){ 62 $(function(){
63 - disableButtonIfEmtpyField("#merge_request_title", ".save-btn"); 63 + disableButtonIfEmptyField("#merge_request_title", ".save-btn");
64 $('select#merge_request_assignee_id').chosen(); 64 $('select#merge_request_assignee_id').chosen();
65 $('select#merge_request_source_branch').chosen(); 65 $('select#merge_request_source_branch').chosen();
66 $('select#merge_request_target_branch').chosen(); 66 $('select#merge_request_target_branch').chosen();
app/views/milestones/_form.html.haml
@@ -41,7 +41,7 @@ @@ -41,7 +41,7 @@
41 41
42 :javascript 42 :javascript
43 $(function() { 43 $(function() {
44 - disableButtonIfEmtpyField("#milestone_title", ".save-btn"); 44 + disableButtonIfEmptyField("#milestone_title", ".save-btn");
45 $( ".datepicker" ).datepicker({ 45 $( ".datepicker" ).datepicker({
46 dateFormat: "yy-mm-dd", 46 dateFormat: "yy-mm-dd",
47 onSelect: function(dateText, inst) { $("#milestone_due_date").val(dateText) } 47 onSelect: function(dateText, inst) { $("#milestone_due_date").val(dateText) }