mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-06-05 15:19:02 +02: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.
131 lines
3.9 KiB
Plaintext
131 lines
3.9 KiB
Plaintext
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')
|
|
)
|
|
|
|
|