mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-26 08:12:07 +00:00
Hook up refresh button to backend
This commit is contained in:
parent
9733223840
commit
6848e97a82
4 changed files with 62 additions and 21 deletions
|
@ -31,7 +31,7 @@ module.exports = EditorController =
|
|||
if err?
|
||||
logger.err err:err, project_id:project_id, folder_id:folder_id, fileName:fileName, "error adding file without lock"
|
||||
return callback(err)
|
||||
EditorRealTimeController.emitToRoom(project_id, 'reciveNewFile', folder_id, fileRef, source)
|
||||
EditorRealTimeController.emitToRoom(project_id, 'reciveNewFile', folder_id, fileRef, source, linkedFileData)
|
||||
callback(err, fileRef)
|
||||
|
||||
upsertDoc: (project_id, folder_id, docName, docLines, source, user_id, callback = (err)->)->
|
||||
|
@ -44,7 +44,7 @@ module.exports = EditorController =
|
|||
ProjectEntityUpdateHandler.upsertFile project_id, folder_id, fileName, fsPath, linkedFileData, user_id, (err, file, didAddFile) ->
|
||||
return callback(err) if err?
|
||||
if didAddFile
|
||||
EditorRealTimeController.emitToRoom project_id, 'reciveNewFile', folder_id, file, source
|
||||
EditorRealTimeController.emitToRoom project_id, 'reciveNewFile', folder_id, file, source, linkedFileData
|
||||
callback null, file
|
||||
|
||||
upsertDocWithPath: (project_id, elementPath, docLines, source, user_id, callback) ->
|
||||
|
@ -62,7 +62,7 @@ module.exports = EditorController =
|
|||
EditorController._notifyProjectUsersOfNewFolders project_id, newFolders, (err) ->
|
||||
return callback(err) if err?
|
||||
if didAddFile
|
||||
EditorRealTimeController.emitToRoom project_id, 'reciveNewFile', lastFolder._id, file, source
|
||||
EditorRealTimeController.emitToRoom project_id, 'reciveNewFile', lastFolder._id, file, source, linkedFileData
|
||||
callback()
|
||||
|
||||
addFolder : (project_id, folder_id, folderName, source, callback = (error, folder)->)->
|
||||
|
|
|
@ -35,7 +35,7 @@ div.binary-file.full-size(
|
|||
|
||||
p.no-preview(
|
||||
ng-if="failedLoad || textPreview.error || isUnpreviewableFile()"
|
||||
) #{translate("no_preview_available")}
|
||||
) #{translate("no_preview_available")} {{ failedLoad }} {{ textPreview.error }} {{ isUnpreviewableFile() }}
|
||||
|
||||
div.binary-file-footer
|
||||
div(ng-show="openFile.linkedFileData.provider == 'url'")
|
||||
|
@ -48,12 +48,14 @@ div.binary-file.full-size(
|
|||
| at {{ openFile.created | formatDate:'h:mm a' }} {{ openFile.created | relativeDate }}
|
||||
|
||||
span(ng-show="openFile.linkedFileData.provider == 'url'")
|
||||
a.btn.btn-success(
|
||||
href
|
||||
button.btn.btn-success(
|
||||
href, ng-click="refreshFile(openFile)",
|
||||
ng-disabled="refreshing"
|
||||
)
|
||||
i.fa.fa-fw.fa-refresh
|
||||
i.fa.fa-fw.fa-refresh(ng-class={'fa-spin': refreshing})
|
||||
|
|
||||
| Refresh
|
||||
span(ng-show="!refreshing") Refresh
|
||||
span(ng-show="refreshing") Refreshing...
|
||||
|
|
||||
a.btn.btn-info(
|
||||
ng-href="/project/{{ project_id }}/file/{{ openFile.id }}"
|
||||
|
|
|
@ -2,7 +2,7 @@ define [
|
|||
"base"
|
||||
"moment"
|
||||
], (App, moment) ->
|
||||
App.controller "BinaryFileController", ["$scope", "$rootScope", "$http", "$timeout", "$element", ($scope, $rootScope, $http, $timeout, $element) ->
|
||||
App.controller "BinaryFileController", ["$scope", "$rootScope", "$http", "$timeout", "$element", "ide", ($scope, $rootScope, $http, $timeout, $element, ide) ->
|
||||
|
||||
TWO_MEGABYTES = 2 * 1024 * 1024
|
||||
|
||||
|
@ -30,6 +30,8 @@ define [
|
|||
error: false
|
||||
data: null
|
||||
|
||||
$scope.refreshing = false
|
||||
|
||||
MAX_URL_LENGTH = 60
|
||||
FRONT_OF_URL_LENGTH = 35
|
||||
FILLER = '...'
|
||||
|
@ -42,6 +44,14 @@ define [
|
|||
else
|
||||
return url
|
||||
|
||||
$scope.refreshFile = (file) ->
|
||||
$scope.refreshing = true
|
||||
ide.fileTreeManager.refreshLinkedFile(file)
|
||||
.then () ->
|
||||
loadTextFileFilePreview()
|
||||
.finally () ->
|
||||
$scope.refreshing = false
|
||||
|
||||
# Callback fired when the `img` tag fails to load,
|
||||
# `failedLoad` used to show the "No Preview" message
|
||||
$scope.failedLoad = false
|
||||
|
@ -56,12 +66,18 @@ define [
|
|||
$scope.imgLoaded = true
|
||||
$scope.$apply()
|
||||
|
||||
loadTextFileFilePreview = () ->
|
||||
do loadTextFileFilePreview = () ->
|
||||
return unless $scope.isTextFile()
|
||||
url = "/project/#{project_id}/file/#{$scope.openFile.id}?range=0-#{TWO_MEGABYTES}"
|
||||
$scope.textPreview.data = null
|
||||
$scope.textPreview.loading = true
|
||||
$scope.textPreview.shouldShowDots = false
|
||||
$scope.$apply()
|
||||
$http.get(url)
|
||||
$http({
|
||||
url: url,
|
||||
method: 'GET',
|
||||
transformResponse: null # Don't parse JSON
|
||||
})
|
||||
.then (response) ->
|
||||
{ data } = response
|
||||
$scope.textPreview.error = false
|
||||
|
@ -74,7 +90,8 @@ define [
|
|||
finally
|
||||
$scope.textPreview.data = data
|
||||
$timeout(setHeight, 0)
|
||||
.catch () ->
|
||||
.catch (error) ->
|
||||
console.error(error)
|
||||
$scope.textPreview.error = true
|
||||
$scope.textPreview.loading = false
|
||||
|
||||
|
@ -86,9 +103,4 @@ define [
|
|||
# Don't show the preview until we've set the height, otherwise we jump around
|
||||
$scope.textPreview.loading = false
|
||||
|
||||
do loadTextFileIfRequired = () ->
|
||||
if $scope.isTextFile()
|
||||
$scope.textPreview.data = null
|
||||
loadTextFileFilePreview()
|
||||
|
||||
]
|
||||
|
|
|
@ -37,13 +37,14 @@ define [
|
|||
}
|
||||
@recalculateDocList()
|
||||
|
||||
@ide.socket.on "reciveNewFile", (parent_folder_id, file) =>
|
||||
@ide.socket.on "reciveNewFile", (parent_folder_id, file, source, linkedFileData) =>
|
||||
parent_folder = @findEntityById(parent_folder_id) or @$scope.rootFolder
|
||||
@$scope.$apply () =>
|
||||
parent_folder.children.push {
|
||||
name: file.name
|
||||
id: file._id
|
||||
type: "file"
|
||||
type: "file",
|
||||
linkedFileData: linkedFileData
|
||||
}
|
||||
@recalculateDocList()
|
||||
|
||||
|
@ -175,6 +176,9 @@ define [
|
|||
_findEntityByPathInFolder: (folder, path) ->
|
||||
if !path? or !folder?
|
||||
return null
|
||||
if path == ""
|
||||
return folder
|
||||
|
||||
parts = path.split("/")
|
||||
name = parts.shift()
|
||||
rest = parts.join("/")
|
||||
|
@ -222,10 +226,19 @@ define [
|
|||
getRootDocDirname: () ->
|
||||
rootDoc = @findEntityById @$scope.project.rootDoc_id
|
||||
return if !rootDoc?
|
||||
path = @getEntityPath(rootDoc)
|
||||
return @_getEntityDirname(rootDoc)
|
||||
|
||||
_getEntityDirname: (entity) ->
|
||||
path = @getEntityPath(entity)
|
||||
return if !path?
|
||||
return path.split("/").slice(0, -1).join("/")
|
||||
|
||||
_findParentFolder: (entity) ->
|
||||
dirname = @_getEntityDirname(entity)
|
||||
console.log('dirname', dirname)
|
||||
return if !dirname?
|
||||
return @findEntityByPath(dirname)
|
||||
|
||||
loadRootFolder: () ->
|
||||
@$scope.rootFolder = @_parseFolder(@$scope?.project?.rootFolder[0])
|
||||
|
||||
|
@ -357,7 +370,7 @@ define [
|
|||
_csrf: window.csrfToken
|
||||
}
|
||||
|
||||
createLinkedFile: (name, parent_folder = @getCurrentFolder(), provider, data) ->
|
||||
createLinkedFile: (name, parent_folder = @getCurrentFolder(), provider, data) ->
|
||||
# check if a doc/file/folder already exists with this name
|
||||
if @existsInThisFolder parent_folder, name
|
||||
return @nameExistsError()
|
||||
|
@ -371,6 +384,20 @@ define [
|
|||
_csrf: window.csrfToken
|
||||
}
|
||||
|
||||
refreshLinkedFile: (file) ->
|
||||
parent_folder = @_findParentFolder(file)
|
||||
data = file.linkedFileData
|
||||
provider = data?.provider
|
||||
return if !provider?
|
||||
console.log 'refreshLinkedFile', {parent_folder, provider, data}
|
||||
return @ide.$http.post "/project/#{@ide.project_id}/linked_file", {
|
||||
name: file.name,
|
||||
parent_folder_id: parent_folder?.id
|
||||
provider,
|
||||
data,
|
||||
_csrf: window.csrfToken
|
||||
}
|
||||
|
||||
renameEntity: (entity, name, callback = (error) ->) ->
|
||||
return if entity.name == name
|
||||
return if name.length >= 150
|
||||
|
|
Loading…
Add table
Reference in a new issue