update list of CouchDB views in doc
[mygpo.git] / couchdb / _design / trending / views / podcasts / map.js
blobbc4b5c3f0741d0f00a1fd528c7a31959eaafc74d
1 function(doc)
3     function getLanguage(podcast)
4     {
5         if (podcast.language)
6         {
7             return podcast.language.slice(0, 2);
8         }
10         return null;
11     };
13     function doEmit(language, prev, cur)
14     {
15         if(prev == 0)
16         {
17             return;
18         }
20         if(cur <= 10)
21         {
22             return;
23         }
25         var change = cur / prev;
27         /* we only emit improvements */
28         if(change <= 1)
29         {
30             return;
31         }
33         emit(["", change], null);
35         if(language)
36         {
37             emit([language, change], null);
38         }
39     }
42     if(doc.doc_type == "Podcast")
43     {
44         var len = doc.subscribers.length;
45         if(len < 1)
46         {
47             return;
48         }
50         if (len < 2)
51         {
52             var prev = 1;
53         }
54         else
55         {
56             var prev = doc.subscribers[len-2].subscriber_count;
57         }
59         var cur = doc.subscribers[len-1].subscriber_count;
61         var language = getLanguage(doc);
63         doEmit(language, prev, cur);
64     }
65     else if(doc.doc_type == "PodcastGroup")
66     {
67         var prev = 0;
68         var cur = 0;
69         var language = null;
71         for(var n in doc.podcasts)
72         {
73             var podcast = doc.podcasts[n];
74             var len = podcast.subscribers.length;
76             if (len >= 1)
77             {
78                 cur += podcast.subscribers[len-1].subscriber_count;
79             }
81             if (len >= 2)
82             {
83                 prev += podcast.subscribers[len-2].subscriber_count;
84             }
86             if(!language)
87             {
88                 language = getLanguage(podcast);
89             }
90         }
92         doEmit(language, prev, cur);
94     }