Splux Linux

source-based Linux using SPS

splux-site · log · files · refs · tags · releases · people · languages · GitHub · file

site/assets/packages.js


JavaScript

1444 bytes at 4c4f12c · GitHub

// Package data is generated from core, extra, and opt-in community.
(function () {
	var form = document.getElementById("pkg-search");
	var input = document.getElementById("q");
	var table = document.getElementById("pkg-table");
	var stats = document.getElementById("pkg-stats");
	if (!form || !input || !table) return;

	var rows = table.querySelectorAll("tbody tr");
	var total = rows.length;

	function currentRepo() {
		var params = new URLSearchParams(window.location.search);
		return params.get("repo") || "all";
	}

	function apply() {
		var q = input.value.toLowerCase();
		var repo = currentRepo();
		var shown = 0;
		for (var i = 0; i < rows.length; i++) {
			var row = rows[i];
			var text = row.getAttribute("data-search") || "";
			var rowRepo = row.getAttribute("data-repo") || "";
			var ok = text.indexOf(q) !== -1 &&
				(repo === "all" || rowRepo === repo);
			row.hidden = !ok;
			if (ok) shown++;
		}
		if (stats) {
			stats.textContent = shown + " of " + total + " packages";
		}
	}

	var params = new URLSearchParams(window.location.search);
	if (params.get("q")) input.value = params.get("q");

	input.addEventListener("input", apply);
	form.addEventListener("submit", function (e) {
		e.preventDefault();
		apply();
		var next = new URL(window.location.href);
		if (input.value) next.searchParams.set("q", input.value);
		else next.searchParams.delete("q");
		history.replaceState(null, "", next);
	});
	apply();
})();