1
0
mirror of https://github.com/golang/go synced 2024-10-01 08:18:32 -06:00
go/godoc/static/search.html
Agniva De Sarker 3e7aa9e599 godoc: generate TOC from server-side for search page
Currently, we generate the TOC for a page dynamically after page load
through javascript. This is fine for pages with static content.

But for pages with dynamic output like /search, sometimes this causes a
noticeable page jump due to extensive DOM traversal. Also, the heuristics
to calculate the no. of columns is very rudimentary and fills the entire
above-the-fold area if the no. of results is very large.

Therefore, we generate the TOC from server side itself. And improve
the no. of columns heuristic further to accomodate up to 4 columns.

This improves page performance and utilizes real estate appropriately
according to the input.

Some screenshots at laptop (1366x768) resolution.
https://snag.gy/AXz2rP.jpg
https://snag.gy/th3Nn8.jpg

More can be found in the CL comments.

Fixes golang/go#21685
Updates golang/go#21686

Change-Id: Ia9b6dd1e67231d992709e4ba10ebdbedfe38b564
Reviewed-on: https://go-review.googlesource.com/c/129135
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
2018-10-19 20:12:13 +00:00

67 lines
1.5 KiB
HTML

<!--
Copyright 2009 The Go Authors. All rights reserved.
Use of this source code is governed by a BSD-style
license that can be found in the LICENSE file.
-->
{{ $colCount := tocColCount .}}
{{/* Generate the TOC */}}
<nav class="search-nav" style="column-count: {{$colCount}}" role="navigation">
{{range $key, $val := .Idents}}
{{if $val}}
<a href="#{{$key.Name}}">{{$key.Name}}</a>
<br />
{{end}}
{{end}}
{{if not .Idents}}
{{with .Pak}}
<a href="#Packages">Package {{html $.Query}}</a>
<br />
{{end}}
{{end}}
{{with .Hit}}
{{with .Decls}}
<a href="#Global">Package-level declarations</a>
<br />
{{range .}}
{{$pkg_html := pkgLink .Pak.Path | html}}
<a href="#Global_{{$pkg_html}}" class="indent">package {{html .Pak.Name}}</a>
<br />
{{end}}
{{end}}
{{with .Others}}
<a href="#Local">Local declarations and uses</a>
<br />
{{range .}}
{{$pkg_html := pkgLink .Pak.Path | html}}
<a href="#Local_{{$pkg_html}}" class="indent">package {{html .Pak.Name}}</a>
<br />
{{end}}
{{end}}
{{end}}
{{with .Textual}}
{{if $.Complete}}
<a href="#Textual">{{html $.Found}} textual occurrences</a>
{{else}}
<a href="#Textual">More than {{html $.Found}} textual occurrences</a>
{{end}}
{{end}}
</nav>
{{with .Alert}}
<p>
<span class="alert" style="font-size:120%">{{html .}}</span>
</p>
{{end}}
{{with .Alt}}
<p>
<span class="alert" style="font-size:120%">Did you mean: </span>
{{range .Alts}}
<a href="search?q={{urlquery .}}" style="font-size:120%">{{html .}}</a>
{{end}}
</p>
{{end}}