@@ -33,7 +33,7 @@ <h1>Member Results</h1>
3333 // Parse parameters from URL:
3434 var parameters = [ ] ;
3535 var apiSearch = undefined ;
36- var docs = { { docs | json } } ;
36+ var docs = { { searchableDocs | json } } ;
3737 ( function ( ) {
3838 var pairs = location . search . substring ( 1 ) . split ( '&' ) ;
3939 for ( var i = 0 ; i < pairs . length ; i ++ ) {
@@ -61,7 +61,7 @@ <h1>Member Results</h1>
6161 "docs" : docs ,
6262 } ) ;
6363
64- var insertEntity = function ( entityResultsNode , entityResults ) {
64+ var insertEntity = function ( entityResultsNode , entityResults , suffix ) {
6565 return function ( entity , parent ) {
6666 var shouldInsert =
6767 parent . kind == "package" &&
@@ -92,41 +92,71 @@ <h1>Member Results</h1>
9292 // Insert into list of results in package, no need to sort -
9393 // already sorted:
9494 var entityUl = entityResults [ parent . name ] ;
95- var entityLi = document . createElement ( "li" ) ;
96- if ( entity . hasCompanion )
97- entityLi . classList . add ( "entity-result-li" , "with-companion" ) ;
98- else
99- entityLi . classList . add ( "entity-result-li" ) ;
100-
101- var companion = ! entity . hasCompanion ? "" : (
102- '<a class="letter-anchor object" href="{{ site.baseurl }}/api/' + entity . companionPath . join ( '/' ) + '.html">O</a>'
103- ) ;
104-
105- var letter =
106- '<a class="letter-anchor ' + entity . kind + '" href="{{ site.baseurl }}/api/' + entity . path . join ( '/' ) + '.html">' +
107- entity . kind . charAt ( 0 ) . toUpperCase ( ) +
108- '</a>'
109-
110- entityLi . innerHTML = (
111- '<div class="entity-kinds">' +
112- companion +
113- letter +
114- '</div>' +
115- "<a class=\"entity-name\" href=\"{{ site.baseurl }}/api/" + entity . path . join ( '/' ) + ".html\">" +
116- entity . name +
117- "</a>"
118- ) ;
119- entityUl . appendChild ( entityLi ) ;
95+ var selector = entity . path . slice ( 0 , entity . path . length - 1 ) . join ( '-' ) + '-' + entity . name + '-' + suffix ;
96+ var entityLi = document . querySelector ( '#' + selector ) ;
97+ if ( ! entityLi ) {
98+ entityLi = document . createElement ( "li" ) ;
99+ if ( entity . hasCompanion )
100+ entityLi . classList . add ( "entity-result-li" , "with-companion" ) ;
101+ else
102+ entityLi . classList . add ( "entity-result-li" ) ;
103+
104+ entityLi . id = selector ;
105+
106+ var companion = ! entity . hasCompanion ? "" : (
107+ '<a class="letter-anchor object" href="{{ site.baseurl }}/api/' + entity . companionPath . join ( '/' ) + '.html">O</a>'
108+ ) ;
109+
110+ var letter =
111+ '<a class="letter-anchor ' + entity . kind + '" href="{{ site.baseurl }}/api/' + entity . path . join ( '/' ) + '.html">' +
112+ entity . kind . charAt ( 0 ) . toUpperCase ( ) +
113+ '</a>'
114+
115+ entityLi . innerHTML = (
116+ '<div class="entity-kinds">' +
117+ companion +
118+ letter +
119+ '</div>' +
120+ "<a class=\"entity-name\" href=\"{{ site.baseurl }}/api/" + entity . path . join ( '/' ) + ".html\">" +
121+ entity . name +
122+ "</a>"
123+ ) ;
124+ entityUl . appendChild ( entityLi ) ;
125+ }
120126 return entityLi ;
121127 }
122128 else {
123- return undefined ;
129+ var path = entity . path . slice ( 0 , entity . path . length - 1 )
130+ return document . querySelector ( '#' + path + '-' + entity . name + '-' + suffix ) ;
124131 }
125132 } ;
126133 } ;
127134
128135 var insertMember = function ( member , li ) {
129- li . appendChild ( document . createTextNode ( ", " + member . name ) ) ;
136+ var div = document . createElement ( "div" ) ;
137+ div . classList . add ( "member-result" ) ;
138+
139+ var renderParamList = function ( plist ) {
140+ var start = plist . isImplicit ? "(implicit " : "(" ;
141+ var args = plist . list . join ( ', ' ) ;
142+ return start + args + ")" ;
143+ } ;
144+
145+ var concatenateStrings = function ( acc , str ) { return acc + str ; } ;
146+
147+ var paramLists = ! member . paramLists ? "" : (
148+ member . paramLists
149+ . map ( renderParamList )
150+ . reduce ( concatenateStrings , "" )
151+ ) ;
152+
153+ div . innerHTML =
154+ '<div class="member-kind">' + member . kind + '</div>' +
155+ '<div class="member-name">' + member . name + '</div>' +
156+ '<div class="member-param-lists">' + paramLists + ':</div>' +
157+ '<div class="member-return">' + member . returnValue + '</div>'
158+
159+ li . appendChild ( div ) ;
130160 } ;
131161
132162 var entityResultsNode = document . getElementById ( "entity-results" ) ;
@@ -135,20 +165,19 @@ <h1>Member Results</h1>
135165 var memberResults = [ ] ;
136166
137167 apiSearch . onmessage = function ( res ) {
168+ var package = res . data . package ;
138169 switch ( res . data . type ) {
139170 case "entityResult" : {
140171 var entity = res . data . entity ;
141- var package = res . data . package ;
142172 //console.log("got entity: " + entity.name + ", in package: " + package.name);
143- insertEntity ( entityResultsNode , entityResults ) ( entity , package ) ;
173+ insertEntity ( entityResultsNode , entityResults , "entity" ) ( entity , package ) ;
144174 break ;
145175 }
146176 case "memberResult" : {
147177 var member = res . data . member ;
148178 var parent = res . data . parent ;
149- var package = res . data . package ;
150179 //console.log("got member: " + member.name + ", in entity: " + parent.name);
151- var li = insertEntity ( memberResultsNode , memberResults ) ( parent , package ) ;
180+ var li = insertEntity ( memberResultsNode , memberResults , "member" ) ( parent , package ) ;
152181 if ( li ) insertMember ( member , li ) ;
153182 break ;
154183 }
0 commit comments