Skip to content

Commit e90ccf6

Browse files
committed
Implement extremely simplistic member search
1 parent 765f272 commit e90ccf6

File tree

2 files changed

+78
-68
lines changed

2 files changed

+78
-68
lines changed

doc-tool/resources/_layouts/search.html

Lines changed: 73 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -61,87 +61,95 @@ <h1>Member Results</h1>
6161
"docs": docs,
6262
});
6363

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);
64+
var insertEntity = function(entityResultsNode, entityResults) {
65+
return function(entity, parent) {
66+
var shouldInsert =
67+
parent.kind == "package" &&
68+
!(entity.kind == "object" && entity.hasCompanion)
69+
70+
if (shouldInsert) {
71+
// If parent package not in list, create it first:
72+
if (!(parent.name in entityResults)) {
73+
var packageLi = document.createElement("li");
74+
entityResultsNode.appendChild(packageLi);
75+
76+
packageLi.innerHTML =
77+
"<h1 class=\"package-name\">" +
78+
"<a href=\"{{ site.baseurl }}/api/" + parent.path.join('/') + "/index.html\">" +
79+
parent.name +
80+
"</a>" +
81+
"</h1>";
82+
83+
var entityUl = document.createElement("ul");
84+
entityUl.classList.add("entity-ul");
85+
packageLi.appendChild(entityUl);
86+
entityResults[parent.name] = entityUl;
87+
var coverBlock = document.createElement("div");
88+
coverBlock.classList.add("cover-block");
89+
entityUl.appendChild(coverBlock);
90+
}
91+
92+
// Insert into list of results in package, no need to sort -
93+
// already sorted:
94+
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);
120+
return entityLi;
92121
}
122+
else {
123+
return undefined;
124+
}
125+
};
126+
};
93127

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-
}
128+
var insertMember = function(member, li) {
129+
li.appendChild(document.createTextNode(", " + member.name));
123130
};
124131

132+
var entityResultsNode = document.getElementById("entity-results");
133+
var entityResults = [];
125134
var memberResultsNode = document.getElementById("member-results");
126135
var memberResults = [];
127-
var insertMember = function(member, parent) {
128-
129-
};
130136

131137
apiSearch.onmessage = function(res) {
132138
switch(res.data.type) {
133139
case "entityResult": {
134140
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);
141+
var package = res.data.package;
142+
//console.log("got entity: " + entity.name + ", in package: " + package.name);
143+
insertEntity(entityResultsNode, entityResults)(entity, package);
138144
break;
139145
}
140146
case "memberResult": {
141147
var member = res.data.member;
142148
var parent = res.data.parent;
143-
console.log("got member: " + member.name + ", in entity: " + parent.name);
144-
insertMember(member, parent);
149+
var package = res.data.package;
150+
//console.log("got member: " + member.name + ", in entity: " + parent.name);
151+
var li = insertEntity(memberResultsNode, memberResults)(parent, package);
152+
if (li) insertMember(member, li);
145153
break;
146154
}
147155
default: {

doc-tool/resources/js/api-search.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@
1616
* ```json
1717
* {
1818
* "type": "entityResult",
19-
* "parent": <parent entity>,
19+
* "package": <parent package>,
2020
* "entity": <entity>
2121
* }
2222
*
2323
* {
2424
* "type": "memberResult",
25+
* "package": <parent package>,
2526
* "parent": <parent entity>,
26-
* "member": <entity >
27+
* "member": <entity>
2728
* }
2829
* ```
2930
*/
@@ -57,14 +58,15 @@ onmessage = function(e) {
5758
if (searchRegex.test(fullName)) {
5859
postMessage({
5960
"type": "entityResult",
60-
"parent": parent,
61+
"package": parent,
6162
"entity": entity
6263
});
6364
} else {
6465
var searchChild = function(member) {
6566
if (searchRegex.test(member.name)) {
6667
postMessage({
6768
"type": "memberResult",
69+
"package": parent,
6870
"parent": entity,
6971
"member": member,
7072
});

0 commit comments

Comments
 (0)