@@ -8,17 +8,18 @@ import scala.concurrent.duration._
88class SearchbarComponent (engine : SearchbarEngine , inkuireEngine : InkuireJSSearchEngine , parser : QueryParser ):
99 val resultsChunkSize = 100
1010 extension (p : PageEntry )
11- def toHTML ( inkuire : Boolean = false ) =
11+ def toHTML =
1212 val wrapper = document.createElement(" div" ).asInstanceOf [html.Div ]
1313 wrapper.classList.add(" scaladoc-searchbar-result" )
14+ wrapper.classList.add(" scaladoc-searchbar-result-row" )
1415 wrapper.classList.add(" monospace" )
1516
1617 val icon = document.createElement(" span" ).asInstanceOf [html.Span ]
1718 icon.classList.add(" micon" )
1819 icon.classList.add(p.kind.take(2 ))
1920
2021 val resultA = document.createElement(" a" ).asInstanceOf [html.Anchor ]
21- resultA.href = if inkuire then p.location else Globals .pathToRoot + p.location
22+ resultA.href = Globals .pathToRoot + p.location
2223 resultA.text = s " ${p.fullName}"
2324
2425 val location = document.createElement(" span" )
@@ -34,8 +35,52 @@ class SearchbarComponent(engine: SearchbarEngine, inkuireEngine: InkuireJSSearch
3435 })
3536 wrapper
3637
38+ extension (m : InkuireMatch )
39+ def toHTML =
40+ val wrapper = document.createElement(" div" ).asInstanceOf [html.Div ]
41+ wrapper.classList.add(" scaladoc-searchbar-result" )
42+ wrapper.classList.add(" monospace" )
43+
44+ val resultDiv = document.createElement(" div" ).asInstanceOf [html.Div ]
45+ resultDiv.classList.add(" scaladoc-searchbar-result-row" )
46+
47+ val icon = document.createElement(" span" ).asInstanceOf [html.Span ]
48+ icon.classList.add(" micon" )
49+ icon.classList.add(m.entryType.take(2 ))
50+
51+ val resultA = document.createElement(" a" ).asInstanceOf [html.Anchor ]
52+ resultA.href = m.pageLocation
53+ resultA.text = m.functionName
54+
55+ val packageDiv = document.createElement(" div" ).asInstanceOf [html.Div ]
56+ packageDiv.classList.add(" scaladoc-searchbar-inkuire-package" )
57+
58+ val packageIcon = document.createElement(" span" ).asInstanceOf [html.Span ]
59+ packageIcon.classList.add(" micon" )
60+ packageIcon.classList.add(" pa" )
61+
62+ val packageSpan = document.createElement(" span" ).asInstanceOf [html.Span ]
63+ packageSpan.textContent = m.packageLocation
64+
65+ val signature = document.createElement(" span" )
66+ signature.classList.add(" pull-right" )
67+ signature.classList.add(" scaladoc-searchbar-inkuire-signature" )
68+ signature.textContent = m.prettifiedSignature
69+
70+ wrapper.appendChild(resultDiv)
71+ resultDiv.appendChild(icon)
72+ resultDiv.appendChild(resultA)
73+ resultA.appendChild(signature)
74+ wrapper.appendChild(packageDiv)
75+ packageDiv.appendChild(packageIcon)
76+ packageDiv.appendChild(packageSpan)
77+ wrapper.addEventListener(" mouseover" , {
78+ case e : MouseEvent => handleHover(wrapper)
79+ })
80+ wrapper
81+
3782 def handleNewFluffQuery (matchers : List [Matchers ]) =
38- val result = engine.query(matchers).map(_.toHTML(inkuire = false ) )
83+ val result = engine.query(matchers).map(_.toHTML)
3984 resultsDiv.scrollTop = 0
4085 while (resultsDiv.hasChildNodes()) resultsDiv.removeChild(resultsDiv.lastChild)
4186 val fragment = document.createDocumentFragment()
@@ -86,8 +131,8 @@ class SearchbarComponent(engine: SearchbarEngine, inkuireEngine: InkuireJSSearch
86131 animation.classList.add(" loading" )
87132 loading.appendChild(animation)
88133 properResultsDiv.appendChild(loading)
89- inkuireEngine.query(query) { (p : PageEntry ) =>
90- properResultsDiv.appendChild(p .toHTML(inkuire = true ) )
134+ inkuireEngine.query(query) { (m : InkuireMatch ) =>
135+ properResultsDiv.appendChild(m .toHTML)
91136 } { (s : String ) =>
92137 animation.classList.remove(" loading" )
93138 properResultsDiv.appendChild(s.toHTMLError)
0 commit comments