{% from "govuk/components/radios/macro.njk" import govukRadios %}
{% from "govuk/components/select/macro.njk" import govukSelect %}
{% from "../date-input/view.njk" import dprDate %}
{% from "../start-end-date/view.njk" import dprStartEndDate %}

{% macro dprGranularDateRange(data, validationErrors, parameterPrefix = "filters.", mandatory = false) %}
  {% set filterId = 'dpr-granular-date-range' %}
  {% set filterName = data.text %}
  {% set fieldName = data.name %}
  {% set value = data.value %}

  {# Granularity vars #}
  {% set defaultGranularityValue = value.granularity.value %}
  {% set granularityOptions = data.granularityOptions %}
  {% set granularityId = parameterPrefix + fieldName + '.granularity' %}
  {% set granularityLabelText = 'Granularity' %}

  {# Quick filters vars #}
  {% set defaultQuickFilterValue = value.quickFilter.value %}
  {% set quickFilterOptions = data.quickFilterOptions %}
  {% set quickFilterId = parameterPrefix + fieldName + '.quick-filter' %}
  {% set quickFilterLabelText = 'Quick filters' %}

  {# Partial markers #}
  {% set partialStart = value.partialDate.start %}
  {% set partialEnd = value.partialDate.end %}

  {# Datepicker #}
  {% set startId = parameterPrefix + fieldName + '.start' %}
  {% set endId = parameterPrefix + fieldName + '.end' %}
  {% set min = data.min %}
  {% set max = data.max %}
  {% set defaultStartValue = value.start %}
  {% set defaultEndValue = value.end %}

  <div
    class="dpr-granular-date-range"
    id="dpr-granular-date-range_{{ fieldName }}"
    data-dpr-module="granular-date-range-input"
    data-field-name="{{ fieldName }}"
    data-field-display-name="{{ filterName }}"
    data-partial-start="{{ partialStart }}"
    data-partial-end="{{ partialEnd }}"
  >
    <legend class="govuk-fieldset__legend govuk-label govuk-!-font-weight-bold">{{ filterName }}</legend>

    {# GRANULARITY #}
    <div class="dpr-granular-date-range__inputs_wrapper">
      {# QUICK FILTERS #}
      {{
        govukSelect({
          id: quickFilterId,
          name: quickFilterId,
          value: defaultQuickFilterValue,
          items: quickFilterOptions,
          label: {
            text: quickFilterLabelText,
            classes: "govuk-label"
          },
          attributes: {
            'display-name': quickFilterLabelText
          }
        })
      }}

      {# GRANULARITY #}
      {{
        govukSelect({
          id: granularityId,
          name: granularityId,
          value: defaultGranularityValue,
          items: granularityOptions,
          label: {
            text: granularityLabelText,
            classes: "govuk-label"
          },
          attributes: {
            'display-name': granularityLabelText
          }
        })
      }}
    </div>

    {# DATEPICKER #}
    {{ dprStartEndDate(data, mandatory, validationErrors) }}
  </div>
{% endmacro %}
