Skip to content

Commit

Permalink
Seperate callback_functions
Browse files Browse the repository at this point in the history
  • Loading branch information
dladrichem committed Jun 22, 2023
1 parent 73a835c commit 229f911
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 107 deletions.
89 changes: 89 additions & 0 deletions cht_cyclones/cyclone_track_callback_functions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
import datetime

Check failure on line 1 in cht_cyclones/cyclone_track_callback_functions.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F401)

cht_cyclones/cyclone_track_callback_functions.py:1:8: F401 `datetime` imported but unused
import os

Check failure on line 2 in cht_cyclones/cyclone_track_callback_functions.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F401)

cht_cyclones/cyclone_track_callback_functions.py:2:8: F401 `os` imported but unused
from functools import reduce

Check failure on line 3 in cht_cyclones/cyclone_track_callback_functions.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F401)

cht_cyclones/cyclone_track_callback_functions.py:3:23: F401 `functools.reduce` imported but unused

import geopandas as gpd

Check failure on line 5 in cht_cyclones/cyclone_track_callback_functions.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F401)

cht_cyclones/cyclone_track_callback_functions.py:5:21: F401 `geopandas` imported but unused
import numpy as np

Check failure on line 6 in cht_cyclones/cyclone_track_callback_functions.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F401)

cht_cyclones/cyclone_track_callback_functions.py:6:17: F401 `numpy` imported but unused
import pandas as pd

Check failure on line 7 in cht_cyclones/cyclone_track_callback_functions.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F401)

cht_cyclones/cyclone_track_callback_functions.py:7:18: F401 `pandas` imported but unused
import shapely

Check failure on line 8 in cht_cyclones/cyclone_track_callback_functions.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F401)

cht_cyclones/cyclone_track_callback_functions.py:8:8: F401 `shapely` imported but unused
import xarray as xr

Check failure on line 9 in cht_cyclones/cyclone_track_callback_functions.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F401)

cht_cyclones/cyclone_track_callback_functions.py:9:18: F401 `xarray` imported but unused

from .tropical_cyclone import TropicalCyclone

Check failure on line 11 in cht_cyclones/cyclone_track_callback_functions.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F401)

cht_cyclones/cyclone_track_callback_functions.py:11:31: F401 `.tropical_cyclone.TropicalCyclone` imported but unused


def map_ready(mpbox):
try:
from app import app
except Exception:
# This should be removed. ddb in Delft Dashboard should be renamed to app!
from ddb import ddb as app

mp = app.gui.popup_window.find_element_by_id("track_selector_map").widget
mp.jump_to(0.0, 0.0, 1)
data = app.gui.popup_data
# Container layers
data["main_layer"] = mp.add_layer("track_selector")
# Tracks layers
data["track_layer"] = data["main_layer"].add_layer(
"tracks",
type="line_selector",
file_name="tracks.geojson",
select=select_track,
selection_type="single",
line_color="dodgerblue",
line_width=2,
line_color_selected="red",
line_width_selected=3,
hover_param="description",
)

# Update data in tracks layer
update_tracks()


def update_tracks():
try:
from app import app
except Exception:
# This should be removed. ddb in Delft Dashboard should be renamed to app!
from ddb import ddb as app

data = app.gui.popup_data

tdb = data["track_database"]
tracks_layer = data["track_layer"]

# Get filter data
distance = app.gui.getvar("cyclone_track_selector", "distance")
year_min = app.gui.getvar("cyclone_track_selector", "year0")
year_max = app.gui.getvar("cyclone_track_selector", "year1")
lon = app.gui.getvar("cyclone_track_selector", "lon")
lat = app.gui.getvar("cyclone_track_selector", "lat")

# Get indices based on filter
index = tdb.filter(
lon=lon, lat=lat, distance=distance, year_min=year_min, year_max=year_max
)

# Get GeoDataFrame of tracks
gdf = tdb.to_gdf(index=index)

