Commit bd60a4ed authored by Riyad Preukschas's avatar Riyad Preukschas

Make notes JS know which notes are new in a request

parent ae067ee3
Array.prototype.first = function() {
return this[0];
}
Array.prototype.last = function() {
return this[this.length-1];
}
\ No newline at end of file
...@@ -89,12 +89,12 @@ var NoteList = { ...@@ -89,12 +89,12 @@ var NoteList = {
getContent: getContent:
function() { function() {
$.ajax({ $.ajax({
type: "GET", url: this.notes_path,
url: this.notes_path, data: this.target_params,
data: this.target_params, complete: function(){ $('.notes-status').removeClass("loading")},
complete: function(){ $('.notes-status').removeClass("loading")}, beforeSend: function() { $('.notes-status').addClass("loading") },
beforeSend: function() { $('.notes-status').addClass("loading") }, dataType: "script"
dataType: "script"}); });
}, },
/** /**
...@@ -102,9 +102,9 @@ var NoteList = { ...@@ -102,9 +102,9 @@ var NoteList = {
* Replaces the content of #notes-list with the given html. * Replaces the content of #notes-list with the given html.
*/ */
setContent: setContent:
function(first_id, last_id, html) { function(newNoteIds, html) {
this.top_id = first_id; this.top_id = newNoteIds.first();
this.bottom_id = last_id; this.bottom_id = newNoteIds.last();
$("#notes-list").html(html); $("#notes-list").html(html);
// init infinite scrolling // init infinite scrolling
...@@ -151,12 +151,12 @@ var NoteList = { ...@@ -151,12 +151,12 @@ var NoteList = {
// only load more notes if there are no "new" notes // only load more notes if there are no "new" notes
$('.loading').show(); $('.loading').show();
$.ajax({ $.ajax({
type: "GET",
url: this.notes_path, url: this.notes_path,
data: this.target_params + "&loading_more=1&" + (this.reversed ? "before_id" : "after_id") + "=" + this.bottom_id, data: this.target_params + "&loading_more=1&" + (this.reversed ? "before_id" : "after_id") + "=" + this.bottom_id,
complete: function(){ $('.notes-status').removeClass("loading")}, complete: function(){ $('.notes-status').removeClass("loading")},
beforeSend: function() { $('.notes-status').addClass("loading") }, beforeSend: function() { $('.notes-status').addClass("loading") },
dataType: "script"}); dataType: "script"
});
}, },
/** /**
...@@ -164,9 +164,10 @@ var NoteList = { ...@@ -164,9 +164,10 @@ var NoteList = {
* Append notes to #notes-list. * Append notes to #notes-list.
*/ */
appendMoreNotes: appendMoreNotes:
function(id, html) { function(newNoteIds, html) {
if(id != this.bottom_id) { var lastNewNoteId = newNoteIds.last();
this.bottom_id = id; if(lastNewNoteId != this.bottom_id) {
this.bottom_id = lastNewNoteId;
$("#notes-list").append(html); $("#notes-list").append(html);
} }
}, },
...@@ -212,10 +213,10 @@ var NoteList = { ...@@ -212,10 +213,10 @@ var NoteList = {
getNew: getNew:
function() { function() {
$.ajax({ $.ajax({
type: "GET", url: this.notes_path,
url: this.notes_path, data: this.target_params + "&loading_new=1&after_id=" + (this.reversed ? this.top_id : this.bottom_id),
data: this.target_params + "&loading_new=1&after_id=" + (this.reversed ? this.top_id : this.bottom_id), dataType: "script"
dataType: "script"}); });
}, },
/** /**
...@@ -223,7 +224,7 @@ var NoteList = { ...@@ -223,7 +224,7 @@ var NoteList = {
* Replaces the content of #new-notes-list with the given html. * Replaces the content of #new-notes-list with the given html.
*/ */
replaceNewNotes: replaceNewNotes:
function(html) { function(newNoteIds, html) {
$("#new-notes-list").html(html); $("#new-notes-list").html(html);
this.updateVotes(); this.updateVotes();
}, },
......
- unless @notes.blank? - unless @notes.blank?
- new_note_ids = @notes.map(&:id)
- if loading_more_notes? - if loading_more_notes?
:plain :plain
NoteList.appendMoreNotes(#{@notes.last.id}, "#{escape_javascript(render 'notes/notes')}"); NoteList.appendMoreNotes(#{new_note_ids}, "#{escape_javascript(render 'notes/notes')}");
- elsif loading_new_notes? - elsif loading_new_notes?
:plain :plain
NoteList.replaceNewNotes("#{escape_javascript(render 'notes/notes')}"); NoteList.replaceNewNotes(#{new_note_ids}, "#{escape_javascript(render 'notes/notes')}");
- else - else
:plain :plain
NoteList.setContent(#{@notes.first.id}, #{@notes.last.id}, "#{escape_javascript(render 'notes/notes')}"); NoteList.setContent(#{new_note_ids}, "#{escape_javascript(render 'notes/notes')}");
- else - else
- if loading_more_notes? - if loading_more_notes?
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment