From 7c682a6a2f1733bbb50a47389b7dd317c68157d7 Mon Sep 17 00:00:00 2001 From: Safwan Rahman Date: Mon, 9 Jul 2018 03:32:35 +0600 Subject: [PATCH 1/4] Porting frontend docsearch to work with new API --- .../static-src/core/js/doc-embed/search.js | 78 +++++++++---------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/readthedocs/core/static-src/core/js/doc-embed/search.js b/readthedocs/core/static-src/core/js/doc-embed/search.js index c11a9714361..5fce32fca63 100644 --- a/readthedocs/core/static-src/core/js/doc-embed/search.js +++ b/readthedocs/core/static-src/core/js/doc-embed/search.js @@ -23,48 +23,48 @@ function attach_elastic_search_query(data) { search_url.href = api_host; search_url.pathname = '/api/v2/docsearch/'; - search_url.search = '?q=' + $.urlencode(query) + '&project=' + project + - '&version=' + version + '&language=' + language; + search_url.search = '?query=' + $.urlencode(query) + '&project=' + project + + '&version=' + version + '&language=' + language; search_def - .then(function (results) { - var hits = results.hits || {}; - var hit_list = hits.hits || []; + .then(function (data) { + var hit_list = data.results || []; + var total_count = data.count || 0; if (hit_list.length) { - for (var n in hit_list) { - var hit = hit_list[n]; - var fields = hit.fields || {}; - var list_item = $('
  • '); - var item_url = document.createElement('a'); - var highlight = hit.highlight; - - item_url.href += fields.link + - DOCUMENTATION_OPTIONS.FILE_SUFFIX; - item_url.search = '?highlight=' + $.urlencode(query); - - // Result list elements - list_item.append( - $('') - .attr('href', item_url) - .html(fields.title) - ); - // fields.project is returned as an array - if (fields.project.indexOf(project) === -1) { - list_item.append( - $('') - .text(" (from project " + fields.project + ")") - ); + for (var i = 0; i < hit_list.length; i++) { + var document = hit_list[i]; + var highlight = document.highlight; + var $list_item = $('
  • '); + + // Creating the result from elements + var link = document.link + DOCUMENTATION_OPTIONS.FILE_SUFFIX + + '?highlight=' + $.urlencode(query); + + var $item = $('
    ', {'href': link}); + $item.html(document.title); + $list_item.append($item); + + // If the document is from subproject, add extra information + if (document.project !== project) { + var text = " (from project " + document.project + ")"; + var $extra = $('', {'text': text}); + + $list_item.append($extra); } - if (highlight.content.length) { - var content = $('
    ') - .html(xss(highlight.content[0])); - content.find('em').addClass('highlighted'); - list_item.append(content); + + // Show highlighted texts + if (highlight.content) { + var content_text = xss(highlight.content[0]); + var $contents = $('
    '); + + $contents.html(content_text); + $contents.find('em').addClass('highlighted'); + $list_item.append($contents); } - Search.output.append(list_item); - list_item.slideDown(5); + Search.output.append($list_item); + $list_item.slideDown(5); } } @@ -74,7 +74,7 @@ function attach_elastic_search_query(data) { } else { Search.status.text( - _('Search finished, found %s page(s) matching the search query.').replace('%s', hit_list.length) + _('Search finished, found %s page(s) matching the search query.').replace('%s', total_count) ); } }) @@ -96,11 +96,11 @@ function attach_elastic_search_query(data) { withCredentials: true, }, complete: function (resp, status_code) { - if (typeof (resp.responseJSON) === 'undefined' || - typeof (resp.responseJSON.results) === 'undefined') { + console.log(status_code); + if (status_code !== 'success' || resp.responseJSON.count === 0) { return search_def.reject(); } - return search_def.resolve(resp.responseJSON.results); + return search_def.resolve(resp.responseJSON); } }) .error(function (resp, status_code, error) { From 30f7e7434b466d73214be9cc75af2804a0484564 Mon Sep 17 00:00:00 2001 From: Safwan Rahman Date: Mon, 9 Jul 2018 04:16:21 +0600 Subject: [PATCH 2/4] fixup lint --- readthedocs/core/static-src/core/js/doc-embed/search.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readthedocs/core/static-src/core/js/doc-embed/search.js b/readthedocs/core/static-src/core/js/doc-embed/search.js index 5fce32fca63..3029353a309 100644 --- a/readthedocs/core/static-src/core/js/doc-embed/search.js +++ b/readthedocs/core/static-src/core/js/doc-embed/search.js @@ -32,7 +32,7 @@ function attach_elastic_search_query(data) { var total_count = data.count || 0; if (hit_list.length) { - for (var i = 0; i < hit_list.length; i++) { + for (var i = 0; i < hit_list.length; i += 1) { var document = hit_list[i]; var highlight = document.highlight; var $list_item = $('
  • '); From 1fa4db617eefecedc59192ca95c05b382a838c84 Mon Sep 17 00:00:00 2001 From: Safwan Rahman Date: Mon, 9 Jul 2018 19:05:36 +0600 Subject: [PATCH 3/4] renaming document to doc` --- .../core/static-src/core/js/doc-embed/search.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/readthedocs/core/static-src/core/js/doc-embed/search.js b/readthedocs/core/static-src/core/js/doc-embed/search.js index 3029353a309..f7a6f46860d 100644 --- a/readthedocs/core/static-src/core/js/doc-embed/search.js +++ b/readthedocs/core/static-src/core/js/doc-embed/search.js @@ -33,21 +33,21 @@ function attach_elastic_search_query(data) { if (hit_list.length) { for (var i = 0; i < hit_list.length; i += 1) { - var document = hit_list[i]; - var highlight = document.highlight; + var doc = hit_list[i]; + var highlight = doc.highlight; var $list_item = $('
  • '); // Creating the result from elements - var link = document.link + DOCUMENTATION_OPTIONS.FILE_SUFFIX + + var link = doc.link + DOCUMENTATION_OPTIONS.FILE_SUFFIX + '?highlight=' + $.urlencode(query); var $item = $('
    ', {'href': link}); - $item.html(document.title); + $item.html(doc.title); $list_item.append($item); // If the document is from subproject, add extra information - if (document.project !== project) { - var text = " (from project " + document.project + ")"; + if (doc.project !== project) { + var text = " (from project " + doc.project + ")"; var $extra = $('', {'text': text}); $list_item.append($extra); From 46d72f945f61d60bd4224676a74fcc17122f5231 Mon Sep 17 00:00:00 2001 From: Safwan Rahman Date: Tue, 10 Jul 2018 02:31:04 +0600 Subject: [PATCH 4/4] remove $ sign --- .../static-src/core/js/doc-embed/search.js | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/readthedocs/core/static-src/core/js/doc-embed/search.js b/readthedocs/core/static-src/core/js/doc-embed/search.js index f7a6f46860d..fa95ee49191 100644 --- a/readthedocs/core/static-src/core/js/doc-embed/search.js +++ b/readthedocs/core/static-src/core/js/doc-embed/search.js @@ -35,36 +35,36 @@ function attach_elastic_search_query(data) { for (var i = 0; i < hit_list.length; i += 1) { var doc = hit_list[i]; var highlight = doc.highlight; - var $list_item = $('
  • '); + var list_item = $('
  • '); // Creating the result from elements var link = doc.link + DOCUMENTATION_OPTIONS.FILE_SUFFIX + '?highlight=' + $.urlencode(query); - var $item = $('
    ', {'href': link}); - $item.html(doc.title); - $list_item.append($item); + var item = $('', {'href': link}); + item.html(doc.title); + list_item.append(item); // If the document is from subproject, add extra information if (doc.project !== project) { var text = " (from project " + doc.project + ")"; - var $extra = $('', {'text': text}); + var extra = $('', {'text': text}); - $list_item.append($extra); + list_item.append(extra); } // Show highlighted texts if (highlight.content) { var content_text = xss(highlight.content[0]); - var $contents = $('
    '); + var contents = $('
    '); - $contents.html(content_text); - $contents.find('em').addClass('highlighted'); - $list_item.append($contents); + contents.html(content_text); + contents.find('em').addClass('highlighted'); + list_item.append(contents); } - Search.output.append($list_item); - $list_item.slideDown(5); + Search.output.append(list_item); + list_item.slideDown(5); } } @@ -96,7 +96,6 @@ function attach_elastic_search_query(data) { withCredentials: true, }, complete: function (resp, status_code) { - console.log(status_code); if (status_code !== 'success' || resp.responseJSON.count === 0) { return search_def.reject(); }