summaryrefslogtreecommitdiff
path: root/js/guix-web.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/guix-web.js')
-rw-r--r--js/guix-web.js109
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);