Apache Airavata
Abstract
The goal of this project is to translate the GeoGateway web-app into a custom Django app for the Airavata Django Portal and to develop
a process and best practices for streamlined development of GIS based Airavata Gateways. A GeoGateway developed with the MVC (Model View Controller)
architecture of the Django framework will be flexible and modular, enabling rapid deployment of future changes and updates to the app.
The main changes to be made are:
May 11th – June 29th | Develop skeleton of app for proof of concept:
|
June 29th – July 27th | Develop extensive MVC architecture: Django Data Models for GeoGateway data Django view representations for tools.js translate original HTML/CSS to dynamic Django templates |
July 27th – August 24th | Document, Test, and Revise Document changes made from original webapp for future GIS app translations Integrate with Airavata Django Portal and test Custom App implementation Revise UX/UI if needed |
(May 11th - June29th)
Milestone | Description | Commits | Dev-list Emails |
---|---|---|---|
Vue.js + Django Integration | Worked to create a stable and reproducible development environment with Django + Vue.js + Webpack deployed as a modular Django app to the Airavata Django Portal. This required adding Webpack to the frontend Vue config and the backend Django settings, adjusting project structure, and adjusting package versions to match the Airavata Django portal. | 5/29 | https://lists.apache.org/thread.html/re48655d046a777a74b73d93797d7c87dd3446bd684340ece87e22c7c%40%3Cdev.airavata.apache.org%3E |
Created UI skeleton | Developed skeleton of UI with Vue.js and Bootstrap-Vue. Used basic layout of original GeoGateway. Learned basic functionality of Vue components and how they communicate. | 6/2 | |
Added Vuex for State Management | This was a choice I made based on some recommendations from other Vue developers. It seemed that the nature of this GIS app and its potential size warranted use of Vuex to make communication between components a simpler process. I would later remove this in favor of an event bus as it seemed to add an additional layer of unneeded complexity. | 6/4 | https://lists.apache.org/thread.html/r437bf836affdfe49347d40d5a644884915819eb770b0cf354d11d73b%40%3Cdev.airavata.apache.org%3E |
Map Tools | Added the Map Tools as the first tool-tab. These mainly involve displaying KML data on the Leaflet map. To do this I used the leaflet-kml plugin as per Jun's recommendation. | 6/4 | |
Refining Map Layer Logic (Ongoing) | This has been something I update nearly every commit. I initially used the vue2-leaflet plugin to work with the map layers but found it wasn't flexible enough with map data. I've gone through a few different data structures as I learn how best to store and display map data. After switching from Vuex to the event bus I made the most significant update to how the tool components access and process the data and subsequently add it to the parent map component. | 6/5 6/15 (These are the largest updates to the logic, more updates made throughout commits) | |
Added Event Bus and Removed Vuex | This was a significant change to the application. Instead of referring to a global store, the map component relied on global event listeners and callback functions to process the data sent by the child. This simplified the process immensely. | 6/10 6/18 | https://lists.apache.org/thread.html/r975ea5aa518247ec56a23ffd35f782e62c45ede2aacae0b4dce2514d%40%3Cdev.airavata.apache.org%3E |
GNSS, Forecast, Moment Magnitude and Seismicity Tools | Things I Learned from each Tool: GNSS:
Forecast:
Moment Magnitude Calculator:
Seismicity:
| GNSS Forecast/Nowcast Moment Mag. Seismicity |