77
88{% include "toolbar" %}
99
10- < a id ="back-anchor " href =""> < Back</ a >
11- < h1 id ="searching-for "> </ h1 >
10+ < div id ="back-container ">
11+ < span >
12+ < a id ="back-anchor " href =""> Back</ a >
13+ </ span >
14+ </ div >
15+
16+ < div id ="search-container ">
17+ < h1 id ="searching-for "> </ h1 >
18+ < div id ="result-container ">
19+ < div class ="results ">
20+ < h1 > Entity Results</ h1 >
21+ < ul id ="entity-results ">
22+ </ ul >
23+ </ div >
24+ < div class ="results ">
25+ < h1 > Member Results</ h1 >
26+ < ul id ="member-results ">
27+ </ ul >
28+ </ div >
29+ </ div >
30+ </ div >
1231
1332< script >
1433 // Parse parameters from URL:
1534 var parameters = [ ] ;
1635 var apiSearch = undefined ;
36+ var docs = { { docs | json } } ;
1737 ( function ( ) {
1838 var pairs = location . search . substring ( 1 ) . split ( '&' ) ;
1939 for ( var i = 0 ; i < pairs . length ; i ++ ) {
@@ -24,7 +44,7 @@ <h1 id="searching-for"></h1>
2444
2545 // Set search term and back button:
2646 var searchTerm = parameters [ "searchTerm" ] ;
27- document . getElementById ( "searching-for" ) . innerHTML = 'Seaching for "' + searchTerm + '"... ' ;
47+ document . getElementById ( "searching-for" ) . innerHTML = 'Search results for "' + searchTerm + '"' ;
2848 document . getElementById ( "back-anchor" ) . href = parameters [ "previousUrl" ] ;
2949
3050 if ( ! window . Worker ) {
@@ -33,15 +53,101 @@ <h1 id="searching-for"></h1>
3353 "web workers not supported. Please update your browser." ;
3454 }
3555 else {
36- apiSearch = new Worker ( "{{ site.baseurl }}/js/api-search.js" ) ;
37- apiSearch . postMessage ( {
38- "type" : "setup" ,
39- "search" : searchTerm ,
40- "docs" : { { docs | json } } ,
41- } ) ;
42-
43- apiSearch . onmessage = function ( res ) {
44- console . log ( "got res: " + res . data ) ;
45- } ;
56+ // perform API search:
57+ apiSearch = new Worker ( "{{ site.baseurl }}/js/api-search.js" ) ;
58+ apiSearch . postMessage ( {
59+ "type" : "setup" ,
60+ "search" : searchTerm ,
61+ "docs" : docs ,
62+ } ) ;
63+
64+ var entityResultsNode = document . getElementById ( "entity-results" ) ;
65+ var entityResults = [ ] ;
66+
67+ var insertEntity = function ( entity , parent ) {
68+ var shouldInsert =
69+ parent . kind == "package" &&
70+ ! ( entity . kind == "object" && entity . hasCompanion )
71+
72+ if ( shouldInsert ) {
73+ // If parent package not in list, create it first:
74+ if ( ! ( parent . name in entityResults ) ) {
75+ var packageLi = document . createElement ( "li" ) ;
76+ entityResultsNode . appendChild ( packageLi ) ;
77+
78+ packageLi . innerHTML =
79+ "<h1 class=\"package-name\">" +
80+ "<a href=\"{{ site.baseurl }}/api/" + parent . path . join ( '/' ) + "/index.html\">" +
81+ parent . name +
82+ "</a>" +
83+ "</h1>" ;
84+
85+ var entityUl = document . createElement ( "ul" ) ;
86+ entityUl . classList . add ( "entity-ul" ) ;
87+ packageLi . appendChild ( entityUl ) ;
88+ entityResults [ parent . name ] = entityUl ;
89+ var coverBlock = document . createElement ( "div" ) ;
90+ coverBlock . classList . add ( "cover-block" ) ;
91+ entityUl . appendChild ( coverBlock ) ;
92+ }
93+
94+ // Insert into list of results in package, no need to sort -
95+ // already sorted:
96+ var entityUl = entityResults [ parent . name ] ;
97+ var entityLi = document . createElement ( "li" ) ;
98+ if ( entity . hasCompanion )
99+ entityLi . classList . add ( "entity-result-li" , "with-companion" ) ;
100+ else
101+ entityLi . classList . add ( "entity-result-li" ) ;
102+
103+ var companion = ! entity . hasCompanion ? "" : (
104+ '<a class="letter-anchor object" href="{{ site.baseurl }}/api/' + entity . companionPath . join ( '/' ) + '.html">O</a>'
105+ ) ;
106+
107+ var letter =
108+ '<a class="letter-anchor ' + entity . kind + '" href="{{ site.baseurl }}/api/' + entity . path . join ( '/' ) + '.html">' +
109+ entity . kind . charAt ( 0 ) . toUpperCase ( ) +
110+ '</a>'
111+
112+ entityLi . innerHTML = (
113+ '<div class="entity-kinds">' +
114+ companion +
115+ letter +
116+ '</div>' +
117+ "<a class=\"entity-name\" href=\"{{ site.baseurl }}/api/" + entity . path . join ( '/' ) + ".html\">" +
118+ entity . name +
119+ "</a>"
120+ ) ;
121+ entityUl . appendChild ( entityLi ) ;
122+ }
123+ } ;
124+
125+ var memberResultsNode = document . getElementById ( "member-results" ) ;
126+ var memberResults = [ ] ;
127+ var insertMember = function ( member , parent ) {
128+
129+ } ;
130+
131+ apiSearch . onmessage = function ( res ) {
132+ switch ( res . data . type ) {
133+ case "entityResult" : {
134+ var entity = res . data . entity ;
135+ var parent = res . data . parent ;
136+ console . log ( "got entity: " + entity . name + ", in package: " + parent . name ) ;
137+ insertEntity ( entity , parent ) ;
138+ break ;
139+ }
140+ case "memberResult" : {
141+ var member = res . data . member ;
142+ var parent = res . data . parent ;
143+ console . log ( "got member: " + member . name + ", in entity: " + parent . name ) ;
144+ insertMember ( member , parent ) ;
145+ break ;
146+ }
147+ default : {
148+ console . log ( "Got unknown message: " + res . data . type ) ;
149+ }
150+ }
151+ } ;
46152 }
47153</ script >
0 commit comments