| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- import _ from 'lodash'
- /* eslint-disable
- camelcase,
- handle-callback-err,
- max-len,
- no-return-assign,
- */
- // 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
- */
- import App from '../base'
- import '../directives/mathjax'
- import '../services/algolia-search'
- App.controller('SearchWikiController', function($scope, algoliaSearch, $modal) {
- $scope.hits = []
- $scope.hits_total = 0
- $scope.config_hits_per_page = 20
- $scope.processingSearch = false
- $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 pagePath = hit.kb ? 'how-to/' : 'latex/'
- const pageSlug = encodeURIComponent(hit.pageName.replace(/\s/g, '_'))
- let section_underscored = ''
- if (hit.sectionName && hit.sectionName !== '') {
- section_underscored = '#' + hit.sectionName.replace(/\s/g, '_')
- }
- const section = hit._highlightResult.sectionName
- let pageName = hit._highlightResult.pageName.value
- if (section && section.value && section !== '') {
- pageName += ' - ' + section.value
- }
- 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 (/<em>/.test(line)) {
- matching_lines.push(line)
- }
- }
- }
- content = matching_lines.join('\n...\n')
- const result = {
- name: pageName,
- url: `/learn/${pagePath}${pageSlug}${section_underscored}`,
- content
- }
- return result
- }
- var updateHits = (hits, hits_total = 0) => {
- $scope.safeApply(() => {
- $scope.hits = hits
- $scope.hits_total = hits_total
- })
- }
- $scope.search = function() {
- $scope.processingSearch = true
- const query = $scope.searchQueryText
- if (query == null || query.length === 0) {
- updateHits([])
- return
- }
- return algoliaSearch.searchWiki(
- query,
- {
- hitsPerPage: $scope.config_hits_per_page
- },
- function(err, response) {
- $scope.processingSearch = false
- if (response.hits.length === 0) {
- return updateHits([])
- } else {
- const hits = _.map(response.hits, buildHitViewModel)
- return updateHits(hits, response.nbHits)
- }
- }
- )
- }
- })
- export default App.controller('LearnController', function() {})
|