github
html_url | issue_url | id | node_id | user | created_at | updated_at | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
https://github.com/simonw/datasette/issues/427#issuecomment-482865424 | https://api.github.com/repos/simonw/datasette/issues/427 | 482865424 | MDEyOklzc3VlQ29tbWVudDQ4Mjg2NTQyNA== | 9599 | 2019-04-13T18:56:25Z | 2019-04-13T19:42:08Z | OWNER | I think there's a `Facet` base class. `class ColumnFacet(Facet):` is the default behaviour we have today `class ArrayFacet(Facet):` facet by JSON array `class ManyToManyFacet(Facet):` facet by M2M table `class DateFacet(Facet):` facet by date `class DateTimeFacet(Facet):` facet by datetime `class EmojiFacet(Facet):` super-fun demo plugin I have planned Could even have a facet against a numerical column which loads the entire set of column values into numpy or pandas and calculates complex statistics facets in memory . There’s actually a lot of potential for Datasette plugins that load several MBs of data and analyze using other Python libraries. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
431800286 | |
https://github.com/simonw/datasette/issues/427#issuecomment-482864457 | https://api.github.com/repos/simonw/datasette/issues/427 | 482864457 | MDEyOklzc3VlQ29tbWVudDQ4Mjg2NDQ1Nw== | 9599 | 2019-04-13T18:51:44Z | 2019-04-13T18:57:51Z | OWNER | A facet needs to: - given a sql query and a list of configs, return a list of buckets - Know how to generate URLs for selecting and deselecting a filter (along with underlying filter application sql logic) - Tell if a specific filter is currently selected or not - Set a time limit and report if it times out - Generate human readable labels - In some cases: expand foreign keys - which means they need access to foreign key information - just the name of the table and the name of the column is enough to call `expand_foreign_keys()` (I [moved that](https://github.com/simonw/datasette/commit/274ef43bb7b129ddc2e68805b4f4ff3776fb9503) to the Datasette class to make it easier to access) - Make suggestions for facets. Let's give it access to the whole table here so it could either run against each column in return and rely with a list of suggestions or it could spot eg a latitude and a longitude column | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
431800286 | |
https://github.com/simonw/datasette/issues/427#issuecomment-482864837 | https://api.github.com/repos/simonw/datasette/issues/427 | 482864837 | MDEyOklzc3VlQ29tbWVudDQ4Mjg2NDgzNw== | 9599 | 2019-04-13T18:53:43Z | 2019-04-13T18:53:43Z | OWNER | `TableView.data` is currently the longest, hairiest method in the codebase. It's 775 - 177 = 598 lines of code! Extracting faceting logic should help reduce that quite a bit. https://github.com/simonw/datasette/blob/274ef43bb7b129ddc2e68805b4f4ff3776fb9503/datasette/views/table.py#L177-L775 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
431800286 |