diff options
Diffstat (limited to 'js/view')
-rw-r--r-- | js/view/generations.js | 58 | ||||
-rw-r--r-- | js/view/layout.js | 10 |
2 files changed, 64 insertions, 4 deletions
diff --git a/js/view/generations.js b/js/view/generations.js new file mode 100644 index 0000000..912a1ab --- /dev/null +++ b/js/view/generations.js @@ -0,0 +1,58 @@ +// 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/>. + +(function(generations) { + generations.view = function(ctrl) { + return guix.withLayout([ + m("h2", [ + "Generations", + m("span.badge", ctrl.generations().length) + ]), + m("table.table.table-bordered", [ + m("thead", m("tr", [ + m("th", "#"), + m("th", "Name"), + m("th", "Version"), + m("th", "Output"), + m("th", "Location") + ])), + m("tbody", [ + ctrl.generations().map(function(generation) { + var entries = generation.manifestEntries; + + function renderRow(entry, isFirst) { + return m("tr", [ + isFirst ? m("td", { + rowspan: entries.length + }, m("strong", generation.number)) : null, + m("td", entry.name), + m("td", entry.version), + m("td", entry.output), + m("td", entry.location) + ]); + } + + return [renderRow(entries[0], true)] + .concat(entries.slice(1).map(function (entry) { + return renderRow(entry, false); + })); + }) + ]) + ]) + ]); + }; +})(guix.generations); diff --git a/js/view/layout.js b/js/view/layout.js index c733a8f..02ee639 100644 --- a/js/view/layout.js +++ b/js/view/layout.js @@ -53,11 +53,13 @@ guix.withLayout = (function() { m(".navbar-header", m("img.logo", { src: "/images/logo.png" })), m("ul.nav.navbar-nav", [ m("li.active", m("a", { - href: "#", - onclick: function() { - m.route("/"); - } + config: m.route, + href: "/" }, "Packages")), + m("li", m("a", { + config: m.route, + href: "/generations" + }, "Generations")) ]), m("ul.nav.navbar-nav.navbar-right") ])), |