Fossil SCM
An experiment in improving the /dir column flow. (Not ready to merge.)
Commit
e5121a4934b4f938a47a2e9207bf602349a38ab1365a986dd9d97871b2e4a244
Parent
11e7960e51efc3d…
2 files changed
+7
-6
+12
-11
+7
-6
| --- src/browse.c | ||
| +++ src/browse.c | ||
| @@ -306,35 +306,36 @@ | ||
| 306 | 306 | } |
| 307 | 307 | |
| 308 | 308 | /* Generate a multi-column table listing the contents of zD[] |
| 309 | 309 | ** directory. |
| 310 | 310 | */ |
| 311 | - mxLen = db_int(12, "SELECT max(length(x)) FROM localfiles /*scan*/"); | |
| 311 | + mxLen = db_int(12, "SELECT max(length(x)) * 0.85 " | |
| 312 | + "FROM localfiles /*scan*/"); | |
| 312 | 313 | if( mxLen<12 ) mxLen = 12; |
| 313 | 314 | mxLen += (mxLen+9)/10; |
| 314 | 315 | db_prepare(&q, "SELECT x, u FROM localfiles ORDER BY x /*scan*/"); |
| 315 | - @ <div class="columns files" style="columns: %d(mxLen)ex auto"> | |
| 316 | - @ <ul class="browser"> | |
| 316 | + @ <div class="columns files"> | |
| 317 | + @ <div class="browser" style="columns: %d(mxLen)ex auto"> | |
| 317 | 318 | while( db_step(&q)==SQLITE_ROW ){ |
| 318 | 319 | const char *zFN; |
| 319 | 320 | zFN = db_column_text(&q, 0); |
| 320 | 321 | if( zFN[0]=='/' ){ |
| 321 | 322 | zFN++; |
| 322 | - @ <li class="dir">%z(href("%s%T",zSubdirLink,zFN))%h(zFN)</a></li> | |
| 323 | + @ <span class="dir">%z(href("%s%T",zSubdirLink,zFN))%h(zFN)</a></span> | |
| 323 | 324 | }else{ |
| 324 | 325 | const char *zLink; |
| 325 | 326 | if( zCI ){ |
| 326 | 327 | zLink = href("%R/file?name=%T%T&ci=%T",zPrefix,zFN,zCI); |
| 327 | 328 | }else{ |
| 328 | 329 | zLink = href("%R/finfo?name=%T%T",zPrefix,zFN); |
| 329 | 330 | } |
| 330 | - @ <li class="%z(fileext_class(zFN))">%z(zLink)%h(zFN)</a></li> | |
| 331 | + @ <span class="%z(fileext_class(zFN))">%z(zLink)%h(zFN)</a></span> | |
| 331 | 332 | } |
| 332 | 333 | } |
| 333 | 334 | db_finalize(&q); |
| 334 | 335 | manifest_destroy(pM); |
| 335 | - @ </ul></div> | |
| 336 | + @ </div></div> | |
| 336 | 337 | |
| 337 | 338 | /* If the "noreadme" query parameter is present, do not try to |
| 338 | 339 | ** show the content of the README file. |
| 339 | 340 | */ |
| 340 | 341 | if( P("noreadme")!=0 ){ |
| 341 | 342 |
| --- src/browse.c | |
| +++ src/browse.c | |
| @@ -306,35 +306,36 @@ | |
| 306 | } |
| 307 | |
| 308 | /* Generate a multi-column table listing the contents of zD[] |
| 309 | ** directory. |
| 310 | */ |
| 311 | mxLen = db_int(12, "SELECT max(length(x)) FROM localfiles /*scan*/"); |
| 312 | if( mxLen<12 ) mxLen = 12; |
| 313 | mxLen += (mxLen+9)/10; |
| 314 | db_prepare(&q, "SELECT x, u FROM localfiles ORDER BY x /*scan*/"); |
| 315 | @ <div class="columns files" style="columns: %d(mxLen)ex auto"> |
| 316 | @ <ul class="browser"> |
| 317 | while( db_step(&q)==SQLITE_ROW ){ |
| 318 | const char *zFN; |
| 319 | zFN = db_column_text(&q, 0); |
| 320 | if( zFN[0]=='/' ){ |
| 321 | zFN++; |
| 322 | @ <li class="dir">%z(href("%s%T",zSubdirLink,zFN))%h(zFN)</a></li> |
| 323 | }else{ |
| 324 | const char *zLink; |
| 325 | if( zCI ){ |
| 326 | zLink = href("%R/file?name=%T%T&ci=%T",zPrefix,zFN,zCI); |
| 327 | }else{ |
| 328 | zLink = href("%R/finfo?name=%T%T",zPrefix,zFN); |
| 329 | } |
| 330 | @ <li class="%z(fileext_class(zFN))">%z(zLink)%h(zFN)</a></li> |
| 331 | } |
| 332 | } |
| 333 | db_finalize(&q); |
| 334 | manifest_destroy(pM); |
| 335 | @ </ul></div> |
| 336 | |
| 337 | /* If the "noreadme" query parameter is present, do not try to |
| 338 | ** show the content of the README file. |
| 339 | */ |
| 340 | if( P("noreadme")!=0 ){ |
| 341 |
| --- src/browse.c | |
| +++ src/browse.c | |
| @@ -306,35 +306,36 @@ | |
| 306 | } |
| 307 | |
| 308 | /* Generate a multi-column table listing the contents of zD[] |
| 309 | ** directory. |
| 310 | */ |
| 311 | mxLen = db_int(12, "SELECT max(length(x)) * 0.85 " |
| 312 | "FROM localfiles /*scan*/"); |
| 313 | if( mxLen<12 ) mxLen = 12; |
| 314 | mxLen += (mxLen+9)/10; |
| 315 | db_prepare(&q, "SELECT x, u FROM localfiles ORDER BY x /*scan*/"); |
| 316 | @ <div class="columns files"> |
| 317 | @ <div class="browser" style="columns: %d(mxLen)ex auto"> |
| 318 | while( db_step(&q)==SQLITE_ROW ){ |
| 319 | const char *zFN; |
| 320 | zFN = db_column_text(&q, 0); |
| 321 | if( zFN[0]=='/' ){ |
| 322 | zFN++; |
| 323 | @ <span class="dir">%z(href("%s%T",zSubdirLink,zFN))%h(zFN)</a></span> |
| 324 | }else{ |
| 325 | const char *zLink; |
| 326 | if( zCI ){ |
| 327 | zLink = href("%R/file?name=%T%T&ci=%T",zPrefix,zFN,zCI); |
| 328 | }else{ |
| 329 | zLink = href("%R/finfo?name=%T%T",zPrefix,zFN); |
| 330 | } |
| 331 | @ <span class="%z(fileext_class(zFN))">%z(zLink)%h(zFN)</a></span> |
| 332 | } |
| 333 | } |
| 334 | db_finalize(&q); |
| 335 | manifest_destroy(pM); |
| 336 | @ </div></div> |
| 337 | |
| 338 | /* If the "noreadme" query parameter is present, do not try to |
| 339 | ** show the content of the README file. |
| 340 | */ |
| 341 | if( P("noreadme")!=0 ){ |
| 342 |
+12
-11
| --- src/default.css | ||
| +++ src/default.css | ||
| @@ -225,10 +225,13 @@ | ||
| 225 | 225 | } |
| 226 | 226 | div.columns { |
| 227 | 227 | padding: 0 2em 0 2em; |
| 228 | 228 | max-width: 1000px; |
| 229 | 229 | } |
| 230 | +div.columns.files { | |
| 231 | + max-width: unset; | |
| 232 | +} | |
| 230 | 233 | div.columns > ul { |
| 231 | 234 | margin: 0; |
| 232 | 235 | padding: 0 0 0 1em; |
| 233 | 236 | } |
| 234 | 237 | div.columns > ul li:first-child { |
| @@ -293,33 +296,31 @@ | ||
| 293 | 296 | EhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14GqFX\ |
| 294 | 297 | ImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw=="); |
| 295 | 298 | background-position: center left; |
| 296 | 299 | background-repeat: no-repeat; |
| 297 | 300 | } |
| 298 | -ul.browser { | |
| 299 | - list-style-type: none; | |
| 301 | +div.browser { | |
| 300 | 302 | padding: 10px; |
| 301 | 303 | margin: 0px; |
| 302 | 304 | white-space: nowrap; |
| 303 | 305 | } |
| 304 | -ul.browser li.file { | |
| 305 | - background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP\/\/\/\ | |
| 306 | -yEhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14Gq\ | |
| 307 | -FXImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw=="); | |
| 306 | +div.browser > span { | |
| 307 | + display: block; | |
| 308 | 308 | background-repeat: no-repeat; |
| 309 | 309 | background-position: 0px center; |
| 310 | 310 | padding-left: 20px; |
| 311 | 311 | padding-top: 2px; |
| 312 | 312 | } |
| 313 | -ul.browser li.dir { | |
| 313 | +div.browser > span.file { | |
| 314 | + background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP\/\/\/\ | |
| 315 | +yEhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14Gq\ | |
| 316 | +FXImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw=="); | |
| 317 | +} | |
| 318 | +div.browser span.dir { | |
| 314 | 319 | background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP/WVCIiI\ |
| 315 | 320 | v\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAInlI9pwa3XYniCgQtkrAFfLXkiFo1jaXpo+\ |
| 316 | 321 | jUs6b5Z/K4siDu5RPUFADs="); |
| 317 | - background-repeat: no-repeat; | |
| 318 | - background-position: 0px center; | |
| 319 | - padding-left: 20px; | |
| 320 | - padding-top: 2px; | |
| 321 | 322 | } |
| 322 | 323 | div.filetreeline { |
| 323 | 324 | display: table; |
| 324 | 325 | width: 100%; |
| 325 | 326 | white-space: nowrap; |
| 326 | 327 |
| --- src/default.css | |
| +++ src/default.css | |
| @@ -225,10 +225,13 @@ | |
| 225 | } |
| 226 | div.columns { |
| 227 | padding: 0 2em 0 2em; |
| 228 | max-width: 1000px; |
| 229 | } |
| 230 | div.columns > ul { |
| 231 | margin: 0; |
| 232 | padding: 0 0 0 1em; |
| 233 | } |
| 234 | div.columns > ul li:first-child { |
| @@ -293,33 +296,31 @@ | |
| 293 | EhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14GqFX\ |
| 294 | ImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw=="); |
| 295 | background-position: center left; |
| 296 | background-repeat: no-repeat; |
| 297 | } |
| 298 | ul.browser { |
| 299 | list-style-type: none; |
| 300 | padding: 10px; |
| 301 | margin: 0px; |
| 302 | white-space: nowrap; |
| 303 | } |
| 304 | ul.browser li.file { |
| 305 | background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP\/\/\/\ |
| 306 | yEhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14Gq\ |
| 307 | FXImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw=="); |
| 308 | background-repeat: no-repeat; |
| 309 | background-position: 0px center; |
| 310 | padding-left: 20px; |
| 311 | padding-top: 2px; |
| 312 | } |
| 313 | ul.browser li.dir { |
| 314 | background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP/WVCIiI\ |
| 315 | v\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAInlI9pwa3XYniCgQtkrAFfLXkiFo1jaXpo+\ |
| 316 | jUs6b5Z/K4siDu5RPUFADs="); |
| 317 | background-repeat: no-repeat; |
| 318 | background-position: 0px center; |
| 319 | padding-left: 20px; |
| 320 | padding-top: 2px; |
| 321 | } |
| 322 | div.filetreeline { |
| 323 | display: table; |
| 324 | width: 100%; |
| 325 | white-space: nowrap; |
| 326 |
| --- src/default.css | |
| +++ src/default.css | |
| @@ -225,10 +225,13 @@ | |
| 225 | } |
| 226 | div.columns { |
| 227 | padding: 0 2em 0 2em; |
| 228 | max-width: 1000px; |
| 229 | } |
| 230 | div.columns.files { |
| 231 | max-width: unset; |
| 232 | } |
| 233 | div.columns > ul { |
| 234 | margin: 0; |
| 235 | padding: 0 0 0 1em; |
| 236 | } |
| 237 | div.columns > ul li:first-child { |
| @@ -293,33 +296,31 @@ | |
| 296 | EhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14GqFX\ |
| 297 | ImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw=="); |
| 298 | background-position: center left; |
| 299 | background-repeat: no-repeat; |
| 300 | } |
| 301 | div.browser { |
| 302 | padding: 10px; |
| 303 | margin: 0px; |
| 304 | white-space: nowrap; |
| 305 | } |
| 306 | div.browser > span { |
| 307 | display: block; |
| 308 | background-repeat: no-repeat; |
| 309 | background-position: 0px center; |
| 310 | padding-left: 20px; |
| 311 | padding-top: 2px; |
| 312 | } |
| 313 | div.browser > span.file { |
| 314 | background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP\/\/\/\ |
| 315 | yEhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14Gq\ |
| 316 | FXImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw=="); |
| 317 | } |
| 318 | div.browser span.dir { |
| 319 | background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP/WVCIiI\ |
| 320 | v\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAInlI9pwa3XYniCgQtkrAFfLXkiFo1jaXpo+\ |
| 321 | jUs6b5Z/K4siDu5RPUFADs="); |
| 322 | } |
| 323 | div.filetreeline { |
| 324 | display: table; |
| 325 | width: 100%; |
| 326 | white-space: nowrap; |
| 327 |