Start adding basic login infrastructure (still needs styling)
[gitphp.git] / js / modules / blameasync.js
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
/*
 * GitPHP Javascript blame
 * 
 * Load blame data into blob page asynchronously
 * 
 * @author Christopher Han <xiphux@gmail.com>
 * @copyright Copyright (c) 2011 Christopher Han
 * @package GitPHP
 * @subpackage Javascript
 */
 
define(["jquery", "modules/geturl", "modules/tooltip.commit", 'modules/resources'],
        function($, url, tooltipCommit, resources) {
 
                var blobTable = null;
                var blameLink = null;
                var blameCol = null;
 
                function buildContainer() {
                        var col = $(document.createElement('td'));
                        col.attr('id', 'blameData');
                        col.css('display', 'none');
 
                        var p = $(document.createElement('p'));
                        p.text(resources.LoadingBlameData);
                        p.appendTo(col);
 
                        var div = $(document.createElement('div'));
                        div.css('text-align', 'center');
 
                        var img = $(document.createElement('img'));
                        img.attr('src', url + 'images/blame-loader.gif');
                        img.attr('alt', resources.Loading);
                        img.appendTo(div);
 
                        div.appendTo(col);
 
                        return col;
                }
 
                function insertBlame(data) {
                        blameCol.html(data).addClass('de1');
 
                        tooltipCommit($('a.commitTip'));
                }
 
                var showBlame = function() {
                        if (blameCol) {
                                blameCol.show('fast');
                                return false;
                        }
 
                        blameCol = buildContainer();
                        blobTable.find('tr:first').prepend(blameCol);
                        blameCol.show('fast');
                        $.get(blameLink.attr('href'), { o: 'js' },
                        function(data) {
                                if (blameCol.css('display') == 'none') {
                                        blameCol.html(data).addClass('de1');
                                        insertBlame(data);
                                } else {
                                        blameCol.fadeOut('fast', function() {
                                                insertBlame(data);
                                                blameCol.fadeIn('fast');
                                        });
                                }
                        });
                };
 
                var hideBlame = function() {
                        if (blameCol) {
                                blameCol.hide('fast');
                        }
                        return false;
                };
 
                var init = function(blobTableElem, blameLinkElem) {
                        blobTable = blobTableElem;
                        blameLink = blameLinkElem;
 
                        blameLink.toggle(showBlame, hideBlame);
                };
 
                return {
                        init: init
                }
        }
);
 
 
comments