These 73 commits are when the Protocol Buffers files have changed:
| Commit: | 98e5b82 | |
|---|---|---|
| Author: | Noon van der Silk | |
| Committer: | GitHub | |
Resolve duplicate clicking in UI (#355) * Resolve duplicate clicking in UI We add a few features here: - A "target" function to the header; allowing an item to be located. - Fixing the "duplicate popup" issue when clicking on something open; it now just refocuses te element It's not perfect; but some comments have been added to indicate the areas for improvement. * Allow header-things to be closeable or not * Added copy and toggle-visibility back * Allow a little bit more toggle-visibility
The documentation is generated from this commit.
| Commit: | b9cda44 | |
|---|---|---|
| Author: | Noon van der Silk | |
| Committer: | GitHub | |
Some simple useful features (#351) * Add is_valid and get_centroid * Test for is_valid filter * Test for get_centroid
| Commit: | 8d8c767 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Added a /compare endpoint. (#228) Added a /compare endpoint, which reruns an analysis in a number of worlds, and returns a comparison of the results. In passing, correct and add tests for: - nested lambda expressions - changing searchable tags on overlaid features - filling collections from protos
| Commit: | 710a7d3 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Support conditional map layers, and clamp bucket values. (#218) Also adjust render ordering, so geojson layers appear on top of building histogram colours.
| Commit: | f910972 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Added a skeleton API definition for scenario comparison. (#211) Also added add-world-with-change to b6.
| Commit: | 3c006c4 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Add functions to list and delete worlds from Python. (#208)
| Commit: | c523a64 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Cleanup naming of root vs context. (#194)
| Commit: | 47e2c8a | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Added an 'action' line to the design system. (#191) Added an 'action' line system, which allows an expression to be evaluated, optionally in the context of the stack it's being rendered within. This is still an exploratory concept.
| Commit: | 9984cd2 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Render histograms by creating a collection in the world. (#181) Render histograms by creating a collection in the world, and passing the ID of that collection through to the tile renderer, instead of including the IDs of bucketed features in the JSON response. This makes the size of the response tractable. These features are currently leaked, but that'll be addressed in the future (by deleting features when the relevant stack is closed in the UI). Introduces a new method on CollectionFeature to find the first value for a given key, which can make use of binary search if the collection is sorted (otherwise tile rendering becomes very slow with large collections). In passing, make the tests for histogram rendering non-flakey by explictly ordering keys as they're encountered.
| Commit: | be085fc | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Render histograms by creating a collection in the world. Render histograms by creating a collection in the world, and passing the ID of that collection through to the tile renderer, instead of including the IDs of bucketed features in the JSON response. This makes the size of the response tractable. These features are currently leaked, but that'll be addressed in the future (by deleting features when the relevant stack is closed in the UI). Introduces a new method on CollectionFeature to find the first value for a given key, which can make use of binary search if the collection is sorted (otherwise tile rendering becomes very slow with large collections). In passing, make the tests for histogram rendering non-flakey by explictly ordering keys as they're encountered.
| Commit: | cd162e0 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Apply changes to the world made in the UI. (#179) Apply changes to the world made in the UI, telling the frontend to reload tiles if necessary. Factors out locking the world against concurrent modification into MutableWorlds (although our semantics around modifying the world when there are live iterators are still sketchy).
| Commit: | 20b068f | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Support separate worlds, keyed by the root feature ID. (#177) Support separate worlds, using the ID that's currently used for the feature that configures the UI to select which world. Support passing this ID through Python, and add it to the tile requests from javascript. TODO: this ID is currently called "context", "root", or "UI context", we should standardise on something.
| Commit: | 9b16511 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Add accessible-routes. (#163) Also rename accessible to accessible-all, and connect-all-to-network to connect-to-network-all, to form a convention that the -all suffix of a function is a more efficient implementation of the mapping the unprefixed version across a collection.
| Commit: | cfc0480 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Support logging events in the UI (#162)
| Commit: | 62140ae | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Add support for share icons in headers. (#149)
| Commit: | 8ab73da | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Support naming expressions. (#146) Support namining expressions, so that parts of an expression can be named in an analysis with a value that can appear in the UX. Simplify queries from Python before running them, and support simplification of search query literals. In passing, correct a misplaced bucket colour.
| Commit: | 9659a3c | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Add a header line to stacks, with a close button. (#143)
| Commit: | 562bc4b | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Support condition GeoJSON and atoms. (#139)
| Commit: | f5b25ca | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Support bucketed values on the map based on dropdown chips. (#138) Also added a Swatch line type.
| Commit: | 84cf431 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | GitHub | |
Make materialise() add collections and expressions in the world. (#133) Change the interface of materialse(), so that it now takes a function that returns a collection, calls that function, and then adds both that collection, and the function that created it to the world. Includes the Python API for CollectionFeature and ExpressionFeature, which necessitated merging feature.proto and api.proto, as they now depend on each other.
| Commit: | 5859ceb | |
|---|---|---|
| Author: | Andrew Eland | |
Support rendering query layers in different map positions. Also support shift-clicking on features from query layers, and dragging stacks from result lines.
| Commit: | b10057e | |
|---|---|---|
| Author: | Andrew Eland | |
Render the coastline, and copy text on single click.
| Commit: | 0390a5b | |
|---|---|---|
| Author: | Andrew Eland | |
Introduce the concept of locked stacks explictly. Introduce the concept of locked stacks explicitly. Actions on a locked stack result in further locked stacks, but some actions (like shift-click) allow you to break out.
| Commit: | 8aa4c30 | |
|---|---|---|
| Author: | Andrew Eland | |
Support colouring by bucket, and outliners and click positions.
| Commit: | 7fb30ca | |
|---|---|---|
| Author: | Andrew Eland | |
Support multiple atoms on the left hand side of left/right line. Also use colour names, rather than numbers, for outliner classes.
| Commit: | d38f9c2 | |
|---|---|---|
| Author: | Andrew Eland | |
Support adding relations, and passing a context relation to the UI.
| Commit: | 1be2fc8 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Support rendering stacks at startup, which we're calling the 'dock'.
| Commit: | 619f48f | |
|---|---|---|
| Author: | Andrew Eland | |
Set the map center from the evaluated result.
| Commit: | fd24529 | |
|---|---|---|
| Author: | Andrew Eland | |
Use an atom for the range UI element of histogram bars.
| Commit: | adfbb5d | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Use protos based on the b6 design system to communicate with JS. Use protos based on the design system that has emerged from the current UI for communication with JS code, replacing the existing ad-hoc JSON struct definitions. Also replace to badly-aliased PNG icons with SVG versions.
| Commit: | bcab3c0 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Introduce a new UX for the web interface. Introduce a new UX for the web interface, rendering the steps of a pipeline as distinct blocks, and allowing multiple blocks to be shown at the same time.
| Commit: | 3415706 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Add generated files to version control, with a pre-commit to update them. Add generated files to version control, so it's possible to include the diagonal.works/b6 go package as a dependency without generating the files. Add a pre-commit hook to ensure the generated files are rebuilt when their dependencies are changed.
| Commit: | f77cdc7 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Use semver versions for the compact index. Use semver versions for the compact index, to match the approach for the API, and to track changes that don't break backward compatability. Use a protobuf to encode the header data, to allow flexibility where memory isn't at a premium. Invalidates all previous indices by changing the header magic.
| Commit: | b073d03 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Show the version in the UI, and verify it in GRPC requests. Stamp the current version number into the b6 backend binary, and show it in the web UI. Also include it in the generated Python client code, and send it along with GRPC requests. Fail requests that come from a Python library with a different major version number. Also use the version number in the PIP project description, and the binary tarball in the docker build.
| Commit: | 6408b6e | |
|---|---|---|
| Author: | Andrew Eland | |
Add a skeleton b6 binary, which currently runs a GRPC server.
| Commit: | ad48163 | |
|---|---|---|
| Author: | Andrew Eland | |
Make proto definitons match Go code for queries.
| Commit: | dfba456 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Introduce b6.Query, and replace the use of pb.QueryProto and search.Query. Introduce a new query representation, b6.Query, that's at the semantic level of features, and use that across the codebase, rather than a mixture of pb.QueryProto and search.Query.
| Commit: | 7e7d8d0 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Extract diagonal.works/b6, which we'll open source.
| Commit: | c9dee5d | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Use explicitly named arguments to lambdas. Use explicitly named arguments to lambdas. This enables the Python interface to use the full expressive power of b6, as the b6 shell could previously use partial evaluation to support nested parameters, something that isn't supported by the Python API.
| Commit: | df1a5f1 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Shell usability improvements. Implement history, and copying tokens when clicking on them, in the shell.
| Commit: | a4bf6ba | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Treat tags as first class entities in the shell.
| Commit: | e15b4f8 | |
|---|---|---|
| Author: | Andrew Eland | |
Render feature titles and tags in the shell.
| Commit: | 5399629 | |
|---|---|---|
| Author: | Andrew Eland | |
Parse string based namespaces as tokens
| Commit: | 5a7ebc7 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Make namespaces strings instead of integers. Make namespaces strings, instead of a set of hardcoded integers. While less efficient, it allows users to integrate arbitrary datasets under a namespace of their choice, without predefined restrictions. Namespaces are based on URLs related to the relevant data source. This change allows us to remove the "user space" implementation of namespaces in a5. Note that this change breaks index formats, and so we bump the version number.
| Commit: | 4027994 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Add snap_area_edges, flattern and points. Add snap_area_edges, which returns a new area by snapped the edges of an area to paths matching a given query, intended to be useful for conflating boundary geometries to road networks. Also add the useful remnants of a failed approach snapping at the point level, specifically flattern, which flatterns collections, and points, which extracts points from geometries. Collections are now typed on the wire, allowing the type of empty collections to be determined. Consequentely, the definition of Type is begining to move into protocol buffers.
| Commit: | 2b06ec3 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Reimplement A5, adding pattern matching and first class functions. Make functions a first class entity in A5, and add lambda functions and Haskell style pattern matching. This allows many real-world analyses to be performed entirely server side, when previously they needed an expensive per-feature round trip. This change breaks the current A5 interface, and therefore historic analyses until they're updated. Setting tags and exporting as GeoJSON now happens via A5 functions and evaluate(), rather than evaluate_as_tags and evaluate_as_geojson. Concurrent reading and writing is also currently broken (with tests skipped) until locking is reintroduced.
| Commit: | bb45f51 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Expose point connection via A5. Expose point connection via A5. Introduces a new return type, WorldModification, which describes changes to a MutableWorld instance, and handles ID allocation. When used as the return value from a expression, A5 uses it to modify the world.
| Commit: | 427f018 | |
|---|---|---|
| Author: | Andrew Eland | |
Add JoinPaths and Interpolate to A5.
| Commit: | ba53954 | |
|---|---|---|
| Author: | Andrew Eland | |
Complete exposure of sightline in A5.
| Commit: | 17bea12 | |
|---|---|---|
| Author: | Andrew Eland | |
Add SamplePointsAlongPaths to A5
| Commit: | 3af7348 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Make distance a paramter for reachable() In passing, make the use of tag keys in the Python test match the new index format (eg #highway, not highway), and make it possible to return nil values from A5, to match the behaviour outside A5 of looking up non-existant IDs.
| Commit: | 4d265fd | |
|---|---|---|
| Author: | Andrew Eland | |
Add basic support for searching within polygons defined by WKT. In passing, correct the year used for importing ONS authority boundaries, and add a missing Makefile for ONS data.
| Commit: | a0eb518 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Add a progress bar widget in iPython. Add a progress bar widget in iPython, which uses a JSON endpoint to poll for updates. The involves changing the streaming GRPC interface - rather than incrementally streaming progress, it sends a single tracker ID before the result. Also add a new binary - scaffold - that makes it easy to play with HTML fragments, like the widget.
| Commit: | 7fdbe94 | |
|---|---|---|
| Author: | Andrew Eland | |
Use oneof in the respone protos for ...WithProgress.
| Commit: | 5ff975d | |
|---|---|---|
| Author: | Andrew Eland | |
Adjust the implementation of timeouts in DFE. Long running streaming GRPC requests were cancelled due to the WriteTimeout in DFE. Handle timeouts ourselves to avoid this. Also add scripts to start atlas and dfe locally with common options.
| Commit: | de93451 | |
|---|---|---|
| Author: | Andrew Eland | |
Allow a5.within() to search Features. Also add world.uk_ons_boundary_id().
| Commit: | f55ff77 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Add SetTagFromGraphWithProgress.
| Commit: | d56e262 | |
|---|---|---|
| Author: | Andrew Eland | |
Add a streaming version of RunGraph which reports progess. In passing, also add a script to start a personal copy of Atlas on a 64 processor VM.
| Commit: | acbdb40 | |
|---|---|---|
| Author: | Andrew Eland | |
Add countCollection to A5. Currently this only works for FeatureCollection, unfortunately, until we've sorted out the type system.
| Commit: | eab4048 | |
|---|---|---|
| Author: | Andrew Eland | |
Return GeoJSON results to Python via A5. Also includes adding GeoJSON properties for tags.
| Commit: | 03611df | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Compute the areas reachable from a given point. Also make it possible to override the colours of boundaries, making it easier to render the results.
| Commit: | 7a8ff64 | |
|---|---|---|
| Author: | Andrew Eland | |
Make it possible to find and colour paths from relations.
| Commit: | 1878a29 | |
|---|---|---|
| Author: | Andrew Eland | |
Implement searching for features within other features in A5. Also add ingestons, a pipeline for ingesting boundary data from the ONS. It exists outside of the standard ingest binary, since it depends on the native GDAL library, complicating cross-compilation.
| Commit: | ce3dd2f | |
|---|---|---|
| Author: | Andrew Eland | |
Rework the Python query API, and add a simple area restriction.
| Commit: | d3e46a3 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Introduce a simple type system into A5, validating graphs before running.
| Commit: | f794285 | |
|---|---|---|
| Author: | Andrew Eland | |
Extend the A5 graph interface, rewrite the colour example with it
| Commit: | 26eed89 | |
|---|---|---|
| Author: | Andrew Eland | |
Explorations of an experimental computation API. Also added a missing test for deriving colours from a gradient.
| Commit: | 7e49b47 | |
|---|---|---|
| Author: | Andrew Eland | |
Implement the remaining World methods on MutableTagsOverlayWorld. Implement the remaining World methods on MutableTagsOverlayWorld. Also use this implementation of World by default in the gRPC API, and use it to implement a ModifyTags method, exposing it to Python.
| Commit: | a99c37e | |
|---|---|---|
| Author: | Andrew Eland | |
Add FindFeatures to the GRPC API.
| Commit: | d7cbbb7 | |
|---|---|---|
| Author: | Andrew Eland | |
Add an experimental Python client for the WorldService.
| Commit: | 0bb8f04 | |
|---|---|---|
| Author: | Andrew Eland | |
Rename FeatureProto2 to FeatureProto With the beam ingest pipleine removed, the naming conflict is no longer present.
| Commit: | 60c56e8 | |
|---|---|---|
| Author: | Andrew Eland | |
| Committer: | Andrew Eland | |
Add the beginings of a GRPC based API. Currently, the API simply supports looking up a feature by ID via a service wrapper on top of world.World. Implementing the API involved upgrading the version of protocol buffers we depend on, and switching from a forked protocol buffer implementation we were accidentally depending on. This, in turn, triggers a warning about duplicate metrics.proto files being registered (from Beam and Prometheus, presumably), and actually changes the number of elements read from our test PBF files. The warning will be addressed in a future change.
| Commit: | 9464598 | |
|---|---|---|
| Author: | Andrew Eland | |
First end-to-end pass at vector tile rendering.