Merge branch 'riyad-update-votes-when-adding-notes'
This commit is contained in:
commit
560b1ac5f3
7 changed files with 77 additions and 7 deletions
|
@ -21,15 +21,18 @@ var NoteList = {
|
||||||
this.getContent();
|
this.getContent();
|
||||||
|
|
||||||
$("#notes-list, #new-notes-list").on("ajax:success", ".delete-note", function() {
|
$("#notes-list, #new-notes-list").on("ajax:success", ".delete-note", function() {
|
||||||
$(this).closest('li').fadeOut();
|
$(this).closest('li').fadeOut(function() {
|
||||||
|
$(this).remove();
|
||||||
|
NoteList.updateVotes();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".note-form-holder").on("ajax:before", function(){
|
$(".note-form-holder").on("ajax:before", function(){
|
||||||
$(".submit_note").disable()
|
$(".submit_note").disable();
|
||||||
})
|
})
|
||||||
|
|
||||||
$(".note-form-holder").on("ajax:complete", function(){
|
$(".note-form-holder").on("ajax:complete", function(){
|
||||||
$(".submit_note").enable()
|
$(".submit_note").enable();
|
||||||
})
|
})
|
||||||
|
|
||||||
disableButtonIfEmptyField(".note-text", ".submit_note");
|
disableButtonIfEmptyField(".note-text", ".submit_note");
|
||||||
|
@ -159,6 +162,8 @@ var NoteList = {
|
||||||
if (!this.reversed) {
|
if (!this.reversed) {
|
||||||
this.initRefreshNew();
|
this.initRefreshNew();
|
||||||
}
|
}
|
||||||
|
// make sure we are up to date
|
||||||
|
this.updateVotes();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
@ -198,6 +203,7 @@ var NoteList = {
|
||||||
replaceNewNotes:
|
replaceNewNotes:
|
||||||
function(html) {
|
function(html) {
|
||||||
$("#new-notes-list").html(html);
|
$("#new-notes-list").html(html);
|
||||||
|
this.updateVotes();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -210,6 +216,37 @@ var NoteList = {
|
||||||
} else {
|
} else {
|
||||||
$("#new-notes-list").append(html);
|
$("#new-notes-list").append(html);
|
||||||
}
|
}
|
||||||
|
this.updateVotes();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recalculates the votes and updates them (if they are displayed at all).
|
||||||
|
*
|
||||||
|
* Assumes all relevant notes are displayed (i.e. there are no more notes to
|
||||||
|
* load via getMore()).
|
||||||
|
* Might produce inaccurate results when not all notes have been loaded and a
|
||||||
|
* recalculation is triggered (e.g. when deleting a note).
|
||||||
|
*/
|
||||||
|
updateVotes:
|
||||||
|
function() {
|
||||||
|
var votes = $("#votes .votes");
|
||||||
|
var notes = $("#notes-list, #new-notes-list").find(".note.vote");
|
||||||
|
|
||||||
|
// only update if there is a vote display
|
||||||
|
if (votes.size()) {
|
||||||
|
var upvotes = notes.filter(".upvote").size();
|
||||||
|
var downvotes = notes.filter(".downvote").size();
|
||||||
|
var votesCount = upvotes + downvotes;
|
||||||
|
var upvotesPercent = votesCount ? (100.0 / votesCount * upvotes) : 0;
|
||||||
|
var downvotesPercent = votesCount ? (100.0 - upvotesPercent) : 0;
|
||||||
|
|
||||||
|
// change vote bar lengths
|
||||||
|
votes.find(".bar-success").css("width", upvotesPercent+"%");
|
||||||
|
votes.find(".bar-danger").css("width", downvotesPercent+"%");
|
||||||
|
// replace vote numbers
|
||||||
|
votes.find(".upvotes").text(votes.find(".upvotes").text().replace(/\d+/, upvotes));
|
||||||
|
votes.find(".downvotes").text(votes.find(".downvotes").text().replace(/\d+/, downvotes));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -158,6 +158,18 @@ span.update-author {
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.label-success {
|
||||||
|
background-color: #8D8;
|
||||||
|
color: #333;
|
||||||
|
text-shadow: 0 1px 1px white;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.label-error {
|
||||||
|
background-color: #D88;
|
||||||
|
color: #333;
|
||||||
|
text-shadow: 0 1px 1px white;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.event_label {
|
.event_label {
|
||||||
|
|
|
@ -71,6 +71,11 @@
|
||||||
border-top: 1px solid #eee;
|
border-top: 1px solid #eee;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* mark vote notes */
|
||||||
|
.voting_notes .note {
|
||||||
|
padding: 8px 0;
|
||||||
|
}
|
||||||
|
|
||||||
.notes-status {
|
.notes-status {
|
||||||
margin: 18px;
|
margin: 18px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,4 +6,12 @@ module NotesHelper
|
||||||
def loading_new_notes?
|
def loading_new_notes?
|
||||||
params[:loading_new].present?
|
params[:loading_new].present?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def note_vote_class(note)
|
||||||
|
if note.upvote?
|
||||||
|
"vote upvote"
|
||||||
|
elsif note.downvote?
|
||||||
|
"vote downvote"
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -61,4 +61,4 @@
|
||||||
= markdown @issue.description
|
= markdown @issue.description
|
||||||
|
|
||||||
|
|
||||||
.issue_notes#notes= render "notes/notes_with_form", tid: @issue.id, tt: "issue"
|
.issue_notes.voting_notes#notes= render "notes/notes_with_form", tid: @issue.id, tt: "issue"
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
%i.icon-list-alt
|
%i.icon-list-alt
|
||||||
Diff
|
Diff
|
||||||
|
|
||||||
.merge_request_notes#notes{ class: (controller.action_name == 'show') ? "" : "hide" }
|
.merge_request_notes.voting_notes#notes{ class: (controller.action_name == 'show') ? "" : "hide" }
|
||||||
= render("notes/notes_with_form", tid: @merge_request.id, tt: "merge_request")
|
= render("notes/notes_with_form", tid: @merge_request.id, tt: "merge_request")
|
||||||
.merge-request-diffs
|
.merge-request-diffs
|
||||||
= render "merge_requests/show/diffs" if @diffs
|
= render "merge_requests/show/diffs" if @diffs
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
%li{id: dom_id(note), class: "note"}
|
%li{id: dom_id(note), class: "note #{note_vote_class(note)}"}
|
||||||
= image_tag gravatar_icon(note.author.email), class: "avatar s32"
|
= image_tag gravatar_icon(note.author.email), class: "avatar s32"
|
||||||
%div.note-author
|
%div.note-author
|
||||||
%strong= note.author_name
|
%strong= note.author_name
|
||||||
|
@ -6,6 +6,14 @@
|
||||||
%cite.cgray
|
%cite.cgray
|
||||||
= time_ago_in_words(note.updated_at)
|
= time_ago_in_words(note.updated_at)
|
||||||
ago
|
ago
|
||||||
|
- if note.upvote?
|
||||||
|
%span.label.label-success
|
||||||
|
%i.icon-thumbs-up
|
||||||
|
\+1
|
||||||
|
- if note.downvote?
|
||||||
|
%span.label.label-error
|
||||||
|
%i.icon-thumbs-down
|
||||||
|
\-1
|
||||||
- if(note.author_id == current_user.id) || can?(current_user, :admin_note, @project)
|
- if(note.author_id == current_user.id) || can?(current_user, :admin_note, @project)
|
||||||
= link_to [@project, note], confirm: 'Are you sure?', method: :delete, remote: true, class: "cred delete-note btn very_small" do
|
= link_to [@project, note], confirm: 'Are you sure?', method: :delete, remote: true, class: "cred delete-note btn very_small" do
|
||||||
%i.icon-trash
|
%i.icon-trash
|
||||||
|
|
Loading…
Reference in a new issue