Mercurial > hg
annotate mercurial/templates/static/mercurial.js @ 30765:eb7de21b15be
hgweb: call process_dates() via DOM event listener
All the hgweb templates include mercurial.js in their header. All
the hgweb templates have the same <script> boilerplate to run
process_dates(). This patch factors that function call into
mercurial.js as part of a DOMContentLoaded event listener.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Tue, 10 Jan 2017 20:47:48 -0800 |
parents | 1779ff7426c9 |
children | 6797f1fbc642 |
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 this.setColor = function(color, bg, fg) { |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
54 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
55 // Set the colour. |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
56 // |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
57 // If color is a string, expect an hexadecimal RGB |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
58 // 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
|
59 // pick a distinct colour based on an internal wheel; |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
60 // the bg parameter provides the value that should be |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
61 // assigned to the 'zero' colours and the fg parameter |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
62 // provides the multiplier that should be applied to |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
63 // the foreground colours. |
16130
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
64 var s; |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
65 if(typeof color == "string") { |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
66 s = "#" + color; |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
67 } else { //typeof color == "number" |
16130
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
68 color %= colors.length; |
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
69 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
|
70 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
|
71 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
|
72 red = Math.round(red * 255); |
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
73 green = Math.round(green * 255); |
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
74 blue = Math.round(blue * 255); |
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
75 s = 'rgb(' + red + ', ' + green + ', ' + blue + ')'; |
33f702e52906
graph: in hgrc specify line color for main branch
Constantine Linnick <theaspect@gmail.com>
parents:
16129
diff
changeset
|
76 } |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
77 this.ctx.strokeStyle = s; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
78 this.ctx.fillStyle = s; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
79 return s; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
80 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
81 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
82 |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
83 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
|
84 |
16137
8fd18eb8aab7
templates: move Graph.edge() implementation in mercurial.js
Patrick Mezard <patrick@mezard.eu>
parents:
16130
diff
changeset
|
85 this.setColor(color, 0.0, 0.65); |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
86 if(width >= 0) |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
87 this.ctx.lineWidth = width; |
16137
8fd18eb8aab7
templates: move Graph.edge() implementation in mercurial.js
Patrick Mezard <patrick@mezard.eu>
parents:
16130
diff
changeset
|
88 this.ctx.beginPath(); |
8fd18eb8aab7
templates: move Graph.edge() implementation in mercurial.js
Patrick Mezard <patrick@mezard.eu>
parents:
16130
diff
changeset
|
89 this.ctx.moveTo(x0, y0); |
8fd18eb8aab7
templates: move Graph.edge() implementation in mercurial.js
Patrick Mezard <patrick@mezard.eu>
parents:
16130
diff
changeset
|
90 this.ctx.lineTo(x1, y1); |
8fd18eb8aab7
templates: move Graph.edge() implementation in mercurial.js
Patrick Mezard <patrick@mezard.eu>
parents:
16130
diff
changeset
|
91 this.ctx.stroke(); |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
92 |
16137
8fd18eb8aab7
templates: move Graph.edge() implementation in mercurial.js
Patrick Mezard <patrick@mezard.eu>
parents:
16130
diff
changeset
|
93 } |
8fd18eb8aab7
templates: move Graph.edge() implementation in mercurial.js
Patrick Mezard <patrick@mezard.eu>
parents:
16130
diff
changeset
|
94 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
95 this.render = function(data) { |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
96 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
97 var backgrounds = ''; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
98 var nodedata = ''; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
99 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
100 for (var i in data) { |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
101 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
102 var parity = i % 2; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
103 this.cell[1] += this.bg_height; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
104 this.bg[1] += this.bg_height; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
105 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
106 var cur = data[i]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
107 var node = cur[1]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
108 var edges = cur[2]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
109 var fold = false; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
110 |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
111 var prevWidth = this.ctx.lineWidth; |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
112 for (var j in edges) { |
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 line = edges[j]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
115 start = line[0]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
116 end = line[1]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
117 color = line[2]; |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
118 var width = line[3]; |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
119 if(width < 0) |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
120 width = prevWidth; |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
121 var branchcolor = line[4]; |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
122 if(branchcolor) |
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
123 color = branchcolor; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
124 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
125 if (end > this.columns || start > this.columns) { |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
126 this.columns += 1; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
127 } |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
128 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
129 if (start == this.columns && start > end) { |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
130 var fold = true; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
131 } |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
132 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
133 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
|
134 y0 = this.bg[1] - this.bg_height / 2; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
135 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
|
136 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
|
137 |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
138 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
|
139 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
140 } |
16138
6e4de55a41a4
hgweb: refactor graph customization javascript
Patrick Mezard <patrick@mezard.eu>
parents:
16137
diff
changeset
|
141 this.ctx.lineWidth = prevWidth; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
142 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
143 // 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
|
144 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
145 column = node[0] |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
146 color = node[1] |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
147 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
148 radius = this.box_size / 8; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
149 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
|
150 y = this.bg[1] - this.bg_height / 2; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
151 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
|
152 backgrounds += add[0]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
153 nodedata += add[1]; |
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 if (fold) this.columns -= 1; |
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 } |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
158 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
159 document.getElementById('nodebgs').innerHTML += backgrounds; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
160 document.getElementById('graphnodes').innerHTML += nodedata; |
19530
a63d3ff0d765
hgweb: remove trailing whitespace in mercurial.js
Kevin Bullock <kbullock@ringworld.org>
parents:
19430
diff
changeset
|
161 |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
162 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
163 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
164 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
165 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
166 |
19858
4a8c5a51f7a1
hgweb: add parentSelector argument to process_dates
Alexander Plavin <alexander@plav.in>
parents:
19857
diff
changeset
|
167 function process_dates(parentSelector){ |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
168 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
169 // derived from code from mercurial/templatefilter.py |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
170 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
171 var scales = { |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
172 'year': 365 * 24 * 60 * 60, |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
173 'month': 30 * 24 * 60 * 60, |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
174 'week': 7 * 24 * 60 * 60, |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
175 'day': 24 * 60 * 60, |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
176 'hour': 60 * 60, |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
177 'minute': 60, |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
178 'second': 1 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
179 }; |
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 function format(count, string){ |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
182 var ret = count + ' ' + string; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
183 if (count > 1){ |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
184 ret = ret + 's'; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
185 } |
14881
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
186 return ret; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
187 } |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
188 |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
189 function shortdate(date){ |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
190 var ret = date.getFullYear() + '-'; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
191 // 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
|
192 var month = date.getMonth() + 1; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
193 if (month <= 9){ |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
194 ret += '0' + month; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
195 } else { |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
196 ret += month; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
197 } |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
198 ret += '-'; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
199 var day = date.getDate(); |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
200 if (day <= 9){ |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
201 ret += '0' + day; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
202 } else { |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
203 ret += day; |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
204 } |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
205 return ret; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
206 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
207 |
14881
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
208 function age(datestr){ |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
209 var now = new Date(); |
2e54387976d4
web: Output a correct date in short format (issue2902)
Benoit Allard <benoit@aeteurope.nl>
parents:
14571
diff
changeset
|
210 var once = new Date(datestr); |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
211 if (isNaN(once.getTime())){ |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
212 // parsing error |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
213 return datestr; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
214 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
215 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
216 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
|
217 |
19834
80633eac7b9d
hgweb: eliminate extra complexity in process_dates definition
Alexander Plavin <alexander@plav.in>
parents:
19782
diff
changeset
|
218 var future = false; |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
219 if (delta < 0){ |
19834
80633eac7b9d
hgweb: eliminate extra complexity in process_dates definition
Alexander Plavin <alexander@plav.in>
parents:
19782
diff
changeset
|
220 future = true; |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
221 delta = -delta; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
222 if (delta > (30 * scales.year)){ |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
223 return "in the distant future"; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
224 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
225 } |
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 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
|
228 return shortdate(once); |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
229 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
230 |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
231 for (unit in scales){ |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
232 var s = scales[unit]; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
233 var n = Math.floor(delta / s); |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
234 if ((n >= 2) || (s == 1)){ |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
235 if (future){ |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
236 return format(n, unit) + ' from now'; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
237 } else { |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
238 return format(n, unit) + ' ago'; |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
239 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
240 } |
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 |
19858
4a8c5a51f7a1
hgweb: add parentSelector argument to process_dates
Alexander Plavin <alexander@plav.in>
parents:
19857
diff
changeset
|
244 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
|
245 var dateclass = new RegExp('\\bdate\\b'); |
80633eac7b9d
hgweb: eliminate extra complexity in process_dates definition
Alexander Plavin <alexander@plav.in>
parents:
19782
diff
changeset
|
246 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
|
247 var node = nodes[i]; |
80633eac7b9d
hgweb: eliminate extra complexity in process_dates definition
Alexander Plavin <alexander@plav.in>
parents:
19782
diff
changeset
|
248 var classes = node.className; |
19857
14fddba036f8
hgweb: optimize process_dates function
Alexander Plavin <alexander@plav.in>
parents:
19834
diff
changeset
|
249 var agevalue = age(node.textContent); |
14fddba036f8
hgweb: optimize process_dates function
Alexander Plavin <alexander@plav.in>
parents:
19834
diff
changeset
|
250 if (dateclass.test(classes)){ |
14fddba036f8
hgweb: optimize process_dates function
Alexander Plavin <alexander@plav.in>
parents:
19834
diff
changeset
|
251 // We want both: date + (age) |
14fddba036f8
hgweb: optimize process_dates function
Alexander Plavin <alexander@plav.in>
parents:
19834
diff
changeset
|
252 node.textContent += ' ('+agevalue+')'; |
14fddba036f8
hgweb: optimize process_dates function
Alexander Plavin <alexander@plav.in>
parents:
19834
diff
changeset
|
253 } else { |
14fddba036f8
hgweb: optimize process_dates function
Alexander Plavin <alexander@plav.in>
parents:
19834
diff
changeset
|
254 node.title = node.textContent; |
14fddba036f8
hgweb: optimize process_dates function
Alexander Plavin <alexander@plav.in>
parents:
19834
diff
changeset
|
255 node.textContent = agevalue; |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
256 } |
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
257 } |
19834
80633eac7b9d
hgweb: eliminate extra complexity in process_dates definition
Alexander Plavin <alexander@plav.in>
parents:
19782
diff
changeset
|
258 } |
14571
17c0cb1045e5
paper, coal: display diffstat on the changeset page
Steven Brown <StevenGBrown@gmail.com>
parents:
14046
diff
changeset
|
259 |
19428
c3cdba6e5d7f
hgweb: toggleDiffstat function instead of showDiffstat and hideDiffstat
Alexander Plavin <me@aplavin.ru>
parents:
17694
diff
changeset
|
260 function toggleDiffstat() { |
c3cdba6e5d7f
hgweb: toggleDiffstat function instead of showDiffstat and hideDiffstat
Alexander Plavin <me@aplavin.ru>
parents:
17694
diff
changeset
|
261 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
|
262 var curexpand = curdetails == 'none' ? 'inline' : 'none'; |
c3cdba6e5d7f
hgweb: toggleDiffstat function instead of showDiffstat and hideDiffstat
Alexander Plavin <me@aplavin.ru>
parents:
17694
diff
changeset
|
263 document.getElementById('diffstatdetails').style.display = curexpand; |
c3cdba6e5d7f
hgweb: toggleDiffstat function instead of showDiffstat and hideDiffstat
Alexander Plavin <me@aplavin.ru>
parents:
17694
diff
changeset
|
264 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
|
265 } |
19430
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
266 |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
267 function toggleLinewrap() { |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
268 function getLinewrap() { |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
269 var nodes = document.getElementsByClassName('sourcelines'); |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
270 // 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
|
271 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
|
272 } |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
273 |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
274 function setLinewrap(enable) { |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
275 var nodes = document.getElementsByClassName('sourcelines'); |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
276 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
|
277 if (enable) { |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
278 nodes[i].classList.add('wrap'); |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
279 } else { |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
280 nodes[i].classList.remove('wrap'); |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
281 } |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
282 } |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
283 |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
284 var links = document.getElementsByClassName('linewraplink'); |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
285 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
|
286 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
|
287 } |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
288 } |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
289 |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
290 setLinewrap(!getLinewrap()); |
5ec5097b4c0f
hgweb: add line wrapping switch to file source view
Alexander Plavin <me@aplavin.ru>
parents:
19428
diff
changeset
|
291 } |
19739
5bdc179e58c1
hgweb: add format javascript function
Alexander Plavin <alexander@plav.in>
parents:
19531
diff
changeset
|
292 |
5bdc179e58c1
hgweb: add format javascript function
Alexander Plavin <alexander@plav.in>
parents:
19531
diff
changeset
|
293 function format(str, replacements) { |
5bdc179e58c1
hgweb: add format javascript function
Alexander Plavin <alexander@plav.in>
parents:
19531
diff
changeset
|
294 return str.replace(/%(\w+)%/g, function(match, p1) { |
5bdc179e58c1
hgweb: add format javascript function
Alexander Plavin <alexander@plav.in>
parents:
19531
diff
changeset
|
295 return String(replacements[p1]); |
5bdc179e58c1
hgweb: add format javascript function
Alexander Plavin <alexander@plav.in>
parents:
19531
diff
changeset
|
296 }); |
5bdc179e58c1
hgweb: add format javascript function
Alexander Plavin <alexander@plav.in>
parents:
19531
diff
changeset
|
297 } |
19740
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
298 |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
299 function makeRequest(url, method, onstart, onsuccess, onerror, oncomplete) { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
300 xfr = new XMLHttpRequest(); |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
301 xfr.onreadystatechange = function() { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
302 if (xfr.readyState === 4) { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
303 try { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
304 if (xfr.status === 200) { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
305 onsuccess(xfr.responseText); |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
306 } else { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
307 throw 'server error'; |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
308 } |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
309 } catch (e) { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
310 onerror(e); |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
311 } finally { |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
312 oncomplete(); |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
313 } |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
314 } |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
315 }; |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
316 |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
317 xfr.open(method, url); |
20973
55543ee545ab
hgweb: override the charset attribute in the http request
Wei, Elson <elson.wei@gmail.com>
parents:
20252
diff
changeset
|
318 xfr.overrideMimeType("text/xhtml; charset=" + document.characterSet.toLowerCase()); |
19740
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
319 xfr.send(); |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
320 onstart(); |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
321 return xfr; |
2228bd109706
hgweb: add makeRequest javascript function
Alexander Plavin <alexander@plav.in>
parents:
19739
diff
changeset
|
322 } |
19741
2a9a21e1e1db
hgweb: add docFromHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19740
diff
changeset
|
323 |
19742
ac68009c31a4
hgweb: add removeByClassName javascript function
Alexander Plavin <alexander@plav.in>
parents:
19741
diff
changeset
|
324 function removeByClassName(className) { |
ac68009c31a4
hgweb: add removeByClassName javascript function
Alexander Plavin <alexander@plav.in>
parents:
19741
diff
changeset
|
325 var nodes = document.getElementsByClassName(className); |
ac68009c31a4
hgweb: add removeByClassName javascript function
Alexander Plavin <alexander@plav.in>
parents:
19741
diff
changeset
|
326 while (nodes.length) { |
ac68009c31a4
hgweb: add removeByClassName javascript function
Alexander Plavin <alexander@plav.in>
parents:
19741
diff
changeset
|
327 nodes[0].parentNode.removeChild(nodes[0]); |
ac68009c31a4
hgweb: add removeByClassName javascript function
Alexander Plavin <alexander@plav.in>
parents:
19741
diff
changeset
|
328 } |
ac68009c31a4
hgweb: add removeByClassName javascript function
Alexander Plavin <alexander@plav.in>
parents:
19741
diff
changeset
|
329 } |
ac68009c31a4
hgweb: add removeByClassName javascript function
Alexander Plavin <alexander@plav.in>
parents:
19741
diff
changeset
|
330 |
19741
2a9a21e1e1db
hgweb: add docFromHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19740
diff
changeset
|
331 function docFromHTML(html) { |
2a9a21e1e1db
hgweb: add docFromHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19740
diff
changeset
|
332 var doc = document.implementation.createHTMLDocument(''); |
2a9a21e1e1db
hgweb: add docFromHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19740
diff
changeset
|
333 doc.documentElement.innerHTML = html; |
2a9a21e1e1db
hgweb: add docFromHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19740
diff
changeset
|
334 return doc; |
2a9a21e1e1db
hgweb: add docFromHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19740
diff
changeset
|
335 } |
19743
fdd41257def8
hgweb: add appendFormatHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19742
diff
changeset
|
336 |
fdd41257def8
hgweb: add appendFormatHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19742
diff
changeset
|
337 function appendFormatHTML(element, formatStr, replacements) { |
fdd41257def8
hgweb: add appendFormatHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19742
diff
changeset
|
338 element.insertAdjacentHTML('beforeend', format(formatStr, replacements)); |
fdd41257def8
hgweb: add appendFormatHTML javascript function
Alexander Plavin <alexander@plav.in>
parents:
19742
diff
changeset
|
339 } |
19746
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
340 |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
341 function ajaxScrollInit(urlFormat, |
19781
74564c90026b
hgweb: make infinite scroll handling more generic and extensible
Alexander Plavin <alexander@plav.in>
parents:
19780
diff
changeset
|
342 nextPageVar, |
74564c90026b
hgweb: make infinite scroll handling more generic and extensible
Alexander Plavin <alexander@plav.in>
parents:
19780
diff
changeset
|
343 nextPageVarGet, |
19746
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
344 containerSelector, |
19782
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
345 messageFormat, |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
346 mode) { |
19746
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
347 updateInitiated = false; |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
348 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
|
349 |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
350 function scrollHandler() { |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
351 if (updateInitiated) { |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
352 return; |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
353 } |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
354 |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
355 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
|
356 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
|
357 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
|
358 || document.documentElement.scrollTop; |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
359 |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
360 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
|
361 updateInitiated = true; |
19756
54981b899406
hgweb: show message when an error occured during ajax loading
Alexander Plavin <alexander@plav.in>
parents:
19755
diff
changeset
|
362 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
|
363 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
|
364 |
19781
74564c90026b
hgweb: make infinite scroll handling more generic and extensible
Alexander Plavin <alexander@plav.in>
parents:
19780
diff
changeset
|
365 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
|
366 var message = { |
26832
3ed635cb108e
hgweb: escape class keyword when used as a js object property (issue4913)
Anton Shestakov <av6@dwimlabs.net>
parents:
20973
diff
changeset
|
367 'class': 'scroll-loading-info', |
19754
c35e8805cf53
hgweb: show a message when there are no more entries in the list
Alexander Plavin <alexander@plav.in>
parents:
19746
diff
changeset
|
368 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
|
369 }; |
c35e8805cf53
hgweb: show a message when there are no more entries in the list
Alexander Plavin <alexander@plav.in>
parents:
19746
diff
changeset
|
370 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
|
371 return; |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
372 } |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
373 |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
374 makeRequest( |
19781
74564c90026b
hgweb: make infinite scroll handling more generic and extensible
Alexander Plavin <alexander@plav.in>
parents:
19780
diff
changeset
|
375 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
|
376 'GET', |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
377 function onstart() { |
19755
00b9f6aab761
hgweb: show loading indicator while an ajax request is in process
Alexander Plavin <alexander@plav.in>
parents:
19754
diff
changeset
|
378 var message = { |
26832
3ed635cb108e
hgweb: escape class keyword when used as a js object property (issue4913)
Anton Shestakov <av6@dwimlabs.net>
parents:
20973
diff
changeset
|
379 'class': 'scroll-loading', |
19755
00b9f6aab761
hgweb: show loading indicator while an ajax request is in process
Alexander Plavin <alexander@plav.in>
parents:
19754
diff
changeset
|
380 text: 'Loading...' |
00b9f6aab761
hgweb: show loading indicator while an ajax request is in process
Alexander Plavin <alexander@plav.in>
parents:
19754
diff
changeset
|
381 }; |
00b9f6aab761
hgweb: show loading indicator while an ajax request is in process
Alexander Plavin <alexander@plav.in>
parents:
19754
diff
changeset
|
382 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
|
383 }, |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
384 function onsuccess(htmlText) { |
19782
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
385 if (mode == 'graph') { |
27934
1779ff7426c9
hgweb: update canvas.width before dynamically redrawing graph (issue2683)
Anton Shestakov <av6@dwimlabs.net>
parents:
26867
diff
changeset
|
386 var sizes = htmlText.match(/^\s*<canvas id="graph" width="(\d+)" height="(\d+)"><\/canvas>$/m); |
1779ff7426c9
hgweb: update canvas.width before dynamically redrawing graph (issue2683)
Anton Shestakov <av6@dwimlabs.net>
parents:
26867
diff
changeset
|
387 var addWidth = sizes[1]; |
1779ff7426c9
hgweb: update canvas.width before dynamically redrawing graph (issue2683)
Anton Shestakov <av6@dwimlabs.net>
parents:
26867
diff
changeset
|
388 var addHeight = sizes[2]; |
1779ff7426c9
hgweb: update canvas.width before dynamically redrawing graph (issue2683)
Anton Shestakov <av6@dwimlabs.net>
parents:
26867
diff
changeset
|
389 addWidth = parseInt(addWidth); |
19782
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
390 addHeight = parseInt(addHeight); |
27934
1779ff7426c9
hgweb: update canvas.width before dynamically redrawing graph (issue2683)
Anton Shestakov <av6@dwimlabs.net>
parents:
26867
diff
changeset
|
391 graph.canvas.width = addWidth; |
19782
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
392 graph.canvas.height = addHeight; |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
393 |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
394 var dataStr = htmlText.match(/^\s*var data = (.*);$/m)[1]; |
19957
80aa912dcb2d
hgweb: add missing semicolon
Takumi IINO <trot.thunder@gmail.com>
parents:
19907
diff
changeset
|
395 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
|
396 if (data.length < nextPageVar) { |
aebfbb68fe92
hgweb: fix unstoppable loading of graph when no more results
Alexander Plavin <alexander@plav.in>
parents:
19859
diff
changeset
|
397 nextPageVar = undefined; |
aebfbb68fe92
hgweb: fix unstoppable loading of graph when no more results
Alexander Plavin <alexander@plav.in>
parents:
19859
diff
changeset
|
398 } |
19782
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
399 graph.reset(); |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
400 graph.render(data); |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
401 } else { |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
402 var doc = docFromHTML(htmlText); |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
403 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
|
404 var curClass = 'c' + Date.now(); |
19782
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
405 while (nodes.length) { |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
406 var node = nodes[0]; |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
407 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
|
408 node.classList.add(curClass); |
19782
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
409 container.appendChild(node); |
8123f50555ff
hgweb: add graph mode of ajax response processing
Alexander Plavin <alexander@plav.in>
parents:
19781
diff
changeset
|
410 } |
19859
5ba3cf17da9e
hgweb: call process_dates with a specified selector in ajax scroll
Alexander Plavin <alexander@plav.in>
parents:
19858
diff
changeset
|
411 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
|
412 } |
19907
aebfbb68fe92
hgweb: fix unstoppable loading of graph when no more results
Alexander Plavin <alexander@plav.in>
parents:
19859
diff
changeset
|
413 |
aebfbb68fe92
hgweb: fix unstoppable loading of graph when no more results
Alexander Plavin <alexander@plav.in>
parents:
19859
diff
changeset
|
414 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
|
415 }, |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
416 function onerror(errorText) { |
19756
54981b899406
hgweb: show message when an error occured during ajax loading
Alexander Plavin <alexander@plav.in>
parents:
19755
diff
changeset
|
417 var message = { |
26832
3ed635cb108e
hgweb: escape class keyword when used as a js object property (issue4913)
Anton Shestakov <av6@dwimlabs.net>
parents:
20973
diff
changeset
|
418 'class': 'scroll-loading-error', |
19756
54981b899406
hgweb: show message when an error occured during ajax loading
Alexander Plavin <alexander@plav.in>
parents:
19755
diff
changeset
|
419 text: 'Error: ' + errorText |
54981b899406
hgweb: show message when an error occured during ajax loading
Alexander Plavin <alexander@plav.in>
parents:
19755
diff
changeset
|
420 }; |
54981b899406
hgweb: show message when an error occured during ajax loading
Alexander Plavin <alexander@plav.in>
parents:
19755
diff
changeset
|
421 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
|
422 }, |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
423 function oncomplete() { |
19755
00b9f6aab761
hgweb: show loading indicator while an ajax request is in process
Alexander Plavin <alexander@plav.in>
parents:
19754
diff
changeset
|
424 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
|
425 updateInitiated = false; |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
426 scrollHandler(); |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
427 } |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
428 ); |
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 } |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
431 |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
432 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
|
433 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
|
434 scrollHandler(); |
9ad7dd9574a9
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
Alexander Plavin <alexander@plav.in>
parents:
19743
diff
changeset
|
435 } |
30765
eb7de21b15be
hgweb: call process_dates() via DOM event listener
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27934
diff
changeset
|
436 |
eb7de21b15be
hgweb: call process_dates() via DOM event listener
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27934
diff
changeset
|
437 document.addEventListener('DOMContentLoaded', function() { |
eb7de21b15be
hgweb: call process_dates() via DOM event listener
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27934
diff
changeset
|
438 process_dates(); |
eb7de21b15be
hgweb: call process_dates() via DOM event listener
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27934
diff
changeset
|
439 }, false); |