Automatically show a sensible diff to start

This commit is contained in:
James Allen
2014-03-12 17:09:11 +00:00
parent e0da6da4c6
commit 05443b85da
2 changed files with 51 additions and 28 deletions

View File

@@ -7,7 +7,7 @@ define [
template: $("#changeListTemplate").html()
events:
"scroll" : "loadUntilFull"
"scroll" : () -> @loadUntilFull()
initialize: () ->
@itemViews = []
@@ -39,20 +39,13 @@ define [
view.$el.insertBefore(elementAtIndex)
view.on "click", (e, v) =>
@selectedToIndex = index
@selectedFromIndex = index
@resetAllSelectors()
@triggerChangeDiff()
@setSelectionRange(index, index)
view.on "selected:to", (e, v) =>
@selectedToIndex = index
@resetAllSelectors()
@triggerChangeDiff()
@setSelectionRange(@selectedFromIndex, index)
view.on "selected:from", (e, v) =>
@selectedFromIndex = index
@resetAllSelectors()
@triggerChangeDiff()
@setSelectionRange(index, @selectedToIndex)
view.on "mouseenter:to", (e) =>
@hoverToIndex = index
@@ -75,6 +68,12 @@ define [
view.resetSelector(index, @selectedFromIndex, @selectedToIndex)
setSelectionRange: (fromIndex, toIndex) ->
@selectedFromIndex = fromIndex
@selectedToIndex = toIndex
@resetAllSelectors()
@triggerChangeDiff()
resetAllSelectors: () ->
for view, i in @itemViews
view.resetSelector(i, @selectedFromIndex, @selectedToIndex)
@@ -102,23 +101,23 @@ define [
atEndOfListView: ->
@$el.scrollTop() + @$el.height() >= @$(".change-list").height() - 30
loadUntilFull: (e, callback) ->
loadUntilFull: (callback = (error) ->) ->
if (@listShorterThanContainer() or @atEndOfListView()) and not @atEndOfCollection and not @loading
@showLoading()
@hideEmptyMessage()
@collection.fetchNextBatch
error: =>
error: (error) =>
@hideLoading()
@showEmptyMessageIfCollectionEmpty()
callback() if callback?
callback(error)
success: (collection, response) =>
@hideLoading()
if response.updates.length == @collection.batchSize
@loadUntilFull(e, callback)
@loadUntilFull(callback)
else
@atEndOfCollection = true
@showEmptyMessageIfCollectionEmpty()
callback() if callback?
callback()
else
callback() if callback?

View File

@@ -31,26 +31,50 @@ define [
el : @$el.find(".change-list-area")
)
@changeListView.render()
@changeListView.loadUntilFull()
@changeListView.loadUntilFull (error) =>
@autoSelectDiff()
@changeListView.on "change_diff", (fromModel, toModel) =>
@diff = new Diff({
project_id: @project_id
doc_id: @doc_id
from: fromModel.get("fromVersion")
to: toModel.get("toVersion")
})
@diffView = new DiffView(
model: @diff
el: @$el.find(".track-changes-diff")
)
@diff.fetch()
@showDiff(fromModel, toModel)
@changeListView.on "restore", (change) =>
@restore(change)
@showEl()
autoSelectDiff: () ->
if @changes.models.length == 0
return
# Find all change until the last one we made
fromIndex = null
for change, i in @changes.models
if ide.user in change.get("users")
if i > 0
fromIndex = i - 1
else
fromIndex = 0
break
fromIndex = 0 if !fromIndex
toChange = @changes.models[0]
fromChange = @changes.models[fromIndex]
@showDiff(fromChange, toChange)
@changeListView.setSelectionRange(fromIndex, 0)
showDiff: (fromModel, toModel) ->
@diff = new Diff({
project_id: @project_id
doc_id: @doc_id
from: fromModel.get("fromVersion")
to: toModel.get("toVersion")
})
@diffView = new DiffView(
model: @diff
el: @$el.find(".track-changes-diff")
)
@diff.fetch()
showEl: ->
@ide.editor.hide()
@$el.show()