diff options
Diffstat (limited to 'app/assets/javascripts/project_find_file.js')
-rw-r--r-- | app/assets/javascripts/project_find_file.js | 49 |
1 files changed, 26 insertions, 23 deletions
diff --git a/app/assets/javascripts/project_find_file.js b/app/assets/javascripts/project_find_file.js index 2c375b39c1f..031c54d2336 100644 --- a/app/assets/javascripts/project_find_file.js +++ b/app/assets/javascripts/project_find_file.js @@ -1,16 +1,20 @@ -/* eslint-disable func-names, no-var, consistent-return, one-var, no-cond-assign, no-return-assign */ +/* eslint-disable func-names, consistent-return, no-return-assign */ import $ from 'jquery'; import fuzzaldrinPlus from 'fuzzaldrin-plus'; import axios from '~/lib/utils/axios_utils'; import flash from '~/flash'; import { __ } from '~/locale'; +import sanitize from 'sanitize-html'; // highlight text(awefwbwgtc -> <b>a</b>wefw<b>b</b>wgt<b>c</b> ) const highlighter = function(element, text, matches) { - var j, lastIndex, len, matchIndex, matchedChars, unmatched; - lastIndex = 0; - matchedChars = []; + let j = 0; + let len = 0; + let lastIndex = 0; + let matchedChars = []; + let matchIndex = matches[j]; + let unmatched = text.substring(lastIndex, matchIndex); for (j = 0, len = matches.length; j < len; j += 1) { matchIndex = matches[j]; unmatched = text.substring(lastIndex, matchIndex); @@ -54,10 +58,10 @@ export default class ProjectFindFile { 'keyup', (function(_this) { return function(event) { - var oldValue, ref, target, value; - target = $(event.target); - value = target.val(); - oldValue = (ref = target.data('oldValue')) != null ? ref : ''; + const target = $(event.target); + const value = target.val(); + const ref = target.data('oldValue'); + const oldValue = ref != null ? ref : ''; if (value !== oldValue) { target.data('oldValue', value); _this.findFile(); @@ -73,9 +77,8 @@ export default class ProjectFindFile { } findFile() { - var result, searchText; - searchText = this.inputElement.val(); - result = + const searchText = sanitize(this.inputElement.val()); + const result = searchText.length > 0 ? fuzzaldrinPlus.filter(this.filePaths, searchText) : this.filePaths; return this.renderList(result, searchText); // find file @@ -100,20 +103,21 @@ export default class ProjectFindFile { // render result renderList(filePaths, searchText) { - var blobItemUrl, filePath, html, i, len, matches, results; + let i = 0; + let len = 0; + let matches = []; + const results = []; this.element.find('.tree-table > tbody').empty(); - results = []; - for (i = 0, len = filePaths.length; i < len; i += 1) { - filePath = filePaths[i]; + const filePath = filePaths[i]; if (i === 20) { break; } if (searchText) { matches = fuzzaldrinPlus.match(filePath, searchText); } - blobItemUrl = `${this.options.blobUrlTemplate}/${encodeURIComponent(filePath)}`; - html = ProjectFindFile.makeHtml(filePath, matches, blobItemUrl); + const blobItemUrl = `${this.options.blobUrlTemplate}/${encodeURIComponent(filePath)}`; + const html = ProjectFindFile.makeHtml(filePath, matches, blobItemUrl); results.push(this.element.find('.tree-table > tbody').append(html)); } @@ -124,8 +128,7 @@ export default class ProjectFindFile { // make tbody row html static makeHtml(filePath, matches, blobItemUrl) { - var $tr; - $tr = $( + const $tr = $( "<tr class='tree-item'><td class='tree-item-file-name link-container'><a><i class='fa fa-file-text-o fa-fw'></i><span class='str-truncated'></span></a></td></tr>", ); if (matches) { @@ -140,9 +143,9 @@ export default class ProjectFindFile { } selectRow(type) { - var next, rows, selectedRow; - rows = this.element.find('.files-slider tr.tree-item'); - selectedRow = this.element.find('.files-slider tr.tree-item.selected'); + const rows = this.element.find('.files-slider tr.tree-item'); + let selectedRow = this.element.find('.files-slider tr.tree-item.selected'); + let next = selectedRow.prev(); if (rows && rows.length > 0) { if (selectedRow && selectedRow.length > 0) { if (type === 'UP') { @@ -174,7 +177,7 @@ export default class ProjectFindFile { } goToBlob() { - var $link = this.element.find('.tree-item.selected .tree-item-file-name a'); + const $link = this.element.find('.tree-item.selected .tree-item-file-name a'); if ($link.length) { $link.get(0).click(); |