7
7
8
8
{% include "toolbar" %}
9
9
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 >
12
31
13
32
< script >
14
33
// Parse parameters from URL:
15
34
var parameters = [ ] ;
16
35
var apiSearch = undefined ;
36
+ var docs = { { docs | json } } ;
17
37
( function ( ) {
18
38
var pairs = location . search . substring ( 1 ) . split ( '&' ) ;
19
39
for ( var i = 0 ; i < pairs . length ; i ++ ) {
@@ -24,7 +44,7 @@ <h1 id="searching-for"></h1>
24
44
25
45
// Set search term and back button:
26
46
var searchTerm = parameters [ "searchTerm" ] ;
27
- document . getElementById ( "searching-for" ) . innerHTML = 'Seaching for "' + searchTerm + '"... ' ;
47
+ document . getElementById ( "searching-for" ) . innerHTML = 'Search results for "' + searchTerm + '"' ;
28
48
document . getElementById ( "back-anchor" ) . href = parameters [ "previousUrl" ] ;
29
49
30
50
if ( ! window . Worker ) {
@@ -33,15 +53,101 @@ <h1 id="searching-for"></h1>
33
53
"web workers not supported. Please update your browser." ;
34
54
}
35
55
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
+ } ;
46
152
}
47
153
</ script >
0 commit comments