{% import 'macros/form.html' as form %}
{% block styles %}
  {% asset 'ckanext-odsh/odsh_datepicker_style' %}
{% endblock styles %}
{% set dataset_is_draft = data.get('state', 'draft').startswith('draft') or data.get('state', 'none') == 'none' %}


{# field title #}
{% block package_basic_fields_title %}
  {% set error_string = _(_('Title') + ': '+errors.title[0]) if errors.title %}
  {{ 
      form.input(
        'title',
        id='field-title', 
        label=_('Title'), 
        value=data.title,
        error=error_string, 
        classes=['control-full'], 
        attrs={'data-module': 'slug-preview-target'},
        is_required=true,
        placeholder=_('Enter title')
      ) 
  }}
{% endblock package_basic_fields_title %}

{# field name #}
{% block package_basic_fields_url %}
  {% set prefix = h.url_for('dataset.read', id='') %}
  {% set domain = h.url_for('dataset.read', id='', qualified=true) %}
  {% set domain = domain|replace("http://", "")|replace("https://", "") %}
  {% set attrs = {'data-module': 'slug-preview-slug', 'data-module-prefix': domain, 'data-module-placeholder': '<dataset>', 'class': 'form-control input-sm'} %}
  {{ 
    form.prepend('name',
      id='field-name',
      label=_('URL'),
      prepend=prefix,
      placeholder=_('eg. my-dataset'),
      value=data.name,
      error=errors.name,
      attrs=attrs,
      is_required=true
    )
  }}
{% endblock %}

{# field note #}
{% block package_basic_fields_description %}
{% set error_string = _(_('Description') + ': '+errors.notes[0]) if errors.notes %}
{{ 
    form.markdown(
        'notes', 
        id='field-notes', 
        label=_('Description'), 
        value=data.notes,
        error=error_string, 
        is_required=false, 
        placeholder=_('Enter description')
    ) 
}}
{% endblock package_basic_fields_description %}


{# field Organization #}
{% block package_basic_fields_org %}
{% if data.group_id %}
<input type="hidden" name="groups__0__id" value="{{ data.group_id }}" />
{% endif %}

{% set dataset_has_organization = data.owner_org or data.group_id %}
{% set organizations_available = h.organizations_available('create_dataset') %}
{% set user_is_sysadmin = h.check_access('sysadmin') %}
{% set show_organizations_selector = organizations_available %}
{% set show_visibility_selector = dataset_has_organization or (organizations_available and (user_is_sysadmin or
dataset_is_draft)) %}
{% set existing_org = data.owner_org or data.group_id %}

<div class="control-group field-organization">
    <label for="field-organizations" class="control-label">
        {{ _('Organization') }}
        <span title="{{ _('This field is required') }}" class="control-required">*</span>
    </label>
    <div class="controls">
        <div class="row-fluid">
            <div class="span6">
                <select id="field-organizations" name="owner_org" data-module="autocomplete">
                    {% if h.check_config_permission('create_unowned_dataset') %}
                    <option value="" {% if not selected_org and data.id %} selected="selected" {% endif %}>{{ _('No organization') }}</option>
                    {% endif %}
                    {% for organization in organizations_available %}
                    {# get out first org from users list only if there is not an existing org #}
                    {% set selected_org = (existing_org and existing_org == organization.id) or (not existing_org and not data.id and organization.id == organizations_available[0].id) %}
                    <option value="{{ organization.id }}" {% if selected_org %} selected="selected" {% endif %}>{{
                        organization.display_name }}</option>
                    {% endfor %}
                </select>
            </div>
        </div>
    </div>
</div>
{% endblock package_basic_fields_org %}


{# field license #}
{% block package_basic_fields_license %}

{% set error_missing_attr = h.odsh_extract_error('licenseAttributionByText', errors) %}
<div class="control-group field-license">

<label class="control-label" for="field-license">
    {{ _("License") }}:
    <span title="{{ _('This field is required') }}" class="control-required">*</span>
</label>
<div class="controls">
  <div class="row-fluid">
    <div class="span3">
            {% set error = errors.license_id %}
            {% set error_license_id = _(_("License") + ': '+errors.license_id[0] ) if errors.license_id %}
        <div class="control-group {{ " error" if error_license_id }}">
            <div class="controls">
                <select id="field-license" name="license_id">
                    {% set existing_license_id = data.get('license_id') %}
                    {% for license_id, license_desc in h.presorted_license_options(existing_license_id) %}
                    <option value="{{ license_id }}" {% if existing_license_id==license_id %}selected="selected" {%
                        endif %}>{{ license_desc }}</option>
                    {% endfor %}
                </select>
            </div>
        </div>
    </div>
    <div class="span3">
        {# field Namensnennung #}
        {% set field = 'licenseAttributionByText' %}
        {% set value = h.odsh_extract_value_from_extras(data.extras,field) %}
        <div class="control-group {{ " error" if error_missing_attr }} control-full">
            <div class="controls">
                        {{ form.input_extra(field, value=value, index=0, type='text', attrs={'disabled':true,
        'data-module':"odsh_form", 'data-module-licensetoggle':'true', 'data-module-autofill':'true'}, placeholder=_('enter name')) }}
            </div>
        </div>
    </div>
    {% if error_license_id %} 
        <div class="span6 inline-error">
            {{_(error_license_id)}}
        </div>
    {% endif %}
    {% if error_missing_attr%} 
        <div class="span6 inline-error">
            {{_(error_missing_attr)}}
        </div>
    {% endif %}
    </div>
  </div>
</div>
{% endblock package_basic_fields_license%}


{# timerange #}
{% set error_start = h.odsh_extract_error_new('temporal_start', errors) %}
{% set error_end = h.odsh_extract_error_new('temporal_end', errors) %}
{% set error_string = 'odsh_temporal_error_label' if error_start and error_end else (error_start if error_start else (error_end if error_end))%}
<label for="start-end" class="control-label">
  {{ _('Period') }}: <span title="{{ _('This field is required') }}" class="control-required">*</span>
</label>
<div class='row-fluid'>
    <div id='start-end' class='span3'>
        {# field temporal_start #}
        {% set field = 'temporal_start' %}
        {% set data_temporal_start = h.odsh_extract_value_from_extras(data.extras,field) %}
        {% set value = data_temporal_start.split('T')[0] if data_temporal_start else None %}
        {% set index = 1 %}
        <div class="control-group {{ " error" if error_start }} control-full">
            <div class="controls">
                {{ form.input_extra(field, value=value, index=index, type='hidden') }}
                <input pattern="\d{2}\.\d{2}\.\d{4}" autocomplete="off" id="datepicker_start" type="text" 
                    value="{{h.odsh_render_datetime(value, False)}}" placeholder="{{ _('from') }}"
                    data-module="odsh_datepicker" data-module-target='field-temporal_start-value'/>
            </div>
        </div>
    </div>
    <div class='span3'>
        {# field temporal_end #}
        {% set field = 'temporal_end' %}
        {% set data_temporal_end = h.odsh_extract_value_from_extras(data.extras,field) %}
        {% set value = data_temporal_end.split('T')[0] if data_temporal_end else None %}
        <div class="control-group {{ " error" if error_end }} control-full">
            <div class="controls">
                {{ form.input_extra(field, value=value, index=2, type='hidden') }}
                <input pattern="\d{2}\.\d{2}\.\d{4}" autocomplete="off" id="datepicker_end" type="text" 
                    value="{{h.odsh_render_datetime(value, False)}}" placeholder="{{ _('to') }}"
                    data-module="odsh_datepicker" data-module-target='field-temporal_end-value'/>
            </div>
        </div>
    </div>
    {% if error_string %} 
        <div class="span6 inline-error">
            {{_(error_string)}}
        </div>
    {% endif %}
</div>


{# field issued #}
{% set field = 'issued' %}
{% set data_issued = h.odsh_extract_value_from_extras(data.extras,field) %}
{% set error = h.odsh_extract_error_new(field, errors) %}
{% set value = data_issued.split('T')[0] if data_issued else (h.odsh_now() if not error else '')%}
<div class="control-group {{ " error" if error }} control-full">
    <label class="control-label" for="field-{{field}}">{{ _('Publication date') }}: <span title="{{ _('This field is required') }}" class="control-required">*</span> </label>
    <div class="controls">
        <div class="row-fluid">
            <div class="span6">
                {{ form.input_extra(field, value=value , index=3, type='hidden') }}
                <input  pattern="\d{2}\.\d{2}\.\d{4}" autocomplete="off" type="text" 
                    value="{{h.odsh_render_datetime(value, False)}}" 
                    data-module="odsh_datepicker" data-module-target='field-issued-value'/>
            </div>
            <div class="span6 inline-error">
                {% if error %} 
                {{_(error)}}
                {% endif %}
            </div>
        </div>
    </div>
</div>


{# field tags #}
{% block package_basic_fields_tags %}
{% set tag_attrs = {
    'data-module': 'autocomplete', 
    'data-module-tags': '', 
    'data-module-source': '/api/2/util/tag/autocomplete?incomplete=?'
} %}
{{ 
    form.input(
        'tag_string', 
        id='field-tags', 
        label=_('Tags'), 
        value=data.tag_string, 
        error=errors.tag_string,
        classes=['control-full'], 
        attrs=tag_attrs,
        is_required=false, 
        placeholder=_('odsh tags placeholder')
    ) 
}}
{% endblock %}


{# field spatial_uri #}
{% set spatial_uri_from_extras =  h.odsh_extract_value_from_extras(data.extras, 'spatial_uri') %}
{% set spatial_uri = data.spatial_uri_temp or spatial_uri_from_extras or '' %}
{{ form.select_autocomplete('spatial_uri_temp', label=_('Spatial uri'), selected=spatial_uri, options=h.get_spatial_for_selection(), is_required=False, classes=['control-full', 'field-spatial_uri'])}}


{# field private #}
<div class="control-group">
    <label for="field-private" class="control-label">{{ _('Visibility') }}:
        <span title="{{ _('This field is required') }}" class="control-required">*</span>
    </label>
    <div class="controls">
        <div class="row-fluid">
            <div class="span6">
                <select id="field-private" name="private">
                    {% for option in [('True', _('Private')), ('False', _('Public'))] %}
                    <option value="{{ option[0] }}" {% if option[0]==data.private|trim %}selected="selected" {%
                        endif %}>{{
                        option[1] }}</option>
                    {% endfor %}
                </select>
            </div>
        </div>
    </div>
</div>


{% if data.id and h.check_access('package_delete', {'id': data.id}) and data.state != 'active' %}
<div class="control-group">
    <label for="field-state" class="control-label">{{ _('State') }}:</label>
    <div class="controls">
        <div class="row-fluid">
            <div class="span6">
                <select id="field-state" name="state">
                    <option value="active" {% if data.get('state', 'none' )=='active' %} selected="selected" {%
                        endif %}>{{
                        _('Active') }}</option>
                    <option value="deleted" {% if data.get('state', 'none' )=='deleted' %} selected="selected" {%
                        endif %}>{{
                        _('Deleted') }}</option>
                </select>
            </div>
        </div>
    </div>
</div>
{% endif %}


{# field groups #}
{% set error_groups = h.odsh_extract_error_new('groups', errors) %}
<div class="control-group {{ " error" if error_groups }}">
    {% set groups_label='Kategorien'%}
    {% set multiselect_nonSelectedText='keine' %}
    {% set multiselect_allSelectedText='alle' %}
    {% set multiselect_nSelectedText='gewählt' %}
    <label for="field-groups" class="control-label">
        {{ groups_label }}: <span title="{{ _('This field is required') }}" class="control-required">*</span>
    </label>
    <div class="controls">
        <div class="row-fluid">
            <div class="span6">
                {% set existing_groups = data.get('groups') %}
                {% if existing_groups %}
                {% set existing_groups_string = existing_groups|map(attribute='id')|join(',') %}
                {% else %}
                {% set existing_groups_string = h.odsh_extract_value_from_extras(data.extras,'groups') %}
                {% endif %}
                <select id='field-groups' multiple="multiple" data-module="odsh_form" data-module-multiselect='true'
                    data-module-nonSelectedText="{{multiselect_nonSelectedText}}" data-module-allSelectedText="{{multiselect_allSelectedText}}"
                    data-module-nSelectedText="{{multiselect_nSelectedText}}" data-module-update='{{data.id != None}}'>
                    {% for option in h.groups_available()%}
                    <option value={{option.id}} {% if existing_groups_string!=None and option['id'] in existing_groups_string %}selected="selected"
                        {% endif %}>
                        {{ option['display_name'] }}</option>
                    {% endfor %}
                </select>
                <div id='selected-groups'>
                    {{ form.input_extra('groups', value=existing_groups_string, index=4, type='hidden')}}
                </div>
            </div>
            <div class="span6 inline-error">
                {% if error_groups %} 
                {{_(error_groups)}}
                {% endif %}
            </div>
        </div>
    </div>
</div>
            
{# field reference #}
{% set field = 'reference' %}
{% set error_reference = h.odsh_extract_error(field, errors) %}
{% set value = data.get(field) or '' %}
{{ form.select_autocomplete(field, label=_('Sample Dataset'), selected=value, options=h.odsh_load_mdk_sample_dataset(), error=error_reference, is_required=False, classes=['control-full', 'field-reference'])}}

{# field applicableLegislation #}
{% set field = 'applicableLegislation' %}
{% set error_reference = h.odsh_extract_error(field, errors) %}
{% set value = data.get(field) or '' %}
{{ form.select_autocomplete(field, label=_('Applicable Legislation'), selected=value, options=h.odsh_load_applicable_legislations(), error=error_reference, is_required=False, classes=['control-full', 'field-applicableLegislation'], is_multiple=True)}}

{# field hvdCategory #}
{% set field = 'hvdCategory' %}
{% set error_reference = h.odsh_extract_error(field, errors) %}
{% set value = data.get(field) or '' %}
{{ form.select_autocomplete(field, label=_('HVD Category'), selected=value, options=h.odsh_load_hvd_categories(), error=error_reference, is_required=False, classes=['control-full', 'field-hvdCategory'], is_multiple=True)}}

{% block scripts %}
  {% asset 'ckanext-odsh/odsh_datepicker_script' %}
  {% asset 'ckanext-odsh/odsh_form_script' %}
{% endblock scripts %}