overleaf/services/web/public/coffee/ide/references/ReferencesManager.coffee

61 lines
1.6 KiB
CoffeeScript
Raw Normal View History

define [
], () ->
class ReferencesManager
constructor: (@ide, @$scope) ->
2015-12-29 11:02:59 +00:00
@$scope.$root._references = @state = keys: []
2015-12-18 16:20:58 +00:00
@$scope.$on 'document:closed', (e, doc) =>
if doc.doc_id
entity = @ide.fileTreeManager.findEntityById doc.doc_id
if entity?.name?.match /.*\.bib$/
@indexReferences([doc.doc_id], true)
2016-05-19 13:58:12 +00:00
@$scope.$on 'references:should-reindex', (e, data) =>
@indexAllReferences(true)
# When we join the project:
# index all references files
# and don't broadcast to all clients
2015-12-29 13:30:57 +00:00
@$scope.$on 'project:joined', (e) =>
@indexAllReferences(false)
setTimeout(
(self) ->
self.ide.socket.on 'references:keys:updated', (keys) ->
# console.log '>> got keys from socket'
self._storeReferencesKeys(keys)
, 1000
, this
)
_storeReferencesKeys: (newKeys) ->
# console.log '>> storing references keys'
oldKeys = @$scope.$root._references.keys
@$scope.$root._references.keys = _.union(oldKeys, newKeys)
indexReferences: (docIds, shouldBroadcast) ->
opts =
docIds: docIds
shouldBroadcast: shouldBroadcast
_csrf: window.csrfToken
$.post(
"/project/#{@$scope.project_id}/references/index",
opts,
(data) =>
# console.log ">> got keys ", data
@_storeReferencesKeys(data.keys)
)
indexAllReferences: (shouldBroadcast) ->
opts =
shouldBroadcast: shouldBroadcast
_csrf: window.csrfToken
$.post(
"/project/#{@$scope.project_id}/references/indexAll",
opts,
(data) =>
# console.log ">> got keys ", data
@_storeReferencesKeys(data.keys)
)