diff --git a/public/js/index.js b/public/js/index.js index 82f647df..d51ecb54 100644 --- a/public/js/index.js +++ b/public/js/index.js @@ -79,6 +79,7 @@ var renderer = require('./render') var preventXSS = renderer.preventXSS import Editor from './lib/editor' +import EditorConfig from './lib/editor/config' import getUIElements from './lib/editor/ui-elements' @@ -320,27 +321,6 @@ window.editor = editor var inlineAttach = inlineAttachment.editors.codemirror4.attach(editor) defaultTextHeight = parseInt($('.CodeMirror').css('line-height')) -function updateStatusBar () { - if (!editorInstance.statusBar) return - var cursor = editor.getCursor() - var cursorText = 'Line ' + (cursor.line + 1) + ', Columns ' + (cursor.ch + 1) - editorInstance.statusCursor.text(cursorText) - var fileText = ' — ' + editor.lineCount() + ' Lines' - editorInstance.statusFile.text(fileText) - var docLength = editor.getValue().length - editorInstance.statusLength.text('Length ' + docLength) - if (docLength > (docmaxlength * 0.95)) { - editorInstance.statusLength.css('color', 'red') - editorInstance.statusLength.attr('title', 'Your almost reach note max length limit.') - } else if (docLength > (docmaxlength * 0.8)) { - editorInstance.statusLength.css('color', 'orange') - editorInstance.statusLength.attr('title', 'You nearly fill the note, consider to make more pieces.') - } else { - editorInstance.statusLength.css('color', 'white') - editorInstance.statusLength.attr('title', 'You could write up to ' + docmaxlength + ' characters in this note.') - } -} - // initalize ui reference const ui = getUIElements() // FIXME: fix global ui element expose @@ -830,7 +810,7 @@ function changeMode (type) { // add and update status bar if (!editorInstance.statusBar) { editorInstance.addStatusBar() - updateStatusBar() + editorInstance.updateStatusBar() } // work around foldGutter might not init properly editor.setOption('foldGutter', false) @@ -2105,12 +2085,12 @@ socket.on('check', function (data) { socket.on('permission', function (data) { updatePermission(data.permission) }) -var docmaxlength = null + var permission = null socket.on('refresh', function (data) { // console.log(data); - docmaxlength = data.docmaxlength - editor.setOption('maxLength', docmaxlength) + EditorConfig.docmaxlength = data.docmaxlength + editor.setOption('maxLength', EditorConfig.docmaxlength) updateInfo(data) updatePermission(data.permission) if (!window.loaded) { @@ -2714,10 +2694,10 @@ function cursorActivityInner (editor) { } } -editorInstance.on('cursorActivity', updateStatusBar) +editorInstance.on('cursorActivity', editorInstance.updateStatusBar) editorInstance.on('cursorActivity', cursorActivity) -editorInstance.on('beforeSelectionChange', updateStatusBar) +editorInstance.on('beforeSelectionChange', editorInstance.updateStatusBar) editorInstance.on('beforeSelectionChange', function (doc, selections) { // check selection and whether the statusbar has added if (selections && editorInstance.statusSelection) { diff --git a/public/js/lib/editor/config.js b/public/js/lib/editor/config.js new file mode 100644 index 00000000..9508b847 --- /dev/null +++ b/public/js/lib/editor/config.js @@ -0,0 +1,5 @@ +let config = { + docmaxlength: null +} + +export default config diff --git a/public/js/lib/editor/index.js b/public/js/lib/editor/index.js index dead0c40..c807a17f 100644 --- a/public/js/lib/editor/index.js +++ b/public/js/lib/editor/index.js @@ -1,4 +1,5 @@ import * as utils from './utils' +import config from './config' /* config section */ const isMac = CodeMirror.keyMap.default === CodeMirror.keyMap.macDefault @@ -167,6 +168,28 @@ export default class Editor { } } + updateStatusBar () { + if (!this.statusBar) return + + var cursor = this.editor.getCursor() + var cursorText = 'Line ' + (cursor.line + 1) + ', Columns ' + (cursor.ch + 1) + this.statusCursor.text(cursorText) + var fileText = ' — ' + editor.lineCount() + ' Lines' + this.statusFile.text(fileText) + var docLength = editor.getValue().length + this.statusLength.text('Length ' + docLength) + if (docLength > (config.docmaxlength * 0.95)) { + this.statusLength.css('color', 'red') + this.statusLength.attr('title', 'Your almost reach note max length limit.') + } else if (docLength > (config.docmaxlength * 0.8)) { + this.statusLength.css('color', 'orange') + this.statusLength.attr('title', 'You nearly fill the note, consider to make more pieces.') + } else { + this.statusLength.css('color', 'white') + this.statusLength.attr('title', 'You could write up to ' + config.docmaxlength + ' characters in this note.') + } + } + setIndent () { var cookieIndentType = Cookies.get('indent_type') var cookieTabSize = parseInt(Cookies.get('tab_size'))