{"html_url": "https://github.com/simonw/datasette/issues/153#issuecomment-348103270", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/153", "id": 348103270, "node_id": "MDEyOklzc3VlQ29tbWVudDM0ODEwMzI3MA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-30T07:16:40Z", "updated_at": "2017-11-30T07:16:40Z", "author_association": "OWNER", "body": "Every template now gets CSS classes in the body designed to support custom\r\nstyling.\r\n\r\nThe index template (the top level page at /) gets this:\r\n\r\n \r\n\r\nThe database template (/dbname/) gets this:\r\n\r\n \r\n\r\nThe table template (/dbname/tablename) gets:\r\n\r\n \r\n\r\nThe row template (/dbname/tablename/rowid) gets:\r\n\r\n \r\n\r\nThe db-x and table-x classes use the database or table names themselves IF\r\nthey are valid CSS identifiers. If they aren't, we strip any invalid\r\ncharacters out and append a 6 character md5 digest of the original name, in\r\norder to ensure that multiple tables which resolve to the same stripped\r\ncharacter version still have different CSS classes.\r\n\r\nSome examples (extracted from the unit tests):\r\n\r\n \"simple\" => \"simple\"\r\n \"MixedCase\" => \"MixedCase\"\r\n \"-no-leading-hyphens\" => \"no-leading-hyphens-65bea6\"\r\n \"_no-leading-underscores\" => \"no-leading-underscores-b921bc\"\r\n \"no spaces\" => \"no-spaces-7088d7\"\r\n \"-\" => \"336d5e\"\r\n \"no $ characters\" => \"no--characters-59e024\"\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 276842536, "label": "Ability to customize presentation of specific columns in HTML view"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/12#issuecomment-348245757", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/12", "id": 348245757, "node_id": "MDEyOklzc3VlQ29tbWVudDM0ODI0NTc1Nw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-30T16:39:45Z", "updated_at": "2017-11-30T16:39:45Z", "author_association": "OWNER", "body": "It is now possible to over-ride templates on a per-database / per-row or per-\r\ntable basis.\r\n\r\nWhen you access e.g. `/mydatabase/mytable` Datasette will look for the following:\r\n\r\n - table-mydatabase-mytable.html\r\n - table.html\r\n\r\nIf you provided a `--template-dir` argument to datasette serve it will look in\r\nthat directory first.\r\n\r\nThe lookup rules are as follows:\r\n\r\n Index page (/):\r\n index.html\r\n\r\n Database page (/mydatabase):\r\n database-mydatabase.html\r\n database.html\r\n\r\n Table page (/mydatabase/mytable):\r\n table-mydatabase-mytable.html\r\n table.html\r\n\r\n Row page (/mydatabase/mytable/id):\r\n row-mydatabase-mytable.html\r\n row.html\r\n\r\nIf a table name has spaces or other unexpected characters in it, the template\r\nfilename will follow the same rules as our custom `` CSS classes\r\nintroduced in 8ab3a16 - for example, a table called \"Food Trucks\"\r\nwill attempt to load the following templates:\r\n\r\n table-mydatabase-Food-Trucks-399138.html\r\n table.html\r\n\r\nIt is possible to extend the default templates using Jinja template\r\ninheritance. If you want to customize EVERY row template with some additional\r\ncontent you can do so by creating a `row.html` template like this:\r\n\r\n {% extends \"default:row.html\" %}\r\n\r\n {% block content %}\r\n

EXTRA HTML AT THE TOP OF THE CONTENT BLOCK

\r\n

This line renders the original block:

\r\n {{ super() }}\r\n {% endblock %}\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 267523511, "label": "Make it so you can override templates"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/153#issuecomment-348245843", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/153", "id": 348245843, "node_id": "MDEyOklzc3VlQ29tbWVudDM0ODI0NTg0Mw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-30T16:40:02Z", "updated_at": "2017-11-30T16:40:02Z", "author_association": "OWNER", "body": "It is now possible to over-ride templates on a per-database / per-row or per-\r\ntable basis.\r\n\r\nWhen you access e.g. `/mydatabase/mytable` Datasette will look for the following:\r\n\r\n - table-mydatabase-mytable.html\r\n - table.html\r\n\r\nIf you provided a `--template-dir` argument to datasette serve it will look in\r\nthat directory first.\r\n\r\nThe lookup rules are as follows:\r\n\r\n Index page (/):\r\n index.html\r\n\r\n Database page (/mydatabase):\r\n database-mydatabase.html\r\n database.html\r\n\r\n Table page (/mydatabase/mytable):\r\n table-mydatabase-mytable.html\r\n table.html\r\n\r\n Row page (/mydatabase/mytable/id):\r\n row-mydatabase-mytable.html\r\n row.html\r\n\r\nIf a table name has spaces or other unexpected characters in it, the template\r\nfilename will follow the same rules as our custom `` CSS classes\r\nintroduced in 8ab3a16 - for example, a table called \"Food Trucks\"\r\nwill attempt to load the following templates:\r\n\r\n table-mydatabase-Food-Trucks-399138.html\r\n table.html\r\n\r\nIt is possible to extend the default templates using Jinja template\r\ninheritance. If you want to customize EVERY row template with some additional\r\ncontent you can do so by creating a `row.html` template like this:\r\n\r\n {% extends \"default:row.html\" %}\r\n\r\n {% block content %}\r\n

EXTRA HTML AT THE TOP OF THE CONTENT BLOCK

\r\n

This line renders the original block:

\r\n {{ super() }}\r\n {% endblock %}\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 276842536, "label": "Ability to customize presentation of specific columns in HTML view"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/153#issuecomment-348248406", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/153", "id": 348248406, "node_id": "MDEyOklzc3VlQ29tbWVudDM0ODI0ODQwNg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-30T16:47:45Z", "updated_at": "2017-11-30T16:47:45Z", "author_association": "OWNER", "body": "Remaining work on this now lives in a milestone: https://github.com/simonw/datasette/milestone/6", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 276842536, "label": "Ability to customize presentation of specific columns in HTML view"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/126#issuecomment-348248957", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/126", "id": 348248957, "node_id": "MDEyOklzc3VlQ29tbWVudDM0ODI0ODk1Nw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-30T16:49:24Z", "updated_at": "2017-11-30T16:49:24Z", "author_association": "OWNER", "body": "https://simonwillison.net/2017/Nov/25/new-in-datasette/", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 275135535, "label": "Blog entry announcing foreign key support"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/153#issuecomment-348252037", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/153", "id": 348252037, "node_id": "MDEyOklzc3VlQ29tbWVudDM0ODI1MjAzNw==", "user": {"value": 20264, "label": "ftrain"}, "created_at": "2017-11-30T16:59:00Z", "updated_at": "2017-11-30T16:59:00Z", "author_association": "NONE", "body": "WOW!\n\n--\nPaul Ford // (646) 369-7128 // @ftrain\n\nOn Thu, Nov 30, 2017 at 11:47 AM, Simon Willison \nwrote:\n\n> Remaining work on this now lives in a milestone:\n> https://github.com/simonw/datasette/milestone/6\n>\n> \u2014\n> You are receiving this because you were mentioned.\n> Reply to this email directly, view it on GitHub\n> ,\n> or mute the thread\n> \n> .\n>\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 276842536, "label": "Ability to customize presentation of specific columns in HTML view"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/156#issuecomment-348255782", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/156", "id": 348255782, "node_id": "MDEyOklzc3VlQ29tbWVudDM0ODI1NTc4Mg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-30T17:11:34Z", "updated_at": "2017-11-30T17:11:34Z", "author_association": "OWNER", "body": "http://datasette.readthedocs.io/en/latest/custom_templates.html", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 278189708, "label": "Document CSS hooks and custom templates"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/153#issuecomment-348255925", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/153", "id": 348255925, "node_id": "MDEyOklzc3VlQ29tbWVudDM0ODI1NTkyNQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-30T17:12:03Z", "updated_at": "2017-11-30T17:12:03Z", "author_association": "OWNER", "body": "Documentation is now live for this: http://datasette.readthedocs.io/en/latest/custom_templates.html", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 276842536, "label": "Ability to customize presentation of specific columns in HTML view"}, "performed_via_github_app": null}