integ/iri/js/iri-buzz.js
author veltr
Tue, 14 May 2013 18:56:16 +0200
changeset 70 7c2a81e5d027
parent 69 4265db059697
child 73 0519097d6177
permissions -rw-r--r--
mouseover handling bug fix
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,
59
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
     8
    vizDuration: 8 * 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
    },
59
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
    15
    movieCount: 10,
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
    16
    opinionsPerPage: 100,
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    17
    colors: [ "#f62a43", "#f3c000", "#2d9252"],
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
    18
    borderColors: [ "#f7788e", "#fdde83", "#3bb767" ],
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
    19
    imageUrlBase: 'iri/img/',
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    20
    refreshRate: .25 * SECONDS,
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    21
    columnSpacing: 40,
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    22
    columnWidth: 150,
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    23
    tokenHeight: 16,
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
    24
    fallSpeed: 4,
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
    25
    disappearAfter: 4 * SECONDS
28
84719280c84d import VS lib
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    26
}
84719280c84d import VS lib
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    27
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
    28
$(function() {
faf1e584551c new api now
veltr
parents: 53
diff changeset
    29
    
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    30
    var originalStart = Date.now() - config.originalDuration,
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
    31
        timeScale = config.vizDuration / config.originalDuration,
faf1e584551c new api now
veltr
parents: 53
diff changeset
    32
        movies,
faf1e584551c new api now
veltr
parents: 53
diff changeset
    33
        moviesToLoad,
faf1e584551c new api now
veltr
parents: 53
diff changeset
    34
        opinions = [],
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    35
        loadTime = Date.now(),
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    36
        clockInterval,
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    37
        tzDelta = 0,
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    38
        tzSuffix = 'Z';
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
    39
    
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
    40
    
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
    41
    // Add Patterns
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
    42
    var xml = '<svg style="position: absolute;" width="1" height="1"><defs>'
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
    43
        + _.range(3).map(function(i) {
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
    44
            return '<pattern id="pattern_'
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
    45
                + i
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
    46
                + '" x="0" y="0" width="3" height="3" patternUnits="userSpaceOnUse"><image x="0" y="0" width="3" height="3" xlink:href="'
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
    47
                + config.imageUrlBase
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
    48
                + 'pattern-'
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
    49
                + i
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
    50
                + '.png" /></pattern>';
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
    51
        }).join("")
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
    52
        + '</defs></svg>';
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
    53
    $("body").append(xml);
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
    54
        
faf1e584551c new api now
veltr
parents: 53
diff changeset
    55
    function resizeTimer() {
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
    56
        var w = Math.max(80, $(window).width() - 158),
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
    57
            n = Math.min(12, Math.floor(w / 80));
faf1e584551c new api now
veltr
parents: 53
diff changeset
    58
    	$('.timer-bar').width(w);
faf1e584551c new api now
veltr
parents: 53
diff changeset
    59
    	var html = '';
faf1e584551c new api now
veltr
parents: 53
diff changeset
    60
    	for (var k = 0; k < n + 1; k++) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
    61
    	    html += '<li style="left:'
faf1e584551c new api now
veltr
parents: 53
diff changeset
    62
    	       + Math.floor(k * w / n)
faf1e584551c new api now
veltr
parents: 53
diff changeset
    63
    	       + 'px;">'
55
c2e76eb7be88 Chrome Bugfix
veltr
parents: 54
diff changeset
    64
    	       + new Date(originalStart + k * config.originalDuration / n).toTimeString().substr(0,5)
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
    65
    	       + '</li>';
faf1e584551c new api now
veltr
parents: 53
diff changeset
    66
    	}
faf1e584551c new api now
veltr
parents: 53
diff changeset
    67
        $('.hours').html(html);
faf1e584551c new api now
veltr
parents: 53
diff changeset
    68
    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
    69
    
faf1e584551c new api now
veltr
parents: 53
diff changeset
    70
    resizeTimer();
faf1e584551c new api now
veltr
parents: 53
diff changeset
    71
    $(window).resize(resizeTimer);
faf1e584551c new api now
veltr
parents: 53
diff changeset
    72
    
faf1e584551c new api now
veltr
parents: 53
diff changeset
    73
    var vsHeight = $(window).height() - $('footer').height() - $('header').height() - 300,
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
    74
        vsWidth = config.movieCount * (config.columnWidth + config.columnSpacing);
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
    75
        
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
    76
    $("#data-viz").css({
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
    77
        height: vsHeight,
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
    78
        width: vsWidth
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
    79
    });
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
    80
    $('.posters').css('width', vsWidth);
faf1e584551c new api now
veltr
parents: 53
diff changeset
    81
    
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
    82
    var timeAtPause = 0, paused = true, timeStart;
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    83
    
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    84
    function currentVizTime() {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    85
        if (paused) {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    86
            return timeAtPause;
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    87
        } else {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    88
            return new Date().valueOf() - timeStart;
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    89
        }
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    90
    }
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    91
    
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    92
    function vizTimeToOriginalTime(t) {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    93
        return originalStart + t / timeScale;
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    94
    }
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    95
    
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    96
    function originalTimeToVizTime(t) {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    97
        return (t - originalStart) * timeScale;
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    98
    }
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
    99
    
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   100
    function play() {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   101
        if (!paused) {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   102
            return;
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   103
        }
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   104
        timeStart = Date.now() - timeAtPause;
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   105
        paused = false;
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   106
        $(".play-pause").removeClass("play").addClass("pause").attr("title", "Pause");
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   107
    }
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   108
    
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   109
    function pause() {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   110
        if (paused) {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   111
            return;
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   112
        }
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   113
        timeAtPause = currentVizTime();
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   114
        paused = true;
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   115
        $(".play-pause").removeClass("pause").addClass("play").attr("title", "Lecture");
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   116
    }
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   117
    
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   118
    $(".play-pause").click(function() {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   119
        if (paused) {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   120
            play();
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   121
        } else {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   122
            pause();
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   123
        }
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   124
    });
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   125
    
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   126
    function agoify(timestamp) {
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   127
        var h = "Il y a ",
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   128
            deltaT = Date.now() - timestamp,
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   129
            deltaH = Math.round(deltaT / HOURS);
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   130
        if (deltaH) {
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   131
            h += deltaH + " heure";
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   132
            if (deltaH > 1) {
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   133
                h += "s";
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   134
            }
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   135
        } else {
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   136
            var deltaM = Math.round(deltaT / MINUTES);
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   137
            h += deltaM + " minute";
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   138
            if (deltaM > 1) {
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   139
                h += "s";
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   140
            }
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   141
        }
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   142
        return h;
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   143
    }
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   144
    
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   145
    var opinionTemplate = _.template(
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   146
        '<div class="comment-content clearfix action-<%- actiontype %>">'
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   147
            + '<div class="avatar"><img src="<%- avatar %>" alt="Avatar" /></div>'
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   148
            + '<div class="comment-right">'
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   149
                + '<div class="comment-metadata">'
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   150
                    + '<span class="username"><%- username %> </span>'
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   151
                    + ' <span class="date"> <%- ago %></span>'
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   152
                    + '<ul class="stars-rating rate-<%- ratevalue %>">'
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   153
                        + '<li></li><li></li><li></li><li></li><li></li>'
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   154
                    + '</ul>'
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   155
                + '</div>'
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   156
                + '<p class="review-content"><%- content %></p>'
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   157
            + '</div>'
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   158
        + '</div>'
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   159
        + '<div class="comment-arrow"></div>'
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   160
    );
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   161
    
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   162
    var barChart = undefined;
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   163
    
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   164
    function startViz() {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   165
        
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   166
        $("#comment").hide();
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   167
        
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   168
        console.log("Start Viz");
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   169
        
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   170
        if (typeof barChart !== "undefined") {
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   171
            console.log("Bar Chart exists");
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   172
            barChart.selectAll("state",1).forEach(function(t) {
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   173
                t.flocculate();
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   174
            });
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   175
        }
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   176
        
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   177
        
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   178
        paused = true;
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   179
        timeAtPause = 0;
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   180
        
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   181
        opinions.sort(function(a,b) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   182
            return a._timestamp > b._timestamp;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   183
        });
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   184
        $("#data-viz").html("");
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   185
        
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   186
        var lastShownToken = null,
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   187
            maxData = Math.max.apply(Math, movies.map(function(m) { return m.opinions.length; })),
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   188
            aggrHeight = vsHeight - 80,
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   189
            aggrScale = aggrHeight / maxData,
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   190
            firstStrataCall = true;
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   191
        
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   192
        var barChartSettings = {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   193
            width : vsWidth,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   194
            height : vsHeight,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   195
            chart : {
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   196
                spacer : config.columnSpacing / 2,
59
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   197
                y: 0,
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   198
                height: vsHeight
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   199
            },
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   200
            options : {
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   201
                layout: false
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   202
            },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   203
            data : {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   204
                model : movies.map(function(movie) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   205
                    return {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   206
                        label: movie.title
faf1e584551c new api now
veltr
parents: 53
diff changeset
   207
                    };
faf1e584551c new api now
veltr
parents: 53
diff changeset
   208
                }),
faf1e584551c new api now
veltr
parents: 53
diff changeset
   209
                strata : function() {
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   210
                    var flocculated = (typeof barChart === "undefined" ? [] : barChart.selectAll("state",2) );
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   211
                    
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   212
                    if (firstStrataCall) {
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   213
                        _.defer(function() {
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   214
                            _.range(3).map(function(colorId) {
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   215
                                $(".layer_"+colorId).css({
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   216
                                    fill: "url(#pattern_" +colorId + ")",
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   217
                                    stroke: config.borderColors[colorId]
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   218
                                });
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   219
                            });
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   220
                        });
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   221
                        firstStrataCall = false;
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   222
                    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   223
                    
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   224
                    var res = movies.map(function(movie, i) {
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   225
                        var movieTokens = flocculated.filter(function(t) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   226
                            return t.attr("movie") === movie.id;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   227
                        });
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   228
                        var movieHeight = aggrScale * movieTokens.length;
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   229
                        movie.poster$.find(".poster-overlay").css("top", -movieHeight);
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   230
                        return _.range(3).map(function(colorId) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   231
                            var stratumTokens = movieTokens.filter(function(t) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   232
                                return t.attr("colorId") === colorId;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   233
                            }).length;
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   234
                            movie.poster$.find(".poster-" + colorId).text(stratumTokens);
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   235
                            return {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   236
                                value: function() {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   237
                                    return stratumTokens
faf1e584551c new api now
veltr
parents: 53
diff changeset
   238
                                }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   239
                            };
faf1e584551c new api now
veltr
parents: 53
diff changeset
   240
                        });
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
                    return res;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   244
                },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   245
                stream : {
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   246
                    provider : "direct"
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   247
                }
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   248
            },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   249
            sedimentation: {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   250
                token: {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   251
                    size: {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   252
                        original:12,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   253
                        minimum:0
faf1e584551c new api now
veltr
parents: 53
diff changeset
   254
                    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   255
                },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   256
                aggregation:{
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   257
                    height: aggrHeight,
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   258
                    maxData: maxData
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   259
                },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   260
                suspension:{
faf1e584551c new api now
veltr
parents: 53
diff changeset
   261
                    decay:{
faf1e584551c new api now
veltr
parents: 53
diff changeset
   262
                        power:1.001
faf1e584551c new api now
veltr
parents: 53
diff changeset
   263
                    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   264
                }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   265
            }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   266
        }
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   267
        
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   268
        function onTokenMouseover(token) {
70
7c2a81e5d027 mouseover handling bug fix
veltr
parents: 69
diff changeset
   269
            $("body").css("cursor", "pointer");
7c2a81e5d027 mouseover handling bug fix
veltr
parents: 69
diff changeset
   270
            commentDiv.html(opinionTemplate({
7c2a81e5d027 mouseover handling bug fix
veltr
parents: 69
diff changeset
   271
                actiontype: token.attr("actiontype"),
7c2a81e5d027 mouseover handling bug fix
veltr
parents: 69
diff changeset
   272
                avatar: token.attr("avatar"),
7c2a81e5d027 mouseover handling bug fix
veltr
parents: 69
diff changeset
   273
                username: token.attr("username"),
7c2a81e5d027 mouseover handling bug fix
veltr
parents: 69
diff changeset
   274
                ago: agoify(token.attr("timestamp")),
7c2a81e5d027 mouseover handling bug fix
veltr
parents: 69
diff changeset
   275
                ratevalue: token.attr("actionvalue"),
7c2a81e5d027 mouseover handling bug fix
veltr
parents: 69
diff changeset
   276
                content: token.attr("content")
7c2a81e5d027 mouseover handling bug fix
veltr
parents: 69
diff changeset
   277
            })).show();
7c2a81e5d027 mouseover handling bug fix
veltr
parents: 69
diff changeset
   278
            lastShownToken = token;
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   279
        }
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   280
        
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   281
        function onTokenMouseout(token) {
70
7c2a81e5d027 mouseover handling bug fix
veltr
parents: 69
diff changeset
   282
            if (token === lastShownToken) {
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   283
                $("body").css("cursor", "");
70
7c2a81e5d027 mouseover handling bug fix
veltr
parents: 69
diff changeset
   284
                commentDiv.hide();
7c2a81e5d027 mouseover handling bug fix
veltr
parents: 69
diff changeset
   285
            }
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   286
        }
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   287
        
65
b13a409f01dc Some refactoring
veltr
parents: 64
diff changeset
   288
        //console.log(barChartSettings);
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   289
        
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   290
        barChart = $("#data-viz").vs(barChartSettings).data('visualSedimentation');
59
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   291
        
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   292
        barChart.world.SetGravity(new barChart.phy.b2Vec2(0,10 * config.fallSpeed));
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   293
        
59
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   294
        $(".timer-bar-value").width(0);
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   295
        
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   296
        play();
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   297
        
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   298
        clearInterval(clockInterval);
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   299
        
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   300
        var lastTimestamp = 0;
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   301
        
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   302
        clockInterval = setInterval(function() {
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   303
            
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   304
            if (paused) {
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   305
                return;
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   306
            }
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   307
            
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   308
            var vizT = currentVizTime();
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   309
            
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   310
            var tokensToAdd = opinions.filter(function(o) {
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   311
                    return o._viztime > lastTimestamp && o._viztime <= vizT
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   312
                });
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   313
            
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   314
            lastTimestamp = vizT;
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   315
            
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   316
            tokensToAdd.forEach(function(opinion) {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   317
                barChart.addToken({
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   318
                    category: opinion._column,
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   319
                    datetime: opinion.datetime,
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   320
                    timestamp: opinion._timestamp,
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   321
                    viztime: opinion._viztime,
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   322
                    movie: opinion._movie,
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   323
                    colorId: opinion._colorId,
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   324
                    //fillStyle: config.colors[opinion._colorId],
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   325
                    avatar: opinion._avatar,
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   326
                    username: opinion.actor.user.userName,
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   327
                    actiontype: opinion.action.type,
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   328
                    actionvalue: opinion.action.value,
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   329
                    content: opinion._content.replace(/(^.{320,340})[\s].+$/,'$1…'),
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   330
                    //size: 30,
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   331
                    strokeStyle: config.borderColors[opinion._colorId],
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   332
                    texture: {
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   333
                        src: config.imageUrlBase + 'pattern-' + opinion._colorId + '.png'
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   334
                    },
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   335
                    shape:{
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   336
                      type:'box',
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   337
                      width: config.columnWidth / 2 - 1,
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   338
                      height: config.tokenHeight / 2
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   339
                    },
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   340
                    callback: {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   341
                        mouseover: onTokenMouseover,
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   342
                        mouseout: onTokenMouseout
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   343
                    }
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   344
                })
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   345
            });
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   346
            
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   347
            var deleteT = vizT - config.disappearAfter;
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   348
            
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   349
            barChart.selectAll("state",1)
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   350
                .filter(function(t) {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   351
                    return t.attr("viztime") <= deleteT;
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   352
                }).forEach(function(t) {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   353
                    t.flocculate();
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   354
                });
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   355
                
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   356
            if (deleteT > config.vizDuration) {
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   357
                pause();
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   358
            }
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   359
            
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   360
            barChart.strata.update(barChart);
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   361
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   362
            var w = $('.timer-bar').width() * Math.min(1, vizT / config.vizDuration);
59
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   363
            $(".timer-bar-value").width(w);
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   364
            
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   365
        }, config.refreshRate);
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   366
    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   367
    
faf1e584551c new api now
veltr
parents: 53
diff changeset
   368
    function loadMovie(movie) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   369
        $.getJSON(
faf1e584551c new api now
veltr
parents: 53
diff changeset
   370
            "http://api.allocine.fr/rest/v3/opinionlist",
faf1e584551c new api now
veltr
parents: 53
diff changeset
   371
            {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   372
                partner: config.partnerCode,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   373
                format: "json",
faf1e584551c new api now
veltr
parents: 53
diff changeset
   374
                subject: "movie:" + movie.id,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   375
                count: config.opinionsPerPage,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   376
                refresh: refreshtoken(),
faf1e584551c new api now
veltr
parents: 53
diff changeset
   377
                page: movie.opinionPage
faf1e584551c new api now
veltr
parents: 53
diff changeset
   378
            },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   379
            function(d) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   380
                if (d.feed && d.feed.activity) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   381
                    var tokens = d.feed.activity.filter(function(a) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   382
                        return a.action.type !== "notinterested" && a.action.value !== "-3.0";
faf1e584551c new api now
veltr
parents: 53
diff changeset
   383
                    });
faf1e584551c new api now
veltr
parents: 53
diff changeset
   384
                } else {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   385
                    var tokens = [];
faf1e584551c new api now
veltr
parents: 53
diff changeset
   386
                }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   387
                tokens.forEach(function(a) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   388
                    a._colorId = config.colorIds[a.action.value];
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   389
                    a._timestamp = Date.parse(a.datetime + tzSuffix) - tzDelta;
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   390
                    a._viztime = originalTimeToVizTime(a._timestamp);
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   391
                    a._movie = movie.id;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   392
                    a._column = movie.column;
69
4265db059697 Facebook isn't a problem after all !
veltr
parents: 67
diff changeset
   393
                    a._avatar = ((typeof a.actor.user.avatar === "undefined") ? "http://fr.web.img6.acsta.net/r_50_x/commons/emptymedia/AvatarAllocineMr.gif" : resizeAcPicture( a.actor.user.avatar, 50, "x" ));
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   394
                    a._content = ( a.action.type === "userreview" ? a.content.$ : (a.action.type === "wanttosee" ? "veut voir ce film." : "" ) ).replace(/[\n\r\s]+/mg,' ');
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   395
                });
faf1e584551c new api now
veltr
parents: 53
diff changeset
   396
                var tokcount = tokens.length;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   397
                tokens = tokens.filter(function(a) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   398
                    return a._timestamp >= originalStart;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   399
                });
