integ/iri/js/iri-buzz.js
author veltr
Tue, 30 Apr 2013 15:36:42 +0200
changeset 57 b66bb808fb12
parent 56 87d023a49665
child 59 4d6f57d4571c
permissions -rw-r--r--
Compatibility for TV Series
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
     1
var SECONDS = 1000,
faf1e584551c new api now
veltr
parents: 53
diff changeset
     2
    MINUTES = 60 * SECONDS,
faf1e584551c new api now
veltr
parents: 53
diff changeset
     3
    HOURS = 60 * MINUTES;
30
a96fd5fdc4b9 update buzz
Anthony Ly <anthonyly.com@gmail.com>
parents: 29
diff changeset
     4
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
     5
var config = {
faf1e584551c new api now
veltr
parents: 53
diff changeset
     6
    partnerCode: 'B00015838755',
faf1e584551c new api now
veltr
parents: 53
diff changeset
     7
    originalDuration: 24 * HOURS,
faf1e584551c new api now
veltr
parents: 53
diff changeset
     8
    vizDuration: 10 * MINUTES,
53
88666afffe6b Cinebuzz with strata
veltr
parents: 49
diff changeset
     9
    colorIds: {
88666afffe6b Cinebuzz with strata
veltr
parents: 49
diff changeset
    10
        "-2.0": 2,
88666afffe6b Cinebuzz with strata
veltr
parents: 49
diff changeset
    11
        "0.5": 0, "1.0": 0, "1.5": 0, "2.0": 0,
88666afffe6b Cinebuzz with strata
veltr
parents: 49
diff changeset
    12
        "2.5": 1, "3.0": 1, "3.5": 1,
88666afffe6b Cinebuzz with strata
veltr
parents: 49
diff changeset
    13
        "4.0": 2, "4.5": 2, "5.0": 2
88666afffe6b Cinebuzz with strata
veltr
parents: 49
diff changeset
    14
    },
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    15
    movieCount: 15,
57
b66bb808fb12 Compatibility for TV Series
veltr
parents: 56
diff changeset
    16
    opinionsPerPage: 20,
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    17
    colors: [ "#f62a43", "#f3c000", "#2d9252"],
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    18
    refreshRate: 200,
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    19
    columnSpacing: 40,
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    20
    columnWidth: 150,
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    21
    tokenHeight: 16
28
84719280c84d import VS lib
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    22
}
84719280c84d import VS lib
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    23
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
    24
