Mercurial > public > mercurial-scm > hg
annotate mercurial/templates/static/mercurial.js @ 19907:aebfbb68fe92
hgweb: fix unstoppable loading of graph when no more results
When a user reaches the end of repo history with graph view, it (unsuccessfully)
tried to load more entries. This patch disables further loading attempts.
author | Alexander Plavin <alexander@plav.in> |
---|---|
date | Sat, 12 Oct 2013 11:29:28 +0400 |
parents | 5ba3cf17da9e |
children | 80aa912dcb2d |
rev | line source |
---|---|
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
1 // mercurial.js - JavaScript utility functions |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
2 // |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
3 // Rendering of branch DAGs on the client side |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
4 // Display of elapsed time |
14571
17c0cb1045e5
paper, coal: display diffstat on the changeset page
Steven Brown <StevenGBrown@gmail.com>
parents:
14046
diff
changeset
|
5 // Show or hide diffstat |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
6 // |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
7 // Copyright 2008 Dirkjan Ochtman <dirkjan AT ochtman DOT nl> |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
8 // Copyright 2006 Alexander Schremmer <alex AT alexanderweb DOT de> |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
9 // |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
10 // derived from code written by Scott James Remnant <scott@ubuntu.com> |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
11 // Copyright 2005 Canonical Ltd. |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
12 // |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
13 // This software may be used and distributed according to the terms |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
14 // of the GNU General Public License, incorporated herein by reference. |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
15 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
16 var colors = [ |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
17 [ 1.0, 0.0, 0.0 ], |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
18 [ 1.0, 1.0, 0.0 ], |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
19 [ 0.0, 1.0, 0.0 ], |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
20 [ 0.0, 1.0, 1.0 ], |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
21 [ 0.0, 0.0, 1.0 ], |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
22 [ 1.0, 0.0, 1.0 ] |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
23 ]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
24 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
25 function Graph() { |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
26 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
27 this.canvas = document.getElementById('graph'); |
17694
fa714f3ed298
hgweb: change IE canvas test (issue3639)
Matt Mackall <mpm@selenic.com>
parents:
16138
diff
changeset
|
28 if (window.G_vmlCanvasManager) this.canvas = window.G_vmlCanvasManager.initElement(this.canvas); |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
29 this.ctx = this.canvas.getContext('2d'); |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
30 this.ctx.strokeStyle = 'rgb(0, 0, 0)'; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
31 this.ctx.fillStyle = 'rgb(0, 0, 0)'; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
32 this.cur = [0, 0]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
33 this.line_width = 3; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
34 this.bg = [0, 4]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
35 this.cell = [2, 0]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
36 this.columns = 0; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
37 this.revlink = ''; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
38 |
19780
659bc603bd0d
hgweb: add reset javascript function to Graph
Alexander Plavin <alexander@plav.in>
parents:
19760
diff
changeset
|
39 this.reset = function() { |
659bc603bd0d
hgweb: add reset javascript function to Graph
Alexander Plavin <alexander@plav.in>
parents:
19760
diff
changeset
|
40 this.bg = [0, 4]; |
659bc603bd0d
hgweb: add reset javascript function to Graph
Alexander Plavin <alexander@plav.in>
parents:
19760
diff
changeset
|
41 this.cell = [2, 0]; |
659bc603bd0d
hgweb: add reset javascript function to Graph
Alexander Plavin <alexander@plav.in>
parents:
19760
diff
changeset
|
42 this.columns = 0; |
659bc603bd0d
hgweb: add reset javascript function to Graph
Alexander Plavin <alexander@plav.in>
parents:
19760
diff
changeset
|
43 document.getElementById('nodebgs').innerHTML = ''; |
659bc603bd0d
hgweb: add reset javascript function to Graph
Alexander Plavin <alexander@plav.in>
parents:
19760
diff
changeset
|
44 document.getElementById('graphnodes').innerHTML = ''; |
659bc603bd0d
hgweb: add reset javascript function to Graph
Alexander Plavin <alexander@plav.in>
parents:
19760
diff
changeset
|
45 } |
659bc603bd0d
hgweb: add reset javascript function to Graph
Alexander Plavin <alexander@plav.in>
parents:
19760
diff
changeset
|
46 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
47 this.scale = function(height) { |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
48 this.bg_height = height; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
49 this.box_size = Math.floor(this.bg_height / 1.2); |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
50 this.cell_height = this.box_size; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
51 } |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
52 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
53 function colorPart(num) { |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
54 num *= 255 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
55 num = num < 0 ? 0 : num; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
56 num = num > 255 ? 255 : num; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
57 var digits = Math.round(num).toString(16); |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
58 if (num < 16) { |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
59 return '0' + digits; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
60 } else { |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
61 return digits; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
62 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
63 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
64 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
65 this.setColor = function(color, bg, fg) { |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
66 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
67 // Set the colour. |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
68 // |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
69 // If color is a string, expect an hexadecimal RGB |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
70 // value and apply it unchanged. If color is a number, |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
71 // pick a distinct colour based on an internal wheel; |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
72 // the bg parameter provides the value that should be |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
73 // assigned to the 'zero' colours and the fg parameter |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
74 // provides the multiplier that should be applied to |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
75 // the foreground colours. |
16130
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
76 var s; |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
77 if(typeof color == "string") { |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
78 s = "#" + color; |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
79 } else { //typeof color == "number" |
16130
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
80 color %= colors.length; |
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
81 var red = (colors[color][0] * fg) || bg; |
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
82 var green = (colors[color][1] * fg) || bg; |
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
83 var blue = (colors[color][2] * fg) || bg; |
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
84 red = Math.round(red * 255); |
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
85 green = Math.round(green * 255); |
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
86 blue = Math.round(blue * 255); |
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
87 s = 'rgb(' + red + ', ' + green + ', ' + blue + ')'; |
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
88 } |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
89 this.ctx.strokeStyle = s; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
90 this.ctx.fillStyle = s; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
91 return s; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
92 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
93 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
94 |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
95 this.edge = function(x0, y0, x1, y1, color, width) { |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
96 |
16137
8fd18eb8aab7
templates: move Graph.edge() implementation in mercurial.js
Patrick Mezard <patrick@mezard.eu>
parents:
16130
diff
changeset
|
97 this.setColor(color, 0.0, 0.65); |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
98 if(width >= 0) |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
99 this.ctx.lineWidth = width; |
16137
8fd18eb8aab7
templates: move Graph.edge() implementation in mercurial.js
Patrick Mezard <patrick@mezard.eu>
parents:
16130
diff
changeset
|
100 this.ctx.beginPath(); |
8fd18eb8aab7
templates: move Graph.edge() implementation in mercurial.js
Patrick Mezard <patrick@mezard.eu>
parents:
16130
diff
changeset
|
101 this.ctx.moveTo(x0, y0); |
8fd18eb8aab7
templates: move Graph.edge() implementation in mercurial.js
Patrick Mezard <patrick@mezard.eu>
parents:
16130
diff
changeset
|
102 this.ctx.lineTo(x1, y1); |
8fd18eb8aab7
templates: move Graph.edge() implementation in mercurial.js
Patrick Mezard <patrick@mezard.eu>
parents:
16130
diff
changeset
|
103 this.ctx.stroke(); |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
104 |
16137
8fd18eb8aab7
templates: move Graph.edge() implementation in mercurial.js
Patrick Mezard <patrick@mezard.eu>
parents:
16130
diff
changeset
|
105 } |
8fd18eb8aab7
templates: move Graph.edge() implementation in mercurial.js
Patrick Mezard <patrick@mezard.eu>
parents:
16130
diff
changeset
|
106 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
107 this.render = function(data) { |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
108 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
109 var backgrounds = ''; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
110 var nodedata = ''; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
111 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
112 for (var i in data) { |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
113 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
114 var parity = i % 2; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
115 this.cell[1] += this.bg_height; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
116 this.bg[1] += this.bg_height; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
117 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
118 var cur = data[i]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
119 var node = cur[1]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
120 var edges = cur[2]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
121 var fold = false; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
122 |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
123 var prevWidth = this.ctx.lineWidth; |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
124 for (var j in edges) { |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
125 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
126 line = edges[j]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
127 start = line[0]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
128 end = line[1]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
129 color = line[2]; |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
130 var width = line[3]; |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
131 if(width < 0) |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
132 width = prevWidth; |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
133 var branchcolor = line[4]; |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
134 if(branchcolor) |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
135 color = branchcolor; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
136 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
137 if (end > this.columns || start > this.columns) { |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
138 this.columns += 1; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
139 } |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
140 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
141 if (start == this.columns && start > end) { |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
142 var fold = true; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
143 } |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
144 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
145 x0 = this.cell[0] + this.box_size * start + this.box_size / 2; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
146 y0 = this.bg[1] - this.bg_height / 2; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
147 x1 = this.cell[0] + this.box_size * end + this.box_size / 2; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
148 y1 = this.bg[1] + this.bg_height / 2; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
149 |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
150 this.edge(x0, y0, x1, y1, color, width); |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
151 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
152 } |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
153 this.ctx.lineWidth = prevWidth; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
154 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
155 // Draw the revision node in the right column |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
156 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
157 column = node[0] |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
158 color = node[1] |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
159 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
160 radius = this.box_size / 8; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
161 x = this.cell[0] + this.box_size * column + this.box_size / 2; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
162 y = this.bg[1] - this.bg_height / 2; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
163 var add = this.vertex(x, y, color, parity, cur); |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
164 backgrounds += add[0]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
165 nodedata += add[1]; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
166 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
167 if (fold) this.columns -= 1; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
168 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
169 } |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
170 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
171 document.getElementById('nodebgs').innerHTML += backgrounds; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
172 document.getElementById('graphnodes').innerHTML += nodedata; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
173 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
174 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
175 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
176 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
177 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
178 |
19858
4a8c5a51f7a1
hgweb: add parentSelector argument to process_dates
Alexander Plavin <alexander@plav.in>
parents:
19857
diff
changeset
|
179 function process_dates(parentSelector){ |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
180 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
181 // derived from code from mercurial/templatefilter.py |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
182 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
183 var scales = { |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
184 'year': 365 * 24 * 60 * 60, |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
185 'month': 30 * 24 * 60 * 60, |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
186 'week': 7 * 24 * 60 * 60, |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
187 'day': 24 * 60 * 60, |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
188 'hour': 60 * 60, |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
189 'minute': 60, |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
190 'second': 1 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
191 }; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
192 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
193 function format(count, string){ |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
194 var ret = count + ' ' + string; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
195 if (count > 1){ |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
196 ret = ret + 's'; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
197 } |
14881
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
198 return ret; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
199 } |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
200 |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
201 function shortdate(date){ |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
202 var ret = date.getFullYear() + '-'; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
203 // getMonth() gives a 0-11 result |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
204 var month = date.getMonth() + 1; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
205 if (month <= 9){ |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
206 ret += '0' + month; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
207 } else { |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
208 ret += month; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
209 } |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
210 ret += '-'; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
211 var day = date.getDate(); |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
212 if (day <= 9){ |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
213 ret += '0' + day; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
214 } else { |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
215 ret += day; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
216 } |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
217 return ret; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
218 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
219 |
14881
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
220 function age(datestr){ |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
221 var now = new Date(); |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
222 var once = new Date(datestr); |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
223 if (isNaN(once.getTime())){ |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
224 // parsing error |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
225 return datestr; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
226 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
227 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
228 var delta = Math.floor((now.getTime() - once.getTime()) / 1000); |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
229 |
19834
80633eac7b9d
hgweb: eliminate extra complexity in process_dates definition
Alexander Plavin <alexander@plav.in>
parents:
19782
diff
changeset
|
230 var future = false; |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
231 if (delta < 0){ |
19834
80633eac7b9d
hgweb: eliminate extra complexity in process_dates definition
Alexander Plavin <alexander@plav.in>
parents:
19782
diff
changeset
|
232 future = true; |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
233 delta = -delta; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
234 if (delta > (30 * scales.year)){ |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
235 return "in the distant future"; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
236 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
237 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
238 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
239 if (delta > (2 * scales.year)){ |
14881
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
240 return shortdate(once); |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
241 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
242 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
243 for (unit in scales){ |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
244 var s = scales[unit]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
245 var n = Math.floor(delta / s); |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
246 if ((n >= 2) || (s == 1)){ |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
247 if (future){ |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
248 return format(n, unit) + ' from now'; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
249 } else { |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
250 return format(n, unit) + ' ago'; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
251 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
252 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
253 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
254 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
255 |
19858
4a8c5a51f7a1
hgweb: add parentSelector argument to process_dates
Alexander Plavin <alexander@plav.in>
parents:
19857
diff
changeset
|
256 var nodes = document.querySelectorAll((parentSelector || '') + ' .age'); |
19834
80633eac7b9d
hgweb: eliminate extra complexity in process_dates definition
Alexander Plavin <alexander@plav.in>
parents:
19782
diff
changeset
|
257 var dateclass = new RegExp('\\bdate\\b'); |
80633eac7b9d
hgweb: eliminate extra complexity in process_dates definition
Alexander Plavin <alexander@plav.in>
parents:
19782
diff
changeset
|
258 for (var i=0; i<nodes.length; ++i){ |
80633eac7b9d
hgweb: eliminate extra complexity in process_dates definition
Alexander Plavin <alexander@plav.in>
parents:
19782
diff
changeset
|
259 var node = nodes[i]; |
80633eac7b9d
hgweb: eliminate extra complexity in process_dates definition
Alexander Plavin <alexander@plav.in>
parents:
19782
diff
changeset
|
260 var classes = node.className; |
19857
14fddba036f8
hgweb: optimize process_dates function
Alexander Plavin <alexander@plav.in>
parents:
19834
diff
changeset
|
261 var agevalue = age(node.textContent); |
14fddba036f8
hgweb: optimize process_dates function
Alexander Plavin <alexander@plav.in>
parents:
19834
diff
changeset
|
262 if (dateclass.test(classes)){ |
14fddba036f8
hgweb: optimize process_dates function
Alexander Plavin <alexander@plav.in>
parents:
19834
diff
changeset
|
263 // We want both: date + (age) |
14fddba036f8
hgweb: optimize process_dates function
Alexander Plavin <alexander@plav.in>
parents:
19834
diff
changeset
|
264 node.textContent += ' ('+agevalue+')'; |
14fddba036f8
hgweb: optimize process_dates function
Alexander Plavin <alexander@plav.in>
parents:
19834
diff
changeset
|
265 } else { |
14fddba036f8
hgweb: optimize process_dates function
Alexander Plavin <alexander@plav.in>
parents:
19834
diff
changeset
|
266 node.title = node.textContent; |
14fddba036f8
hgweb: optimize process_dates function
Alexander Plavin <alexander@plav.in>
parents:
19834
diff
changeset
|
267 node.textContent = agevalue; |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
268 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
269 } |
19834
80633eac7b9d
hgweb: eliminate extra complexity in process_dates definition
Alexander Plavin <alexander@plav.in>
parents:
19782
diff
changeset
|
270 } |
14571
17c0cb1045e5
paper, coal: display diffstat on the changeset page
Steven Brown <StevenGBrown@gmail.com>
parents:
14046
diff
changeset
|
271 |
19428
c3cdba6e5d7f
hgweb: toggleDiffstat function instead of showDiffstat and hideDiffstat
Alexander Plavin <me@aplavin.ru>
parents:
17694
diff
changeset
|
272 function toggleDiffstat() { |
c3cdba6e5d7f
hgweb: toggleDiffstat function instead of showDiffstat and hideDiffstat
Alexander Plavin <me@aplavin.ru>
parents:
17694
diff
changeset
|
273 var curdetails = document.getElementById('diffstatdetails').style.display; |
c3cdba6e5d7f
hgweb: toggleDiffstat function instead of showDiffstat and hideDiffstat
Alexander Plavin <me@aplavin.ru>
parents:
17694
diff
changeset
|
274 var curexpand = curdetails == 'none' ? 'inline' : 'none'; |
c3cdba6e5d7f
hgweb: toggleDiffstat function instead of showDiffstat and hideDiffstat
Alexander Plavin <me@aplavin.ru>
parents:
17694
diff
changeset
|
275 document.getElementById('diffstatdetails').style.display = curexpand; |
c3cdba6e5d7f
hgweb: toggleDiffstat function instead of showDiffstat and hideDiffstat
Alexander Plavin <me@aplavin.ru>
parents:
17694
diff
changeset
|
276 document.getElementById('diffstatexpand').style.display = curdetails; |
14571
17c0cb1045e5
paper, coal: display diffstat on the changeset page
Steven Brown <StevenGBrown@gmail.com>
parents:
14046
diff
changeset
|
277 } |
19430
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
278 |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
279 function toggleLinewrap() { |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
280 function getLinewrap() { |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
281 var nodes = document.getElementsByClassName('sourcelines'); |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
282 // if there are no such nodes, error is thrown here |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
283 return nodes[0].classList.contains('wrap'); |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
284 } |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
285 |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
286 function setLinewrap(enable) { |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
287 var nodes = document.getElementsByClassName('sourcelines'); |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
288 for (var i = 0; i < nodes.length; i++) { |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
289 if (enable) { |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
290 nodes[i].classList.add('wrap'); |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
291 } else { |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
292 nodes[i].classList.remove('wrap'); |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
293 } |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
294 } |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
295 |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
296 var links = document.getElementsByClassName('linewraplink'); |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
297 for (var i = 0; i < links.length; i++) { |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
298 links[i].innerHTML = enable ? 'on' : 'off'; |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
299 } |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
300 } |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
301 |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
302 setLinewrap(!getLinewrap()); |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
303 } |
19739
5bdc179e58c1
hgweb: add format javascript function
Alexander Plavin <alexander@plav.in>
parents:
19531
diff
changeset
|
304 |
5bdc179e58c1
hgweb: add format javascript function
Alexander Plavin <alexander@plav.in>
parents:
19531
diff
changeset
|
305 function format(str, replacements) { |
5bdc179e58c1
hgweb: add format javascript function
Alexander Plavin <alexander@plav.in>
parents:
19531
diff
changeset
|
306 return str.replace(/%(\w+)%/g, function(match, p1) { |
5bdc179e58c1
hgweb: add format javascript function
Alexander Plavin <alexander@plav.in>
parents:
19531
diff
changeset
|
307 return String(replacements[p1]); |
5bdc179e58c1
hgweb: add format javascript function
Alexander Plavin <alexander@plav.in>
parents:
19531
diff
changeset
|
308 }); |
5bdc179e58c1
hgweb: add format javascript function
Alexander Plavin <alexander@plav.in>
parents:
19531
diff
changeset
|
309 } |
19740
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
310 |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
311 function makeRequest(url, method, onstart, onsuccess, onerror, oncomplete) { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
312 xfr = new XMLHttpRequest(); |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
313 xfr.onreadystatechange = function() { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
314 if (xfr.readyState === 4) { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
315 try { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
316 if (xfr.status === 200) { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
317 onsuccess(xfr.responseText); |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
318 } else { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
319 throw 'server error'; |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
320 } |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
321 } catch (e) { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
322 onerror(e); |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
323 } finally { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
324 oncomplete(); |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
325 } |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
326 } |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
327 }; |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
328 |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
329 xfr.open(method, url); |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
330 xfr.send(); |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
331 onstart(); |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
332 return xfr; |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
333 } |
19741
2a9a21e1e1db
hgweb: add docFromHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19740
diff
changeset
|
334 |
19742
ac68009c31a4
hgweb: add removeByClassName javascript function
Alexander Plavin <alexander@plav.in>
parents:
19741
diff
changeset
|
335 function removeByClassName(className) { |
ac68009c31a4
hgweb: add removeByClassName javascript function
Alexander Plavin <alexander@plav.in>
parents:
19741
diff
changeset
|
336 var nodes = document.getElementsByClassName(className); |
ac68009c31a4
hgweb: add removeByClassName javascript function
Alexander Plavin <alexander@plav.in>
parents:
19741
diff
changeset
|
337 while (nodes.length) { |
ac68009c31a4
hgweb: add removeByClassName javascript function
Alexander Plavin <alexander@plav.in>
parents:
19741
diff
changeset
|
338 nodes[0].parentNode.removeChild(nodes[0]); |
ac68009c31a4
hgweb: add removeByClassName javascript function
Alexander Plavin <alexander@plav.in>
parents:
19741
diff
changeset
|
339 } |
ac68009c31a4
hgweb: add removeByClassName javascript function
Alexander Plavin <alexander@plav.in>
parents:
19741
diff
changeset
|
340 } |
ac68009c31a4
hgweb: add removeByClassName javascript function
Alexander Plavin <alexander@plav.in>
parents:
19741
diff
changeset
|
341 |
19741
2a9a21e1e1db
hgweb: add docFromHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19740
diff
changeset
|
342 function docFromHTML(html) { |
2a9a21e1e1db
hgweb: add docFromHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19740
diff
changeset
|
343 var doc = document.implementation.createHTMLDocument(''); |
2a9a21e1e1db
hgweb: add docFromHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19740
diff
changeset
|
344 doc.documentElement.innerHTML = html; |
2a9a21e1e1db
hgweb: add docFromHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19740
diff
changeset
|
345 return doc; |
2a9a21e1e1db
hgweb: add docFromHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19740
diff
changeset
|
346 } |
19743
fdd41257def8
hgweb: add appendFormatHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19742
diff
changeset
|
347 |
fdd41257def8
hgweb: add appendFormatHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19742
diff
changeset
|
348 function appendFormatHTML(element, formatStr, replacements) { |
fdd41257def8
hgweb: add appendFormatHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19742
diff
changeset
|
349 element.insertAdjacentHTML('beforeend', format(formatStr, replacements)); |
fdd41257def8
hgweb: add appendFormatHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19742
diff
changeset
|
350 } |
19746
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
351 |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
352 function ajaxScrollInit(urlFormat, |
19781
74564c90026b
hgweb: make infinite scroll handling more generic and extensible
Alexander Plavin <alexander@plav.in>
parents:
19780
diff
changeset
|
353 nextPageVar, |
74564c90026b
hgweb: make infinite scroll handling more generic and extensible
Alexander Plavin <alexander@plav.in>
parents:
19780
diff
changeset
|
354 nextPageVarGet, |
19746
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
355 containerSelector, |
19782
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
356 messageFormat, |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
357 mode) { |
19746
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
358 updateInitiated = false; |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
359 container = document.querySelector(containerSelector); |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
360 |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
361 function scrollHandler() { |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
362 if (updateInitiated) { |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
363 return; |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
364 } |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
365 |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
366 var scrollHeight = document.documentElement.scrollHeight; |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
367 var clientHeight = document.documentElement.clientHeight; |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
368 var scrollTop = document.body.scrollTop |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
369 || document.documentElement.scrollTop; |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
370 |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
371 if (scrollHeight - (scrollTop + clientHeight) < 50) { |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
372 updateInitiated = true; |
19756
54981b899406
hgweb: show message when an error occured during ajax loading
Alexander Plavin <alexander@plav.in>
parents:
19755
diff
changeset
|
373 removeByClassName('scroll-loading-error'); |
19760
2ac4e89ad769
hgweb: add CSS class to the last entry on a page
Alexander Plavin <alexander@plav.in>
parents:
19756
diff
changeset
|
374 container.lastElementChild.classList.add('scroll-separator'); |
19746
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
375 |
19781
74564c90026b
hgweb: make infinite scroll handling more generic and extensible
Alexander Plavin <alexander@plav.in>
parents:
19780
diff
changeset
|
376 if (!nextPageVar) { |
19754
c35e8805cf53
hgweb: show a message when there are no more entries in the list
Alexander Plavin <alexander@plav.in>
parents:
19746
diff
changeset
|
377 var message = { |
c35e8805cf53
hgweb: show a message when there are no more entries in the list
Alexander Plavin <alexander@plav.in>
parents:
19746
diff
changeset
|
378 class: 'scroll-loading-info', |
c35e8805cf53
hgweb: show a message when there are no more entries in the list
Alexander Plavin <alexander@plav.in>
parents:
19746
diff
changeset
|
379 text: 'No more entries' |
c35e8805cf53
hgweb: show a message when there are no more entries in the list
Alexander Plavin <alexander@plav.in>
parents:
19746
diff
changeset
|
380 }; |
c35e8805cf53
hgweb: show a message when there are no more entries in the list
Alexander Plavin <alexander@plav.in>
parents:
19746
diff
changeset
|
381 appendFormatHTML(container, messageFormat, message); |
19746
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
382 return; |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
383 } |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
384 |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
385 makeRequest( |
19781
74564c90026b
hgweb: make infinite scroll handling more generic and extensible
Alexander Plavin <alexander@plav.in>
parents:
19780
diff
changeset
|
386 format(urlFormat, {next: nextPageVar}), |
19746
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
387 'GET', |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
388 function onstart() { |
19755
00b9f6aab761
hgweb: show loading indicator while an ajax request is in process
Alexander Plavin <alexander@plav.in>
parents:
19754
diff
changeset
|
389 var message = { |
00b9f6aab761
hgweb: show loading indicator while an ajax request is in process
Alexander Plavin <alexander@plav.in>
parents:
19754
diff
changeset
|
390 class: 'scroll-loading', |
00b9f6aab761
hgweb: show loading indicator while an ajax request is in process
Alexander Plavin <alexander@plav.in>
parents:
19754
diff
changeset
|
391 text: 'Loading...' |
00b9f6aab761
hgweb: show loading indicator while an ajax request is in process
Alexander Plavin <alexander@plav.in>
parents:
19754
diff
changeset
|
392 }; |
00b9f6aab761
hgweb: show loading indicator while an ajax request is in process
Alexander Plavin <alexander@plav.in>
parents:
19754
diff
changeset
|
393 appendFormatHTML(container, messageFormat, message); |
19746
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
394 }, |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
395 function onsuccess(htmlText) { |
19782
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
396 if (mode == 'graph') { |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
397 var addHeight = htmlText.match(/^<canvas id="graph".*height="(\d+)"><\/canvas>$/m)[1]; |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
398 addHeight = parseInt(addHeight); |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
399 graph.canvas.height = addHeight; |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
400 |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
401 var dataStr = htmlText.match(/^\s*var data = (.*);$/m)[1]; |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
402 var data = JSON.parse(dataStr) |
19907
aebfbb68fe92
hgweb: fix unstoppable loading of graph when no more results
Alexander Plavin <alexander@plav.in>
parents:
19859
diff
changeset
|
403 if (data.length < nextPageVar) { |
aebfbb68fe92
hgweb: fix unstoppable loading of graph when no more results
Alexander Plavin <alexander@plav.in>
parents:
19859
diff
changeset
|
404 nextPageVar = undefined; |
aebfbb68fe92
hgweb: fix unstoppable loading of graph when no more results
Alexander Plavin <alexander@plav.in>
parents:
19859
diff
changeset
|
405 } |
19782
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
406 graph.reset(); |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
407 graph.render(data); |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
408 } else { |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
409 var doc = docFromHTML(htmlText); |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
410 var nodes = doc.querySelector(containerSelector).children; |
19859
5ba3cf17da9e
hgweb: call process_dates with a specified selector in ajax scroll
Alexander Plavin <alexander@plav.in>
parents:
19858
diff
changeset
|
411 var curClass = 'c' + Date.now(); |
19782
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
412 while (nodes.length) { |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
413 var node = nodes[0]; |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
414 node = document.adoptNode(node); |
19859
5ba3cf17da9e
hgweb: call process_dates with a specified selector in ajax scroll
Alexander Plavin <alexander@plav.in>
parents:
19858
diff
changeset
|
415 node.classList.add(curClass); |
19782
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
416 container.appendChild(node); |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
417 } |
19859
5ba3cf17da9e
hgweb: call process_dates with a specified selector in ajax scroll
Alexander Plavin <alexander@plav.in>
parents:
19858
diff
changeset
|
418 process_dates('.' + curClass); |
19746
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
419 } |
19907
aebfbb68fe92
hgweb: fix unstoppable loading of graph when no more results
Alexander Plavin <alexander@plav.in>
parents:
19859
diff
changeset
|
420 |
aebfbb68fe92
hgweb: fix unstoppable loading of graph when no more results
Alexander Plavin <alexander@plav.in>
parents:
19859
diff
changeset
|
421 nextPageVar = nextPageVarGet(htmlText, nextPageVar); |
19746
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
422 }, |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
423 function onerror(errorText) { |
19756
54981b899406
hgweb: show message when an error occured during ajax loading
Alexander Plavin <alexander@plav.in>
parents:
19755
diff
changeset
|
424 var message = { |
54981b899406
hgweb: show message when an error occured during ajax loading
Alexander Plavin <alexander@plav.in>
parents:
19755
diff
changeset
|
425 class: 'scroll-loading-error', |
54981b899406
hgweb: show message when an error occured during ajax loading
Alexander Plavin <alexander@plav.in>
parents:
19755
diff
changeset
|
426 text: 'Error: ' + errorText |
54981b899406
hgweb: show message when an error occured during ajax loading
Alexander Plavin <alexander@plav.in>
parents:
19755
diff
changeset
|
427 }; |
54981b899406
hgweb: show message when an error occured during ajax loading
Alexander Plavin <alexander@plav.in>
parents:
19755
diff
changeset
|
428 appendFormatHTML(container, messageFormat, message); |
19746
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
429 }, |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
430 function oncomplete() { |
19755
00b9f6aab761
hgweb: show loading indicator while an ajax request is in process
Alexander Plavin <alexander@plav.in>
parents:
19754
diff
changeset
|
431 removeByClassName('scroll-loading'); |
19746
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
432 updateInitiated = false; |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
433 scrollHandler(); |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
434 } |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
435 ); |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
436 } |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
437 } |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
438 |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
439 window.addEventListener('scroll', scrollHandler); |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
440 window.addEventListener('resize', scrollHandler); |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
441 scrollHandler(); |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
442 } |