mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-09 19:39:06 +00:00
Move labels into an Angular Service
This commit is contained in:
parent
56385a798b
commit
1bb065344c
6 changed files with 59 additions and 53 deletions
|
@ -9,7 +9,6 @@ define [
|
|||
"ide/pdf/PdfManager"
|
||||
"ide/binary-files/BinaryFilesManager"
|
||||
"ide/references/ReferencesManager"
|
||||
"ide/labels/LabelsMaster"
|
||||
"ide/review-panel/ReviewPanelManager"
|
||||
"ide/SafariScrollPatcher"
|
||||
"ide/FeatureOnboardingController"
|
||||
|
@ -46,12 +45,11 @@ define [
|
|||
PdfManager
|
||||
BinaryFilesManager
|
||||
ReferencesManager
|
||||
LabelsMaster
|
||||
ReviewPanelManager
|
||||
SafariScrollPatcher
|
||||
) ->
|
||||
|
||||
App.controller "IdeController", ($scope, $timeout, ide, localStorage, sixpack, event_tracking) ->
|
||||
App.controller "IdeController", ($scope, $timeout, ide, localStorage, sixpack, event_tracking, labels) ->
|
||||
# Don't freak out if we're already in an apply callback
|
||||
$scope.$originalApply = $scope.$apply
|
||||
$scope.$apply = (fn = () ->) ->
|
||||
|
@ -119,8 +117,6 @@ define [
|
|||
ide.project_id = $scope.project_id = window.project_id
|
||||
ide.$scope = $scope
|
||||
|
||||
$scope.labelsMaster = ide.labelsMaster = new LabelsMaster(ide, $scope)
|
||||
|
||||
ide.referencesSearchManager = new ReferencesManager(ide, $scope)
|
||||
ide.connectionManager = new ConnectionManager(ide, $scope)
|
||||
ide.fileTreeManager = new FileTreeManager(ide, $scope)
|
||||
|
@ -131,6 +127,13 @@ define [
|
|||
ide.permissionsManager = new PermissionsManager(ide, $scope)
|
||||
ide.binaryFilesManager = new BinaryFilesManager(ide, $scope)
|
||||
|
||||
# Set up labels
|
||||
$scope.$on 'doc:labels:updated', labels.onDocLabelsUpdated
|
||||
$scope.$on 'entity:deleted', labels.onEntityDeleted
|
||||
$scope.$on 'file:upload:complete', labels.fileUploadComplete
|
||||
$timeout () ->
|
||||
labels.loadProjectLabelsFromServer()
|
||||
|
||||
inited = false
|
||||
$scope.$on "project:joined", () ->
|
||||
return if inited
|
||||
|
|
|
@ -10,6 +10,7 @@ define [
|
|||
"ide/editor/directives/aceEditor/cursor-position/CursorPositionManager"
|
||||
"ide/editor/directives/aceEditor/track-changes/TrackChangesManager"
|
||||
"ide/editor/directives/aceEditor/labels/LabelsManager"
|
||||
"services/labels"
|
||||
], (App, Ace, SearchBox, ModeList, UndoManager, AutoCompleteManager, SpellCheckManager, HighlightsManager, CursorPositionManager, TrackChangesManager, LabelsManager) ->
|
||||
EditSession = ace.require('ace/edit_session').EditSession
|
||||
ModeList = ace.require('ace/ext/modelist')
|
||||
|
@ -32,8 +33,9 @@ define [
|
|||
url = ace.config._moduleUrl(args...) + "?fingerprint=#{window.aceFingerprint}"
|
||||
return url
|
||||
|
||||
App.directive "aceEditor", ($timeout, $compile, $rootScope, event_tracking, localStorage, $cacheFactory) ->
|
||||
App.directive "aceEditor", ($timeout, $compile, $rootScope, event_tracking, localStorage, $cacheFactory, labels) ->
|
||||
monkeyPatchSearch($rootScope, $compile)
|
||||
|
||||
|
||||
return {
|
||||
scope: {
|
||||
|
@ -94,7 +96,7 @@ define [
|
|||
cursorPositionManager = new CursorPositionManager(scope, editor, element, localStorage)
|
||||
trackChangesManager = new TrackChangesManager(scope, editor, element)
|
||||
if attrs.enableAutoCompleteFeatures
|
||||
labelsManager = new LabelsManager(scope, editor, element)
|
||||
labelsManager = new LabelsManager(scope, editor, element, labels)
|
||||
autoCompleteManager = new AutoCompleteManager(scope, editor, element, labelsManager)
|
||||
|
||||
# Prevert Ctrl|Cmd-S from triggering save dialog
|
||||
|
|
|
@ -10,8 +10,7 @@ define [
|
|||
return null
|
||||
|
||||
class LabelsManager
|
||||
constructor: (@$scope, @editor, @element) ->
|
||||
@labelsMaster = @$scope.labelsMaster
|
||||
constructor: (@$scope, @editor, @element, @Labels) ->
|
||||
@loadLabelsTimeout = null
|
||||
|
||||
onChange = (change) =>
|
||||
|
@ -35,7 +34,7 @@ define [
|
|||
|
||||
loadCurrentDocLabelsFromServer: () ->
|
||||
currentDocId = @$scope.docId
|
||||
@labelsMaster.loadDocLabelsFromServer(currentDocId)
|
||||
@Labels.loadDocLabelsFromServer(currentDocId)
|
||||
|
||||
scheduleLoadCurrentDocLabelsFromServer: () ->
|
||||
# De-bounce loading labels with a timeout
|
||||
|
@ -49,4 +48,4 @@ define [
|
|||
)
|
||||
|
||||
getAllLabels: () ->
|
||||
@labelsMaster.getAllLabels()
|
||||
@Labels.getAllLabels()
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
define [
|
||||
], () ->
|
||||
class LabelsMaster
|
||||
constructor: (@ide, @$scope) ->
|
||||
|
||||
@_state = {
|
||||
documents: {}
|
||||
}
|
||||
|
||||
@$scope.$on 'doc:labels:updated', (e, data) =>
|
||||
if data.docId and data.labels
|
||||
@_state.documents[data.docId] = data.labels
|
||||
|
||||
@$scope.$on 'entity:deleted', (e, entity) =>
|
||||
if entity.type == 'doc'
|
||||
delete @_state.documents[entity.id]
|
||||
|
||||
@$scope.$on 'file:upload:complete', (e, upload) =>
|
||||
if upload.entity_type == 'doc'
|
||||
@loadDocLabelsFromServer(upload.entity_id)
|
||||
|
||||
# load project labels now
|
||||
@loadProjectLabelsFromServer()
|
||||
|
||||
getAllLabels: () ->
|
||||
_.flatten(labels for docId, labels of @_state.documents)
|
||||
|
||||
## Loaders
|
||||
loadProjectLabelsFromServer: () ->
|
||||
@ide.$http
|
||||
.get("/project/#{window.project_id}/labels")
|
||||
.success (data) =>
|
||||
if data.projectLabels
|
||||
for docId, docLabels of data.projectLabels
|
||||
@_state.documents[docId] = docLabels
|
||||
|
||||
loadDocLabelsFromServer: (docId) ->
|
||||
@ide.$http
|
||||
.get("/project/#{window.project_id}/#{docId}/labels")
|
||||
.success (data) =>
|
||||
if data.docId and data.labels
|
||||
@_state.documents[data.docId] = data.labels
|
|
@ -30,6 +30,7 @@ define [
|
|||
"directives/maxHeight"
|
||||
"directives/creditCards"
|
||||
"services/queued-http"
|
||||
"services/labels"
|
||||
"filters/formatDate"
|
||||
"__MAIN_CLIENTSIDE_INCLUDES__"
|
||||
], () ->
|
||||
|
|
43
services/web/public/coffee/services/labels.coffee
Normal file
43
services/web/public/coffee/services/labels.coffee
Normal file
|
@ -0,0 +1,43 @@
|
|||
define [
|
||||
"base"
|
||||
], (App) ->
|
||||
|
||||
App.factory 'labels', ($http, ide) ->
|
||||
|
||||
state = {documents: {}}
|
||||
|
||||
labels = {
|
||||
state: state
|
||||
}
|
||||
|
||||
labels.onDocLabelsUpdated = (e, data) ->
|
||||
if data.docId and data.labels
|
||||
state.documents[data.docId] = data.labels
|
||||
|
||||
labels.onEntityDeleted = (e, entity) ->
|
||||
if entity.type == 'doc'
|
||||
delete state.documents[entity.id]
|
||||
|
||||
labels.onFileUploadComplete = (e, upload) ->
|
||||
if upload.entity_type == 'doc'
|
||||
labels.loadDocLabelsFromServer(upload.entity_id)
|
||||
|
||||
labels.getAllLabels = () ->
|
||||
_.flatten(labels for docId, labels of state.documents)
|
||||
|
||||
labels.loadProjectLabelsFromServer = () ->
|
||||
$http
|
||||
.get("/project/#{window.project_id}/labels")
|
||||
.success (data) ->
|
||||
if data.projectLabels
|
||||
for docId, docLabels of data.projectLabels
|
||||
state.documents[docId] = docLabels
|
||||
|
||||
labels.loadDocLabelsFromServer = (docId) ->
|
||||
$http
|
||||
.get("/project/#{window.project_id}/#{docId}/labels")
|
||||
.success (data) ->
|
||||
if data.docId and data.labels
|
||||
state.documents[data.docId] = data.labels
|
||||
|
||||
return labels
|
Loading…
Add table
Reference in a new issue