$(function() {
faf1e584551c new api now
veltr
parents: 53
diff changeset
    25
    
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    26
    var originalStart = Date.now() - config.originalDuration,
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
    27
        timeScale = config.vizDuration / config.originalDuration,
faf1e584551c new api now
veltr
parents: 53
diff changeset
    28
        movies,
faf1e584551c new api now
veltr
parents: 53
diff changeset
    29
        moviesToLoad,
faf1e584551c new api now
veltr
parents: 53
diff changeset
    30
        opinions = [],
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    31
        loadTime = Date.now(),
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    32
        clockInterval,
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    33
        tzDelta = 0,
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    34
        tzSuffix = 'Z';
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    35
            
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    36
    function addPatterns() {
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    37
        if (!$("pattern").length) {
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    38
            var xml = '<svg style="position: absolute;" width="1" height="1"><defs>'
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    39
            + config.colors.map(function(color, i) {
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    40
                return '<pattern id="pattern_'
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    41
                    + i
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    42
                    + '" x="0" y="0" width="3" height="3" patternUnits="userSpaceOnUse"><rect x="0" y="0" width="3" height="3" fill="'
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    43
                    + color
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    44
                    + '" /><path d="M0 0L3 3" stroke="#333333" stroke-width=".3" opacity=".8" /></pattern>';
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    45
            }).join("")
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    46
            + '</defs></svg>';
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    47
            $("body").append(xml);
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    48
        }
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    49
    }
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
    50
        
faf1e584551c new api now
veltr
parents: 53
diff changeset
    51
    function resizeTimer() {
faf1e584551c new api now
veltr
parents: 53
diff changeset
    52
        var w = Math.max(80, $(window).width() - 170),
faf1e584551c new api now
veltr
parents: 53
diff changeset
    53
            n = Math.min(12, Math.floor(w / 80));
faf1e584551c new api now
veltr
parents: 53
diff changeset
    54
    	$('.timer-bar').width(w);
faf1e584551c new api now
veltr
parents: 53
diff changeset
    55
    	var html = '';
faf1e584551c new api now
veltr
parents: 53
diff changeset
    56
    	for (var k = 0; k < n + 1; k++) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
    57
    	    html += '<li style="left:'
faf1e584551c new api now
veltr
parents: 53
diff changeset
    58
    	       + Math.floor(k * w / n)
faf1e584551c new api now
veltr
parents: 53
diff changeset
    59
    	       + 'px;">'
55
c2e76eb7be88 Chrome Bugfix
veltr
parents: 54
diff changeset
    60
    	       + new Date(originalStart + k * config.originalDuration / n).toTimeString().substr(0,5)
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
    61
    	       + '</li>';
faf1e584551c new api now
veltr
parents: 53
diff changeset
    62
    	}
faf1e584551c new api now
veltr
parents: 53
diff changeset
    63
        $('.hours').html(html);
faf1e584551c new api now
veltr
parents: 53
diff changeset
    64
    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
    65
    
faf1e584551c new api now
veltr
parents: 53
diff changeset
    66
    resizeTimer();
faf1e584551c new api now
veltr
parents: 53
diff changeset
    67
    $(window).resize(resizeTimer);
faf1e584551c new api now
veltr
parents: 53
diff changeset
    68
    
faf1e584551c new api now
veltr
parents: 53
diff changeset
    69
    var vsHeight = $(window).height() - $('footer').height() - $('header').height() - 300,
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    70
        vsWidth = config.movieCount * (config.columnWidth + config.columnSpacing);
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
    71
        
faf1e584551c new api now
veltr
parents: 53
diff changeset
    72
    $("#data-viz").css('height', vsHeight);
faf1e584551c new api now
veltr
parents: 53
diff changeset
    73
    $('.posters').css('width', vsWidth);
faf1e584551c new api now
veltr
parents: 53
diff changeset
    74
    
faf1e584551c new api now
veltr
parents: 53
diff changeset
    75
    function startViz() {
faf1e584551c new api now
veltr
parents: 53
diff changeset
    76
        
faf1e584551c new api now
veltr
parents: 53
diff changeset
    77
        var barChart = undefined;
faf1e584551c new api now
veltr
parents: 53
diff changeset
    78
        
faf1e584551c new api now
veltr
parents: 53
diff changeset
    79
        opinions.sort(function(a,b) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
    80
            return a._timestamp > b._timestamp;
faf1e584551c new api now
veltr
parents: 53
diff changeset
    81
        });
faf1e584551c new api now
veltr
parents: 53
diff changeset
    82
        $("#data-viz").html("").css("text-align","left");
faf1e584551c new api now
veltr
parents: 53
diff changeset
    83
        var barChartSettings = {
faf1e584551c new api now
veltr
parents: 53
diff changeset
    84
            width : vsWidth,
faf1e584551c new api now
veltr
parents: 53
diff changeset
    85
            height : vsHeight,
faf1e584551c new api now
veltr
parents: 53
diff changeset
    86
            chart : {
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    87
                spacer : config.columnSpacing / 2,
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
    88
                y: 100,
faf1e584551c new api now
veltr
parents: 53
diff changeset
    89
                height: vsHeight - 100
faf1e584551c new api now
veltr
parents: 53
diff changeset
    90
            },
faf1e584551c new api now
veltr
parents: 53
diff changeset
    91
            data : {
faf1e584551c new api now
veltr
parents: 53
diff changeset
    92
                model : movies.map(function(movie) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
    93
                    return {
faf1e584551c new api now
veltr
parents: 53
diff changeset
    94
                        label: movie.title
faf1e584551c new api now
veltr
parents: 53
diff changeset
    95
                    };
faf1e584551c new api now
veltr
parents: 53
diff changeset
    96
                }),
faf1e584551c new api now
veltr
parents: 53
diff changeset
    97
                strata : function() {
faf1e584551c new api now
veltr
parents: 53
diff changeset
    98
                    
faf1e584551c new api now
veltr
parents: 53
diff changeset
    99
                    if (typeof barChart === "undefined") {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   100
                        var flocculated = [];
faf1e584551c new api now
veltr
parents: 53
diff changeset
   101
                        _(function() {
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   102
                            addPatterns();
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   103
                            _.range(3).map(function(colorId) {
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   104
                                $(".layer_"+colorId).css({
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   105
                                    fill: "url(#pattern_" +colorId + ")",
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   106
                                    stroke: "#ffffff",
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   107
                                    "stroke-opacity": .2
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   108
                                });
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   109
                            });
faf1e584551c new api now
veltr
parents: 53
diff changeset
   110
                        }).defer();
faf1e584551c new api now
veltr
parents: 53
diff changeset
   111
                    } else {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   112
                        var flocculated = barChart.selectAll("state",2);
faf1e584551c new api now
veltr
parents: 53
diff changeset
   113
                    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   114
                    
faf1e584551c new api now
veltr
parents: 53
diff changeset
   115
                    var res = movies.map(function(movie) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   116
                        var movieTokens = flocculated.filter(function(t) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   117
                            return t.attr("movie") === movie.id;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   118
                        });
faf1e584551c new api now
veltr
parents: 53
diff changeset
   119
                        return _.range(3).map(function(colorId) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   120
                            var stratumTokens = movieTokens.filter(function(t) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   121
                                return t.attr("colorId") === colorId;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   122
                            }).length;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   123
                            return {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   124
                                value: function() {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   125
                                    return stratumTokens
faf1e584551c new api now
veltr
parents: 53
diff changeset
   126
                                }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   127
                            };
faf1e584551c new api now
veltr
parents: 53
diff changeset
   128
                        });
faf1e584551c new api now
veltr
parents: 53
diff changeset
   129
                    });
faf1e584551c new api now
veltr
parents: 53
diff changeset
   130
                    
faf1e584551c new api now
veltr
parents: 53
diff changeset
   131
                    return res;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   132
                },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   133
                stream : {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   134
                    provider : "tokens",
faf1e584551c new api now
veltr
parents: 53
diff changeset
   135
                    refresh: config.refreshRate,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   136
                    now : 0
faf1e584551c new api now
veltr
parents: 53
diff changeset
   137
                },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   138
                tokens: opinions.map(function(opinion) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   139
                    return {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   140
                        category: opinion._column,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   141
                        datetime: opinion.datetime,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   142
                        movie: opinion._movie,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   143
                        colorId: opinion._colorId,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   144
                        fillStyle: opinion._color,
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   145
                        size: 30,
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   146
                        texture: {
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   147
                            src: "iri/img/star-icon.png"
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   148
                        },
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   149
                        strokeStyle: "rgba(255,255,255,.2)",
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   150
                        t: Math.floor((opinion._timestamp - originalStart) * timeScale / config.refreshRate),
faf1e584551c new api now
veltr
parents: 53
diff changeset
   151
                        shape:{
faf1e584551c new api now
veltr
parents: 53
diff changeset
   152
                          type:'box',
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   153
                          width: config.columnWidth / 2 - 1,
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   154
                          height: config.tokenHeight / 2
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   155
                        },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   156
                        callback:{
faf1e584551c new api now
veltr
parents: 53
diff changeset
   157
                            suspension: function(token) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   158
                                setTimeout(function() {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   159
                                    token.flocculate();
faf1e584551c new api now
veltr
parents: 53
diff changeset
   160
                                    barChart.strata.update(barChart);
faf1e584551c new api now
veltr
parents: 53
diff changeset
   161
                                }, 5000);
faf1e584551c new api now
veltr
parents: 53
diff changeset
   162
                            }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   163
                        }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   164
                    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   165
                })
