author | Lars Hjemli <hjemli@gmail.com> | 2008-12-06 16:38:19 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2008-12-06 16:38:19 (UTC) |
commit | f86a23ff537258d36bf8f1876fa7a4bede6673d8 (patch) (unidiff) | |
tree | 8328d415416058cdc5b0fd2c6564ddcab5766c7a /cgit.css | |
parent | 140012d7a8e51df5a9f9c556696778b86ade4fc9 (diff) | |
download | cgit-f86a23ff537258d36bf8f1876fa7a4bede6673d8.zip cgit-f86a23ff537258d36bf8f1876fa7a4bede6673d8.tar.gz cgit-f86a23ff537258d36bf8f1876fa7a4bede6673d8.tar.bz2 |
Add a 'stats' page to each repo
This new page, which is disabled by default, can be used to print some
statistics about the number of commits per period in the repository,
where period can be either weeks, months, quarters or years.
The function can be activated globally by setting 'enable-stats=1' in
cgitrc and disabled for individual repos by setting 'repo.enable-stats=0'.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | cgit.css | 77 |
1 files changed, 77 insertions, 0 deletions
@@ -75,384 +75,461 @@ table.tabs td { | |||
75 | padding: 0px 1em; | 75 | padding: 0px 1em; |
76 | vertical-align: bottom; | 76 | vertical-align: bottom; |
77 | } | 77 | } |
78 | 78 | ||
79 | table.tabs td a { | 79 | table.tabs td a { |
80 | padding: 2px 0.75em; | 80 | padding: 2px 0.75em; |
81 | color: #777; | 81 | color: #777; |
82 | font-size: 110%; | 82 | font-size: 110%; |
83 | } | 83 | } |
84 | 84 | ||
85 | table.tabs td a.active { | 85 | table.tabs td a.active { |
86 | color: #000; | 86 | color: #000; |
87 | background-color: #ccc; | 87 | background-color: #ccc; |
88 | } | 88 | } |
89 | 89 | ||
90 | table.tabs td.form { | 90 | table.tabs td.form { |
91 | text-align: right; | 91 | text-align: right; |
92 | } | 92 | } |
93 | 93 | ||
94 | table.tabs td.form form { | 94 | table.tabs td.form form { |
95 | padding-bottom: 2px; | 95 | padding-bottom: 2px; |
96 | font-size: 90%; | 96 | font-size: 90%; |
97 | white-space: nowrap; | 97 | white-space: nowrap; |
98 | } | 98 | } |
99 | 99 | ||
100 | table.tabs td.form input, | 100 | table.tabs td.form input, |
101 | table.tabs td.form select { | 101 | table.tabs td.form select { |
102 | font-size: 90%; | 102 | font-size: 90%; |
103 | } | 103 | } |
104 | 104 | ||
105 | div.content { | 105 | div.content { |
106 | margin: 0px; | 106 | margin: 0px; |
107 | padding: 2em; | 107 | padding: 2em; |
108 | border-top: solid 3px #ccc; | 108 | border-top: solid 3px #ccc; |
109 | border-bottom: solid 3px #ccc; | 109 | border-bottom: solid 3px #ccc; |
110 | } | 110 | } |
111 | 111 | ||
112 | 112 | ||
113 | table.list { | 113 | table.list { |
114 | width: 100%; | 114 | width: 100%; |
115 | border: none; | 115 | border: none; |
116 | border-collapse: collapse; | 116 | border-collapse: collapse; |
117 | } | 117 | } |
118 | 118 | ||
119 | table.list tr { | 119 | table.list tr { |
120 | background: white; | 120 | background: white; |
121 | } | 121 | } |
122 | 122 | ||
123 | table.list tr:hover { | 123 | table.list tr:hover { |
124 | background: #eee; | 124 | background: #eee; |
125 | } | 125 | } |
126 | 126 | ||
127 | table.list tr.nohover:hover { | 127 | table.list tr.nohover:hover { |
128 | background: white; | 128 | background: white; |
129 | } | 129 | } |
130 | 130 | ||
131 | table.list th { | 131 | table.list th { |
132 | font-weight: bold; | 132 | font-weight: bold; |
133 | /* color: #888; | 133 | /* color: #888; |
134 | border-top: dashed 1px #888; | 134 | border-top: dashed 1px #888; |
135 | border-bottom: dashed 1px #888; | 135 | border-bottom: dashed 1px #888; |
136 | */ | 136 | */ |
137 | padding: 0.1em 0.5em 0.05em 0.5em; | 137 | padding: 0.1em 0.5em 0.05em 0.5em; |
138 | vertical-align: baseline; | 138 | vertical-align: baseline; |
139 | } | 139 | } |
140 | 140 | ||
141 | table.list td { | 141 | table.list td { |
142 | border: none; | 142 | border: none; |
143 | padding: 0.1em 0.5em 0.1em 0.5em; | 143 | padding: 0.1em 0.5em 0.1em 0.5em; |
144 | } | 144 | } |
145 | 145 | ||
146 | table.list td a { | 146 | table.list td a { |
147 | color: black; | 147 | color: black; |
148 | } | 148 | } |
149 | 149 | ||
150 | table.list td a:hover { | 150 | table.list td a:hover { |
151 | color: #00f; | 151 | color: #00f; |
152 | } | 152 | } |
153 | 153 | ||
154 | img { | 154 | img { |
155 | border: none; | 155 | border: none; |
156 | } | 156 | } |
157 | 157 | ||
158 | input#switch-btn { | 158 | input#switch-btn { |
159 | margin: 2px 0px 0px 0px; | 159 | margin: 2px 0px 0px 0px; |
160 | } | 160 | } |
161 | 161 | ||
162 | td#sidebar input.txt { | 162 | td#sidebar input.txt { |
163 | width: 100%; | 163 | width: 100%; |
164 | margin: 2px 0px 0px 0px; | 164 | margin: 2px 0px 0px 0px; |
165 | } | 165 | } |
166 | 166 | ||
167 | table#grid { | 167 | table#grid { |
168 | margin: 0px; | 168 | margin: 0px; |
169 | } | 169 | } |
170 | 170 | ||
171 | td#content { | 171 | td#content { |
172 | vertical-align: top; | 172 | vertical-align: top; |
173 | padding: 1em 2em 1em 1em; | 173 | padding: 1em 2em 1em 1em; |
174 | border: none; | 174 | border: none; |
175 | } | 175 | } |
176 | 176 | ||
177 | div#summary { | 177 | div#summary { |
178 | vertical-align: top; | 178 | vertical-align: top; |
179 | margin-bottom: 1em; | 179 | margin-bottom: 1em; |
180 | } | 180 | } |
181 | 181 | ||
182 | table#downloads { | 182 | table#downloads { |
183 | float: right; | 183 | float: right; |
184 | border-collapse: collapse; | 184 | border-collapse: collapse; |
185 | border: solid 1px #777; | 185 | border: solid 1px #777; |
186 | margin-left: 0.5em; | 186 | margin-left: 0.5em; |
187 | margin-bottom: 0.5em; | 187 | margin-bottom: 0.5em; |
188 | } | 188 | } |
189 | 189 | ||
190 | table#downloads th { | 190 | table#downloads th { |
191 | background-color: #ccc; | 191 | background-color: #ccc; |
192 | } | 192 | } |
193 | 193 | ||
194 | div#blob { | 194 | div#blob { |
195 | border: solid 1px black; | 195 | border: solid 1px black; |
196 | } | 196 | } |
197 | 197 | ||
198 | div.error { | 198 | div.error { |
199 | color: red; | 199 | color: red; |
200 | font-weight: bold; | 200 | font-weight: bold; |
201 | margin: 1em 2em; | 201 | margin: 1em 2em; |
202 | } | 202 | } |
203 | 203 | ||
204 | a.ls-blob, a.ls-dir, a.ls-mod { | 204 | a.ls-blob, a.ls-dir, a.ls-mod { |
205 | font-family: monospace; | 205 | font-family: monospace; |
206 | } | 206 | } |
207 | 207 | ||
208 | td.ls-size { | 208 | td.ls-size { |
209 | text-align: right; | 209 | text-align: right; |
210 | font-family: monospace; | 210 | font-family: monospace; |
211 | width: 10em; | 211 | width: 10em; |
212 | } | 212 | } |
213 | 213 | ||
214 | td.ls-mode { | 214 | td.ls-mode { |
215 | font-family: monospace; | 215 | font-family: monospace; |
216 | width: 10em; | 216 | width: 10em; |
217 | } | 217 | } |
218 | 218 | ||
219 | table.blob { | 219 | table.blob { |
220 | margin-top: 0.5em; | 220 | margin-top: 0.5em; |
221 | border-top: solid 1px black; | 221 | border-top: solid 1px black; |
222 | } | 222 | } |
223 | 223 | ||
224 | table.blob td.no { | 224 | table.blob td.no { |
225 | border-right: solid 1px black; | 225 | border-right: solid 1px black; |
226 | color: black; | 226 | color: black; |
227 | background-color: #eee; | 227 | background-color: #eee; |
228 | text-align: right; | 228 | text-align: right; |
229 | } | 229 | } |
230 | 230 | ||
231 | table.blob td.no a { | 231 | table.blob td.no a { |
232 | color: black; | 232 | color: black; |
233 | } | 233 | } |
234 | 234 | ||
235 | table.blob td.no a:hover { | 235 | table.blob td.no a:hover { |
236 | color: black; | 236 | color: black; |
237 | text-decoration: none; | 237 | text-decoration: none; |
238 | } | 238 | } |
239 | 239 | ||
240 | table.blob td.txt { | 240 | table.blob td.txt { |
241 | white-space: pre; | 241 | white-space: pre; |
242 | font-family: monospace; | 242 | font-family: monospace; |
243 | padding-left: 0.5em; | 243 | padding-left: 0.5em; |
244 | } | 244 | } |
245 | 245 | ||
246 | table.nowrap td { | 246 | table.nowrap td { |
247 | white-space: nowrap; | 247 | white-space: nowrap; |
248 | } | 248 | } |
249 | 249 | ||
250 | table.commit-info { | 250 | table.commit-info { |
251 | border-collapse: collapse; | 251 | border-collapse: collapse; |
252 | margin-top: 1.5em; | 252 | margin-top: 1.5em; |
253 | } | 253 | } |
254 | 254 | ||
255 | table.commit-info th { | 255 | table.commit-info th { |
256 | text-align: left; | 256 | text-align: left; |
257 | font-weight: normal; | 257 | font-weight: normal; |
258 | padding: 0.1em 1em 0.1em 0.1em; | 258 | padding: 0.1em 1em 0.1em 0.1em; |
259 | vertical-align: top; | 259 | vertical-align: top; |
260 | } | 260 | } |
261 | 261 | ||
262 | table.commit-info td { | 262 | table.commit-info td { |
263 | font-weight: normal; | 263 | font-weight: normal; |
264 | padding: 0.1em 1em 0.1em 0.1em; | 264 | padding: 0.1em 1em 0.1em 0.1em; |
265 | } | 265 | } |
266 | 266 | ||
267 | div.commit-subject { | 267 | div.commit-subject { |
268 | font-weight: bold; | 268 | font-weight: bold; |
269 | font-size: 125%; | 269 | font-size: 125%; |
270 | margin: 1.5em 0em 0.5em 0em; | 270 | margin: 1.5em 0em 0.5em 0em; |
271 | padding: 0em; | 271 | padding: 0em; |
272 | } | 272 | } |
273 | 273 | ||
274 | div.commit-msg { | 274 | div.commit-msg { |
275 | white-space: pre; | 275 | white-space: pre; |
276 | font-family: monospace; | 276 | font-family: monospace; |
277 | } | 277 | } |
278 | 278 | ||
279 | div.diffstat-header { | 279 | div.diffstat-header { |
280 | font-weight: bold; | 280 | font-weight: bold; |
281 | padding-top: 1.5em; | 281 | padding-top: 1.5em; |
282 | } | 282 | } |
283 | 283 | ||
284 | table.diffstat { | 284 | table.diffstat { |
285 | border-collapse: collapse; | 285 | border-collapse: collapse; |
286 | border: solid 1px #aaa; | 286 | border: solid 1px #aaa; |
287 | background-color: #eee; | 287 | background-color: #eee; |
288 | } | 288 | } |
289 | 289 | ||
290 | table.diffstat th { | 290 | table.diffstat th { |
291 | font-weight: normal; | 291 | font-weight: normal; |
292 | text-align: left; | 292 | text-align: left; |
293 | text-decoration: underline; | 293 | text-decoration: underline; |
294 | padding: 0.1em 1em 0.1em 0.1em; | 294 | padding: 0.1em 1em 0.1em 0.1em; |
295 | font-size: 100%; | 295 | font-size: 100%; |
296 | } | 296 | } |
297 | 297 | ||
298 | table.diffstat td { | 298 | table.diffstat td { |
299 | padding: 0.2em 0.2em 0.1em 0.1em; | 299 | padding: 0.2em 0.2em 0.1em 0.1em; |
300 | font-size: 100%; | 300 | font-size: 100%; |
301 | border: none; | 301 | border: none; |
302 | } | 302 | } |
303 | 303 | ||
304 | table.diffstat td.mode { | 304 | table.diffstat td.mode { |
305 | white-space: nowrap; | 305 | white-space: nowrap; |
306 | } | 306 | } |
307 | 307 | ||
308 | table.diffstat td span.modechange { | 308 | table.diffstat td span.modechange { |
309 | padding-left: 1em; | 309 | padding-left: 1em; |
310 | color: red; | 310 | color: red; |
311 | } | 311 | } |
312 | 312 | ||
313 | table.diffstat td.add a { | 313 | table.diffstat td.add a { |
314 | color: green; | 314 | color: green; |
315 | } | 315 | } |
316 | 316 | ||
317 | table.diffstat td.del a { | 317 | table.diffstat td.del a { |
318 | color: red; | 318 | color: red; |
319 | } | 319 | } |
320 | 320 | ||
321 | table.diffstat td.upd a { | 321 | table.diffstat td.upd a { |
322 | color: blue; | 322 | color: blue; |
323 | } | 323 | } |
324 | 324 | ||
325 | table.diffstat td.graph { | 325 | table.diffstat td.graph { |
326 | width: 500px; | 326 | width: 500px; |
327 | vertical-align: middle; | 327 | vertical-align: middle; |
328 | } | 328 | } |
329 | 329 | ||
330 | table.diffstat td.graph table { | 330 | table.diffstat td.graph table { |
331 | border: none; | 331 | border: none; |
332 | } | 332 | } |
333 | 333 | ||
334 | table.diffstat td.graph td { | 334 | table.diffstat td.graph td { |
335 | padding: 0px; | 335 | padding: 0px; |
336 | border: 0px; | 336 | border: 0px; |
337 | height: 7pt; | 337 | height: 7pt; |
338 | } | 338 | } |
339 | 339 | ||
340 | table.diffstat td.graph td.add { | 340 | table.diffstat td.graph td.add { |
341 | background-color: #5c5; | 341 | background-color: #5c5; |
342 | } | 342 | } |
343 | 343 | ||
344 | table.diffstat td.graph td.rem { | 344 | table.diffstat td.graph td.rem { |
345 | background-color: #c55; | 345 | background-color: #c55; |
346 | } | 346 | } |
347 | 347 | ||
348 | div.diffstat-summary { | 348 | div.diffstat-summary { |
349 | color: #888; | 349 | color: #888; |
350 | padding-top: 0.5em; | 350 | padding-top: 0.5em; |
351 | } | 351 | } |
352 | 352 | ||
353 | table.diff { | 353 | table.diff { |
354 | width: 100%; | 354 | width: 100%; |
355 | } | 355 | } |
356 | 356 | ||
357 | table.diff td { | 357 | table.diff td { |
358 | font-family: monospace; | 358 | font-family: monospace; |
359 | white-space: pre; | 359 | white-space: pre; |
360 | } | 360 | } |
361 | 361 | ||
362 | table.diff td div.head { | 362 | table.diff td div.head { |
363 | font-weight: bold; | 363 | font-weight: bold; |
364 | margin-top: 1em; | 364 | margin-top: 1em; |
365 | color: black; | 365 | color: black; |
366 | } | 366 | } |
367 | 367 | ||
368 | table.diff td div.hunk { | 368 | table.diff td div.hunk { |
369 | color: #009; | 369 | color: #009; |
370 | } | 370 | } |
371 | 371 | ||
372 | table.diff td div.add { | 372 | table.diff td div.add { |
373 | color: green; | 373 | color: green; |
374 | } | 374 | } |
375 | 375 | ||
376 | table.diff td div.del { | 376 | table.diff td div.del { |
377 | color: red; | 377 | color: red; |
378 | } | 378 | } |
379 | 379 | ||
380 | .sha1 { | 380 | .sha1 { |
381 | font-family: monospace; | 381 | font-family: monospace; |
382 | font-size: 90%; | 382 | font-size: 90%; |
383 | } | 383 | } |
384 | 384 | ||
385 | .left { | 385 | .left { |
386 | text-align: left; | 386 | text-align: left; |
387 | } | 387 | } |
388 | 388 | ||
389 | .right { | 389 | .right { |
390 | text-align: right; | 390 | text-align: right; |
391 | } | 391 | } |
392 | 392 | ||
393 | table.list td.repogroup { | 393 | table.list td.repogroup { |
394 | font-style: italic; | 394 | font-style: italic; |
395 | color: #888; | 395 | color: #888; |
396 | } | 396 | } |
397 | 397 | ||
398 | a.button { | 398 | a.button { |
399 | font-size: 80%; | 399 | font-size: 80%; |
400 | padding: 0em 0.5em; | 400 | padding: 0em 0.5em; |
401 | } | 401 | } |
402 | 402 | ||
403 | a.primary { | 403 | a.primary { |
404 | font-size: 100%; | 404 | font-size: 100%; |
405 | } | 405 | } |
406 | 406 | ||
407 | a.secondary { | 407 | a.secondary { |
408 | font-size: 90%; | 408 | font-size: 90%; |
409 | } | 409 | } |
410 | 410 | ||
411 | td.toplevel-repo { | 411 | td.toplevel-repo { |
412 | 412 | ||
413 | } | 413 | } |
414 | 414 | ||
415 | table.list td.sublevel-repo { | 415 | table.list td.sublevel-repo { |
416 | padding-left: 1.5em; | 416 | padding-left: 1.5em; |
417 | } | 417 | } |
418 | 418 | ||
419 | div.pager { | 419 | div.pager { |
420 | text-align: center; | 420 | text-align: center; |
421 | margin: 1em 0em 0em 0em; | 421 | margin: 1em 0em 0em 0em; |
422 | } | 422 | } |
423 | 423 | ||
424 | div.pager a { | 424 | div.pager a { |
425 | color: #777; | 425 | color: #777; |
426 | margin: 0em 0.5em; | 426 | margin: 0em 0.5em; |
427 | } | 427 | } |
428 | 428 | ||
429 | span.age-mins { | 429 | span.age-mins { |
430 | font-weight: bold; | 430 | font-weight: bold; |
431 | color: #080; | 431 | color: #080; |
432 | } | 432 | } |
433 | 433 | ||
434 | span.age-hours { | 434 | span.age-hours { |
435 | color: #080; | 435 | color: #080; |
436 | } | 436 | } |
437 | 437 | ||
438 | span.age-days { | 438 | span.age-days { |
439 | color: #040; | 439 | color: #040; |
440 | } | 440 | } |
441 | 441 | ||
442 | span.age-weeks { | 442 | span.age-weeks { |
443 | color: #444; | 443 | color: #444; |
444 | } | 444 | } |
445 | 445 | ||
446 | span.age-months { | 446 | span.age-months { |
447 | color: #888; | 447 | color: #888; |
448 | } | 448 | } |
449 | 449 | ||
450 | span.age-years { | 450 | span.age-years { |
451 | color: #bbb; | 451 | color: #bbb; |
452 | } | 452 | } |
453 | div.footer { | 453 | div.footer { |
454 | margin-top: 0.5em; | 454 | margin-top: 0.5em; |
455 | text-align: center; | 455 | text-align: center; |
456 | font-size: 80%; | 456 | font-size: 80%; |
457 | color: #ccc; | 457 | color: #ccc; |
458 | } | 458 | } |
459 | table.stats { | ||
460 | border: solid 1px black; | ||
461 | border-collapse: collapse; | ||
462 | } | ||
463 | |||
464 | table.stats th { | ||
465 | text-align: left; | ||
466 | padding: 1px 0.5em; | ||
467 | background-color: #eee; | ||
468 | border: solid 1px black; | ||
469 | } | ||
470 | |||
471 | table.stats td { | ||
472 | text-align: right; | ||
473 | padding: 1px 0.5em; | ||
474 | border: solid 1px black; | ||
475 | } | ||
476 | |||
477 | table.stats td.total { | ||
478 | font-weight: bold; | ||
479 | text-align: left; | ||
480 | } | ||
481 | |||
482 | table.stats td.sum { | ||
483 | color: #c00; | ||
484 | font-weight: bold; | ||
485 | /*background-color: #eee; */ | ||
486 | } | ||
487 | |||
488 | table.stats td.left { | ||
489 | text-align: left; | ||
490 | } | ||
491 | |||
492 | table.vgraph { | ||
493 | border-collapse: separate; | ||
494 | border: solid 1px black; | ||
495 | height: 200px; | ||
496 | } | ||
497 | |||
498 | table.vgraph th { | ||
499 | background-color: #eee; | ||
500 | font-weight: bold; | ||
501 | border: solid 1px white; | ||
502 | padding: 1px 0.5em; | ||
503 | } | ||
504 | |||
505 | table.vgraph td { | ||
506 | vertical-align: bottom; | ||
507 | padding: 0px 10px; | ||
508 | } | ||
509 | |||
510 | table.vgraph div.bar { | ||
511 | background-color: #eee; | ||
512 | } | ||
513 | |||
514 | table.hgraph { | ||
515 | border: solid 1px black; | ||
516 | width: 800px; | ||
517 | } | ||
518 | |||
519 | table.hgraph th { | ||
520 | background-color: #eee; | ||
521 | font-weight: bold; | ||
522 | border: solid 1px black; | ||
523 | padding: 1px 0.5em; | ||
524 | } | ||
525 | |||
526 | table.hgraph td { | ||
527 | vertical-align: center; | ||
528 | padding: 2px 2px; | ||
529 | } | ||
530 | |||
531 | table.hgraph div.bar { | ||
532 | background-color: #eee; | ||
533 | height: 1em; | ||
534 | } | ||
535 | |||