Project: Time-Travel Data Access and Versioning UI for istSOS Web Administration
Organization: OSGeo / istSOS4
Contributor: Bhudev Bhanpuriya
Mentors: Massimiliano Cannata, Daniele Strigaro, Claudio Primerano
I performed the following tasks during this week:
-
af2890a - Compare one datastream at two snapshots: Repurposed the chart’s two comparison slots so that both now hold snapshots instead of two observed properties. Picking a second date draws the same datastream twice, once as it was recorded at each instant, with the property list reduced to single-select while comparing. Series are keyed by datastream and
$as_oftogether so the two series no longer collide and silently drop one, and they share a single y-axis because a second axis would invent a difference in scale that is not present in the data. Spans where the two snapshots disagree are shaded, a no-change verdict is reported when both series cover the same instants, and the comparison date picker was fixed so that a calendar click commits the selection. -
a0ce17f - Compare a snapshot against live in one press: Added a “Compare with Live” toggle so that comparing a snapshot with the present no longer requires reading a clock and typing today’s full date and time; pressing it again clears the comparison. Moved the comparison controls out of the shared control row into their own strip, since as a fourth snapshot-only column it reflowed and narrowed every other control on entering Snapshot mode and left the datetime field the narrowest on the row. The control row now stays put when time-travelling and the picker has the width it needs. Also fixed the picker’s upper bound, which was fixed at mount and therefore flagged a live comparison taken minutes later as out of range. Added the corresponding English and Italian translations.
-
52bbd8a - Read a Thing’s whole history in one request: Replaced the per-version commit walk with a
$from_toread over the version-history view, which returns every version at once, ordered oldest to newest, with$expand=Commitattaching the commit each version carries. A Thing edited once now costs one request instead of four, the 25-version ceiling is gone, and every timeline tick carries its own commit message instead of reading “Changed”. The same change fixed deletion detection, which had been searching an endpoint that reads the current table and so could never find the commit for a deleted record. The existence range behind the “did not exist yet” dialog now comes from version validity, the transaction time that$as_ofactually filters on, instead of phenomenonTime. The previous walk is retained as a fallback for backends where$from_tois unavailable.
Verification and testing: Verified the complete implementation using tsc --noEmit and integration tests against a running istSOS4 backend. Snapshot-to-snapshot and snapshot-to-live comparison, series keying, version traversal with commit messages, deletion detection and existence-range behaviour were tested successfully. I found that only the singular Commit expand is accepted on the version-history read: the plural form and every other expand answer 500 rather than a 4xx, which is why the timeline request cannot be merged into the snapshot request that needs $expand=Datastreams.
Details can be found in:
What do I plan to do next week?
Continue the observation quality and provenance work on the chart, showing the commit behind a selected reading and distinguishing quality-flag revisions from value changes in the comparison verdict.
Address any further review comments on the As-Of pull request.
Am I blocked on anything?
No, currently I do not have any blocking issues. The backend’s handling of expands on the version-history read is noted above and has been worked around on the frontend.
--
Regards,