1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- window.SearcherDisplay = (function($) {
- /**
- * This class provides support for displaying quick search text results to users.
- */
- function SearcherDisplay() { }
- SearcherDisplay.prototype.init = function() {
- this._displayQuickSearch();
- };
- /**
- * This method creates the quick text search entry in navigation menu and wires all required events.
- */
- SearcherDisplay.prototype._displayQuickSearch = function() {
- var quickSearch = $(document.createElement("iframe")),
- body = $("body"),
- self = this;
- quickSearch.attr("src", "quicksearch.html");
- quickSearch.css("width", "0px");
- quickSearch.css("height", "0px");
- body.append(quickSearch);
- $(window).on("message", function(msg) {
- var msgData = msg.originalEvent.data;
- if (msgData.msgid != "docstrap.quicksearch.done") {
- return;
- }
- var results = msgData.results || [];
- self._displaySearchResults(results);
- });
- function startSearch() {
- var searchTerms = $('#search-input').prop("value");
- if (searchTerms) {
- quickSearch[0].contentWindow.postMessage({
- "searchTerms": searchTerms,
- "msgid": "docstrap.quicksearch.start"
- }, "*");
- }
- }
- $('#search-input').on('keyup', function(evt) {
- if (evt.keyCode != 13) {
- return;
- }
- startSearch();
- return false;
- });
- $('#search-submit').on('click', function() {
- startSearch();
- return false;
- });
- };
- /**
- * This method displays the quick text search results in a modal dialog.
- */
- SearcherDisplay.prototype._displaySearchResults = function(results) {
- var resultsHolder = $($("#searchResults").find(".modal-body")),
- fragment = document.createDocumentFragment(),
- resultsList = document.createElement("ul");
- resultsHolder.empty();
- for (var idx = 0; idx < results.length; idx++) {
- var result = results[idx],
- item = document.createElement("li"),
- link = document.createElement("a");
- link.href = result.id;
- link.innerHTML = result.title;
- item.appendChild(link)
- resultsList.appendChild(item);
- }
- fragment.appendChild(resultsList);
- resultsHolder.append(fragment);
- $("#searchResults").modal({"show": true});
- };
- return new SearcherDisplay();
- })($);
|