Allow side by side commitdiff TOC to show the chosen diff and hide the
[gitphp.git] / js / commitdiff.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
/*
 * GitPHP javascript commitdiff
 * 
 * Javascript enhancements to make side-by-side
 * commitdiff more usable
 *
 * @author Christopher Han <xiphux@gmail.com>
 * @copyright Copyright (c) 2011 Christopher Han
 * @package GitPHP
 */
 
var TOCYloc = null;
var TOCposition = null;
var TOCtop = null;
 
function initSBSCommitDiff() {
        var sbsTOC = $('div.commitDiffSBS div.SBSTOC');
        if (sbsTOC.size() < 1) {
                return;
        }
 
        TOCYloc = sbsTOC.position().top;
        TOCposition = sbsTOC.css('position');
        TOCtop = sbsTOC.css('top');
        $(window).scroll(function() {
                var windowYloc = $(document).scrollTop();
                if (windowYloc > TOCYloc) {
                        sbsTOC.css('position', 'fixed');
                        sbsTOC.css('top', '0px');
                } else {
                        sbsTOC.css('position', TOCposition);
                        sbsTOC.css('top', TOCtop);
                }
        });
 
        $('a.SBSTOCItem').click(function() {
                var clickedItem = $(this).get(0);
                $('a.SBSTOCItem').each(function(index, value) {
                        if (clickedItem == value) {
                                $(this).parent().addClass('activeItem');
                        } else {
                                $(this).parent().removeClass('activeItem');
                        }
                });
                var clickedId = $(this).attr('href').substring(1);
                $('div.diffBlob').each(function() {
                        if ($(this).attr('id') == clickedId) {
                                $(this).slideDown('fast');
                        } else {
                                $(this).slideUp('fast');
                        }
                });
                $('a.showAll').show();
                if ($(document).scrollTop() > $('div.SBSContent').offset().top) {
                        $('html, body').animate({
                                scrollTop: $('div.SBSContent').offset().top
                        }, 200);
                }
                return false;
        });
        $('a.showAll').click(function() {
                $('a.SBSTOCItem').parent().removeClass('activeItem');
                $('div.diffBlob').slideDown('fast');
                $(this).hide();
                if ($(document).scrollTop() > $('div.SBSContent').offset().top) {
                        $('html, body').animate({
                                scrollTop: $('div.SBSContent').offset().top
                        }, 200);
                }
                return false;
        });
};
 
$(document).ready(function() {
        initSBSCommitDiff();
});
 
comments