diff options
-rw-r--r-- | css/guix.css | 8 | ||||
-rw-r--r-- | guix-web/view.scm | 9 | ||||
-rw-r--r-- | images/logo.png | bin | 5208 -> 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.js | 20 | ||||
-rw-r--r-- | js/utils.js | 32 | ||||
-rw-r--r-- | js/view/layout.js | 33 |
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 Binary files differindex 9ca28a9..0ceec46 100644 --- a/images/logo.png +++ b/images/logo.png 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) + ]; +}; |