diff options
Diffstat (limited to 'js/guix-web.js')
-rw-r--r-- | js/guix-web.js | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/js/guix-web.js b/js/guix-web.js deleted file mode 100644 index 8cdbd53..0000000 --- a/js/guix-web.js +++ /dev/null @@ -1,109 +0,0 @@ -// guix-web - Web interface for GNU Guix -// Copyright © 2014 David Thompson <davet@gnu.org> -// -// This program is free software: you can redistribute it and/or -// modify it under the terms of the GNU Affero General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public -// License along with this program. If not, see -// <http://www.gnu.org/licenses/>. - -var guix = {}; - -guix.Packages = function() { - return m.request({ method: "GET", url: "packages.json" }); -}; - -guix.controller = function() { - this.packages = guix.Packages(); - this.visiblePackages = m.prop([]); - this.searchTerm = m.prop(""); - - // All packages are visible initially - this.packages.then(this.visiblePackages); - - this.doSearch = function() { - var regexp = new RegExp(this.searchTerm()); - - this.visiblePackages(this.packages().filter(function(package) { - return regexp.test(package.name) || - regexp.test(package.synopsis); - })); - }; -}; - -guix.view = function(ctrl) { - function renderHomepage(package) { - if(package.homepage) { - return m("a", { href: package.homepage }, package.homepage); - } else { - return ""; - } - } - - function renderLicense(package) { - function licenseLink(license) { - return m("a", { href: license.uri }, license.name); - } - - if(_.isArray(package.license)) { - return m("ul.list-inline", package.license.map(function(license) { - return m("li", licenseLink(license)); - })); - } else if(package.license) { - return licenseLink(package.license); - } else { - return ""; - } - } - - return [ - m("h1", "GNU Guix"), - m("h2", [ - "Packages", - m("span.badge", ctrl.packages().length) - ]), - m("input.form-control", { - type: "text", - placeholder: "Search", - onchange: m.withAttr("value", function(value) { - ctrl.searchTerm(value); - ctrl.doSearch(); - }), - value: ctrl.searchTerm() - }), - m("table.table", [ - m("thead", [ - m("tr", [ - ["Name", - "Version", - "Synopsis", - "Home Page", - "License"].map(function(header) { - return m("th", header); - }) - ]) - ]), - m("tbody", [ - ctrl.visiblePackages().map(function(package) { - return m("tr", [ - m("td", package.name), - m("td", package.version), - m("td", package.synopsis), - m("td", renderHomepage(package)), - m("td", renderLicense(package)) - ]); - }) - ]) - ]) - ]; -}; - -m.module(document.getElementById("guix"), guix); |