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),