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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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);