diff options
author | Luke "Jared" Bennett <lbennett@gitlab.com> | 2017-07-20 15:43:00 +0100 |
---|---|---|
committer | Luke "Jared" Bennett <lbennett@gitlab.com> | 2017-07-20 15:43:00 +0100 |
commit | 78c4a2756643ea4f29fa59a1d1309bf82161c92a (patch) | |
tree | 2b195656db88fe1060f16979920e3b3e6e367561 | |
parent | 65e8edae6eb46b3a7aabc741e8de011a45fedd5f (diff) | |
download | gitlab-ce-ide.tar.gz |
Move repo_helper methods to related classeside
-rw-r--r-- | app/assets/javascripts/repo/repo_editor.js | 4 | ||||
-rw-r--r-- | app/assets/javascripts/repo/repo_file_buttons.js | 4 | ||||
-rw-r--r-- | app/assets/javascripts/repo/repo_helper.js | 177 | ||||
-rw-r--r-- | app/assets/javascripts/repo/repo_service.js | 10 | ||||
-rw-r--r-- | app/assets/javascripts/repo/repo_sidebar.js | 2 | ||||
-rw-r--r-- | app/assets/javascripts/repo/repo_store.js | 114 | ||||
-rw-r--r-- | app/assets/javascripts/repo/repo_tab.js | 8 |
7 files changed, 161 insertions, 158 deletions
diff --git a/app/assets/javascripts/repo/repo_editor.js b/app/assets/javascripts/repo/repo_editor.js index 53e85ec29bd..1b7015b4bb3 100644 --- a/app/assets/javascripts/repo/repo_editor.js +++ b/app/assets/javascripts/repo/repo_editor.js @@ -16,7 +16,7 @@ export default class RepoEditor { } onMonacoEditorKeysPressed() { - Helper.setActiveFileContents(this.monacoEditor.getValue()); + Store.setActiveFileContents(this.monacoEditor.getValue()); } initMonaco() { @@ -110,7 +110,7 @@ export default class RepoEditor { monaco.editor.createModel( this.blobRaw, Helper - .getLanguageForFile( + .getLanguageIDForFile( this.activeFile, monaco.languages.getLanguages(), ), diff --git a/app/assets/javascripts/repo/repo_file_buttons.js b/app/assets/javascripts/repo/repo_file_buttons.js index 477ec2cd9e6..6ed2dd52f95 100644 --- a/app/assets/javascripts/repo/repo_file_buttons.js +++ b/app/assets/javascripts/repo/repo_file_buttons.js @@ -52,9 +52,7 @@ export default class RepoFileButtons { }, methods: { - rawPreviewToggle() { - Helper.setCurrentFileRawOrPreview(); - }, + rawPreviewToggle: Store.toggleRawPreview, }, }); } diff --git a/app/assets/javascripts/repo/repo_helper.js b/app/assets/javascripts/repo/repo_helper.js index 0ba946a75a9..a3baa14e60b 100644 --- a/app/assets/javascripts/repo/repo_helper.js +++ b/app/assets/javascripts/repo/repo_helper.js @@ -15,7 +15,7 @@ const RepoHelper = { ? window.performance : Date, - getLanguageForFile(file, langs) { + getLanguageIDForFile(file, langs) { const ext = file.name.split('.').pop(); const foundLang = this.findLanguage(ext, langs); @@ -26,105 +26,6 @@ const RepoHelper = { langs.find(lang => lang.extensions && lang.extensions.indexOf(`.${ext}`) > -1); }, - blobURLtoParent(url) { - const urlArray = url.split('/'); - urlArray.pop(); - const blobIndex = urlArray.indexOf('blob'); - - if (blobIndex > -1) urlArray[blobIndex] = 'tree'; - - return urlArray.join('/'); - }, - - insertNewFilesIntoParentDir(inDirectory, oldList, newList) { - if (!inDirectory) return newList; - - const indexOfFile = oldList.findIndex(file => file.url === inDirectory.url); - - if (!indexOfFile) return newList; - - return this.mergeNewListToOldList(newList, oldList, inDirectory, indexOfFile); - }, - - mergeNewListToOldList(newList, oldList, inDirectory, indexOfFile) { - newList.forEach((newFile) => { - const file = newFile; - file.level = inDirectory.level + 1; - - oldList.splice(indexOfFile, 0, file); - }); - - return oldList; - }, - - resetBinaryTypes() { - const binaryTypeKeys = Object.keys(Store.binaryTypes); - - binaryTypeKeys.forEach((typeKey) => { - Store.binaryTypes[typeKey] = false; - }); - }, - - setCurrentFileRawOrPreview() { - Store.activeFile.raw = !Store.activeFile.raw; - Store.activeFileLabel = Store.activeFile.raw ? 'Preview' : 'Raw'; - }, - - setActiveFile(file) { - if (this.isActiveFile(file)) return; - - Store.openedFiles = Store.openedFiles.map((openedFile, i) => { - const activeFile = openedFile; - activeFile.active = file.url === activeFile.url; - - if (activeFile.active) { - Store.activeFile = activeFile; - Store.activeFileIndex = i; - } - - return activeFile; - }); - - this.setActiveToRaw(); - - if (file.binary) { - Store.blobRaw = file.base64; - } else { - Store.blobRaw = file.plain; - } - - if (!file.loading) this.toURL(file.url); - Store.binary = file.binary; - }, - - setActiveToRaw() { - Store.activeFile.raw = false; - // can't get vue to listen to raw for some reason so this for now. - Store.activeFileLabel = 'Raw'; - }, - - isActiveFile(file) { - return file && file.url === Store.activeFile.url; - }, - - removeFromOpenedFiles(file) { - if (file.type === 'tree') return; - - Store.openedFiles = Store.openedFiles.filter(openedFile => openedFile.url !== file.url); - }, - - addToOpenedFiles(file) { - const openFile = file; - - const openedFilesAlreadyExists = Store.openedFiles - .some(openedFile => openedFile.url === openFile.url); - - if (openedFilesAlreadyExists) return; - - openFile.changed = false; - Store.openedFiles.push(openFile); - }, - setDirectoryOpen(tree) { if (!tree) return; @@ -155,34 +56,9 @@ const RepoHelper = { .catch(this.loadingError); }, - setActiveFileContents(contents) { - if (!Store.editMode) return; - - Store.activeFile.newContent = contents; - Store.activeFile.changed = Store.activeFile.plain !== Store.activeFile.newContent; - Store.openedFiles[Store.activeFileIndex].changed = Store.activeFile.changed; - }, - toggleFakeTab(loading, file) { - if (loading) return this.addPlaceholderFile(); - return this.removeFromOpenedFiles(file); - }, - - addPlaceholderFile() { - const randomURL = this.Time.now(); - const newFakeFile = { - active: false, - binary: true, - type: 'blob', - loading: true, - mime_type: 'loading', - name: 'loading', - url: randomURL, - }; - - Store.openedFiles.push(newFakeFile); - - return newFakeFile; + if (loading) return Store.addPlaceholderFile(); + return Store.removeFromOpenedFiles(file); }, setLoading(loading, file) { @@ -196,6 +72,27 @@ const RepoHelper = { return undefined; }, + getNewMergedList(inDirectory, currentList, newList) { + if (!inDirectory) return newList; + + const indexOfFile = currentList.findIndex(file => file.url === inDirectory.url); + + if (!indexOfFile) return newList; + + return this.mergeNewListToOldList(newList, currentList, inDirectory, indexOfFile); + }, + + mergeNewListToOldList(newList, oldList, inDirectory, indexOfFile) { + newList.forEach((newFile) => { + const file = newFile; + file.level = inDirectory.level + 1; + + oldList.splice(indexOfFile, 0, file); + }); + + return oldList; + }, + getContent(treeOrFile) { let file = treeOrFile; const loadingData = this.setLoading(true); @@ -223,12 +120,13 @@ const RepoHelper = { data.url = file.url; data.newContent = ''; - this.addToOpenedFiles(data); - this.setActiveFile(data); + + Store.addToOpenedFiles(data); + Store.setActiveFiles(data); // if the file tree is empty if (Store.files.length === 0) { - const parentURL = this.blobURLtoParent(Service.url); + const parentURL = Service.blobURLtoParentTree(Service.url); Service.url = parentURL; this.getContent(); } @@ -236,8 +134,8 @@ const RepoHelper = { // it's a tree this.setDirectoryOpen(file); const newDirectory = this.dataToListOfFiles(data); - Store.files = this.insertNewFilesIntoParentDir(file, Store.files, newDirectory); - Store.prevURL = this.blobURLtoParent(Service.url); + Store.addFilesToDirectory(file, Store.files, newDirectory); + Store.prevURL = Service.blobURLtoParentTree(Service.url); } }) .catch(() => { @@ -250,21 +148,6 @@ const RepoHelper = { return `fa-${icon}`; }, - /* eslint-disable no-param-reassign */ - removeChildFilesOfTree(tree) { - let foundTree = false; - Store.files = Store.files.filter((file) => { - if (file.url === tree.url) foundTree = true; - - if (foundTree) return file.level <= tree.level; - return true; - }); - - tree.opened = false; - tree.icon = 'fa-folder'; - }, - /* eslint-enable no-param-reassign */ - serializeBlob(blob) { const simpleBlob = this.serializeRepoEntity('blob', blob); simpleBlob.lastCommitMessage = blob.last_commit.message; diff --git a/app/assets/javascripts/repo/repo_service.js b/app/assets/javascripts/repo/repo_service.js index ff90de48ef9..3876b90363f 100644 --- a/app/assets/javascripts/repo/repo_service.js +++ b/app/assets/javascripts/repo/repo_service.js @@ -43,6 +43,16 @@ const RepoService = { bufferToBase64(data) { return new Buffer(data, 'binary').toString('base64'); }, + + blobURLtoParentTree(url) { + const urlArray = url.split('/'); + urlArray.pop(); + const blobIndex = urlArray.indexOf('blob'); + + if (blobIndex > -1) urlArray[blobIndex] = 'tree'; + + return urlArray.join('/'); + }, }; export default RepoService; diff --git a/app/assets/javascripts/repo/repo_sidebar.js b/app/assets/javascripts/repo/repo_sidebar.js index 00a55eceb78..d8037786399 100644 --- a/app/assets/javascripts/repo/repo_sidebar.js +++ b/app/assets/javascripts/repo/repo_sidebar.js @@ -44,7 +44,7 @@ export default class RepoSidebar { let url = ''; if (typeof file === 'object') { if (file.type === 'tree' && file.opened) { - Helper.removeChildFilesOfTree(file); + Store.removeChildFilesOfTree(file); } url = file.url; Service.url = url; diff --git a/app/assets/javascripts/repo/repo_store.js b/app/assets/javascripts/repo/repo_store.js index 5a4a44a3640..1bd3f1b0b39 100644 --- a/app/assets/javascripts/repo/repo_store.js +++ b/app/assets/javascripts/repo/repo_store.js @@ -1,3 +1,5 @@ +import RepoHelper from './repo_helper'; + const RepoStore = { ideEl: {}, monacoInstance: {}, @@ -44,5 +46,117 @@ const RepoStore = { tree: false, blob: false, }, + + // mutations + + addFilesToDirectory(inDirectory, currentList, newList) { + this.files = RepoHelper.getNewMergedList(inDirectory, currentList, newList); + }, + + toggleRawPreview() { + this.activeFile.raw = !this.activeFile.raw; + this.activeFileLabel = this.activeFile.raw ? 'Preview' : 'Raw'; + }, + + setActiveFiles(file) { + if (this.isActiveFile(file)) return; + + this.openedFiles = this.openedFiles.map((openedFile, i) => this.setFileToActive(openedFile, i)); + + this.setActiveToRaw(); + + if (file.binary) { + this.blobRaw = file.base64; + } else { + this.blobRaw = file.plain; + } + + if (!file.loading) RepoHelper.toURL(file.url); + this.binary = file.binary; + }, + + setFileToActive(file, i) { + const activeFile = file; + activeFile.active = activeFile.url === activeFile.url; + + if (activeFile.active) this.setActiveFile(activeFile, i); + + return activeFile; + }, + + setActiveFile(activeFile, i) { + this.activeFile = activeFile; + this.activeFileIndex = i; + }, + + setActiveToRaw() { + this.activeFile.raw = false; + // can't get vue to listen to raw for some reason so this for now. + this.activeFileLabel = 'Raw'; + }, + + /* eslint-disable no-param-reassign */ + removeChildFilesOfTree(tree) { + let foundTree = false; + this.files = this.files.filter((file) => { + if (file.url === tree.url) foundTree = true; + + if (foundTree) return file.level <= tree.level; + return true; + }); + + tree.opened = false; + tree.icon = 'fa-folder'; + }, + /* eslint-enable no-param-reassign */ + + removeFromOpenedFiles(file) { + if (file.type === 'tree') return; + + this.openedFiles = this.openedFiles.filter(openedFile => openedFile.url !== file.url); + }, + + addPlaceholderFile() { + const randomURL = RepoHelper.Time.now(); + const newFakeFile = { + active: false, + binary: true, + type: 'blob', + loading: true, + mime_type: 'loading', + name: 'loading', + url: randomURL, + }; + + this.openedFiles.push(newFakeFile); + + return newFakeFile; + }, + + addToOpenedFiles(file) { + const openFile = file; + + const openedFilesAlreadyExists = this.openedFiles + .some(openedFile => openedFile.url === openFile.url); + + if (openedFilesAlreadyExists) return; + + openFile.changed = false; + this.openedFiles.push(openFile); + }, + + setActiveFileContents(contents) { + if (!this.editMode) return; + + this.activeFile.newContent = contents; + this.activeFile.changed = this.activeFile.plain !== this.activeFile.newContent; + this.openedFiles[this.activeFileIndex].changed = this.activeFile.changed; + }, + + // getters + + isActiveFile(file) { + return file && file.url === this.activeFile.url; + }, }; export default RepoStore; diff --git a/app/assets/javascripts/repo/repo_tab.js b/app/assets/javascripts/repo/repo_tab.js index 37175611859..ace17b22ab2 100644 --- a/app/assets/javascripts/repo/repo_tab.js +++ b/app/assets/javascripts/repo/repo_tab.js @@ -1,4 +1,4 @@ -import RepoHelper from './repo_helper'; +import RepoStore from './repo_store'; const RepoTab = { template: ` @@ -27,13 +27,11 @@ const RepoTab = { }, methods: { - tabClicked(file) { - RepoHelper.setActiveFile(file); - }, + tabClicked: RepoStore.setActiveFiles, xClicked(file) { if (file.changed) return; - RepoHelper.removeFromOpenedFiles(file); + RepoStore.removeFromOpenedFiles(file); }, }, }; |