Commit e63d7b6029142d100adca03e11ba0e33d9c2981c
1 parent
e1ca155c
Exists in
master
and in
4 other branches
Rename note.js to notes.js
Showing
2 changed files
with
238 additions
and
238 deletions
Show diff stats
app/assets/javascripts/note.js
... | ... | @@ -1,238 +0,0 @@ |
1 | -var NoteList = { | |
2 | - | |
3 | - notes_path: null, | |
4 | - target_params: null, | |
5 | - target_id: 0, | |
6 | - target_type: null, | |
7 | - bottom_id: 0, | |
8 | - loading_more_disabled: false, | |
9 | - | |
10 | - init: | |
11 | - function(tid, tt, path) { | |
12 | - this.notes_path = path + ".js"; | |
13 | - this.target_id = tid; | |
14 | - this.target_type = tt; | |
15 | - this.target_params = "&target_type=" + this.target_type + "&target_id=" + this.target_id; | |
16 | - | |
17 | - // get initial set of notes | |
18 | - this.getContent(); | |
19 | - | |
20 | - $("#notes-list, #new-notes-list").on("ajax:success", ".delete-note", function() { | |
21 | - $(this).closest('li').fadeOut(); | |
22 | - }); | |
23 | - | |
24 | - $(".note-form-holder").on("ajax:before", function(){ | |
25 | - $(".submit_note").disable() | |
26 | - }) | |
27 | - | |
28 | - $(".note-form-holder").on("ajax:complete", function(){ | |
29 | - $(".submit_note").enable() | |
30 | - }) | |
31 | - | |
32 | - disableButtonIfEmptyField(".note-text", ".submit_note"); | |
33 | - | |
34 | - $(".note-text").on("focus", function(){ | |
35 | - $(this).css("height", "80px"); | |
36 | - $('.note_advanced_opts').show(); | |
37 | - }); | |
38 | - | |
39 | - $("#note_attachment").change(function(e){ | |
40 | - var val = $('.input-file').val(); | |
41 | - var filename = val.replace(/^.*[\\\/]/, ''); | |
42 | - $(".file_name").text(filename); | |
43 | - }); | |
44 | - }, | |
45 | - | |
46 | - | |
47 | - /** | |
48 | - * Handle loading the initial set of notes. | |
49 | - * And set up loading more notes when scrolling to the bottom of the page. | |
50 | - */ | |
51 | - | |
52 | - | |
53 | - /** | |
54 | - * Gets an inital set of notes. | |
55 | - */ | |
56 | - getContent: | |
57 | - function() { | |
58 | - $.ajax({ | |
59 | - type: "GET", | |
60 | - url: this.notes_path, | |
61 | - data: "?" + this.target_params, | |
62 | - complete: function(){ $('.notes-status').removeClass("loading")}, | |
63 | - beforeSend: function() { $('.notes-status').addClass("loading") }, | |
64 | - dataType: "script"}); | |
65 | - }, | |
66 | - | |
67 | - /** | |
68 | - * Called in response to getContent(). | |
69 | - * Replaces the content of #notes-list with the given html. | |
70 | - */ | |
71 | - setContent: | |
72 | - function(last_id, html) { | |
73 | - this.bottom_id = last_id; | |
74 | - $("#notes-list").html(html); | |
75 | - | |
76 | - // Init infinite scrolling | |
77 | - this.initLoadMore(); | |
78 | - }, | |
79 | - | |
80 | - | |
81 | - /** | |
82 | - * Handle loading more notes when scrolling to the bottom of the page. | |
83 | - * The id of the last note in the list is in this.bottom_id. | |
84 | - * | |
85 | - * Set up refreshing only new notes after all notes have been loaded. | |
86 | - */ | |
87 | - | |
88 | - | |
89 | - /** | |
90 | - * Initializes loading more notes when scrolling to the bottom of the page. | |
91 | - */ | |
92 | - initLoadMore: | |
93 | - function() { | |
94 | - $(document).endlessScroll({ | |
95 | - bottomPixels: 400, | |
96 | - fireDelay: 1000, | |
97 | - fireOnce:true, | |
98 | - ceaseFire: function() { | |
99 | - return NoteList.loading_more_disabled; | |
100 | - }, | |
101 | - callback: function(i) { | |
102 | - NoteList.getMore(); | |
103 | - } | |
104 | - }); | |
105 | - }, | |
106 | - | |
107 | - /** | |
108 | - * Gets an additional set of notes. | |
109 | - */ | |
110 | - getMore: | |
111 | - function() { | |
112 | - // only load more notes if there are no "new" notes | |
113 | - $('.loading').show(); | |
114 | - $.ajax({ | |
115 | - type: "GET", | |
116 | - url: this.notes_path, | |
117 | - data: "loading_more=1&after_id=" + this.bottom_id + this.target_params, | |
118 | - complete: function(){ $('.notes-status').removeClass("loading")}, | |
119 | - beforeSend: function() { $('.notes-status').addClass("loading") }, | |
120 | - dataType: "script"}); | |
121 | - }, | |
122 | - | |
123 | - /** | |
124 | - * Called in response to getMore(). | |
125 | - * Append notes to #notes-list. | |
126 | - */ | |
127 | - appendMoreNotes: | |
128 | - function(id, html) { | |
129 | - if(id != this.bottom_id) { | |
130 | - this.bottom_id = id; | |
131 | - $("#notes-list").append(html); | |
132 | - } | |
133 | - }, | |
134 | - | |
135 | - /** | |
136 | - * Called in response to getMore(). | |
137 | - * Disables loading more notes when scrolling to the bottom of the page. | |
138 | - * Initalizes refreshing new notes. | |
139 | - */ | |
140 | - finishedLoadingMore: | |
141 | - function() { | |
142 | - this.loading_more_disabled = true; | |
143 | - | |
144 | - // from now on only get new notes | |
145 | - this.initRefreshNew(); | |
146 | - }, | |
147 | - | |
148 | - | |
149 | - /** | |
150 | - * Handle refreshing and adding of new notes. | |
151 | - * | |
152 | - * New notes are all notes that are created after the site has been loaded. | |
153 | - * The "old" notes are in #notes-list the "new" ones will be in #new-notes-list. | |
154 | - * The id of the last "old" note is in this.bottom_id. | |
155 | - */ | |
156 | - | |
157 | - | |
158 | - /** | |
159 | - * Initializes getting new notes every n seconds. | |
160 | - */ | |
161 | - initRefreshNew: | |
162 | - function() { | |
163 | - setInterval("NoteList.getNew()", 10000); | |
164 | - }, | |
165 | - | |
166 | - /** | |
167 | - * Gets the new set of notes (i.e. all notes after ). | |
168 | - */ | |
169 | - getNew: | |
170 | - function() { | |
171 | - $.ajax({ | |
172 | - type: "GET", | |
173 | - url: this.notes_path, | |
174 | - data: "loading_new=1&after_id=" + this.bottom_id + this.target_params, | |
175 | - dataType: "script"}); | |
176 | - }, | |
177 | - | |
178 | - /** | |
179 | - * Called in response to getNew(). | |
180 | - * Replaces the content of #new-notes-list with the given html. | |
181 | - */ | |
182 | - replaceNewNotes: | |
183 | - function(html) { | |
184 | - $("#new-notes-list").html(html); | |
185 | - }, | |
186 | - | |
187 | - /** | |
188 | - * Adds a single note to #new-notes-list. | |
189 | - */ | |
190 | - appendNewNote: | |
191 | - function(id, html) { | |
192 | - if(id != this.bottom_id) { | |
193 | - $("#new-notes-list").append(html); | |
194 | - } | |
195 | - } | |
196 | -}; | |
197 | - | |
198 | -var PerLineNotes = { | |
199 | - init: | |
200 | - function() { | |
201 | - /** | |
202 | - * Called when clicking on the "add note" or "reply" button for a diff line. | |
203 | - * | |
204 | - * Shows the note form below the line. | |
205 | - * Sets some hidden fields in the form. | |
206 | - */ | |
207 | - $(".diff_file_content").on("click", ".line_note_link, .line_note_reply_link", function(e) { | |
208 | - var form = $(".per_line_form"); | |
209 | - $(this).closest("tr").after(form); | |
210 | - form.find("#note_line_code").val($(this).data("lineCode")); | |
211 | - form.show(); | |
212 | - return false; | |
213 | - }); | |
214 | - | |
215 | - disableButtonIfEmptyField(".line-note-text", ".submit_inline_note"); | |
216 | - | |
217 | - /** | |
218 | - * Called in response to successfully deleting a note on a diff line. | |
219 | - * | |
220 | - * Removes the actual note from view. | |
221 | - * Removes the reply button if the last note for that line has been removed. | |
222 | - */ | |
223 | - $(".diff_file_content").on("ajax:success", ".delete-note", function() { | |
224 | - var trNote = $(this).closest("tr"); | |
225 | - trNote.fadeOut(function() { | |
226 | - $(this).remove(); | |
227 | - }); | |
228 | - | |
229 | - // check if this is the last note for this line | |
230 | - // elements must really be removed for this to work reliably | |
231 | - var trLine = trNote.prev(); | |
232 | - var trRpl = trNote.next(); | |
233 | - if (trLine.hasClass("line_holder") && trRpl.hasClass("reply")) { | |
234 | - trRpl.fadeOut(function() { $(this).remove(); }); | |
235 | - } | |
236 | - }); | |
237 | - } | |
238 | -} |
... | ... | @@ -0,0 +1,238 @@ |
1 | +var NoteList = { | |
2 | + | |
3 | + notes_path: null, | |
4 | + target_params: null, | |
5 | + target_id: 0, | |
6 | + target_type: null, | |
7 | + bottom_id: 0, | |
8 | + loading_more_disabled: false, | |
9 | + | |
10 | + init: | |
11 | + function(tid, tt, path) { | |
12 | + this.notes_path = path + ".js"; | |
13 | + this.target_id = tid; | |
14 | + this.target_type = tt; | |
15 | + this.target_params = "&target_type=" + this.target_type + "&target_id=" + this.target_id; | |
16 | + | |
17 | + // get initial set of notes | |
18 | + this.getContent(); | |
19 | + | |
20 | + $("#notes-list, #new-notes-list").on("ajax:success", ".delete-note", function() { | |
21 | + $(this).closest('li').fadeOut(); | |
22 | + }); | |
23 | + | |
24 | + $(".note-form-holder").on("ajax:before", function(){ | |
25 | + $(".submit_note").disable() | |
26 | + }) | |
27 | + | |
28 | + $(".note-form-holder").on("ajax:complete", function(){ | |
29 | + $(".submit_note").enable() | |
30 | + }) | |
31 | + | |
32 | + disableButtonIfEmptyField(".note-text", ".submit_note"); | |
33 | + | |
34 | + $(".note-text").on("focus", function(){ | |
35 | + $(this).css("height", "80px"); | |
36 | + $('.note_advanced_opts').show(); | |
37 | + }); | |
38 | + | |
39 | + $("#note_attachment").change(function(e){ | |
40 | + var val = $('.input-file').val(); | |
41 | + var filename = val.replace(/^.*[\\\/]/, ''); | |
42 | + $(".file_name").text(filename); | |
43 | + }); | |
44 | + }, | |
45 | + | |
46 | + | |
47 | + /** | |
48 | + * Handle loading the initial set of notes. | |
49 | + * And set up loading more notes when scrolling to the bottom of the page. | |
50 | + */ | |
51 | + | |
52 | + | |
53 | + /** | |
54 | + * Gets an inital set of notes. | |
55 | + */ | |
56 | + getContent: | |
57 | + function() { | |
58 | + $.ajax({ | |
59 | + type: "GET", | |
60 | + url: this.notes_path, | |
61 | + data: "?" + this.target_params, | |
62 | + complete: function(){ $('.notes-status').removeClass("loading")}, | |
63 | + beforeSend: function() { $('.notes-status').addClass("loading") }, | |
64 | + dataType: "script"}); | |
65 | + }, | |
66 | + | |
67 | + /** | |
68 | + * Called in response to getContent(). | |
69 | + * Replaces the content of #notes-list with the given html. | |
70 | + */ | |
71 | + setContent: | |
72 | + function(last_id, html) { | |
73 | + this.bottom_id = last_id; | |
74 | + $("#notes-list").html(html); | |
75 | + | |
76 | + // Init infinite scrolling | |
77 | + this.initLoadMore(); | |
78 | + }, | |
79 | + | |
80 | + | |
81 | + /** | |
82 | + * Handle loading more notes when scrolling to the bottom of the page. | |
83 | + * The id of the last note in the list is in this.bottom_id. | |
84 | + * | |
85 | + * Set up refreshing only new notes after all notes have been loaded. | |
86 | + */ | |
87 | + | |
88 | + | |
89 | + /** | |
90 | + * Initializes loading more notes when scrolling to the bottom of the page. | |
91 | + */ | |
92 | + initLoadMore: | |
93 | + function() { | |
94 | + $(document).endlessScroll({ | |
95 | + bottomPixels: 400, | |
96 | + fireDelay: 1000, | |
97 | + fireOnce:true, | |
98 | + ceaseFire: function() { | |
99 | + return NoteList.loading_more_disabled; | |
100 | + }, | |
101 | + callback: function(i) { | |
102 | + NoteList.getMore(); | |
103 | + } | |
104 | + }); | |
105 | + }, | |
106 | + | |
107 | + /** | |
108 | + * Gets an additional set of notes. | |
109 | + */ | |
110 | + getMore: | |
111 | + function() { | |
112 | + // only load more notes if there are no "new" notes | |
113 | + $('.loading').show(); | |
114 | + $.ajax({ | |
115 | + type: "GET", | |
116 | + url: this.notes_path, | |
117 | + data: "loading_more=1&after_id=" + this.bottom_id + this.target_params, | |
118 | + complete: function(){ $('.notes-status').removeClass("loading")}, | |
119 | + beforeSend: function() { $('.notes-status').addClass("loading") }, | |
120 | + dataType: "script"}); | |
121 | + }, | |
122 | + | |
123 | + /** | |
124 | + * Called in response to getMore(). | |
125 | + * Append notes to #notes-list. | |
126 | + */ | |
127 | + appendMoreNotes: | |
128 | + function(id, html) { | |
129 | + if(id != this.bottom_id) { | |
130 | + this.bottom_id = id; | |
131 | + $("#notes-list").append(html); | |
132 | + } | |
133 | + }, | |
134 | + | |
135 | + /** | |
136 | + * Called in response to getMore(). | |
137 | + * Disables loading more notes when scrolling to the bottom of the page. | |
138 | + * Initalizes refreshing new notes. | |
139 | + */ | |
140 | + finishedLoadingMore: | |
141 | + function() { | |
142 | + this.loading_more_disabled = true; | |
143 | + | |
144 | + // from now on only get new notes | |
145 | + this.initRefreshNew(); | |
146 | + }, | |
147 | + | |
148 | + | |
149 | + /** | |
150 | + * Handle refreshing and adding of new notes. | |
151 | + * | |
152 | + * New notes are all notes that are created after the site has been loaded. | |
153 | + * The "old" notes are in #notes-list the "new" ones will be in #new-notes-list. | |
154 | + * The id of the last "old" note is in this.bottom_id. | |
155 | + */ | |
156 | + | |
157 | + | |
158 | + /** | |
159 | + * Initializes getting new notes every n seconds. | |
160 | + */ | |
161 | + initRefreshNew: | |
162 | + function() { | |
163 | + setInterval("NoteList.getNew()", 10000); | |
164 | + }, | |
165 | + | |
166 | + /** | |
167 | + * Gets the new set of notes (i.e. all notes after ). | |
168 | + */ | |
169 | + getNew: | |
170 | + function() { | |
171 | + $.ajax({ | |
172 | + type: "GET", | |
173 | + url: this.notes_path, | |
174 | + data: "loading_new=1&after_id=" + this.bottom_id + this.target_params, | |
175 | + dataType: "script"}); | |
176 | + }, | |
177 | + | |
178 | + /** | |
179 | + * Called in response to getNew(). | |
180 | + * Replaces the content of #new-notes-list with the given html. | |
181 | + */ | |
182 | + replaceNewNotes: | |
183 | + function(html) { | |
184 | + $("#new-notes-list").html(html); | |
185 | + }, | |
186 | + | |
187 | + /** | |
188 | + * Adds a single note to #new-notes-list. | |
189 | + */ | |
190 | + appendNewNote: | |
191 | + function(id, html) { | |
192 | + if(id != this.bottom_id) { | |
193 | + $("#new-notes-list").append(html); | |
194 | + } | |
195 | + } | |
196 | +}; | |
197 | + | |
198 | +var PerLineNotes = { | |
199 | + init: | |
200 | + function() { | |
201 | + /** | |
202 | + * Called when clicking on the "add note" or "reply" button for a diff line. | |
203 | + * | |
204 | + * Shows the note form below the line. | |
205 | + * Sets some hidden fields in the form. | |
206 | + */ | |
207 | + $(".diff_file_content").on("click", ".line_note_link, .line_note_reply_link", function(e) { | |
208 | + var form = $(".per_line_form"); | |
209 | + $(this).closest("tr").after(form); | |
210 | + form.find("#note_line_code").val($(this).data("lineCode")); | |
211 | + form.show(); | |
212 | + return false; | |
213 | + }); | |
214 | + | |
215 | + disableButtonIfEmptyField(".line-note-text", ".submit_inline_note"); | |
216 | + | |
217 | + /** | |
218 | + * Called in response to successfully deleting a note on a diff line. | |
219 | + * | |
220 | + * Removes the actual note from view. | |
221 | + * Removes the reply button if the last note for that line has been removed. | |
222 | + */ | |
223 | + $(".diff_file_content").on("ajax:success", ".delete-note", function() { | |
224 | + var trNote = $(this).closest("tr"); | |
225 | + trNote.fadeOut(function() { | |
226 | + $(this).remove(); | |
227 | + }); | |
228 | + | |
229 | + // check if this is the last note for this line | |
230 | + // elements must really be removed for this to work reliably | |
231 | + var trLine = trNote.prev(); | |
232 | + var trRpl = trNote.next(); | |
233 | + if (trLine.hasClass("line_holder") && trRpl.hasClass("reply")) { | |
234 | + trRpl.fadeOut(function() { $(this).remove(); }); | |
235 | + } | |
236 | + }); | |
237 | + } | |
238 | +} | ... | ... |