Merge branch 'faster-diff-rendering' into 'master'

Faster diff rendering

1. Dont render link in separate template but use helper instead
2. Don't build new object but just reuse variables

New note for diff is rendered per each diff line. Such simple improvements gives us 20..100% better performance depends on diff size
This commit is contained in:
Dmitriy Zaporozhets 2014-06-06 20:43:23 +00:00
commit ab094e67ee
3 changed files with 29 additions and 6 deletions

View file

@ -42,4 +42,23 @@ module NotesHelper
project_id: noteable.project.id,
}.to_json
end
def link_to_new_diff_note(line_code)
discussion_id = Note.build_discussion_id(
@comments_target[:noteable_type],
@comments_target[:noteable_id] || @comments_target[:commit_id],
line_code
)
data = {
noteable_type: @comments_target[:noteable_type],
noteable_id: @comments_target[:noteable_id],
commit_id: @comments_target[:commit_id],
line_code: line_code,
discussion_id: discussion_id
}
link_to "", "javascript:;", class: "add-diff-note js-add-diff-note-button",
data: data, title: "Add a comment to this line"
end
end

View file

@ -122,11 +122,15 @@ class Note < ActiveRecord::Base
discussions
end
end
# Determine whether or not a cross-reference note already exists.
def self.cross_reference_exists?(noteable, mentioner)
where(noteable_id: noteable.id, system: true, note: "_mentioned in #{mentioner.gfm_reference}_").any?
def build_discussion_id(type, id, line_code)
[:discussion, type.try(:underscore), id, line_code].join("-").to_sym
end
# Determine whether or not a cross-reference note already exists.
def cross_reference_exists?(noteable, mentioner)
where(noteable_id: noteable.id, system: true, note: "_mentioned in #{mentioner.gfm_reference}_").any?
end
end
def commit_author
@ -194,7 +198,7 @@ class Note < ActiveRecord::Base
end
def discussion_id
@discussion_id ||= [:discussion, noteable_type.try(:underscore), noteable_id || commit_id, line_code].join("-").to_sym
@discussion_id ||= Note.build_discussion_id(noteable_type, noteable_id || commit_id, line_code)
end
# Returns true if this is a downvote note,

View file

@ -13,7 +13,7 @@
%td.old_line
= link_to raw(type == "new" ? "&nbsp;" : line_old), "##{line_code}", id: line_code
- if @comments_allowed
= render "projects/notes/diff_note_link", line_code: line_code
= link_to_new_diff_note(line_code)
%td.new_line= link_to raw(type == "old" ? "&nbsp;" : line_new) , "##{line_code}", id: line_code
%td.line_content{class: "noteable_line #{type} #{line_code}", "line_code" => line_code}= raw diff_line_content(line)