Commit f50cb7fc authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Add keyboard nav for tree view. Refactor tree-view coffee

parent 1dd80d22
class BlobView
constructor: ->
# See if there are lines selected
# "#L12" and "#L34-56" supported
highlightBlobLines = ->
if window.location.hash isnt ""
matches = window.location.hash.match(/\#L(\d+)(\-(\d+))?/)
first_line = parseInt(matches?[1])
last_line = parseInt(matches?[3])
unless isNaN first_line
last_line = first_line if isNaN(last_line)
$("#tree-content-holder .highlight .line").removeClass("hll")
$("#LC#{line}").addClass("hll") for line in [first_line..last_line]
$("#L#{first_line}").ScrollTo()
# Highlight the correct lines on load
highlightBlobLines()
# Highlight the correct lines when the hash part of the URL changes
$(window).on 'hashchange', highlightBlobLines
@BlobView = BlobView
...@@ -32,6 +32,10 @@ class Dispatcher ...@@ -32,6 +32,10 @@ class Dispatcher
new TeamMembers() new TeamMembers()
when 'groups:people' when 'groups:people'
new GroupMembers() new GroupMembers()
when 'projects:tree:show'
new TreeView()
when 'projects:blob:show'
new BlobView()
switch path.first() switch path.first()
when 'admin' then new Admin() when 'admin' then new Admin()
......
# Code browser tree slider class TreeView
# Make the entire tree-item row clickable, but not if clicking another link (like a commit message) constructor: ->
$(".tree-content-holder .tree-item").live 'click', (e) -> @initKeyNav()
# Code browser tree slider
# Make the entire tree-item row clickable, but not if clicking another link (like a commit message)
$(".tree-content-holder .tree-item").on 'click', (e) ->
if (e.target.nodeName != "A") if (e.target.nodeName != "A")
path = $('.tree-item-file-name a', this).attr('href') path = $('.tree-item-file-name a', this).attr('href')
Turbolinks.visit(path) Turbolinks.visit(path)
$ ->
# Show the "Loading commit data" for only the first element # Show the "Loading commit data" for only the first element
$('span.log_loading:first').removeClass('hide') $('span.log_loading:first').removeClass('hide')
# See if there are lines selected initKeyNav: ->
# "#L12" and "#L34-56" supported li = $("tr.tree-item")
highlightBlobLines = -> liSelected = null
if window.location.hash isnt "" $('body').keydown (e) ->
matches = window.location.hash.match(/\#L(\d+)(\-(\d+))?/) if e.which is 40
first_line = parseInt(matches?[1]) if liSelected
last_line = parseInt(matches?[3]) next = liSelected.next()
if next.length > 0
liSelected.removeClass "selected"
liSelected = next.addClass("selected")
else
liSelected = li.eq(0).addClass("selected")
$(liSelected).focus()
else if e.which is 38
if liSelected
next = liSelected.prev()
if next.length > 0
liSelected.removeClass "selected"
liSelected = next.addClass("selected")
else
liSelected = li.last().addClass("selected")
unless isNaN first_line $(liSelected).focus()
last_line = first_line if isNaN(last_line) else if e.which is 13
$("#tree-content-holder .highlight .line").removeClass("hll") path = $('.tree-item.selected .tree-item-file-name a').attr('href')
$("#LC#{line}").addClass("hll") for line in [first_line..last_line] Turbolinks.visit(path)
$("#L#{first_line}").ScrollTo()
# Highlight the correct lines on load @TreeView = TreeView
highlightBlobLines()
# Highlight the correct lines when the hash part of the URL changes
$(window).on 'hashchange', highlightBlobLines
...@@ -23,6 +23,14 @@ ...@@ -23,6 +23,14 @@
} }
cursor: pointer; cursor: pointer;
} }
&.selected {
td {
background: $hover;
border-top: 1px solid #ADF;
border-bottom: 1px solid #ADF;
}
}
} }
} }
......
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