faf1e584551c new api now
veltr
parents: 53
diff changeset
   166
            },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   167
            sedimentation: {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   168
                token: {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   169
                    size: {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   170
                        original:12,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   171
                        minimum:0
faf1e584551c new api now
veltr
parents: 53
diff changeset
   172
                    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   173
                },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   174
                aggregation:{
faf1e584551c new api now
veltr
parents: 53
diff changeset
   175
                    height: vsHeight - 100,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   176
                    maxData: Math.max.apply(Math, movies.map(function(m) { return m.opinions.length; }))
faf1e584551c new api now
veltr
parents: 53
diff changeset
   177
                },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   178
                suspension:{
faf1e584551c new api now
veltr
parents: 53
diff changeset
   179
                    decay:{
faf1e584551c new api now
veltr
parents: 53
diff changeset
   180
                        power:1.001
faf1e584551c new api now
veltr
parents: 53
diff changeset
   181
                    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   182
                }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   183
            }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   184
        }
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   185
        
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   186
        //console.log(barChartSettings);
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   187
        
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   188
        barChart = $("#data-viz").vs(barChartSettings).data('visualSedimentation');
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   189
        var startOfViz = Date.now();
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   190
        clearInterval(clockInterval);
faf1e584551c new api now
veltr
parents: 53
diff changeset
   191
        $(".timer-bar-value").width(0);
faf1e584551c new api now
veltr
parents: 53
diff changeset
   192
        clockInterval = setInterval(function() {
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   193
            $(".timer-bar-value").width($('.timer-bar').width() * Math.min(1, (Date.now() - startOfViz) / config.vizDuration));
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   194
        },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   195
        100);
faf1e584551c new api now
veltr
parents: 53
diff changeset
   196
    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   197
    
faf1e584551c new api now
veltr
parents: 53
diff changeset
   198
    function loadMovie(movie) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   199
        $.getJSON(
faf1e584551c new api now
veltr
parents: 53
diff changeset
   200
            "http://api.allocine.fr/rest/v3/opinionlist",
faf1e584551c new api now
veltr
parents: 53
diff changeset
   201
            {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   202
                partner: config.partnerCode,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   203
                format: "json",
faf1e584551c new api now
veltr
parents: 53
diff changeset
   204
                subject: "movie:" + movie.id,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   205
                count: config.opinionsPerPage,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   206
                refresh: refreshtoken(),
faf1e584551c new api now
veltr
parents: 53
diff changeset
   207
                page: movie.opinionPage
faf1e584551c new api now
veltr
parents: 53
diff changeset
   208
            },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   209
            function(d) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   210
                if (d.feed && d.feed.activity) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   211
                    var tokens = d.feed.activity.filter(function(a) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   212
                        return a.action.type !== "notinterested" && a.action.value !== "-3.0";
faf1e584551c new api now
veltr
parents: 53
diff changeset
   213
                    });
faf1e584551c new api now
veltr
parents: 53
diff changeset
   214
                } else {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   215
                    var tokens = [];
faf1e584551c new api now
veltr
parents: 53
diff changeset
   216
                }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   217
                tokens.forEach(function(a) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   218
                    a._colorId = config.colorIds[a.action.value];
faf1e584551c new api now
veltr
parents: 53
diff changeset
   219
                    a._color = config.colors[a._colorId];
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   220
                    a._timestamp = Date.parse(a.datetime + tzSuffix) - tzDelta;
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   221
                    a._movie = movie.id;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   222
                    a._column = movie.column;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   223
                });
