diff options
author | David Thompson <dthompson2@worcester.edu> | 2014-10-15 20:36:12 -0400 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2014-10-15 20:36:12 -0400 |
commit | f2b50d931ebd61dae469a03d572187aede5e06c7 (patch) | |
tree | a6d6bd7180a86f4913f26c24b6f8785f26703f42 /js/model | |
parent | 8c5cb000f8c246a848725ecf41a0a011675f0d6b (diff) |
js: Break package components into model/view/controller files.
* js/packages.js: Delete.
* js/model/packages.js: New file.
* js/view/packages.js: New file.
* js/controller/packages.js: New file.
* js/routes.js: Use new namespace for packages.
* guix-web/view.scm (javascripts): Add new JS files.
Diffstat (limited to 'js/model')
-rw-r--r-- | js/model/packages.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/js/model/packages.js b/js/model/packages.js new file mode 100644 index 0000000..5ea76a4 --- /dev/null +++ b/js/model/packages.js @@ -0,0 +1,49 @@ +// 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/>. + +guix.packages = {}; + +(function(packages) { + packages.Packages = function() { + return m.request({ method: "GET", url: "packages.json" }); + }; + + packages.Sorter = (function() { + function Sorter(field, isDescending) { + this.field = field; + this.isDescending = _.isUndefined(isDescending) ? false : isDescending; + }; + + Sorter.prototype.sort = function(array) { + var result = _.sortBy(array, this.field); + + return this.isDescending ? result.reverse() : result; + }; + + Sorter.prototype.reverse = function() { + return new packages.Sorter(this.field, !this.isDescending); + }; + + return Sorter; + })(); + + packages.PHASE_NONE = 0; + packages.PHASE_PROMPT = 1; + packages.PHASE_DERIVATION = 2; + packages.PHASE_SUCCESS = 3; + packages.PHASE_ERROR = 4; +})(guix.packages); |