From b2abcfc3f2364ef30f846b2b9c7f9bfd0d877bfb Mon Sep 17 00:00:00 2001 From: Alasdair Smith Date: Tue, 26 Jun 2018 14:56:40 +0100 Subject: [PATCH] Extract debounced load to service, so can be injected --- .../aceEditor/metadata/MetadataManager.coffee | 21 +------------------ .../ide/metadata/services/metadata.coffee | 16 ++++++++++++++ 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/metadata/MetadataManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/metadata/MetadataManager.coffee index c9308626bc..196fae2a56 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/metadata/MetadataManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/metadata/MetadataManager.coffee @@ -53,31 +53,12 @@ define [ lastCommandFragmentIsReqPack if linesContainMeta or lastCommandFragmentIsMeta - @scheduleLoadCurrentDocMetaFromServer() + @Metadata.scheduleLoadDocMetaFromServer @$scope.docId @editor.on "changeSession", (e) => e.oldSession.off "change", onChange e.session.on "change", onChange - - loadDocMetaFromServer: (docId) -> - @Metadata.loadDocMetaFromServer docId - - scheduleLoadCurrentDocMetaFromServer: () -> - # De-bounce loading labels with a timeout - currentDocId = @$scope.docId - existingTimeout = @debouncer[currentDocId] - if existingTimeout? - clearTimeout(existingTimeout) - delete @debouncer[currentDocId] - @debouncer[currentDocId] = setTimeout( - () => - @loadDocMetaFromServer currentDocId - delete @debouncer[currentDocId] - , 1000 - , this - ) - getAllLabels: () -> @Metadata.getAllLabels() diff --git a/services/web/public/coffee/ide/metadata/services/metadata.coffee b/services/web/public/coffee/ide/metadata/services/metadata.coffee index 009474b9f4..a431c54a50 100644 --- a/services/web/public/coffee/ide/metadata/services/metadata.coffee +++ b/services/web/public/coffee/ide/metadata/services/metadata.coffee @@ -3,6 +3,7 @@ define [ ], (App) -> App.factory 'metadata', ($http, ide) -> + debouncer = {} # DocId => Timeout state = {documents: {}} @@ -46,4 +47,19 @@ define [ {_csrf: window.csrfToken} ) + metadata.scheduleLoadDocMetaFromServer = (docId) -> + # De-bounce loading labels with a timeout + existingTimeout = debouncer[docId] + + if existingTimeout? + clearTimeout(existingTimeout) + delete debouncer[docId] + + debouncer[docId] = setTimeout( + () => + metadata.loadDocMetaFromServer docId + delete debouncer[docId] + , 1000 + ) + return metadata