faf1e584551c new api now
veltr
parents: 53
diff changeset
   224
                var tokcount = tokens.length;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   225
                tokens = tokens.filter(function(a) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   226
                    return a._timestamp >= originalStart;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   227
                });
faf1e584551c new api now
veltr
parents: 53
diff changeset
   228
                movie.opinions = movie.opinions.concat(tokens);
faf1e584551c new api now
veltr
parents: 53
diff changeset
   229
                opinions = opinions.concat(tokens);
faf1e584551c new api now
veltr
parents: 53
diff changeset
   230
                $("#data-viz").append(".");
faf1e584551c new api now
veltr
parents: 53
diff changeset
   231
                if (tokens.length === tokcount) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   232
                    console.log("Page " + movie.opinionPage + " of '" + movie.title + "' loaded");
faf1e584551c new api now
veltr
parents: 53
diff changeset
   233
                    movie.opinionPage ++;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   234
                    loadMovie(movie);
faf1e584551c new api now
veltr
parents: 53
diff changeset
   235
                } else {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   236
                    console.log("Page " + movie.opinionPage + " of '" + movie.title + "' -- total : " + movie.opinions.length + " opinions loaded");
faf1e584551c new api now
veltr
parents: 53
diff changeset
   237
                    moviesToLoad--;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   238
                    if (!moviesToLoad) {
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   239
                        console.log("**** Everything is loaded, in " + (Date.now() - loadTime) / 1000 + " seconds");
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   240
                        startViz();
faf1e584551c new api now
veltr
parents: 53
diff changeset
   241
                    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   242
                }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   243
            }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   244
        );
