Test for Topic Pubs Aggregation

by Nivaldo

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min.js"></script>
<!--
[
    {
        "articles": [
            [2004,1],
            [2005,1]
        ],
        "total": 2,
        "name": "Annals of Behavioral Medicine"
    },
    {
        "articles": [
            [2006,1]
        ],
        "total": 1,
        "name": "Journal of Clinical Psychopharmacology"
    }
]
-->

JavaScript

$.post("http://mllab1.apa.org:8020/graphs/semantics-app/get-topic-pubs.xqy").done(function(data) {
    //console.log(JSON.stringify(data));
/*
var data = [
    {"journal_title":"Annals of Behavioral Medicine","year":"2004"},
    {"journal_title":"Annals of Behavioral Medicine","year":"2005"},
    {"journal_title":"Annals of Behavioral Medicine","year":"2005"},
    {"journal_title":"Journal of Clinical Psychopharmacology","year":"2005"}
] ; 
*/
    var groups = _(data).groupBy('journal_title');
    var out = _(groups).map(function(g, key) {
        var years = _(g).groupBy('year');
        var hack = [["1500",6]];
        var aggYears = _(years).map(function(yG,yKey) {
            return [yKey,yG.length];
        });
        return {
            name: key,
            total: g.length,
            articles: hack.concat(aggYears)
        };
    });
    
    out = _(out).sortBy('articles');
    
    out = _(out).sortBy('total').reverse(); // sort by 'name' for alphabetical; sort by 'total' for frequency, but must reverse array!
    //data = data.slice(0,9); // top is second param - 1, so data = data.slice(0,top -1)
    
    console.log(JSON.stringify(out));
    
});