mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Merge pull request #244 from sharelatex/add-fast-path-to-pdf
Add fast path to pdf
This commit is contained in:
commit
40464fe5b5
3 changed files with 44 additions and 13 deletions
|
@ -93,7 +93,12 @@ module.exports = CompileController =
|
||||||
|
|
||||||
getFileFromClsi: (req, res, next = (error) ->) ->
|
getFileFromClsi: (req, res, next = (error) ->) ->
|
||||||
project_id = req.params.Project_id
|
project_id = req.params.Project_id
|
||||||
CompileController.proxyToClsi(project_id, "/project/#{project_id}/output/#{req.params.file}", req, res, next)
|
build = req.params.build
|
||||||
|
if build?
|
||||||
|
url = "/project/#{project_id}/build/#{build}/output/#{req.params.file}"
|
||||||
|
else
|
||||||
|
url = "/project/#{project_id}/output/#{req.params.file}"
|
||||||
|
CompileController.proxyToClsi(project_id, url, req, res, next)
|
||||||
|
|
||||||
proxySync: (req, res, next = (error) ->) ->
|
proxySync: (req, res, next = (error) ->) ->
|
||||||
CompileController.proxyToClsi(req.params.Project_id, req.url, req, res, next)
|
CompileController.proxyToClsi(req.params.Project_id, req.url, req, res, next)
|
||||||
|
|
|
@ -113,6 +113,17 @@ module.exports = class Router
|
||||||
req.params = params
|
req.params = params
|
||||||
next()
|
next()
|
||||||
), AuthorizationMiddlewear.ensureUserCanReadProject, CompileController.getFileFromClsi
|
), AuthorizationMiddlewear.ensureUserCanReadProject, CompileController.getFileFromClsi
|
||||||
|
# direct url access to output files for a specific build (query string not required)
|
||||||
|
webRouter.get /^\/project\/([^\/]*)\/build\/([0-9a-f-]+)\/output\/(.*)$/,
|
||||||
|
((req, res, next) ->
|
||||||
|
params =
|
||||||
|
"Project_id": req.params[0]
|
||||||
|
"build": req.params[1]
|
||||||
|
"file": req.params[2]
|
||||||
|
req.params = params
|
||||||
|
next()
|
||||||
|
), AuthorizationMiddlewear.ensureUserCanReadProject, CompileController.getFileFromClsi
|
||||||
|
|
||||||
webRouter.delete "/project/:Project_id/output", AuthorizationMiddlewear.ensureUserCanReadProject, CompileController.deleteAuxFiles
|
webRouter.delete "/project/:Project_id/output", AuthorizationMiddlewear.ensureUserCanReadProject, CompileController.deleteAuxFiles
|
||||||
webRouter.get "/project/:Project_id/sync/code", AuthorizationMiddlewear.ensureUserCanReadProject, CompileController.proxySync
|
webRouter.get "/project/:Project_id/sync/code", AuthorizationMiddlewear.ensureUserCanReadProject, CompileController.proxySync
|
||||||
webRouter.get "/project/:Project_id/sync/pdf", AuthorizationMiddlewear.ensureUserCanReadProject, CompileController.proxySync
|
webRouter.get "/project/:Project_id/sync/pdf", AuthorizationMiddlewear.ensureUserCanReadProject, CompileController.proxySync
|
||||||
|
|
|
@ -69,20 +69,28 @@ define [
|
||||||
else if response.status == "success"
|
else if response.status == "success"
|
||||||
$scope.pdf.view = 'pdf'
|
$scope.pdf.view = 'pdf'
|
||||||
$scope.shouldShowLogs = false
|
$scope.shouldShowLogs = false
|
||||||
# define the base url
|
|
||||||
$scope.pdf.url = "/project/#{$scope.project_id}/output/output.pdf?cache_bust=#{Date.now()}"
|
|
||||||
# add a query string parameter for the compile group
|
|
||||||
if response.compileGroup?
|
|
||||||
$scope.pdf.compileGroup = response.compileGroup
|
|
||||||
$scope.pdf.url = $scope.pdf.url + "&compileGroup=#{$scope.pdf.compileGroup}"
|
|
||||||
# make a cache to look up files by name
|
# make a cache to look up files by name
|
||||||
fileByPath = {}
|
fileByPath = {}
|
||||||
for file in response.outputFiles
|
for file in response.outputFiles
|
||||||
fileByPath[file.path] = file
|
fileByPath[file.path] = file
|
||||||
# if the pdf file has a build number, pass it to the clsi
|
# prepare query string
|
||||||
|
qs = {}
|
||||||
|
# define the base url. if the pdf file has a build number, pass it to the clsi in the url
|
||||||
if fileByPath['output.pdf']?.build?
|
if fileByPath['output.pdf']?.build?
|
||||||
build = fileByPath['output.pdf'].build
|
build = fileByPath['output.pdf'].build
|
||||||
$scope.pdf.url = $scope.pdf.url + "&build=#{build}"
|
$scope.pdf.url = "/project/#{$scope.project_id}/build/#{build}/output/output.pdf"
|
||||||
|
# no need to bust cache, build id is unique
|
||||||
|
else
|
||||||
|
$scope.pdf.url = "/project/#{$scope.project_id}/output/output.pdf"
|
||||||
|
qs = { cache_bust : "#{Date.now()}" }
|
||||||
|
# add a query string parameter for the compile group
|
||||||
|
if response.compileGroup?
|
||||||
|
$scope.pdf.compileGroup = response.compileGroup
|
||||||
|
qs.compileGroup = "#{$scope.pdf.compileGroup}"
|
||||||
|
# convert the qs hash into a query string and append it
|
||||||
|
qs_args = ("#{k}=#{v}" for k, v of qs)
|
||||||
|
$scope.pdf.qs = if qs_args.length then "?" + qs_args.join("&") else ""
|
||||||
|
$scope.pdf.url += $scope.pdf.qs
|
||||||
|
|
||||||
fetchLogs(fileByPath['output.log'])
|
fetchLogs(fileByPath['output.log'])
|
||||||
|
|
||||||
|
@ -101,8 +109,11 @@ define [
|
||||||
$scope.pdf.outputFiles.push file
|
$scope.pdf.outputFiles.push file
|
||||||
|
|
||||||
fetchLogs = (outputFile) ->
|
fetchLogs = (outputFile) ->
|
||||||
qs = if outputFile?.build? then "?build=#{outputFile.build}" else ""
|
if outputFile?.build?
|
||||||
$http.get "/project/#{$scope.project_id}/output/output.log" + qs
|
logUrl = "/project/#{$scope.project_id}/build/#{outputFile.build}/output/output.log"
|
||||||
|
else
|
||||||
|
logUrl = "/project/#{$scope.project_id}/output/output.log"
|
||||||
|
$http.get logUrl
|
||||||
.success (log) ->
|
.success (log) ->
|
||||||
#console.log ">>", log
|
#console.log ">>", log
|
||||||
$scope.pdf.rawLog = log
|
$scope.pdf.rawLog = log
|
||||||
|
@ -124,8 +135,12 @@ define [
|
||||||
type: if entry.level == "error" then "error" else "warning"
|
type: if entry.level == "error" then "error" else "warning"
|
||||||
text: entry.message
|
text: entry.message
|
||||||
}
|
}
|
||||||
# Get the biber log and parse it too
|
# Get the biber log and parse it
|
||||||
$http.get "/project/#{$scope.project_id}/output/output.blg" + qs
|
if outputFile?.build?
|
||||||
|
biberLogUrl = "/project/#{$scope.project_id}/build/#{outputFile.build}/output/output.blg"
|
||||||
|
else
|
||||||
|
biberLogUrl = "/project/#{$scope.project_id}/output/output.blg"
|
||||||
|
$http.get biberLogUrl
|
||||||
.success (log) ->
|
.success (log) ->
|
||||||
window._s = $scope
|
window._s = $scope
|
||||||
biberLogEntries = BibLogParser.parse(log, {})
|
biberLogEntries = BibLogParser.parse(log, {})
|
||||||
|
|
Loading…
Reference in a new issue