diff --git a/geosafe/templates/geosafe/analysis/create.html b/geosafe/templates/geosafe/analysis/create.html
index de76d11e286..a6e8d99471f 100644
--- a/geosafe/templates/geosafe/analysis/create.html
+++ b/geosafe/templates/geosafe/analysis/create.html
@@ -663,6 +663,18 @@
'No usable layer in current extent',
'alert-danger');
}
+ else if(exp_count == 0){
+ show_info_text(
+ 'Extent Changed',
+ 'No usable exposure layer in current extent',
+ 'alert-danger');
+ }
+ else if(haz_count == 0){
+ show_info_text(
+ 'Extent Changed',
+ 'No usable hazard layer in current extent',
+ 'alert-danger');
+ }
}
function filter_layer(bounds){
diff --git a/geosafe/views/analysis.py b/geosafe/views/analysis.py
index 657729e15d9..aa34e89b78b 100644
--- a/geosafe/views/analysis.py
+++ b/geosafe/views/analysis.py
@@ -56,7 +56,13 @@ class AnalysisCreateView(CreateView):
template_name = 'geosafe/analysis/create.html'
context_object_name = 'analysis'
- def get_context_data(self, **kwargs):
+ @classmethod
+ def options_panel_dict(cls, bbox=None):
+ """Prepare a dictionary to be used in the template view
+
+ :return: dict containing metadata for options panel
+ :rtype: dict
+ """
purposes = [
{
'name': 'exposure',
@@ -77,11 +83,11 @@ def get_context_data(self, **kwargs):
]
}
]
- sections = [];
+ sections = []
for p in purposes:
categories = []
for idx, c in enumerate(p.get('categories')):
- layers = retrieve_layers(p.get('name'), c)
+ layers = retrieve_layers(p.get('name'), c, bbox=bbox)
category = {
'name': c,
'layers': layers,
@@ -94,7 +100,7 @@ def get_context_data(self, **kwargs):
}
sections.append(section)
- impact_layers = retrieve_layers('impact')
+ impact_layers = retrieve_layers('impact', bbox=bbox)
sections.append({
'name': 'impact',
'categories': [
@@ -104,6 +110,10 @@ def get_context_data(self, **kwargs):
}
]
})
+ return sections
+
+ def get_context_data(self, **kwargs):
+ sections = self.options_panel_dict()
try:
analysis = Analysis.objects.get(id=self.kwargs.get('pk'))
except:
@@ -317,43 +327,7 @@ def layer_panel(request, bbox=None):
return HttpResponseBadRequest()
try:
-
- purposes = [
- {
- 'name': 'exposure',
- 'categories': ['population', 'road', 'structure'],
- },
- {
- 'name': 'hazard',
- 'categories': ['flood', 'earthquake', 'volcano'],
- }
- ]
- sections = [];
- for p in purposes:
- categories = []
- for c in p.get('categories'):
- layers = retrieve_layers(p.get('name'), c, bbox)
- category = {
- 'name': c,
- 'layers': layers
- }
- categories.append(category)
- section = {
- 'name': p.get('name'),
- 'categories': categories
- }
- sections.append(section)
-
- impact_layers = retrieve_layers('impact', bbox=bbox)
- sections.append({
- 'name': 'impact',
- 'categories': [
- {
- 'name': 'impact',
- 'layers': impact_layers
- }
- ]
- })
+ sections = AnalysisCreateView.options_panel_dict(bbox=bbox)
form = AnalysisCreationForm(
user=request.user,
exposure_layer=retrieve_layers('exposure', bbox=bbox),