From 375f32f7bc45c588757c7c0cd6dc8b7b6e764635 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sat, 31 Mar 2018 07:34:12 +0200 Subject: [PATCH] Use full page for search results --- css/ddox.css | 31 ++++++++++++++++-------- dpl-docs/views/layout.dt | 3 ++- js/ddox.js | 51 +++++++++++++++++++++++++++++++++------- 3 files changed, 66 insertions(+), 19 deletions(-) diff --git a/css/ddox.css b/css/ddox.css index 4295bada76..a0b0303849 100644 --- a/css/ddox.css +++ b/css/ddox.css @@ -53,25 +53,36 @@ a.inherited:after { content: url(../images/ddox/inherited.png); padding-left: 3p #symbolSearch { width: 112pt; } +#symbolSearchResultsContainer { + width: 80%; + margin: 0 auto; + padding: 0.3em; + display: none; +} + #symbolSearchResults { - background: #F5F5F5; - border: 1px solid #CCC; font-size: small; list-style: none; - margin: 0; margin-top: 5px; - padding: 0.3em; - position: absolute; - right: -1px; - top: 100%; - width: 100%; - z-index: 1000; + -moz-column-gap: 20px; + -webkit-column-gap: 20px; + column-gap: 20px; + -moz-column-width: 17.5em; + -webkit-column-width: 17.5em; + column-width: 17.5em; + list-style-type: none; + font-size: 1.2em; +} + +#symbolSearchCloseButton { + float: right; + font-size: 1.5em; } #symbolSearchResults li { background-repeat: no-repeat; background-position: left center; - padding-left: 18px; + padding: 15px; } #top #symbolSearchResults li a { diff --git a/dpl-docs/views/layout.dt b/dpl-docs/views/layout.dt index a28ecb221b..500fbdf1c1 100644 --- a/dpl-docs/views/layout.dt +++ b/dpl-docs/views/layout.dt @@ -148,8 +148,9 @@ html(lang='en-US') button(type='submit') i.fa.fa-search span go - include ddox.inc.symbol-search.results + #symbolSearchResultsContainer + include ddox.inc.symbol-search.results .container .subnav-helper .subnav diff --git a/js/ddox.js b/js/ddox.js index eb3bf78e2f..7495abdd75 100644 --- a/js/ddox.js +++ b/js/ddox.js @@ -1,3 +1,13 @@ +function getParameterByName(name, url) { + if (!url) url = window.location.href; + name = name.replace(/[\[\]]/g, "\\$&"); + var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), + results = regex.exec(url); + if (!results) return ''; + if (!results[2]) return ''; + return decodeURIComponent(results[2].replace(/\+/g, " ")); +} + function setupDdox() { $(".tree-view").children(".package").click(toggleTree); @@ -6,6 +16,12 @@ function setupDdox() updateSearchBox(); $('#sitesearch').change(updateSearchBox); + + var searchParam = getParameterByName("q"); + if (searchParam.length > 0) { + $("#symbolSearch").val(searchParam) + performSymbolSearch(40); + } } function updateSearchBox() @@ -30,17 +46,24 @@ function toggleTree() var searchCounter = 0; var lastSearchString = ""; +var closeButton = undefined; + function performSymbolSearch(maxlen) { if (maxlen === 'undefined') maxlen = 26; var searchstring = $("#symbolSearch").val().toLowerCase(); + if (searchstring.length === 0) { + $('.container').show(); + return; + } + if (searchstring == lastSearchString) return; lastSearchString = searchstring; var scnt = ++searchCounter; - $('#symbolSearchResults').hide(); + $('#symbolSearchResultsContainer').hide(); $('#symbolSearchResults').empty(); var terms = $.trim(searchstring).split(/\s+/); @@ -97,6 +120,16 @@ function performSymbolSearch(maxlen) results.sort(compare); + if (closeButton === undefined) { + console.log("foo"); + closeButton = $("
"); + closeButton.on("click", function() { + $('#symbolSearchResultsContainer').hide(); + $('.container').show(); + }); + $('#symbolSearchResultsContainer').prepend(closeButton); + } + for (i = 0; i < results.length && i < 100; i++) { var sym = results[i]; @@ -127,14 +160,16 @@ function performSymbolSearch(maxlen) } $('#symbolSearchResults').show(); + $('#symbolSearchResultsContainer').show(); + $('.container').hide(); } $(function(){ - $("#search-box form").on("submit", function(e) { - var searchResults = $('#symbolSearchResults').children(); - if (searchResults.length > 0) { - window.location = searchResults.first().find("a").attr("href"); - e.preventDefault(); - } - }); + $("#search-box form").on("submit", function(e) { + var searchResults = $('#symbolSearchResults').children(); + if (searchResults.length > 0) { + window.location = searchResults.first().find("a").attr("href"); + e.preventDefault(); + } + }); });