faf1e584551c new api now
veltr
parents: 53
diff changeset
   245
    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   246
        
faf1e584551c new api now
veltr
parents: 53
diff changeset
   247
    $.getJSON(
faf1e584551c new api now
veltr
parents: 53
diff changeset
   248
        "http://api.allocine.fr/rest/v3/movielist",
faf1e584551c new api now
veltr
parents: 53
diff changeset
   249
        {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   250
            partner: config.partnerCode,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   251
            format: "json",
faf1e584551c new api now
veltr
parents: 53
diff changeset
   252
            filter: "top:week",
faf1e584551c new api now
veltr
parents: 53
diff changeset
   253
            count: config.movieCount,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   254
            refresh: refreshtoken()
faf1e584551c new api now
veltr
parents: 53
diff changeset
   255
        },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   256
        function(d) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   257
            $("#data-viz").html("Chargement des flux d'opinions<br />");
faf1e584551c new api now
veltr
parents: 53
diff changeset
   258
            console.log("Movie List Loaded");
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   259
            tzDelta = .5 * HOURS * Math.round((Date.parse(d.feed.updated) - loadTime) / (.5 * HOURS));
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   260
            tzSuffix = d.feed.updated.replace(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/,'');
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   261
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   262
            movies = d.feed.movie.map(function(movie, i) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   263
                return {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   264
                    id: movie.code,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   265
                    column: i,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   266
                    title: movie.title,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   267
                    poster: movie.poster.href,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   268
                    opinions: [],
faf1e584551c new api now
veltr
parents: 53
diff changeset
   269
                    opinionPage: 1
faf1e584551c new api now
veltr
parents: 53
diff changeset
   270
                }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   271
            });
faf1e584551c new api now
veltr
parents: 53
diff changeset
   272
            moviesToLoad = movies.length;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   273
            movies.forEach(loadMovie);
faf1e584551c new api now
veltr
parents: 53
diff changeset
   274
            $('.posters').html(movies.map(function(movie) {
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   275
                return '<li style=" margin: 0 '
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   276
                    + Math.floor(config.columnSpacing / 2)
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   277
                    + 'px"><img width="150" height="200" src="'
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   278
                    + movie.poster
faf1e584551c new api now
veltr
parents: 53
diff changeset
   279
                    + '" alt="'
faf1e584551c new api now
veltr
parents: 53
diff changeset
   280
                    + movie.title
faf1e584551c new api now
veltr
parents: 53
diff changeset
   281
                    +'" /></li>';
faf1e584551c new api now
veltr
parents: 53
diff changeset
   282
            }).join(""));
faf1e584551c new api now
veltr
parents: 53
diff changeset
   283
        }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   284
    );
faf1e584551c new api now
veltr
parents: 53
diff changeset
   285
       
faf1e584551c new api now
veltr
parents: 53
diff changeset
   286
    function refreshtoken() {
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   287
        return Math.floor(0x100000000 * Math.random()).toString(16) + "-" + (Date.now() % 0x100000000).toString(16);
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   288
    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   289
    
faf1e584551c new api now
veltr
parents: 53
diff changeset
   290
    $(".rejouer").click(function() {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   291
        startViz();
faf1e584551c new api now
veltr
parents: 53
diff changeset
   292
        return false;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   293
    })
49
531a593a0294 update buzz : integration crew comment arrow and half star (rating)
Anthony Ly <anthonyly.com@gmail.com>
parents: 42
diff changeset
   294
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   295
});