tracks_layer.set_data(gdf, 0)


def map_moved(coords, mpbox):
pass


def select_track(feature, mpbox):
try:
from app import app
except Exception:
# This should be removed. ddb in Delft Dashboard should be renamed to app!
from ddb import ddb as app

app.gui.popup_data["database_index"] = feature["properties"]["database_index"]


def edit_filter(*args):
update_tracks()
107 changes: 0 additions & 107 deletions cht_cyclones/cyclone_track_database.py
Original file line number Diff line number Diff line change
Expand Up @@ -196,32 +196,6 @@ def filter(

return index

def track_selector(
self, app, lon=0.0, lat=0.0, distance=1000.0, year_min=1850, year_max=2030
):
app.gui.setvar("cyclone_track_selector", "lon", lon)
app.gui.setvar("cyclone_track_selector", "lat", lat)
app.gui.setvar("cyclone_track_selector", "distance", distance)
app.gui.setvar("cyclone_track_selector", "year0", year_min)
app.gui.setvar("cyclone_track_selector", "year1", year_max)
app.gui.setvar("cyclone_track_selector", "name", "")

data = {}
data["track_database"] = self

# Read GUI config file
config = app.gui.read_gui_config(
os.path.dirname(__file__), "cyclone_track_selector.yml"
)
okay, data = app.gui.popup(config, data)

track = None
if okay:
# Get the track from the database
track = self.get_track(data["database_index"])

return track, okay


def compute_distance(lon1, lat1, lon2, lat2):
R = 6373.0
Expand All @@ -236,84 +210,3 @@ def compute_distance(lon1, lat1, lon2, lat2):
a = (np.sin(dlat / 2)) ** 2 + np.cos(lat1) * np.cos(lat2) * (np.sin(dlon / 2)) ** 2
c = 2 * np.arctan2(np.sqrt(a), np.sqrt(1.0 - a))
return R * c


### Callback functions for track selector ###


def map_ready():
try:
from app import app
except Exception:
# This should be removed. ddb in Delft Dashboard should be renamed to app!
from ddb import ddb as app

mp = app.gui.popup_window.find_element_by_id("track_selector_map").widget
mp.jump_to(0.0, 0.0, 1)
data = app.gui.popup_data
# Container layers
data["main_layer"] = mp.add_layer("track_selector")
# Tracks layers
data["track_layer"] = data["main_layer"].add_layer(
"tracks",
type="line_selector",
file_name="tracks.geojson",
select=select_track,
selection_type="single",
line_color="dodgerblue",
line_width=2,
line_color_selected="red",
line_width_selected=3,
hover_param="description",
)

# Update data in tracks layer
update_tracks()


def update_tracks():
try:
from app import app
except Exception:
# This should be removed. ddb in Delft Dashboard should be renamed to app!
from ddb import ddb as app

data = app.gui.popup_data

tdb = data["track_database"]
tracks_layer = data["track_layer"]

# Get filter data
distance = app.gui.getvar("cyclone_track_selector", "distance")
year_min = app.gui.getvar("cyclone_track_selector", "year0")
year_max = app.gui.getvar("cyclone_track_selector", "year1")
lon = app.gui.getvar("cyclone_track_selector", "lon")
lat = app.gui.getvar("cyclone_track_selector", "lat")

# Get indices based on filter
index = tdb.filter(
lon=lon, lat=lat, distance=distance, year_min=year_min, year_max=year_max
)

# Get GeoDataFrame of tracks
gdf = tdb.to_gdf(index=index)

tracks_layer.set_data(gdf, 0)


def map_moved(coords):
pass


def select_track(feature):
try:
from app import app
except Exception:
# This should be removed. ddb in Delft Dashboard should be renamed to app!
from ddb import ddb as app

app.gui.popup_data["database_index"] = feature["properties"]["database_index"]


def edit_filter(*args):
update_tracks()

0 comments on commit 229f911

Please sign in to comment.