summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--css/guix.css8
-rw-r--r--guix-web/view.scm9
-rw-r--r--images/logo.pngbin5208 -> 3316 bytes
-rw-r--r--js/lib/mithril.js (renamed from js/mithril.js)0
-rw-r--r--js/lib/underscore.js (renamed from js/underscore.js)0
-rw-r--r--js/packages.js (renamed from js/guix-packages.js)22
-rw-r--r--js/routes.js20
-rw-r--r--js/utils.js32
-rw-r--r--js/view/layout.js33
9 files changed, 100 insertions, 24 deletions
diff --git a/css/guix.css b/css/guix.css
index 038a9d0..0534209 100644
--- a/css/guix.css
+++ b/css/guix.css
@@ -1,9 +1,13 @@
+.logo {
+ padding: 5px;
+}
+
.sort-descend:after {
- content: '▼'
+ content: '▼';
}
.sort-ascend:after {
- content: '▲'
+ content: '▲';
}
.sorter {
diff --git a/guix-web/view.scm b/guix-web/view.scm
index fc9d9bc..e134564 100644
--- a/guix-web/view.scm
+++ b/guix-web/view.scm
@@ -46,9 +46,12 @@
"https://www.gnu.org/licenses/agpl-3.0.html"))))
(define javascripts
- (list (javascript "/js/underscore.js" expat)
- (javascript "/js/mithril.js" expat)
- (javascript "/js/guix-packages.js" agpl3+)))
+ (list (javascript "/js/lib/underscore.js" expat)
+ (javascript "/js/lib/mithril.js" expat)
+ (javascript "/js/utils.js" agpl3+)
+ (javascript "/js/view/layout.js" agpl3+)
+ (javascript "/js/packages.js" agpl3+)
+ (javascript "/js/routes.js" agpl3+)))
(define (script-tag javascript)
`(script (@ (type "text/javascript")
diff --git a/images/logo.png b/images/logo.png
index 9ca28a9..0ceec46 100644
--- a/images/logo.png
+++ b/images/logo.png
Binary files differ
diff --git a/js/mithril.js b/js/lib/mithril.js
index 128d1d4..128d1d4 100644
--- a/js/mithril.js
+++ b/js/lib/mithril.js
diff --git a/js/underscore.js b/js/lib/underscore.js
index 9a4cabe..9a4cabe 100644
--- a/js/underscore.js
+++ b/js/lib/underscore.js
diff --git a/js/guix-packages.js b/js/packages.js
index 437dca1..3ec473a 100644
--- a/js/guix-packages.js
+++ b/js/packages.js
@@ -15,21 +15,7 @@
// License along with this program. If not, see
// <http://www.gnu.org/licenses/>.
-var guix = {};
-
-guix.chunk = function(array, size) {
- return array.reduce(function(memo, value, i) {
- var currentSlice = _(memo).last();
-
- if(i / size < memo.length) {
- currentSlice.push(value);
- } else {
- memo.push([value]);
- }
-
- return memo;
- }, []);
-};
+var guix = guix || {};
guix.Packages = function() {
return m.request({ method: "GET", url: "packages.json" });
@@ -388,7 +374,7 @@ guix.view = function(ctrl) {
return null;
}
- return [
+ return guix.withLayout([
m("h2", [
"Packages",
m("span.badge", ctrl.packageCount())
@@ -397,7 +383,5 @@ guix.view = function(ctrl) {
renderSearchBox(),
renderPackageTable(),
renderPagination()
- ];
+ ]);
};
-
-m.module(document.getElementById("guix"), guix);
diff --git a/js/routes.js b/js/routes.js
new file mode 100644
index 0000000..baa03f8
--- /dev/null
+++ b/js/routes.js
@@ -0,0 +1,20 @@
+// 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/>.
+
+m.route(document.body, "/", {
+ "/": guix
+});
diff --git a/js/utils.js b/js/utils.js
new file mode 100644
index 0000000..6ca5663
--- /dev/null
+++ b/js/utils.js
@@ -0,0 +1,32 @@
+// 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 || {};
+
+guix.chunk = function(array, size) {
+ return array.reduce(function(memo, value, i) {
+ var currentSlice = _(memo).last();
+
+ if(i / size < memo.length) {
+ currentSlice.push(value);
+ } else {
+ memo.push([value]);
+ }
+
+ return memo;
+ }, []);
+};
diff --git a/js/view/layout.js b/js/view/layout.js
new file mode 100644
index 0000000..310c6c9
--- /dev/null
+++ b/js/view/layout.js
@@ -0,0 +1,33 @@
+// 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 || {};
+
+guix.withLayout = function(elem) {
+ return [
+ m("nav.navbar.navbar-default.navbar-static-top", {
+ role: "navigation"
+ }, m(".container", [
+ m(".navbar-header", m("img.logo", { src: "/images/logo.png" })),
+ m("ul.nav.navbar-nav", [
+ m("li.active", m("a", "Packages")),
+ ]),
+ m("ul.nav.navbar-nav.navbar-right")
+ ])),
+ m(".container", elem)
+ ];
+};