summaryrefslogtreecommitdiff
path: root/media/archweb.js
blob: c5025ded967d746b40a41c6d61a0867d642ddf51 (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
131
132
133
134
135
136
/* 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 = $("#tbody_differences").children();
    var all_rows = rows;
    if(!$('#id_multilib').is(':checked')) {
        rows = rows.not(".multilib").not(".multilib-testing");
    }
    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
        var pat = /(.*)-(.+)/;
        rows = rows.filter(function(index) {
            var cells = $(this).children('td');

            // all this just to get the split version out of the table cell
            var ver_a = cells.eq(2).find('span').text().match(pat);
            if(!ver_a) return true;

            var ver_b = cells.eq(3).find('span').text().match(pat);
            if(!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
    all_rows.hide();
    rows.show();
    // make sure we update the odd/even styling from sorting
    $('.results').trigger("applyWidgets");
};
filter_reset = function() {
    $('#id_archonly').val("both");
    $('#id_multilib').removeAttr("checked");
    $('#id_minor').removeAttr("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;
};