-
-
Notifications
You must be signed in to change notification settings - Fork 703
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ability to customize presentation of specific columns in HTML view #153
Comments
I've been thinking about 1. a bit - I actually think it would be fine to have a rule that says "if the contents of the cell starts with For the other two... I think #12 may be the way to go here: if you can easily over-ride the |
One quick fix could be to add a While we're at it, an |
A mechanism in the metadata.json format for adding custom CSS and JS urls. Create a metadata.json file that looks like this: { "extra_css_urls": [ "https://simonwillison.net/static/css/all.bf8cd891642c.css" ], "extra_js_urls": [ "https://code.jquery.com/jquery-3.2.1.slim.min.js" ] } Then start datasette like this: datasette mydb.db --metadata=metadata.json The CSS and JavaScript files will be linked in the <head> of every page. You can also specify a SRI (subresource integrity hash) for these assets: { "extra_css_urls": [ { "url": "https://simonwillison.net/static/css/all.bf8cd891642c.css", "sri": "sha384-9qIZekWUyjCyDIf2YK1FRoKiPJq4PHt6tp/ulnuuyRBvazd0hG7pWbE99zvwSznI" } ], "extra_js_urls": [ { "url": "https://code.jquery.com/jquery-3.2.1.slim.min.js", "sri": "sha256-k2WSCIexGzOj3Euiig+TlR8gA0EmPjuc79OEeY5L45g=" } ] } Modern browsers will only execute the stylsheet or JavaScript if the SRI hash matches the content served. You can generate hashes using www.srihash.org
@ftrain OK I've shipped the first version of this. Here's the initial documentation: Create a
Then start datasette like this:
The CSS and JavaScript files will be linked in the You can also specify a SRI (subresource integrity hash) for these assets:
Modern browsers will only execute the stylsheet or JavaScript if the SRI hash This isn't shipped in a release yet, but you can still access these features in
The |
To style individual columns you'll currently need to use the
|
(This only addresses point 2 in your issue description - points 1 and point 3 are still to come) |
OK, that's point 1 covered. |
Refs #153 Every template now gets CSS classes in the body designed to support custom styling. The index template (the top level page at /) gets this: <body class="index"> The database template (/dbname/) gets this: <body class="db db-dbname"> The table template (/dbname/tablename) gets: <body class="table db-dbname table-tablename"> The row template (/dbname/tablename/rowid) gets: <body class="row db-dbname table-tablename"> The db-x and table-x classes use the database or table names themselves IF they are valid CSS identifiers. If they aren't, we strip any invalid characters out and append a 6 character md5 digest of the original name, in order to ensure that multiple tables which resolve to the same stripped character version still have different CSS classes. Some examples (extracted from the unit tests): "simple" => "simple" "MixedCase" => "MixedCase" "-no-leading-hyphens" => "no-leading-hyphens-65bea6" "_no-leading-underscores" => "no-leading-underscores-b921bc" "no spaces" => "no-spaces-7088d7" "-" => "336d5e" "no $ characters" => "no--characters-59e024"
Every template now gets CSS classes in the body designed to support custom The index template (the top level page at /) gets this:
The database template (/dbname/) gets this:
The table template (/dbname/tablename) gets:
The row template (/dbname/tablename/rowid) gets:
The db-x and table-x classes use the database or table names themselves IF Some examples (extracted from the unit tests):
|
It is now possible to over-ride templates on a per-database / per-row or per- table basis. When you access e.g. /mydatabase/mytable Datasette will look for the following: - table-mydatabase-mytable.html - table.html If you provided a --template-dir argument to datasette serve it will look in that directory first. The lookup rules are as follows: Index page (/): index.html Database page (/mydatabase): database-mydatabase.html database.html Table page (/mydatabase/mytable): table-mydatabase-mytable.html table.html Row page (/mydatabase/mytable/id): row-mydatabase-mytable.html row.html If a table name has spaces or other unexpected characters in it, the template filename will follow the same rules as our custom <body> CSS classes introduced in 8ab3a16 - for example, a table called "Food Trucks" will attempt to load the following templates: table-mydatabase-Food-Trucks-399138.html table.html It is possible to extend the default templates using Jinja template inheritance. If you want to customize EVERY row template with some additional content you can do so by creating a row.html template like this: {% extends "default:row.html" %} {% block content %} <h1>EXTRA HTML AT THE TOP OF THE CONTENT BLOCK</h1> <p>This line renders the original block:</p> {{ super() }} {% endblock %} Closes #12, refs #153
It is now possible to over-ride templates on a per-database / per-row or per- When you access e.g.
If you provided a The lookup rules are as follows:
If a table name has spaces or other unexpected characters in it, the template
It is possible to extend the default templates using Jinja template
|
Remaining work on this now lives in a milestone: https://github.com/simonw/datasette/milestone/6 |
WOW!
…--
Paul Ford // (646) 369-7128 // @ftrain
On Thu, Nov 30, 2017 at 11:47 AM, Simon Willison ***@***.***> wrote:
Remaining work on this now lives in a milestone:
https://github.com/simonw/datasette/milestone/6
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#153 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AABPKHzaVPKwTOoHouK2aMUnM-mPnPk6ks5s7twzgaJpZM4Qq2zW>
.
|
Documentation is now live for this: http://datasette.readthedocs.io/en/latest/custom_templates.html |
In #159 I added a mechanism for easily customizing per-column displays, and I've added documentation showing an example of using this mechanism to set certain columns to display as unescaped HTML: http://datasette.readthedocs.io/en/latest/custom_templates.html#custom-templates This fixes item 3, so I'm closing this ticket! |
@ftrain Datasette 0.14 is now released with all of the above: https://github.com/simonw/datasette/releases/tag/0.14 |
This ties into #3 in some ways. It would be great to have some adaptability in the HTML views and to specific some columns as displaying in certain ways.
overflow
property on the relevant CSS, so you could still scan.The text was updated successfully, but these errors were encountered: