summaryrefslogtreecommitdiffstats
path: root/media/archweb.js
blob: ea287ab050b6a3925d0288335322d75f14301532 (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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* tablesorter custom parsers for various pages:
 * devel/index.html, mirrors/status.html, todolists/view.html */
if(typeof $.tablesorter !== "undefined") {
    $.tablesorter.addParser({
        id: 'pkgcount',
        is: function(s) { return false; },
        format: function(s) {
            var m = s.match(/\d+/);
            return m ? parseInt(m[0]) : 0;
        },
        type: 'numeric'
    });
    $.tablesorter.addParser({
        id: 'todostatus',
        is: function(s) { return false; },
        format: function(s) {
            return s.match(/incomplete/) ? 1 : 0;
        },
        type: 'numeric'
    });
    $.tablesorter.addParser({
        /* sorts numeric, but put '', 'unknown', and '∞' last. */
        id: 'mostlydigit',
        is: function(s,table) {
            var special = ['', 'unknown', '∞'];
            var c = table.config;
            return ($.inArray(s, special) > -1) || $.tablesorter.isDigit(s,c);
        },
        format: function(s) {
            var special = ['', 'unknown', '∞'];
            if($.inArray(s, special) > -1) return Number.MAX_VALUE;
            return $.tablesorter.formatFloat(s);
        },
        type: 'numeric'
    });
    $.tablesorter.addParser({
        /* sorts duration; put '', 'unknown', and '∞' last. */
        id: 'duration',
        is: function(s,table) {
            var special = ['', 'unknown', '∞'];
            return ($.inArray(s, special) > -1) || /^[0-9]+:[0-5][0-9]$/.test(s);
        },
        format: function(s) {
            var special = ['', 'unknown', '∞'];
            if($.inArray(s, special) > -1) return Number.MAX_VALUE;
            matches = /^([0-9]+):([0-5][0-9])$/.exec(s);
            return matches[1] * 60 + matches[2];
        },
        type: 'numeric'
    });
}

/* news/add.html */
function enablePreview() {
    $('#previewbtn').click(function(event) {
        event.preventDefault();
        $.post('/news/preview/',
            { data: $('#id_content').val() },
            function(data) {
            $('#previewdata').html(data);
            $('.news-article').show();
        });
        $('#previewtitle').html($('#id_title').val());
    });
}

/* packages/details.html */
function ajaxifyFiles() {
    $('#filelink').click(function(event) {
        event.preventDefault();
        $.get(this.href, function(data) {
            $('#pkgfilelist').html(data);
        });
    });
}

/* packages/differences.html */
filter_packages = function() {
    // start with all rows, and then remove ones we shouldn't show
    var rows = $(".results tbody tr");
    if(!$('#id_multilib').is(':checked')) {
        rows = rows.not(".multilib");
    }
    var arch = $("#id_archonly").val();
    if(arch !== "all") {
        rows = rows.filter("." + arch);
    }
    if(!$('#id_minor').is(':checked')) {
        // this check is done last because it is the most expensive
        rows = rows.filter(function(index) {
            // all this just to get the split version out of the table cell
            var pat = /(.*)-(.+)/;
            var ver_a = $('td:eq(2) span', this).text().match(pat);
            var ver_b = $('td:eq(3) span', this).text().match(pat);
            // did we match at all?
            if(!ver_a || !ver_b) return true;
            // first check pkgver
            if(ver_a[1] !== ver_b[1]) return true;
            // pkgver matched, so see if rounded pkgrel matches
			if(Math.floor(parseFloat(ver_a[2])) ==
				Math.floor(parseFloat(ver_b[2]))) return false;
            // pkgrel didn't match, so keep the row
            return true;
        });
    }
    // hide all rows, then show the set we care about
    $('.results tbody tr').hide();
    rows.show();
    // make sure we update the odd/even styling from sorting
    $('.results').trigger("applyWidgets");
};
filter_reset = function() {
    $('#id_archonly').val("all");
    $('#id_multilib').removeAttr("checked");
    $('#id_minor').attr("checked", "checked");
    filter_packages();
};

/* todolists/view.html */
todolist_flag = function() {
    var link = this;
    $.getJSON(link.href, function(data) {
        if (data.complete) {
            $(link).text('Complete').addClass('complete').removeClass('incomplete');
        } else {
            $(link).text('Incomplete').addClass('incomplete').removeClass('complete');
        }
    });
    return false;
};