diff --git a/apps/common/main/lib/view/SearchPanel.js b/apps/common/main/lib/view/SearchPanel.js index 759acbed8..e29c297c5 100644 --- a/apps/common/main/lib/view/SearchPanel.js +++ b/apps/common/main/lib/view/SearchPanel.js @@ -266,7 +266,12 @@ define([ }, updateResultsNumber: function (current, count) { - var text = current === 'no-results' ? this.textNoSearchResults : (!count ? this.textNoMatches : Common.Utils.String.format(this.textSearchResults, current + 1, count)); + var text; + if (count > 300) { + text = this.textTooManyResults; + } else { + text = current === 'no-results' ? this.textNoSearchResults : (!count ? this.textNoMatches : Common.Utils.String.format(this.textSearchResults, current + 1, count)); + } this.$reaultsNumber.text(text); }, @@ -315,7 +320,12 @@ define([ disableNavButtons: function (resultNumber, allResults) { var disable = this.inputText._input.val() === ''; this.btnBack.setDisabled(disable || !allResults || resultNumber === 0); - this.btnNext.setDisabled(disable || resultNumber + 1 === allResults); + this.btnNext.setDisabled(disable || !allResults || resultNumber + 1 === allResults); + }, + + disableReplaceButtons: function (disable) { + this.btnReplace.setDisabled(disable); + this.btnReplaceAll.setDisabled(disable); }, textFind: 'Find', @@ -340,7 +350,8 @@ define([ textSearchOptions: 'Search options', textNoMatches: 'No matches', textNoSearchResults: 'No search results', - textItemEntireCell: 'Entire cell contents' + textItemEntireCell: 'Entire cell contents', + textTooManyResults: 'There are too many results to show here' }, Common.Views.SearchPanel || {})); }); \ No newline at end of file diff --git a/apps/common/main/resources/less/searchdialog.less b/apps/common/main/resources/less/searchdialog.less index f69fbb094..d4de49286 100644 --- a/apps/common/main/resources/less/searchdialog.less +++ b/apps/common/main/resources/less/searchdialog.less @@ -156,6 +156,9 @@ #search-adv-results-number { padding-top: 2px; + width: calc(100% - 48px); + color: @text-secondary-ie; + color: @text-secondary; } } @@ -229,6 +232,10 @@ color: @text-normal-pressed-ie; color: @text-normal-pressed; } + + b { + font-style: italic; + } } } diff --git a/apps/documenteditor/main/app/controller/Search.js b/apps/documenteditor/main/app/controller/Search.js index 67ca7d4f3..0dca0cef6 100644 --- a/apps/documenteditor/main/app/controller/Search.js +++ b/apps/documenteditor/main/app/controller/Search.js @@ -134,7 +134,7 @@ define([ onInputSearchChange: function (text) { var me = this; - if (text.length > 0 && this._state.searchText !== text) { + if (this._state.searchText !== text) { this._state.newSearchText = text; this._lastInputChange = (new Date()); if (this.searchTimer === undefined) { @@ -143,8 +143,14 @@ define([ me.hideResults(); me._state.searchText = me._state.newSearchText; - if (me.onQuerySearch() && me.view.$el.is(':visible')) { - me.api.asc_StartTextAroundSearch(); + if (me._state.newSearchText !== '' && me.onQuerySearch()) { + if (me.view.$el.is(':visible')) { + me.api.asc_StartTextAroundSearch(); + } + me.view.disableReplaceButtons(false); + } else if (me._state.newSearchText === '') { + me.view.updateResultsNumber('no-results'); + me.view.disableReplaceButtons(true); } clearInterval(me.searchTimer); me.searchTimer = undefined; @@ -160,6 +166,7 @@ define([ searchSettings.put_WholeWords(this._state.matchWord); if (!this.api.asc_findText(searchSettings, d != 'back')) { this.view.updateResultsNumber(undefined, 0); + this.view.disableReplaceButtons(true); return false; } return true; @@ -173,6 +180,7 @@ define([ searchSettings.put_WholeWords(this._state.matchWord); if (!this.api.asc_replaceText(searchSettings, textReplace, false)) { this.view.updateResultsNumber(undefined, 0); + this.view.disableReplaceButtons(true); } } }, @@ -199,7 +207,6 @@ define([ onStartTextAroundSearch: function () { if (this.view) { - this.view.$resultsContainer.show(); this._state.isStartedAddingResults = true; } }, @@ -213,6 +220,7 @@ define([ onApiGetTextAroundSearch: function (data) { if (this.view && this._state.isStartedAddingResults) { + if (data.length > 300) return; var me = this; me.resultItems = []; data.forEach(function (item) { @@ -228,6 +236,8 @@ define([ $(el.currentTarget).addClass('selected'); }, me)); }); + + this.view.$resultsContainer.show(); } }, @@ -262,9 +272,12 @@ define([ this.view.setFindText(''); } - if (text !== '' && text === this._state.searchText) { + if (text !== '' && text === this._state.searchText) { // search was made + this.view.disableReplaceButtons(false); this.hideResults(); this.api.asc_StartTextAroundSearch(); + } else { + this.view.disableReplaceButtons(true); } this.view.disableNavButtons();