Skip to content
Snippets Groups Projects
Commit ad0f64c0 authored by Jean-Philippe Laverdure's avatar Jean-Philippe Laverdure
Browse files

implements basic field selection though the checkboxes

parent f9807e63
No related branches found
No related tags found
1 merge request!25Resolve "Enable custom views of file lists using metadata"
...@@ -159,7 +159,7 @@ class DataSetForm(forms.ModelForm): ...@@ -159,7 +159,7 @@ class DataSetForm(forms.ModelForm):
class DataSetDisplayFieldsForm(forms.ModelForm): class DataSetDisplayFieldsForm(forms.ModelForm):
dfields = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple, label=_('Field Options')) options = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple, label=_('Field Options'))
class Meta: class Meta:
model = DataSet model = DataSet
...@@ -171,7 +171,7 @@ class DataSetDisplayFieldsForm(forms.ModelForm): ...@@ -171,7 +171,7 @@ class DataSetDisplayFieldsForm(forms.ModelForm):
for f in self.instance.files.all(): for f in self.instance.files.all():
if f.annotations: if f.annotations:
choice_fields.update([k for k in f.annotations.keys()]) choice_fields.update([k for k in f.annotations.keys()])
self.fields['dfields'].choices = [('name', 'name'), ('size', 'size'), ('upload_timestamp', 'upload_timestamp'), ('uploaded_by', 'uploaded_by')] + [(f, f) for f in choice_fields] self.fields['options'].choices = [('name', 'name'), ('size', 'size'), ('upload_timestamp', 'upload_timestamp'), ('uploaded_by', 'uploaded_by')] + [(f, f) for f in choice_fields]
class LabForm(forms.ModelForm): class LabForm(forms.ModelForm):
......
{% extends './create_update.html' %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block inline_js %}
<script>
$(function() {
$('#div_id_options :checkbox').change(function() {
let val = $("#id_display_fields").val();
if ('' == val) {
// Set default value
val = '{"fields": ""}'
}
let options = JSON.parse(val);
let fields = [];
if ("" != options.fields) {
fields = options.fields.split(", ");
}
if(this.checked) {
fields.push(this.value);
} else {
let index = fields.indexOf(this.value);
if (index > -1) {
fields.splice(index, 1);
}
}
console.log(fields);
options.fields = fields.join(", ");
$("#id_display_fields").val(JSON.stringify(options));
});
});
</script>
{% endblock %}
\ No newline at end of file
...@@ -121,7 +121,7 @@ class DataSetDisplayFieldsUpdateView(LoginRequiredMixin, UpdateViewMixin, Update ...@@ -121,7 +121,7 @@ class DataSetDisplayFieldsUpdateView(LoginRequiredMixin, UpdateViewMixin, Update
success_url = reverse_lazy('user.datasets') success_url = reverse_lazy('user.datasets')
page_title = _('Update DataSet Display Fields') page_title = _('Update DataSet Display Fields')
active_page = 'datasets' active_page = 'datasets'
template_name = 'portal/secure/user/create_update.html' template_name = 'portal/secure/user/update_dataset_display_fields.html'
def get_success_message(self, cleaned_data): def get_success_message(self, cleaned_data):
return self.success_message % dict(name=self.get_object().name) return self.success_message % dict(name=self.get_object().name)
...@@ -159,7 +159,7 @@ class DataSetDetailsView(LoginRequiredMixin, DetailView): ...@@ -159,7 +159,7 @@ class DataSetDetailsView(LoginRequiredMixin, DetailView):
dataset = self.get_object() dataset = self.get_object()
if dataset.display_fields: if dataset.display_fields:
fields = [f.strip() for f in dataset.display_fields['fields'].split(',')] fields = [f.strip() for f in dataset.display_fields['fields'].split(',')]
context['headers'] = [ugettext(h.capitalize()) for h in fields] context['headers'] = [ugettext(h.capitalize().replace('_', ' ')) for h in fields]
context['rows'] = [] context['rows'] = []
for file in dataset.files.all(): for file in dataset.files.all():
row = [] row = []
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment