Overzicht
GitHub:
https://github.com/brianmcleer/time-machine-widget
Time Machine is een aangepaste widget voor ArcGIS Experience Builder Developer Edition 1.19 en hoger (getest op 1.21). De widget plaatst één datumschuifregelaar op de kaart en laat elke gedateerde laag deze volgen. Versleep de schuifregelaar naar een datum en de kaart laat zien wat er op die datum was.
Services met tijdsondersteuning zijn niet nodig. De widget leest de velden van elke laag, kiest het datumveld en past een filter toe boven op eventuele bestaande filters van de laag. Featurelagen worden in de browser gefilterd op de laagaanduiding. Kaartafbeeldingslagen met gedateerde sublagen worden gefilterd met een definitie-expressie. Na elke wijziging wordt een nieuwe afbeelding opgevraagd.
We hebben de widget gebouwd voor onze geschiedenis van annexaties, die teruggaat tot 1882 en is opgeslagen in een kaartservice met één sublaag per jaar of decennium. De widget werkt ook met één featurelaag met één datumveld.
(Excuses voor de schermafbeelding; de nieuwe Esri Community accepteert geen videobestanden.)
Wat de widget doet
- Modi ‘Op datum’, ‘Periode’ en ‘Vergelijken’. In de vergelijkingsmodus worden twee datums naast elkaar weergegeven, gescheiden door een versleepbare scheidingslijn.
- Stappen per dag, maand of jaar, of met een instelbaar aantal dagen, maanden of jaren via een geavanceerde optie. Afspelen met instelbare snelheid, herhalen, Opnieuw instellen en Vandaag, plus Vorige wijziging en Volgende wijziging om naar datums te springen waarop iets is gebeurd.
- Het bereik van de schuifregelaar wordt bepaald door de gegevens: het omvat de oudste en nieuwste datums van de ingeschakelde lagen en wordt opnieuw ingesteld wanneer lagen op de kaart worden in- of uitgeschakeld.
- Activiteitsgrafiek met het aantal objecten per jaar of maand op beide assen.
- Een lagenlijst met de lagen die de schuifregelaar volgen, het gebruikte datumveld voor elke laag en de reden waarom een laag is overgeslagen.
- Presentatiemodus: een grote datumkop op de kaart met afspelen, hoofdstukken, een hoofdstukraster met miniaturen, een focuspunt, tekenen op de kaart, een zwart-witweergave, voorlezen, een presentatievenster met notities en een klok, sneltoetsen, kioskkoppelingen en een snelheidsknop. Hoofdstukken kunnen lagen, een basiskaart, een locatie, een vlucht of een uitsnede, een pop-up met objectgegevens en een wachttijd instellen. Kleuren, lettertype en logo voor de kop worden ingesteld in de builder.
- Verhaallijnhoofdstukken die tijdens het gebruik worden gemaakt op basis van de huidige weergave, of automatisch worden gegenereerd op basis van de drukste jaren in de gegevens. Exporteren is mogelijk naar een webdiavoorstelling, een WebM-video of XML voor de builder.
- Builderinstellingen met een lagenkiezer die uit de kaart wordt ingelezen (groepslagen als koppen), regels voor lagen die de kiezer niet kan zien, jaartalreeksen voor groepen jaarlijkse momentopnamen, secties voor prestaties, presentatie en huisstijl, en import en export van de volledige configuratie als XML.
- Ingebouwde hulpgids, hint bij het eerste gebruik, toetsenbordbediening en meldingen voor schermlezers in de hele widget.
Vereisten
- Experience Builder Developer Edition 1.19 of hoger, React 19. Getest op 1.21 met Maps SDK 5.x.
- Geen afhankelijkheden van derden. Alles is afkomstig uit Experience Builder.
Installeren
- Download het zipbestand van de nieuwste GitHub-release (ook hier bijgevoegd).
- Kopieer de map
time-machine naar client\your-extensions\widgets\ zodat manifest.json zich direct in widgets\time-machine\ bevindt. Plaats de map niet nog een niveau dieper. - Voer
pnpm install (1.21 en hoger) of npm install (1.20 en lager) uit in de map client en start de client opnieuw. - Voeg Time Machine toe aan een experience en selecteer de kaartwidget die de widget aanstuurt.
Het zipbestand bevat alleen de widget. De Visual Studio-editor-shims in de repository zijn bewust weggelaten, omdat hun declaraties van algemene modules invloed zouden hebben op elke andere widget in de map your-extensions. Als je in plaats daarvan de repository kloont, verwijder die bestanden dan vóór het bouwen; ze staan vermeld in de README.
Bekende beperkingen
- Tegellagen en beeldmateriaal worden alleen aangestuurd via jaartalreeksen (groepslagen waarvan de sublagen een jaartal als naam hebben).
- Een kaartservice tekent bij elke wijziging één afbeelding, dus bij een trage service toont Afspelen minder afbeeldingen dan er stappen zijn. De datum houdt zijn tempo aan en de kaart toont de nieuwste datum die beschikbaar is.
- In de clientmodus worden maximaal zoveel objecten per laag ingelezen als in de builder is ingesteld (standaard 50.000). Voor grotere lagen worden serverstatistieken gebruikt om het bereik te bepalen.
- Voorlezen gebruikt de stemmen van de browser en vereist eerst één klik op de pagina. Video-export is in WebM-formaat.
Feedback
Issues en pull requests zijn welkom op GitHub. Als een laag wordt overgeslagen of het bereik niet klopt, staat in de lagenlijst van de widget waarom. In de browserconsole vind je een regel die begint met [time-machine] met de overige informatie.
Wijzigingslog
10/12/2026: De widget volgt nu de taal van de app (?locale=, de taalkiezer, het ArcGIS-profiel of de browser) in 39 talen, inclusief de hulpgids.
- Eerst Esri. De tool leest de vertalingen uit je Experience Builder-installatie. Zo gebruikt een tekst als ‘Inzoomen op’ de formulering van Esri's eigen widgets.
- Standaardtermen. Eenheidsnamen zoals voet en acre zijn afkomstig uit Unicode CLDR, dezelfde gegevens die browsers gebruiken.
- Gedeeld vertaalgeheugen. Alles wat nog ontbreekt, komt uit een gedeeld woordenboek dat is opgebouwd met LibreTranslate, een opensourcevertaalprogramma, en de Opus-MT-modellen van Helsinki-NLP voor Bosnisch, Kroatisch en Servisch. Het draait gratis op GitHub, dus je hebt geen API-sleutel of account nodig.
- Koppelingen. De tool vindt ook Engelse tekst die hardgecodeerd staat buiten het vertaalbestand van de widget, bijvoorbeeld een standaardinstelling of hulpgids, en koppelt die zodat ook die wordt vertaald.
Handmatige correcties krijgen altijd voorrang op machinevertalingen en worden nooit overschreven. Sommige vertalingen zijn automatisch gemaakt. Laat hier een betere formulering achter als je een vertaling tegenkomt die niet klopt.
9/25/26: 1.0.0. Eerste openbare release, op GitHub met een zipbestand.