Update labels when docs are uploaded or removed

This commit is contained in:
Shane Kilkelly 2017-06-08 15:12:18 +01:00
parent feb1d87de1
commit ff7955dfdb
6 changed files with 20 additions and 27 deletions

View file

@ -20,7 +20,7 @@ module.exports = LabelsController =
if err? if err?
logger.err {project_id, doc_id, err}, "[LabelsController] error getting labels from doc" logger.err {project_id, doc_id, err}, "[LabelsController] error getting labels from doc"
return next(err) return next(err)
EditorRealTimeController.emitToRoom project_id, 'doc:labels:updated', { EditorRealTimeController.emitToRoom project_id, 'docLabelsUpdated', {
docId: doc_id, labels: docLabels docId: doc_id, labels: docLabels
} }
res.json {projectId: project_id, docId: doc_id, labels: docLabels} res.json {projectId: project_id, docId: doc_id, labels: docLabels}

View file

@ -51,3 +51,4 @@ module.exports = ProjectUploadController =
project_id: project_id, file_path: path, file_name: name, folder_id: folder_id project_id: project_id, file_path: path, file_name: name, folder_id: folder_id
"uploaded file" "uploaded file"
res.send success: true, entity_id: entity?._id res.send success: true, entity_id: entity?._id

View file

@ -172,7 +172,7 @@ define [
# User can append ?ft=somefeature to url to activate a feature toggle # User can append ?ft=somefeature to url to activate a feature toggle
ide.featureToggle = location?.search?.match(/^\?ft=(\w+)$/)?[1] ide.featureToggle = location?.search?.match(/^\?ft=(\w+)$/)?[1]
ide.socket.on 'doc:labels:updated', (data) -> ide.socket.on 'docLabelsUpdated', (data) ->
$scope.$broadcast 'doc:labels:updated', data $scope.$broadcast 'doc:labels:updated', data
angular.bootstrap(document.body, ["SharelatexApp"]) angular.bootstrap(document.body, ["SharelatexApp"])

View file

@ -27,6 +27,13 @@ define [
if data.docId and data.labels if data.docId and data.labels
@state.documents[data.docId] = 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, entityId) =>
@loadDocLabelsFromServer(entityId)
onChange = (change) => onChange = (change) =>
if change.remote if change.remote
return return
@ -66,34 +73,17 @@ define [
) )
loadCurrentDocLabelsFromServer: () -> loadCurrentDocLabelsFromServer: () ->
currentDocId = @$scope.docId
@loadDocLabelsFromServer(currentDocId)
loadDocLabelsFromServer: (docId) ->
$.get( $.get(
"/project/#{window.project_id}/#{@$scope.docId}/labels" "/project/#{window.project_id}/#{docId}/labels"
, (data) => , (data) =>
if data.docId and data.labels if data.docId and data.labels
@state.documents[data.docId] = data.labels @state.documents[data.docId] = data.labels
) )
# loadLabelsFromOpenDoc: () ->
# docId = @$scope.docId
# docText = @editor.getValue()
# labels = []
# re = /\\label\{([^\}\n\\]{0,80})\}/g
# while (labelMatch = re.exec(docText)) and labels.length < 1000
# if labelMatch[1]
# labels.push(labelMatch[1])
# @state.documents[docId] = labels
# scheduleLoadLabelsFromOpenDoc: () ->
# # De-bounce loading labels with a timeout
# if @loadLabelsTimeout
# clearTimeout(@loadLabelsTimeout)
# @loadLabelsTimeout = setTimeout(
# () =>
# @loadLabelsFromOpenDoc()
# , 1000
# , this
# )
scheduleLoadCurrentDocLabelsFromServer: () -> scheduleLoadCurrentDocLabelsFromServer: () ->
# De-bounce loading labels with a timeout # De-bounce loading labels with a timeout
if @loadLabelsTimeout if @loadLabelsTimeout

View file

@ -71,7 +71,7 @@ define [
@$scope.$apply () => @$scope.$apply () =>
@_deleteEntityFromScope entity @_deleteEntityFromScope entity
@recalculateDocList() @recalculateDocList()
@$scope.$emit "entity:deleted", entity @$scope.$broadcast "entity:deleted", entity
@ide.socket.on "reciveEntityMove", (entity_id, folder_id) => @ide.socket.on "reciveEntityMove", (entity_id, folder_id) =>
entity = @findEntityById(entity_id) entity = @findEntityById(entity_id)

View file

@ -107,8 +107,8 @@ define [
] ]
App.controller "UploadFileModalController", [ App.controller "UploadFileModalController", [
"$scope", "ide", "$modalInstance", "$timeout", "parent_folder", "$window" "$scope", "$rootScope", "ide", "$modalInstance", "$timeout", "parent_folder", "$window"
($scope, ide, $modalInstance, $timeout, parent_folder, $window) -> ($scope, $rootScope, ide, $modalInstance, $timeout, parent_folder, $window) ->
$scope.parent_folder_id = parent_folder?.id $scope.parent_folder_id = parent_folder?.id
$scope.tooManyFiles = false $scope.tooManyFiles = false
$scope.rateLimitHit = false $scope.rateLimitHit = false
@ -134,6 +134,8 @@ define [
$scope.onComplete = (error, name, response) -> $scope.onComplete = (error, name, response) ->
$timeout (() -> $timeout (() ->
uploadCount-- uploadCount--
if response.success
$rootScope.$broadcast 'file:upload:complete', response.entity_id
if uploadCount == 0 and response? and response.success if uploadCount == 0 and response? and response.success
$modalInstance.close("done") $modalInstance.close("done")
), 250 ), 250