dataviz: move time range fields display logic from js to form (#76044) #73
|
@ -219,6 +219,14 @@ class ChartNgForm(ChartFiltersMixin, forms.ModelForm):
|
|||
'time_range_end_template',
|
||||
):
|
||||
del self.fields[field]
|
||||
else:
|
||||
if self.instance.time_range != 'range':
|
||||
del self.fields['time_range_start']
|
||||
del self.fields['time_range_end']
|
||||
|
||||
if self.instance.time_range != 'range-template':
|
||||
del self.fields['time_range_start_template']
|
||||
del self.fields['time_range_end_template']
|
||||
|
||||
def add_filter_fields(self):
|
||||
new_fields = OrderedDict()
|
||||
|
@ -357,6 +365,9 @@ class ChartFiltersForm(ChartFiltersMixin, forms.ModelForm):
|
|||
self.fields.pop(field, None)
|
||||
else:
|
||||
self.update_time_range_choices(first_cell.statistic, exclude_template_choice=True)
|
||||
if not self.is_bound and first_cell.time_range != 'range':
|
||||
del self.fields['time_range_start']
|
||||
del self.fields['time_range_end']
|
||||
|
||||
for cell in chart_cells[1:]:
|
||||
cell_filter_fields = self.get_filter_fields(cell)
|
||||
|
@ -422,6 +433,12 @@ class ChartFiltersForm(ChartFiltersMixin, forms.ModelForm):
|
|||
|
||||
filters_cell.save()
|
||||
|
||||
def clean(self):
|
||||
super().clean()
|
||||
if self.cleaned_data['time_range'] != 'range':
|
||||
del self.fields['time_range_start']
|
||||
del self.fields['time_range_end']
|
||||
|
||||
|
||||
class ChartFiltersConfigForm(forms.ModelForm):
|
||||
filters = forms.MultipleChoiceField(
|
||||
|
|
|
@ -44,18 +44,6 @@
|
|||
});
|
||||
}
|
||||
|
||||
start_field = $('#id_filter-time_range_start_p');
|
||||
end_field = $('#id_filter-time_range_end_p');
|
||||
$('#id_filter-time_range').change(function() {
|
||||
if(this.value == 'range') {
|
||||
start_field.show();
|
||||
end_field.show();
|
||||
} else {
|
||||
start_field.hide();
|
||||
end_field.hide();
|
||||
}
|
||||
}).change();
|
||||
|
||||
form.submit(function(e) {
|
||||
e.preventDefault();
|
||||
$(window).trigger('combo:refresh-graphs');
|
||||
|
|
|
@ -11,30 +11,8 @@
|
|||
|
||||
<script>
|
||||
$(function () {
|
||||
start_field = $('#id_cdataviz_chartngcell-{{ cell.pk }}-time_range_start_p');
|
||||
end_field = $('#id_cdataviz_chartngcell-{{ cell.pk }}-time_range_end_p');
|
||||
start_field_template = $('#id_cdataviz_chartngcell-{{ cell.pk }}-time_range_start_template_p');
|
||||
end_field_template = $('#id_cdataviz_chartngcell-{{ cell.pk }}-time_range_end_template_p');
|
||||
$('#id_cdataviz_chartngcell-{{ cell.pk }}-time_range').change(function() {
|
||||
if(this.value == 'range') {
|
||||
start_field.show();
|
||||
end_field.show();
|
||||
} else {
|
||||
start_field.hide();
|
||||
end_field.hide();
|
||||
}
|
||||
if(this.value == 'range-template') {
|
||||
start_field_template.show();
|
||||
end_field_template.show();
|
||||
} else {
|
||||
start_field_template.hide();
|
||||
end_field_template.hide();
|
||||
}
|
||||
}).change();
|
||||
|
||||
$('div#panel-dataviz_chartngcell-{{ cell.pk }}-general div.content').change(function() {
|
||||
$('div#cell-dataviz_chartngcell-{{ cell.pk }} button.save').click();
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -1721,6 +1721,10 @@ def test_chartng_cell_manager_new_api(app, admin_user, new_api_statistics):
|
|||
assert cell.time_range == 'previous-year'
|
||||
|
||||
resp.form[field_prefix + 'time_range'] = 'range'
|
||||
assert field_prefix + 'time_range_start' not in resp.form.fields
|
||||
assert field_prefix + 'time_range_end' not in resp.form.fields
|
||||
manager_submit_cell(resp.form)
|
||||
|
||||
resp.form[field_prefix + 'time_range_start'] = '2020-10-01'
|
||||
resp.form[field_prefix + 'time_range_end'] = '2020-11-03'
|
||||
manager_submit_cell(resp.form)
|
||||
|
@ -1978,6 +1982,10 @@ def test_chartng_cell_manager_new_api_time_range_templates(app, admin_user, new_
|
|||
field_prefix = 'cdataviz_chartngcell-%s-' % cell.id
|
||||
|
||||
resp.form[field_prefix + 'time_range'] = 'range-template'
|
||||
assert field_prefix + 'time_range_start_template' not in resp.form.fields
|
||||
assert field_prefix + 'time_range_end_template' not in resp.form.fields
|
||||
manager_submit_cell(resp.form)
|
||||
|
||||
resp.form[field_prefix + 'time_range_start_template'] = 'today|add_days:"7"|adjust_to_week_monday'
|
||||
resp.form[field_prefix + 'time_range_end_template'] = 'now|add_days:"14"|adjust_to_week_monday'
|
||||
manager_submit_cell(resp.form)
|
||||
|
@ -2732,9 +2740,9 @@ def test_chart_filters_cell(new_api_statistics, app, admin_user, nocache):
|
|||
first_cell.statistic = Statistic.objects.get(slug='one-serie')
|
||||
first_cell.save()
|
||||
resp = app.get('/')
|
||||
assert len(resp.form.fields) == 8
|
||||
assert 'filter-time_range_start' in resp.form.fields
|
||||
assert 'filter-time_range_end' in resp.form.fields
|
||||
assert len(resp.form.fields) == 6
|
||||
assert 'filter-time_range_start' not in resp.form.fields
|
||||
assert 'filter-time_range_end' not in resp.form.fields
|
||||
|
||||
time_range_field = resp.form['filter-time_range']
|
||||
assert time_range_field.value == ''
|
||||
|
@ -2777,7 +2785,7 @@ def test_chart_filters_cell(new_api_statistics, app, admin_user, nocache):
|
|||
|
||||
assert (
|
||||
resp.form['filter-overridden_filters'].value
|
||||
== 'time_range,time_range_start,time_range_end,overridden_filters,time_interval,ou,service'
|
||||
== 'time_range,overridden_filters,time_interval,ou,service'
|
||||
)
|
||||
|
||||
# adding new cell with same statistics changes nothing
|
||||
|
@ -2899,7 +2907,7 @@ def test_chart_filters_cell_future_data(app, admin_user, new_api_statistics):
|
|||
|
||||
|
||||
@with_httmock(new_api_mock)
|
||||
def test_chart_filters_cell_range_template(new_api_statistics, app, admin_user, nocache):
|
||||
def test_chart_filters_cell_time_range(new_api_statistics, app, admin_user, nocache):
|
||||
page = Page.objects.create(title='One', slug='index')
|
||||
cell = ChartNgCell(page=page, order=1, placeholder='content')
|
||||
cell.statistic = Statistic.objects.get(slug='one-serie')
|
||||
|
@ -2907,6 +2915,29 @@ def test_chart_filters_cell_range_template(new_api_statistics, app, admin_user,
|
|||
ChartFiltersCell.objects.create(page=page, order=2, placeholder='content')
|
||||
|
||||
app = login(app)
|
||||
|
||||
# time range start/end field are hidden by default on page load
|
||||
resp = app.get('/')
|
||||
assert 'filter-time_range' in resp.form.fields
|
||||
assert 'filter-time_range_start' not in resp.form.fields
|
||||
assert 'filter-time_range_end' not in resp.form.fields
|
||||
|
||||
# time range start/end field are hidden by default on ajax refresh
|
||||
location = resp.pyquery('.chartfilterscell').attr('data-ajax-cell-url')
|
||||
resp = app.get(location + '?filters_cell_id=xxx')
|
||||
assert 'filter-time_range' in resp.form.fields
|
||||
assert 'filter-time_range_start' not in resp.form.fields
|
||||
assert 'filter-time_range_end' not in resp.form.fields
|
||||
|
||||
# if custom time range is set in filters cell, time range start/end fields are shown
|
||||
resp = app.get(location + '?filter-time_range=range&filters_cell_id=xxx')
|
||||
assert 'filter-time_range' in resp.form.fields
|
||||
assert 'filter-time_range_start' in resp.form.fields
|
||||
assert 'filter-time_range_end' in resp.form.fields
|
||||
|
||||
# if custom time range is set in chart cell, time range start/end fields are shown
|
||||
cell.time_range = 'range'
|
||||
cell.save()
|
||||
resp = app.get('/')
|
||||
assert 'filter-time_range' in resp.form.fields
|
||||
assert 'filter-time_range_start' in resp.form.fields
|
||||
|
@ -3029,7 +3060,7 @@ def test_chart_filters_cell_select_filters(new_api_statistics, app, admin_user,
|
|||
cell.save()
|
||||
|
||||
resp = app.get('/')
|
||||
assert len(resp.form.fields) == 8
|
||||
assert len(resp.form.fields) == 6
|
||||
assert 'filter-ou' in resp.form.fields
|
||||
assert 'filter-service' in resp.form.fields
|
||||
assert 'filter-time_range' in resp.form.fields
|
||||
|
@ -3051,7 +3082,7 @@ def test_chart_filters_cell_select_filters(new_api_statistics, app, admin_user,
|
|||
manager_submit_cell(resp.forms[0])
|
||||
|
||||
resp = app.get('/')
|
||||
assert len(resp.form.fields) == 7
|
||||
assert len(resp.form.fields) == 5
|
||||
assert 'filter-ou' not in resp.form.fields
|
||||
assert 'filter-service' in resp.form.fields
|
||||
assert 'filter-time_range' in resp.form.fields
|
||||
|
|
Loading…
Reference in New Issue