summaryrefslogtreecommitdiff
path: root/js/view/generations.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/view/generations.js')
-rw-r--r--js/view/generations.js58
1 files changed, 58 insertions, 0 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);