/* eslint-disable camelcase, handle-callback-err, max-len, no-return-assign, no-undef, */ // TODO: This file was created by bulk-decaffeinate. // Fix any style issues and re-enable lint. /* * decaffeinate suggestions: * DS101: Remove unnecessary use of Array.from * DS102: Remove unnecessary code created because of implicit returns * DS207: Consider shorter variations of null checks * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md */ define(['base', 'services/algolia-search'], App => App.controller('SearchWikiController', function($scope, algoliaSearch, _) { $scope.hits = [] $scope.clearSearchText = function() { $scope.searchQueryText = '' return updateHits([]) } $scope.safeApply = function(fn) { const phase = $scope.$root.$$phase if (phase === '$apply' || phase === '$digest') { return $scope.$eval(fn) } else { return $scope.$apply(fn) } } const buildHitViewModel = function(hit) { const page_underscored = hit.pageName.replace(/\s/g, '_') const section_underscored = hit.sectionName.replace(/\s/g, '_') let content = hit._highlightResult.content.value // Replace many new lines content = content.replace(/\n\n+/g, '\n\n') const lines = content.split('\n') // Only show the lines that have a highlighted match const matching_lines = [] for (let line of Array.from(lines)) { if (!/^\[edit\]/.test(line)) { content += line + '\n' if (//.test(line)) { matching_lines.push(line) } } } content = matching_lines.join('\n...\n') const result = { name: hit._highlightResult.pageName.value + ' - ' + hit._highlightResult.sectionName.value, url: `/learn/${page_underscored}#${section_underscored}`, content } return result } var updateHits = hits => $scope.safeApply(() => ($scope.hits = hits)) return ($scope.search = function() { const query = $scope.searchQueryText if (query == null || query.length === 0) { updateHits([]) return } return algoliaSearch.searchWiki(query, function(err, response) { if (response.hits.length === 0) { return updateHits([]) } else { const hits = _.map(response.hits, buildHitViewModel) return updateHits(hits) } }) }) }))