faf1e584551c new api now
veltr
parents: 53
diff changeset
   400
                movie.opinions = movie.opinions.concat(tokens);
faf1e584551c new api now
veltr
parents: 53
diff changeset
   401
                opinions = opinions.concat(tokens);
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   402
                $("#data-viz h3").append(".");
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   403
                if (tokens.length === tokcount) {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   404
                    console.log("Page " + movie.opinionPage + " of '" + movie.title + "' loaded");
faf1e584551c new api now
veltr
parents: 53
diff changeset
   405
                    movie.opinionPage ++;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   406
                    loadMovie(movie);
faf1e584551c new api now
veltr
parents: 53
diff changeset
   407
                } else {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   408
                    console.log("Page " + movie.opinionPage + " of '" + movie.title + "' -- total : " + movie.opinions.length + " opinions loaded");
faf1e584551c new api now
veltr
parents: 53
diff changeset
   409
                    moviesToLoad--;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   410
                    if (!moviesToLoad) {
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   411
                        console.log("**** Everything is loaded, in " + (Date.now() - loadTime) / 1000 + " seconds");
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   412
                        startViz();
faf1e584551c new api now
veltr
parents: 53
diff changeset
   413
                    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   414
                }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   415
            }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   416
        );
faf1e584551c new api now
veltr
parents: 53
diff changeset
   417
    }
