mirror of
https://github.com/overleaf/overleaf.git
synced 2025-02-25 14:01:41 +00:00
Add code to automatically index bib files on project load.
This commit is contained in:
parent
b49ed15c14
commit
20757b11b8
2 changed files with 30 additions and 10 deletions
|
@ -218,10 +218,8 @@ module.exports = ProjectController =
|
|||
if subscription? and subscription.freeTrial? and subscription.freeTrial.expiresAt?
|
||||
allowedFreeTrial = !!subscription.freeTrial.allowed || true
|
||||
|
||||
# TODO: need to search for all docs in project
|
||||
rootDocs = project?.rootFolder?[0]?.docs
|
||||
if rootDocs
|
||||
ReferencesSearchHandler.indexProjectReferences project_id, rootDocs, -> # don't need to wait on this
|
||||
# HACK: don't do it for now
|
||||
# ReferencesSearchHandler.indexProjectReferences project, -> # don't need to wait on this
|
||||
|
||||
logger.log project_id:project_id, "rendering editor page"
|
||||
res.render 'project/editor',
|
||||
|
|
|
@ -3,6 +3,7 @@ request = require("request")
|
|||
settings = require("settings-sharelatex")
|
||||
ProjectLocator = require("../Project/ProjectLocator")
|
||||
U = require('underscore')
|
||||
Async = require('async')
|
||||
|
||||
oneMinInMs = 60 * 1000
|
||||
fiveMinsInMs = oneMinInMs * 5
|
||||
|
@ -10,13 +11,34 @@ fiveMinsInMs = oneMinInMs * 5
|
|||
|
||||
module.exports = ReferencesSearchHandler =
|
||||
|
||||
indexProjectReferences: (project_id, docs, callback = (err) ->) ->
|
||||
logger.log {project_id}, "try indexing references from project"
|
||||
bibDocs = U.filter(docs, (doc) -> doc?.name?.match(/^.*\.bib$/))
|
||||
if bibDocs and bibDocs.length == 1 # presume we'll only get either one or zero bib files
|
||||
doc = bibDocs[0]
|
||||
ReferencesSearchHandler.indexFile project_id, doc._id, (err) ->
|
||||
_findBibDocIds: (project) ->
|
||||
ids = []
|
||||
|
||||
_process = (folder) ->
|
||||
folder.docs.forEach (doc) ->
|
||||
if doc?.name?.match(/^.*\.bib$/)
|
||||
ids.push(doc._id)
|
||||
folder.folders.forEach (folder) ->
|
||||
_process(folder)
|
||||
|
||||
project.rootFolder.forEach (rootFolder) ->
|
||||
_process(rootFolder)
|
||||
|
||||
return ids
|
||||
|
||||
indexProjectReferences: (project, callback = (err) ->) ->
|
||||
logger.log {projectId: project._id}, "try indexing references from project"
|
||||
ids = ReferencesSearchHandler._findBibDocIds(project)
|
||||
logger.log {projectId: project._id, count: ids.length}, "found bib files in project"
|
||||
Async.eachSeries(
|
||||
ids,
|
||||
(docId, next) ->
|
||||
ReferencesSearchHandler.indexFile project._id, docId, (err) ->
|
||||
next(err)
|
||||
, (err) ->
|
||||
logger.log {projectId: project._id, count: ids.length}, "done index bib files in project"
|
||||
callback(err)
|
||||
)
|
||||
|
||||
indexFile: (project_id, file_id, callback = (err)->) ->
|
||||
logger.log {project_id, file_id}, "sending index request to references api"
|
||||
|
|
Loading…
Reference in a new issue