/* * searchtools.js * ~~~~~~~~~~~~~~~~ * * Sphinx JavaScript utilities for the full-text search. * * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ // Modified from https://raw.githubusercontent.com/sphinx-doc/sphinx/3.x/sphinx/themes/basic/static/searchtools.js // to have renderApiVersionLabel to render the API version for each search result item. if (!Scorer) { /** * Simple result scoring code. */ var Scorer = { // Implement the following function to further tweak the score for each result // The function takes a result array [filename, title, anchor, descr, score] // and returns the new score. /* score: function(result) { return result[4]; }, */ // query matches the full name of an object objNameMatch: 11, // or matches in the last dotted part of the object name objPartialMatch: 6, // Additive scores depending on the priority of the object objPrio: { 0: 15, // used to be importantResults 1: 5, // used to be objectResults 2: -5, }, // used to be unimportantResults // Used when the priority is not in the mapping. objPrioDefault: 0, // query found in title title: 15, partialTitle: 7, // query found in terms term: 5, partialTerm: 2, }; } if (!splitQuery) { function splitQuery(query) { return query.split(/\s+/); } } /** * Search Module */ var Search = { _index: null, _queued_query: null, _pulse_status: -1, htmlToText: function (htmlString) { var htmlElement = document.createElement("span"); htmlElement.innerHTML = htmlString; $(htmlElement).find(".headerlink").remove(); docContent = $(htmlElement).find("[role=main]")[0]; if (docContent === undefined) { console.warn( "Content block not found. Sphinx search tries to obtain it " + "via '[role=main]'. Could you check your theme or template." ); return ""; } return docContent.textContent || docContent.innerText; }, init: function () { var params = $.getQueryParameters(); if (params.q) { var query = params.q[0]; $('input[name="q"]')[0].value = query; this.performSearch(query); } }, loadIndex: function (url) { $.ajax({ type: "GET", url: url, data: null, dataType: "script", cache: true, complete: function (jqxhr, textstatus) { if (textstatus != "success") { document.getElementById("searchindexloader").src = url; } }, }); }, setIndex: function (index) { var q; this._index = index; if ((q = this._queued_query) !== null) { this._queued_query = null; Search.query(q); } }, hasIndex: function () { return this._index !== null; }, deferQuery: function (query) { this._queued_query = query; }, stopPulse: function () { this._pulse_status = 0; }, startPulse: function () { if (this._pulse_status >= 0) return; function pulse() { var i; Search._pulse_status = (Search._pulse_status + 1) % 4; var dotString = ""; for (i = 0; i < Search._pulse_status; i++) dotString += "."; Search.dots.text(dotString); if (Search._pulse_status > -1) window.setTimeout(pulse, 500); } pulse(); }, /** * perform a search for something (or wait until index is loaded) */ performSearch: function (query) { // create the required interface elements this.out = $("#search-results"); this.title = $("

" + _("Searching") + "

").appendTo(this.out); this.dots = $("").appendTo(this.title); this.status = $('

 

').appendTo(this.out); this.output = $('