59
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   418
    
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   419
    var acimgserv = 0, acimgservcount = 6;
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   420
    
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   421
    function resizeAcPicture(pic, w, h) {
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   422
        var path = pic.path || pic.href || pic || "";
60
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   423
        if (/^https?:\/\/[\w\d\.]+\.acsta\.net\//.test(path)) {
59
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   424
            path = path.replace(/^https?:\/\/[^\/]+/,'');
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   425
        }
60
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   426
        if (path[0] === "/") {
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   427
            return "http://fr.web.img"
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   428
                + ( 1 + (acimgserv++ % acimgservcount))
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   429
                + ".acsta.net/r_"
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   430
                + w
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   431
                + "_"
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   432
                + h
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   433
                + path;
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   434
        }
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   435
        return path;
59
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   436
    }
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   437
    
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   438
    $.getJSON(
faf1e584551c new api now
veltr
parents: 53
diff changeset
   439
        "http://api.allocine.fr/rest/v3/movielist",
faf1e584551c new api now
veltr
parents: 53
diff changeset
   440
        {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   441
            partner: config.partnerCode,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   442
            format: "json",
faf1e584551c new api now
veltr
parents: 53
diff changeset
   443
            filter: "top:week",
faf1e584551c new api now
veltr
parents: 53
diff changeset
   444
            count: config.movieCount,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   445
            refresh: refreshtoken()
faf1e584551c new api now
veltr
parents: 53
diff changeset
   446
        },
faf1e584551c new api now
veltr
parents: 53
diff changeset
   447
        function(d) {
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   448
            $("#data-viz h3").html("Chargement des flux d'opinions<br />");
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   449
            console.log("Movie List Loaded");
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   450
            tzDelta = .5 * HOURS * Math.round((Date.parse(d.feed.updated) - loadTime) / (.5 * HOURS));
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   451
            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
   452
60
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   453
            movies = [];
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   454
            for (var i = 0; i < d.feed.movie.length; i++) {
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   455
                var movie = d.feed.movie[i];
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   456
                if (i % 2) {
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   457
                    movies.push(movie);
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   458
                } else {
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   459
                    movies.splice(0,0,movie);
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   460
                }
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   461
            }
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   462
            movies = movies.map(function(movie, i) {
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   463
                return {
faf1e584551c new api now
veltr
parents: 53
diff changeset
   464
                    id: movie.code,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   465
                    column: i,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   466
                    title: movie.title,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   467
                    poster: movie.poster.href,
faf1e584551c new api now
veltr
parents: 53
diff changeset
   468
                    opinions: [],
faf1e584551c new api now
veltr
parents: 53
diff changeset
   469
                    opinionPage: 1
59
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   470
                };
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   471
            });
faf1e584551c new api now
veltr
parents: 53
diff changeset
   472
            moviesToLoad = movies.length;
faf1e584551c new api now
veltr
parents: 53
diff changeset
   473
            movies.forEach(loadMovie);
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   474
            $('.posters').html(movies.map(function(movie, i) {
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   475
                return '<li class="poster" style=" margin: 0 '
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   476
                    + Math.floor(config.columnSpacing / 2)
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   477
                    + 'px" data-movie-index="'
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   478
                    + i
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   479
                    + '"><img width="150" height="200" src="'
59
4d6f57d4571c added image resize
veltr
parents: 57
diff changeset
   480
                    + resizeAcPicture(movie.poster,150,200)
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   481
                    + '" alt="'
faf1e584551c new api now
veltr
parents: 53
diff changeset
   482
                    + movie.title
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   483
                    + '" /><div class="poster-overlay"><div class="poster-datainfo">'
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   484
                    + '<ul class="poster-distribution"><li class="poster-2">0</li><li class="poster-1">0</li><li class="poster-0">0</li>'
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   485
                    + '</ul></div></div></li>';
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   486
            }).join(""));
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   487
            
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   488
            $(".poster")
64
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   489
                .click(function() {
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   490
                    $("#comment-modal").modal({
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   491
                        containerCss: {
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   492
                            height: $(window).height()-200,
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   493
                            width: Math.min($(window).width()-200, 640)
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   494
                        },
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   495
                        overlayClose: true
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   496
                    });
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   497
                    var vizT = currentVizTime(),
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   498
                        movie = movies[$(this).attr("data-movie-index")],
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   499
                        opsToShow = movie.opinions.filter(function(o) {
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   500
                            return o._viztime <= vizT;
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   501
                        });
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   502
                    $(".comment-count").text(opsToShow.length);
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   503
                    $(".comment-subject").text(movie.title);
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   504
                    $(".comment-start").text(new Date(originalStart).toTimeString().substr(0,5));
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   505
                    $(".comment-end").text(new Date(vizTimeToOriginalTime(vizT)).toTimeString().substr(0,5));
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   506
                    $(".comment-list").html(opsToShow.map(function(o) {
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   507
                        return opinionTemplate({
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   508
                            actiontype: o.action.type,
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   509
                            avatar: o._avatar,
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   510
                            username: o.actor.user.userName,
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   511
                            ago: agoify(o._timestamp),
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   512
                            ratevalue: o.action.value,
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   513
                            content: o._content
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   514
                        });
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   515
                    }).join(""))
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   516
                        .mCustomScrollbar({
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   517
                            autoDraggerLength:false,
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   518
                            scrollButtons:{
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   519
                                enable:false
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   520
                            }
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   521
                        });
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   522
                    return false;
2937fe1ba865 Added opinion feed
veltr
parents: 63
diff changeset
   523
                })
63
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   524
                .each(function(i) {
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   525
                    movies[i].poster$ = $(this);
9d95cc8b861b Added Overlay information
veltr
parents: 62
diff changeset
   526
                });
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   527
        }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   528
    );
faf1e584551c new api now
veltr
parents: 53
diff changeset
   529
       
faf1e584551c new api now
veltr
parents: 53
diff changeset
   530
    function refreshtoken() {
56
87d023a49665 Right colors
veltr
parents: 55
diff changeset
   531
        return Math.floor(0x100000000 * Math.random()).toString(16) + "-" + (Date.now() % 0x100000000).toString(16);
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   532
    }
faf1e584551c new api now
veltr
parents: 53
diff changeset
   533
    
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   534
    $(".restart").click(function() {
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   535
        startViz();
faf1e584551c new api now
veltr
parents: 53
diff changeset
   536
        return false;
60
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   537
    });
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   538
    
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   539
    var commentDiv = $("#comment");
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   540
    
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   541
    $("#data-viz").mousemove(_.throttle(function(e) {
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   542
        commentDiv
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   543
            .css({
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   544
                left: e.pageX,
62
1f6b7dce650c Added pause button
veltr
parents: 60
diff changeset
   545
                top: e.pageY + 2
60
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   546
            })
67
cff3bbe9e539 Added texture
veltr
parents: 65
diff changeset
   547
            .removeClass("left right").addClass(e.pageX < $(window).width() / 2 ? "left" : "right");
60
2169ca441eb3 Added Tooltips
veltr
parents: 59
diff changeset
   548
    }, 50));
49
531a593a0294 update buzz : integration crew comment arrow and half star (rating)
Anthony Ly <anthonyly.com@gmail.com>
parents: 42
diff changeset
   549
54
faf1e584551c new api now
veltr
parents: 53
diff changeset
   550
});