mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
af85c83877
Add in 5 second delay between flushing updates when only a single user is editing a document. As soon as an update is received from another user we switch to sending updates immediately again so there is no latency between collaborators. The logic applies to individual docs, so two users can be editing different docs and will still buffer updates since they will not affect each other.
130 lines
3.9 KiB
Text
130 lines
3.9 KiB
Text
extends ../layout
|
|
|
|
block vars
|
|
- var suppressNavbar = true
|
|
- var suppressFooter = true
|
|
- var suppressDefaultJs = true
|
|
- var suppressSystemMessages = true
|
|
|
|
block content
|
|
.editor(ng-controller="IdeController").full-size
|
|
.loading-screen(ng-show="state.loading")
|
|
.container
|
|
h3 #{translate("loading")}...
|
|
.progress
|
|
.progress-bar(style="width: 20%", ng-style="{'width': state.load_progress + '%'}")
|
|
p.text-center.text-danger(ng-if="state.error").ng-cloak {{ state.error }}
|
|
|
|
.global-alerts(ng-cloak)
|
|
.alert.alert-danger.small(ng-if="connection.forced_disconnect")
|
|
strong #{translate("disconnected")}
|
|
| #{translate("please_refresh")}
|
|
|
|
.alert.alert-warning.small(ng-if="connection.reconnection_countdown")
|
|
strong #{translate("lost_connection")}.
|
|
| #{translate("reconnecting_in_x_secs", {seconds:"{{ connection.reconnection_countdown }}"})}.
|
|
a.pull-right(href, ng-click="tryReconnectNow()") #{translate("try_now")}
|
|
|
|
.alert.alert-warning.small(ng-if="connection.reconnecting")
|
|
strong #{translate("reconnecting")}...
|
|
|
|
.div(ng-controller="SavingNotificationController")
|
|
.alert.alert-warning.small( ng-repeat="(doc_id, state) in docSavingStatus" ng-if="state.unsavedSeconds > 8") #{translate("saving_notification_with_seconds", {docname:"{{ state.doc.name }}", seconds:"{{ state.unsavedSeconds }}"})}
|
|
|
|
include ./editor/left-menu
|
|
|
|
#chat-wrapper(
|
|
layout="chat",
|
|
spacing-open="12",
|
|
spacing-closed="0",
|
|
initial-size-east="250",
|
|
init-closed-east="true",
|
|
open-east="ui.chatOpen",
|
|
ng-hide="state.loading",
|
|
ng-cloak
|
|
)
|
|
.ui-layout-center
|
|
include ./editor/header
|
|
|
|
include ./editor/share
|
|
|
|
#ide-body(ng-cloak, layout="main", ng-hide="state.loading", resize-on="layout:chat:resize")
|
|
.ui-layout-west
|
|
include ./editor/file-tree
|
|
|
|
.ui-layout-center
|
|
include ./editor/editor
|
|
include ./editor/binary-file
|
|
include ./editor/track-changes
|
|
include ./editor/publish-template
|
|
|
|
.ui-layout-east
|
|
include ./editor/chat
|
|
|
|
include ./editor/hotkeys
|
|
|
|
script(type="text/ng-template", id="genericMessageModalTemplate")
|
|
.modal-header
|
|
button.close(
|
|
type="button"
|
|
data-dismiss="modal"
|
|
ng-click="done()"
|
|
) ×
|
|
h3 {{ title }}
|
|
.modal-body {{ message }}
|
|
.modal-footer
|
|
button.btn.btn-info(ng-click="done()") #{translate("ok")}
|
|
|
|
script(src='/socket.io/socket.io.js')
|
|
|
|
//- We need to do .replace(/\//g, '\\/') do that '</script>' -> '<\/script>'
|
|
//- and doesn't prematurely end the script tag.
|
|
script(type='text/javascript').
|
|
window.project_id = "!{project_id}";
|
|
window.userSettings = !{JSON.stringify(userSettings).replace(/\//g, '\\/')};
|
|
window.user = !{JSON.stringify(user).replace(/\//g, '\\/')};
|
|
window.csrfToken = "!{csrfToken}";
|
|
window.anonymous = #{anonymous};
|
|
window.requirejs = {
|
|
"paths" : {
|
|
"mathjax": "/js/libs/mathjax/MathJax.js?config=TeX-AMS_HTML",
|
|
"moment": "libs/moment-2.7.0",
|
|
"libs/pdf": "libs/pdfjs-1.0.1040/pdf"
|
|
},
|
|
"urlArgs" : "fingerprint=#{fingerprint(jsPath + 'ide.js')}-#{fingerprint(jsPath + 'libs.js')}",
|
|
"waitSeconds": 0,
|
|
"shim": {
|
|
"libs/pdf": {
|
|
deps: ["libs/pdfjs-1.0.1040/compatibility"]
|
|
},
|
|
"ace/ext-searchbox": {
|
|
deps: ["ace/ace"]
|
|
}
|
|
},
|
|
config:{
|
|
moment:{
|
|
noGlobal: true
|
|
}
|
|
}
|
|
};
|
|
window.aceFingerprint = "#{fingerprint(jsPath + 'ace/ace.js')}"
|
|
|
|
script(type='text/javascript').
|
|
ga('send', 'event', 'editor-interaction', 'editor-opened')
|
|
|
|
- locals.suppressDefaultJs = true
|
|
|
|
- var pdfPath = 'libs/pdfjs-1.0.1040/pdf.worker.js'
|
|
- var fingerprintedPath = fingerprint(jsPath+pdfPath)
|
|
- var pdfJsWorkerPath = jsPath+pdfPath+'?fingerprint='+fingerprintedPath
|
|
script(type='text/javascript').
|
|
window.pdfJsWorkerPath = "#{pdfJsWorkerPath}";
|
|
|
|
script(
|
|
data-main=jsPath+"ide.js",
|
|
baseurl=jsPath,
|
|
data-ace-base=jsPath+'ace',
|
|
src=jsPath+'libs/require.js?fingerprint='+fingerprint(jsPath + 'libs/require.js')
|
|
)
|
|
|
|
|