Parcourir la source

Fetch the keys when autocomplete is triggered on a cite element.

Shane Kilkelly il y a 10 ans
Parent
commit
dbbc3bbbbb

+ 2 - 2
services/web/public/coffee/ide.coffee

@@ -68,12 +68,13 @@ define [
 
 		$scope.chat = {}
 
-		
+
 		window._ide = ide
 
 		ide.project_id = $scope.project_id = window.project_id
 		ide.$scope = $scope
 
+		ide.referencesSearchManager = new ReferencesSearchManager(ide, $scope)
 		ide.connectionManager = new ConnectionManager(ide, $scope)
 		ide.fileTreeManager = new FileTreeManager(ide, $scope)
 		ide.editorManager = new EditorManager(ide, $scope)
@@ -82,7 +83,6 @@ define [
 		ide.pdfManager = new PdfManager(ide, $scope)
 		ide.permissionsManager = new PermissionsManager(ide, $scope)
 		ide.binaryFilesManager = new BinaryFilesManager(ide, $scope)
-		ide.referencesSearchManager = new ReferencesSearchManager(ide, $scope)
 
 		inited = false
 		$scope.$on "project:joined", () ->

+ 30 - 18
services/web/public/coffee/ide/editor/directives/aceEditor/auto-complete/AutoCompleteManager.coffee

@@ -12,6 +12,14 @@ define [
 		else
 			return null
 
+	referenceKeyToAutocompleteEntry = (key) ->
+		return {
+			caption: "\\cite{#{key}",
+			snippet: "\\cite{#{key}",
+			meta: "reference",
+			score: 10000
+		}
+
 	class AutoCompleteManager
 		constructor: (@$scope, @editor) ->
 			@suggestionManager = new SuggestionManager()
@@ -47,26 +55,30 @@ define [
 				getCompletions: (editor, session, pos, prefix, callback) ->
 					if window._ENABLE_REFERENCES_AUTOCOMPLETE != true
 						return callback(null, [])
-					if references.keys
-						range = new Range(pos.row, 0, pos.row, pos.column)
-						lineUpToCursor = editor.getSession().getTextRange(range)
-						commandFragment = getLastCommandFragment(lineUpToCursor)
-						if commandFragment and commandFragment.match(/^~?\\cite{\w*/)
-							result = references.keys.map (key) -> {
-								caption: "\\cite{#{key}",
-								snippet: "\\cite{#{key}",
-								meta: "reference",
-								score: 10000
-							}
-							result.push {
-								caption: "\\cite{",
-								snippet: "\\cite{",
-								meta: "reference",
-								score: 11000
-							}
+
+					range = new Range(pos.row, 0, pos.row, pos.column)
+					lineUpToCursor = editor.getSession().getTextRange(range)
+					commandFragment = getLastCommandFragment(lineUpToCursor)
+					if commandFragment and commandFragment.match(/^~?\\cite{\w*/)
+						result = []
+						result.push {
+							caption: "\\cite{",
+							snippet: "\\cite{",
+							meta: "reference",
+							score: 11000
+						}
+						if references.keys and references.keys.length > 0
+							references.keys.forEach (key) ->
+								result.push(referenceKeyToAutocompleteEntry(key))
 							callback null, result
 						else
-							callback null, []
+							# get keys from the backend
+							referencesSearch = window?._ide?.referencesSearchManager
+							if referencesSearch
+								referencesSearch.getReferenceKeys (keys) =>
+									keys.forEach (key) ->
+										result.push(referenceKeyToAutocompleteEntry(key))
+									callback null, result
 
 			@editor.completers = [@suggestionManager, SnippetCompleter, ReferencesCompleter]
 			@editor.completers = [SnippetCompleter, ReferencesCompleter]

+ 4 - 3
services/web/public/coffee/ide/references-search/ReferencesSearchManager.coffee

@@ -25,14 +25,13 @@ define [
 					_csrf: window.csrfToken
 				},
 				(data) =>
-					console.log(data)
 					setTimeout(
 						( () -> @getReferenceKeys() ).bind(this),
-						100
+						500
 					)
 			)
 
-		getReferenceKeys: () ->
+		getReferenceKeys: (callback) ->
 			if window._ENABLE_REFERENCES_AUTOCOMPLETE != true
 				return
 			$.get(
@@ -42,4 +41,6 @@ define [
 				},
 				(data) =>
 					@$scope.$root._references.keys = data.keys
+					if callback
+						callback(data.keys)
 			)