summaryrefslogtreecommitdiff
path: root/static/js/src/tag.js
blob: 1f374eec15b39c325b305b10e546c490eaf47793 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Tag = {
    "favorite": function(button) {
        var message = getMessageInfo(button);
        var favorited = $(button).parents(".dump").hasClass("favorite");
        if (favorited) {
            Tag.rm(message.id, "favorite");
            $(button).parents(".dump").removeClass("favorite");
            if (RawFavs[message.id]) {
                delete RawFavs[message.id];
                paletteImageCache = false;
            }
        } else {
            Tag.add(message.id, "favorite");
            $(button).parents(".dump").addClass("favorite");
            if (RawFavs && MessageContentCache[message.id]) { // chat ui stuff
                if ($("#palette-button").css("display") == "none")
                    paletteButtonShowAnim();
                RawFavs[message.id] = MessageContentCache[message.id];
                paletteImageCache = false;
            }
        }
    },
    "add": function(message_id, tag) {
        Tag.ajax("/cmd/tag/add", {"message_id": message_id, "tag": tag});
    },
    "rm": function(message_id, tag) {
        Tag.ajax("/cmd/tag/rm", {"message_id": message_id, "tag": tag});
    },
    "ajax": function(url, data) {
        $.ajax({
            "type": 'POST',
            "timeout": 5000,
            "url": url,
            "data": data,
            "cache": false
        });
    },
    "animated_fav": function(button, scoreClass, bigTextSize, smallTextSize) {
        if (!Nick) { return; }
        Tag.favorite(button);
        var $dump = $(button).parents(".dump");
        var isAdding = $dump.hasClass('favorite');

        // Frontpage-favs can be triggered by clicking score number,
        // so manually sync heart-thumb visual state.
        if ($(button).hasClass('hallscore')) {
            $dump.find('.thumb').attr('src', isAdding ? Imgs.logThumb : Imgs.logThumbOff);
        }

        if ($dump.attr('nick') == Nick)
            return;
        
        var $score = $dump.find(scoreClass);
        var inc = isAdding ? 1 : -1;
        var oldScore = parseInt($score.text(), 10);
        $score.text(oldScore + inc);
        $score.stop().animate({ 'font-size': bigTextSize }, 250, function() {
            $score.animate({ 'font-size': smallTextSize }, 250);
        });
        
        if (isAdding) {
            var link = $('<a>')
                .attr('href', Domain + '/' + Nick + '/popular')
                .append($('<b>').text(Nick))
                .append(" ");
            $dump.find('.faver-list').append(link);
        } else {
            $dump.find('.faver-list b').filter(function() { return $(this).text() == Nick }).parent().remove();
        }
    }
}