diff --git a/apps/map/forms.py b/apps/map/forms.py index 6779fa7..471d8d1 100644 --- a/apps/map/forms.py +++ b/apps/map/forms.py @@ -215,6 +215,13 @@ class LongCaseStudyForm(BaseCaseStudyForm): 'SM': _("including supply of minerals and/or manufacturing/processing of equipment used in the renewable energy economy") } + POWER_TECHNOLOGY_HELP = { + 'PT': _('Lines, transformers, machinery etc.'), + 'ES': _('Biological, chemical, electrical, electromagnetic, electrochemical, mechanical including gravitational potential, thermal etc.'), + 'HN': _('District heating/cooling, etc.'), + 'OT': '', + } + def add_explanatory_text(self, model_choices, explanatory_text): return [ ( @@ -246,6 +253,15 @@ class LongCaseStudyForm(BaseCaseStudyForm): required=False ) + self.fields['power_technology'] = forms.ChoiceField( + widget=forms.RadioSelect(), + choices=self.add_explanatory_text( + CaseStudy.POWER_TECHNOLOGY_CHOICES, + self.POWER_TECHNOLOGY_HELP + ), + required=False + ) + self.fields['project_owners'].required = True self.fields['shareholders'].required = True @@ -297,7 +313,8 @@ class LongCaseStudyForm(BaseCaseStudyForm): _("Technical and economic analysis"), 'sector_of_economy', Fieldset( - _("Power Generation Questions"), + '', + 'generation_type', 'generation_technology', 'biomass_detail', 'generation_technology_other', @@ -308,7 +325,7 @@ class LongCaseStudyForm(BaseCaseStudyForm): css_id="power_generation_questions" ), Fieldset( - _("Power Grids/Energy Storage Questions"), + '', 'power_technology', 'power_technology_other', 'energy_storage_capacity', @@ -320,7 +337,7 @@ class LongCaseStudyForm(BaseCaseStudyForm): css_id="power_grids_energy_storage_questions" ), Fieldset( - _("Mineral/Commodity Questions"), + '', 'minerals_or_commodities', 'minerals_or_commodities_other', 'use_in_energy_economy', diff --git a/apps/map/models.py b/apps/map/models.py index f6220f9..69ff021 100644 --- a/apps/map/models.py +++ b/apps/map/models.py @@ -138,31 +138,47 @@ class CaseStudy(models.Model): ('WB', _('World Bank')), ) + GENERATION_TYPE_CHOICES = ( + ('POW', _('Power')), + ('HOT', _('Heat/Cool')), + ('CHP', _('Combined Heat/Cool and Power (CHP)')), + ) + GENERATION_TECHNOLOGY_CHOICES = ( - (_('Wind energy'), ( - ('SSWE', _('Small-scale (less than 500kW)')), - ('LSWE', _('Large-scale (more than 500kW)')) - )), - (_('Photovoltaic electricity'), ( - ('SSPV', _('Small-scale (less than 500kW)')), - ('LSPV', _('Large-scale (more than 500kW)')) - )), - (_('Hydroelectric'), ( - ('SHYD', _('Small-scale (less than 1MW)')), - ('MHYD', _('Medium-scale (between 1-20MW)')), - ('LHYD', _('Large-scale (more than 20MW - often not considered renewable)')), - )), - ('STHE', _('Solar thermal electricity (e.g using parabolic reflectors)')), + ('BIO', _('Bio-energy')), ('GEOT', _('Geothermal electricity')), - ('BIOG', _('Biogas turbine')), - ('OTHB', _('Other biomass (including liquid/solid biofuel)')), + (_('Hydro'), ( + ('uHYD', _('Micro hydro (<100kW)')), + ('SHYD', _('Small-scale hydro (<1MW)')), + ('MHYD', _('Medium-scale hydro (1-30MW)')), + ('LHYD', _('Large-scale hydro (>30MW - often not considered renewable)')), + )), + (_('Marine'), ( + ('WAVE', _('Wave')), + ('TSTR', _('Tidal stream')), + ('TBAR', _('Tidal barrage/lagoon')), + ('TOTH', _('Other')), + )), + (_('Solar'), ( + ('SSPV', _('Small-scale photovoltaic (<500kW)')), + ('LSPV', _('Large-scale photovoltaic (>500kW)')), + ( 'CSP', _('Concentrated solar power (CSP)')), + ('PARA', _('Parabolic trough (open or enclosed)')), + ('FRES', _('Fresnel reflector')), + ('STIR', _('Dish Stirling')), + )), + (_('Wind'), ( + ('SSWE', _('Small-scale wind (<500kW)')), + ('LSWE', _('Large-scale wind (>500kW)')) + )), ('OTHR', _('Other (tidal, wave etc)')) ) POWER_TECHNOLOGY_CHOICES = ( - ('PT', _('Power transmission (grid lines, substations etc)')), - ('ES', _('Energy storage (pumped storage, compressed air, battery systems etc')), - ('OT', _('Others')) + ('PT', _('Electrical power transmission')), + ('ES', _('Energy storage')), + ('HN', _('Heat networks')), + ('OT', _('Other')), ) TYPE_OF_EXTRACTION_CHOICES = ( @@ -556,8 +572,15 @@ class CaseStudy(models.Model): # Second Screen - Technical and economic analysis ## - # 2.1 - Renewable Energy Generation - # 2.1.1 + ## Energy generation project + + generation_type = models.CharField( + verbose_name=_('What is being generated?'), + max_length=4, + choices=GENERATION_TYPE_CHOICES, + blank=True + ) + generation_technology = models.CharField( verbose_name=_("Generation technology"), help_text=_("Select the type of renewable energy generation that most applies to this case study."), @@ -566,20 +589,32 @@ class CaseStudy(models.Model): blank=True ) - # 2.1.1.12 - # Should be filled in if 2.1.1 was answered as biogas or biomass. - biomass_detail = models.CharField( - verbose_name=_("Description of feedstock"), - help_text=_("If you selected biogas or biomass, please describe the feedstock (where the fuel came from e.g. \ - corn, algae, anaerobic digestion, commercial waste etc)"), + generation_technology_other = models.CharField( + verbose_name=_("Further details"), + help_text=_("If you selected other, or if you would like to further define what you have chosen, \ + please specify the generation technology further. For example, if you chose solar PV \ + it is most likely to be a crystalline silicon type, but maybe it is not."), max_length=200, blank=True ) - # 2.1.1.14 - generation_technology_other = models.CharField( - verbose_name=_("Other generation type"), - help_text=_("If you selected other, please specify the generation technology (e.g. tidal, wave etc)"), + # Should be filled in if generation_technology was answered as bio-energy + biomass_detail = models.CharField( + verbose_name=_("Bio-energy feedstock"), + help_text=_("
\ +

Please describe the source of the fuel and how it is processed/used. \ + Please consider:\ +

\ + \ +

We do not expect users to know this information, but if you do \ + it may be useful to give a fuller picture.\ +

"), max_length=200, blank=True ) @@ -595,8 +630,8 @@ class CaseStudy(models.Model): # 2.1.3 # TODO: Auto-completion based on previous entries so we can query case-studies with the same answer. generation_equipment_supplier = models.TextField( - verbose_name=_("Generation equipment supplier"), - help_text=_("Enter the supplier of the generation equipment. (E.g. Siemens)"), + verbose_name=_("Generation equipment supplier(s)"), + help_text=_("Enter the supplier of the generation equipment. (E.g. Siemens Gamesa, GE, Alstom, Vestas, Hanwha Q CELLS, Mitsubishi, First Solar, Jinko Solar, Trina Solar, Suzlon Energy, Statkraft, Shanghai Electric, Ballard Power Systems, Panasonic, etc.)"), blank=True ) @@ -619,7 +654,6 @@ class CaseStudy(models.Model): # 2.2.1 power_technology = models.CharField( verbose_name=_("Power technology"), - help_text=_("Select the related energy technology."), max_length=2, choices=POWER_TECHNOLOGY_CHOICES, blank=True @@ -628,7 +662,7 @@ class CaseStudy(models.Model): # 2.2.1.4 power_technology_other = models.CharField( verbose_name=_("Other power technology"), - help_text=_("If you answered 'others', please specify the power technologies."), + help_text=_("Please specify the power technology."), max_length=128, blank=True ) diff --git a/apps/map/templates/map/form-case_study.html b/apps/map/templates/map/form-case_study.html index 6827b31..a0a4ea6 100644 --- a/apps/map/templates/map/form-case_study.html +++ b/apps/map/templates/map/form-case_study.html @@ -48,11 +48,6 @@ "showHide": ["#div_id_type_of_ecosystem"], "condition": ["RUR"] }, - { - "field": "#id_power_technology", - "showHide": ["#div_id_power_technology_other"], - "condition": ["OT"] - }, { // 2.1 - Power Generation "field": "#id_sector_of_economy", "showHide": ["#power_generation_questions"], @@ -61,12 +56,7 @@ { "field": "#id_generation_technology", "showHide": ["#div_id_biomass_detail"], - "condition": ["BIOG", "OTHB"] - }, - { - "field": "#id_generation_technology", - "showHide": ["#div_id_generation_technology_other"], - "condition": ["OTHR"] + "condition": ["BIO"] }, { // 2.2 - Power Grids "field": "#id_sector_of_economy", @@ -94,19 +84,66 @@ // logic as they rely on the 'checked' attribute rather than value. var conditionalCheckboxes = [ { - "checkbox": "#id_affects_indigenous", - "showHide": "#div_id_affects_indigenous_detail" + checkbox: "#id_affects_indigenous", + showHide: "#div_id_affects_indigenous_detail", }, { - "checkbox": "#id_shown_on_other_platforms", - "showHide": "#div_id_shown_on_other_platforms_detail" + checkbox: "#id_shown_on_other_platforms", + showHide: "#div_id_shown_on_other_platforms_detail" }, { - "checkbox": "#id_negative_case_reasons_8", - "showHide": "#div_id_negative_case_reasons_other" - } + checkbox: "#id_negative_case_reasons_8", + showHide: "#div_id_negative_case_reasons_other" + }, ]; + var conditionalRadioGroups = [ + { + name: "power_technology", + redraw: function() { + const other = document.getElementById('id_id_power_technology_0_4') + const showHide = document.getElementById('div_id_power_technology_other') + + if (other.checked) { + $(showHide).show(); + } else { + $(showHide).hide(); + } + } + }, + + { + name: "sector_of_economy", + redraw: function() { + var sections = [ + { + "input": "id_id_sector_of_economy_0_1", + "section": "power_generation_questions", + }, + { + "input": "id_id_sector_of_economy_0_2", + "section": "power_grids_energy_storage_questions", + }, + { + "input": "id_id_sector_of_economy_0_3", + "section": "mineral_commodity_questions", + }, + ] + + for (const option of sections) { + const input = document.getElementById(option.input) + const section = document.getElementById(option.section) + + if (input.checked) { + $(section).show(); + } else { + $(section).hide(); + } + } + } + } + ] + // Define a function that hides the field and then creates a listener to toggle the field. // Takes a single conditionalField dictionary with (field, showHide and condition). function addConditionalField(item) { @@ -137,34 +174,6 @@ }); } - var analysisToggles = [ - { - "input": "id_id_sector_of_economy_0_1", - "section": "power_generation_questions", - }, - { - "input": "id_id_sector_of_economy_0_2", - "section": "power_grids_energy_storage_questions", - }, - { - "input": "id_id_sector_of_economy_0_3", - "section": "mineral_commodity_questions", - }, - ] - - function showAnalysisSection() { - for (const option of analysisToggles) { - const input = document.getElementById(option.input) - const section = document.getElementById(option.section) - - if (input.checked) { - $(section).show(); - } else { - $(section).hide(); - } - } - } - // Helper functions function show(tag) { $(tag).show(); @@ -209,12 +218,10 @@ $(item.checkbox).change(); }); - for (const option of analysisToggles) { - const input = document.getElementById(option.input) - - $(input).on('change', showAnalysisSection); - $(input).trigger('change'); - } + conditionalRadioGroups.forEach(function (group) { + $(`input[name=${group.name}]`).on('change', group.redraw) + group.redraw(); + }); });