1
0
Fork 0
mirror of https://github.com/overleaf/overleaf.git synced 2025-04-02 18:35:46 +00:00

Implement code for syncing from editor to PDF

This commit is contained in:
James Allen 2014-04-08 17:21:49 +01:00
parent 374cf99ef2
commit 1444db4fd6
5 changed files with 46 additions and 6 deletions
services/web/public

View file

@ -304,6 +304,12 @@ define [
gotoLine: (line) ->
@aceEditor.gotoLine(line)
getCurrentLine: () ->
@aceEditor.selection?.getCursor()?.row
getCurrentColumn: () ->
@aceEditor.selection?.getCursor()?.column
getLines: (from, to) ->
if from? and to?
@getSession().doc.getLines(from, to)

View file

@ -215,4 +215,7 @@ define [
Backbone.View::undelegateEvents.apply(this, arguments)
@pdfView.undelegateEvents()
setPdfPosition: (args...) ->
@pdfView.setPdfPosition?(args...)

View file

@ -123,3 +123,11 @@ define [
onResize: () ->
@pdfListView.onResize()
setPdfPosition: (page, top, left) ->
@pdfListView.setPdfPosition({
page: page
offset:
left: left
top: top
}, true)

View file

@ -220,12 +220,32 @@ define [
h: e.x.toFixed(2)
v: e.y.toFixed(2)
type: "GET"
headers:
"X-CSRF-Token": window.csrfToken
success: (response) =>
data = JSON.parse(response)
if data.code and data.code.length > 0
file = data.code[0].file
line = data.code[0].line
@ide.fileTreeManager.openDocByPath(file, line)
}
}
syncToPdf: () ->
entity_id = @ide.editor.getCurrentDocId()
file = @ide.fileTreeManager.getPathOfEntityId(entity_id)
line = @ide.editor.getCurrentLine()
column = @ide.editor.getCurrentColumn()
$.ajax {
url: "/project/#{@ide.project_id}/sync/code"
data:
file: file
line: line + 1
column: column
type: "GET"
success: (response) =>
data = JSON.parse(response)
if data.pdf and data.pdf.length > 0
page = data.pdf[0].page - 1
h = data.pdf[0].h
v = data.pdf[0].v
@view.setPdfPosition page, v - 100, h
}

View file

@ -388,11 +388,14 @@ ListView.prototype = {
return pdfPosition;
},
setPdfPosition: function(pdfPosition) {
setPdfPosition: function(pdfPosition, fromTop) {
if (typeof pdfPosition !== "undefined" && pdfPosition != null) {
var offset = pdfPosition.offset;
var page_index = pdfPosition.page;
var pageView = this.pageViews[page_index];
if (fromTop) {
offset.top = pageView.normalHeight - offset.top;
}
var position = pageView.getPdfPositionInViewer(offset.left, offset.top);
this.dom.scrollTop = position.top;
}
@ -882,8 +885,8 @@ PDFListView.prototype = {
return this.listView.getPdfPosition();
},
setPdfPosition: function(pdfPosition) {
this.listView.setPdfPosition(pdfPosition)
setPdfPosition: function(pdfPosition, fromTop) {
this.listView.setPdfPosition(pdfPosition, fromTop)
}
};
PDFListView.Logger = Logger;