diff --git a/internal/viewer/server.go b/internal/viewer/server.go index 9eef84e8c..2f8aa076d 100644 --- a/internal/viewer/server.go +++ b/internal/viewer/server.go @@ -14,7 +14,7 @@ import ( "time" ) -//go:embed templates/*.html static/style.css static/session.js +//go:embed templates/*.html static/style.css static/session.js static/repos.js var assets embed.FS func StartServer(addr string) error { diff --git a/internal/viewer/server_extra_test.go b/internal/viewer/server_extra_test.go index 08e9f82c9..474405ec2 100644 --- a/internal/viewer/server_extra_test.go +++ b/internal/viewer/server_extra_test.go @@ -84,10 +84,7 @@ func TestRenderTemplate_WithRepos(t *testing.T) { `id="repository-search-input"`, `id="repositories-table"`, "data-repository-name", - `addEventListener("input"`, - "toLowerCase()", - "name.includes(query)", - "row.hidden", + `src="/static/repos.js"`, } { if !strings.Contains(body, required) { t.Errorf("rendered repository page missing %q", required) diff --git a/internal/viewer/static/repos.js b/internal/viewer/static/repos.js new file mode 100644 index 000000000..66be94488 --- /dev/null +++ b/internal/viewer/static/repos.js @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2026 alibaba/open-code-review Contributors + +(() => { + const input = document.getElementById("repository-search-input"); + const table = document.getElementById("repositories-table"); + if (!input || !table) return; + + const rows = table.querySelectorAll("tbody tr"); + input.addEventListener("input", () => { + const query = input.value.trim().toLowerCase(); + rows.forEach((row) => { + const nameCell = row.querySelector("[data-repository-name]"); + const name = nameCell ? nameCell.textContent.trim().toLowerCase() : ""; + row.hidden = !name.includes(query); + }); + }); +})(); diff --git a/internal/viewer/templates/repos.html b/internal/viewer/templates/repos.html index 52f1daaf5..d842aa1ab 100644 --- a/internal/viewer/templates/repos.html +++ b/internal/viewer/templates/repos.html @@ -28,23 +28,7 @@

Repositories

{{end}} - + {{else}}

No session data found. Run a code review first.

{{end}}