UNPKG

1.91 kBJavaScriptView Raw
1var _ = require('underscore'),
2 common = require('./common.js');
3
4function sort_proposals(o1, o2) {
5 o1_date = o1.started.getTime();
6 o2_date = o2.started.getTime();
7 if (o1_date != o2_date) {
8 return o1_date > o2_date ? -1 : o1_date < o2_date ? 1 : 0;
9 } else {
10 return o1.amount > o2.amount ? -1 : o1.amount < o2.amount ? 1 : 0;
11 }
12};
13
14function sort_papers(o1, o2) {
15 o1_date = o1.date.getTime();
16 o2_date = o2.date.getTime();
17 if (o1_date != o2_date) {
18 return o1_date > o2_date ? -1 : o1_date < o2_date ? 1 : 0;
19 } else if (o1.poster != o2.poster) {
20 return o1.poster ? 1 : o2.poster ? -1 : 0;
21 } else {
22 return o1.name.toLowerCase() > o2.name.toLowerCase() ? 1 :
23 o1.name.toLowerCase() < o2.name.toLowerCase() ? -1 : 0;
24 }
25};
26
27
28function sort(config) {
29 return function(files, metalsmith, done) {
30 var metadata = metalsmith.metadata();
31
32 metadata.people = _.sortBy(metadata.people, function (o) {
33 return o.name.toLowerCase();
34 });
35
36 metadata.papers = metadata.papers.sort(sort_papers);
37
38 metadata.projects = metadata.projects.sort(function(p1, p2) {
39 if (p1.started != p2.started) {
40 return p1.started > p2.started ? -1 : p1.started < p2.started ? 1 : 0;
41 } else {
42 return p1.name.toLowerCase() > p2.name.toLowerCase();
43 }
44 });
45
46 metadata.proposals = metadata.proposals.sort(sort_proposals);
47 metadata.courses = metadata.courses.sort(function (c1, c2) {
48 return c1.started > c2.started ? -1 : c1.started < c2.started ? 1 : 0;
49 });
50
51 metadata.visible_posts = _.filter(metadata.posts, function (p) {
52 return !(p.working);
53 });
54 metadata.visible_posts = metadata.visible_posts.sort(function (c1, c2) {
55 return c1.created > c2.created ? -1 : c1.created < c2.created ? 1 : 0;
56 });
57
58 done();
59 }
60};
61
62exports = module.exports = sort;
63exports.sort_papers = sort_papers;