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:
parent
374cf99ef2
commit
1444db4fd6
5 changed files with 46 additions and 6 deletions
services/web/public
coffee
js/libs/pdfListView
|
@ -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)
|
||||
|
|
|
@ -215,4 +215,7 @@ define [
|
|||
Backbone.View::undelegateEvents.apply(this, arguments)
|
||||
@pdfView.undelegateEvents()
|
||||
|
||||
setPdfPosition: (args...) ->
|
||||
@pdfView.setPdfPosition?(args...)
|
||||
|
||||
|
||||
|
|
|
@ -123,3 +123,11 @@ define [
|
|||
onResize: () ->
|
||||
@pdfListView.onResize()
|
||||
|
||||
setPdfPosition: (page, top, left) ->
|
||||
@pdfListView.setPdfPosition({
|
||||
page: page
|
||||
offset:
|
||||
left: left
|
||||
top: top
|
||||
}, true)
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue