integration/js/annotation-article.js
author veltr
Wed, 19 Jun 2013 18:28:56 +0200
changeset 31 059e197617bb
child 32 3612737630f4
permissions -rw-r--r--
Added First version of Text Annotator
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
     1
$(function() {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
     2
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
     3
    $(".fancybox").fancybox();
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
     4
    $('.font-up a').click(function(){
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
     5
        var taille_police=parseFloat($('.content').css('font-size'),100)+2;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
     6
        if(taille_police<30){
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
     7
            var taille_ligne=parseFloat($('.content').css('line-height'),100)+2;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
     8
            $('.content').css({
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
     9
                'line-height':taille_ligne+'px',
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    10
                'font-size':taille_police+'px'
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    11
            });
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    12
        }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    13
        return false;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    14
    });
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    15
    $('.font-down a').click(function(){
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    16
        var taille_police=parseFloat($('.content').css('font-size'),100)-2;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    17
        if(taille_police>11){
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    18
            var taille_ligne=parseFloat($('.content').css('line-height'),100)-2;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    19
            $('.content').css({
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    20
                'line-height':taille_ligne+'px',
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    21
                'font-size':taille_police+'px'
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    22
            });
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    23
        }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    24
        return false;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    25
    });
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    26
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    27
    /* ANNOTATION HANDLING */
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    28
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    29
    var basenode = $(".content")[0],
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    30
        cleanHtml = cleanTextNodes(basenode).innerHtml,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    31
        textinfo = parseContents(basenode);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    32
        
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    33
    window.annotations = window.annotations || [];
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    34
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    35
    var colors = ["#ff8", "#f88", "#8f8", "#8ff", "#f8f", "#88f"],
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    36
        currentVisibleFrame = null,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    37
        ncol = 0,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    38
        mousedown = false,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    39
        dragging = false;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    40
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    41
    function cleanText(txt, keepbefore, keepafter) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    42
        var res = txt.replace(/[\n\r\t]+/gm,' ').replace(/ {2,}/g,' ');
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    43
        if (!keepbefore) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    44
            res = res.replace(/^ +/,'');
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    45
        }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    46
        if (!keepafter) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    47
            res = res.replace(/ +$/,'');
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    48
        }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    49
        return res;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    50
    }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    51
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    52
    function recursiveParse(node, info) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    53
        var children = node.childNodes;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    54
        for (var i = 0, l = children.length; i < l; i++) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    55
            var childnode = children[i];
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    56
            switch(childnode.nodeType) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    57
                case node.ELEMENT_NODE:
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    58
                    recursiveParse(childnode, info);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    59
                break;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    60
                case node.TEXT_NODE:
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    61
                    var startpos = info.text.length;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    62
                    info.text += childnode.textContent;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    63
                    var endpos = info.text.length,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    64
                        nodeinfo = {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    65
                            start: startpos,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    66
                            end: endpos,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    67
                            length: endpos - startpos,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    68
                            textNode: childnode
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    69
                        };
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    70
                    childnode._nodeInfo = nodeinfo;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    71
                    info.nodes.push(nodeinfo);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    72
                break;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    73
            }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    74
        }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    75
    }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    76
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    77
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    78
    function parseContents(node) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    79
        var res = {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    80
            text: '',
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    81
            nodes: []
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    82
        };
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    83
        recursiveParse(node, res);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    84
        return res;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    85
    }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    86
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    87
    function cleanTextNodes(node) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    88
        var children = node.childNodes;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    89
        for (var i = 0, l = children.length; i < l; i++) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    90
            var childnode = children[i];
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    91
            switch(childnode.nodeType) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    92
                case node.ELEMENT_NODE:
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    93
                    cleanTextNodes(childnode);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    94
                break;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    95
                case node.TEXT_NODE:
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    96
                    var keepbefore = (i && children[i-1].nodeType == node.ELEMENT_NODE),
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    97
                        keepafter = (i < l-1 && children[i+1].nodeType == node.ELEMENT_NODE);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    98
                    childnode.textContent = cleanText(childnode.textContent, keepbefore, keepafter);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
    99
                break;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   100
            }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   101
        }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   102
        return node;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   103
    }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   104
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   105
    function highlightText(start, end, color) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   106
        var annotation = {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   107
            startOffset: start,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   108
            endOffset: end,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   109
            color: color,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   110
            comment: "",
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   111
            annotatedText: textinfo.text.substring(start, end),
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   112
            beforeText: textinfo.text.substring(start - 40, start).replace(/^[\S]*\s+/,''),
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   113
            afterText: textinfo.text.substring(end, end + 40).replace(/\s+[\S]*$/,'')
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   114
        }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   115
        annotations.push(annotation);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   116
        showAnnotation(annotation);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   117
    }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   118
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   119
    var frameTpl = _.template(
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   120
        '<div class="annotation-frame" style="border-color: <%- annotation.color %>; top: <%-top %>px; left: <%- left %>px;">'
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   121
        + '<div class="annotation-area" style="background-color: <%- annotation.color %>; height: <%- height %>px;"></div>'
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   122
        + '<form class="annotation-form"><h3>Annoter&nbsp;:</h3>'
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   123
        + '<textarea class="annotation-textarea" placeholder="Mon commentaire&hellip;"><%- annotation.comment || "" %></textarea>'
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   124
        + '</form></div>'
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   125
    );
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   126
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   127
    var liTpl = _.template(
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   128
        '<li style="border-color: <%- annotation.color %>;"><h3>Texte annoté</h3>'
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   129
        + '<p class="annotation-text"><%- annotation.beforeText %><b><%- annotation.annotatedText %></b><%- annotation.afterText %></p>'
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   130
        + '<h3>Commentaire</h3><p class="annotation-comment"><%- annotation.comment || "(Sans commentaire)" %></p>'
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   131
    );
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   132
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   133
    function showFrameBox() {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   134
        if (currentVisibleFrame) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   135
            $(".annotation-frame-box").show();
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   136
            var offset = currentVisibleFrame.offset(),
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   137
                width = currentVisibleFrame.outerWidth(),
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   138
                height = currentVisibleFrame.outerHeight();
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   139
            $(".annotation-fb-top").css({
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   140
                height: offset.top - 77
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   141
            });
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   142
            $(".annotation-fb-left").css({
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   143
                top: offset.top,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   144
                height: height,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   145
                width: offset.left
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   146
            });
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   147
            $(".annotation-fb-right").css({
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   148
                top: offset.top,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   149
                height: height,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   150
                left: offset.left + width
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   151
            });
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   152
            var fbbtop = offset.top + height;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   153
            $(".annotation-fb-bottom").css({
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   154
                top: fbbtop,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   155
                height: ($("body").height() - fbbtop)
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   156
            });
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   157
        } else {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   158
            $(".annotation-frame-box").hide();
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   159
        }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   160
    }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   161
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   162
    function hideAllFrames() {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   163
        if (currentVisibleFrame) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   164
            currentVisibleFrame.hide();
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   165
        }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   166
        
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   167
        currentVisibleFrame = null;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   168
        showFrameBox();
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   169
        $(".annotations-list li").removeClass("selected");
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   170
    }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   171
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   172
    function showAnnotation(annotation) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   173
        var start = annotation.startOffset,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   174
            end = annotation.endOffset,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   175
            color = annotation.color;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   176
        var spans = [];
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   177
        
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   178
        for (var i = 0, l = textinfo.nodes.length; i < l; i++) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   179
            var nodeinfo = textinfo.nodes[i];
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   180
            if (nodeinfo.end > start && nodeinfo.start <= end) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   181
                var r = document.createRange(),
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   182
                    s = document.createElement('span'),
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   183
                    rangestart = Math.max(0, start - nodeinfo.start),
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   184
                    rangeend = Math.min(nodeinfo.length, end - nodeinfo.start);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   185
                s.style.backgroundColor = color;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   186
                r.setStart(nodeinfo.textNode, rangestart);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   187
                r.setEnd(nodeinfo.textNode, rangeend);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   188
                r.surroundContents(s);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   189
                spans.push(s);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   190
            }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   191
        }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   192
        textinfo = parseContents(basenode);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   193
        var top = Math.min.apply(Math, spans.map(function(s) { return s.offsetTop })),
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   194
            height = Math.max.apply(Math, spans.map(function(s) { return s.offsetHeight + s.offsetTop })) - top,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   195
            frame = $(frameTpl({
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   196
                annotation: annotation,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   197
                top: top,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   198
                height: height,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   199
                left: basenode.offsetLeft
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   200
            })),
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   201
            li = $(liTpl({
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   202
                annotation: annotation
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   203
            }));
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   204
        
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   205
        $(".annotation-frames").append(frame);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   206
        $(".annotation-list").append(li);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   207
        
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   208
        frame.find(".annotation-textarea").on("keyup change", function() {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   209
            annotation.comment = $(this).val();
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   210
            li.find(".annotation-comment").text(annotation.comment || "(Sans commentaire)");
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   211
        });
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   212
        
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   213
        var show = function() {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   214
            if (mousedown) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   215
                return;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   216
            }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   217
            currentVisibleFrame = frame;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   218
            frame.show();
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   219
            showFrameBox();
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   220
            li.addClass("selected");
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   221
        }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   222
        
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   223
        $(spans).hover(show, hideAllFrames);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   224
        frame.hover(show, hideAllFrames);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   225
        li.hover(
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   226
            function() {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   227
                $(spans).addClass("annotation-selected");
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   228
                li.addClass("selected");
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   229
            },
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   230
            function() {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   231
                $(spans).removeClass("annotation-selected");
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   232
                li.removeClass("selected");
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   233
            }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   234
        ).click(function() {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   235
            show();
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   236
            $(window).scrollTop(currentVisibleFrame.offset().top - 100);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   237
        });
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   238
    }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   239
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   240
    window.annotations.forEach(function(annotation) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   241
        showAnnotation(annotation);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   242
    });
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   243
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   244
    $(".content")
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   245
        .mousedown(function() {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   246
            mousedown = true;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   247
            dragging = false;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   248
        })
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   249
        .mousemove(function() {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   250
            if (mousedown) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   251
                dragging = true;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   252
            }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   253
        })
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   254
        .mouseup(function() {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   255
            if (!dragging) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   256
                return;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   257
            }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   258
            var range = document.getSelection().getRangeAt(0);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   259
            if (!range.collapsed && range.startContainer._nodeInfo && range.endContainer._nodeInfo) {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   260
                var start = range.startOffset + range.startContainer._nodeInfo.start,
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   261
                    end = range.endOffset + range.endContainer._nodeInfo.start;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   262
                highlightText(start, end, colors[ncol++ % colors.length]);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   263
                document.getSelection().removeAllRanges();
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   264
            }
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   265
        });
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   266
        
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   267
    $(window).mouseup(function() {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   268
        mousedown = false;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   269
        dragging = false;
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   270
    });
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   271
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   272
    $(".annotation-frame-box").click(hideAllFrames);
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   273
    
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   274
    $(window).resize(function() {
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   275
        showFrameBox();
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   276
        $(".annotation-frame").css({
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   277
            left: basenode.offsetLeft
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   278
        })
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   279
    })
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   280
059e197617bb Added First version of Text Annotator
veltr
parents:
diff changeset
   281
});