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',
|
'time_range_end_template',
|
||||||
):
|
):
|
||||||
del self.fields[field]
|
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):
|
def add_filter_fields(self):
|
||||||
new_fields = OrderedDict()
|
new_fields = OrderedDict()
|
||||||
|
@ -357,6 +365,9 @@ class ChartFiltersForm(ChartFiltersMixin, forms.ModelForm):
|
||||||
self.fields.pop(field, None)
|
self.fields.pop(field, None)
|
||||||
else:
|
else:
|
||||||
self.update_time_range_choices(first_cell.statistic, exclude_template_choice=True)
|
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:]:
|
for cell in chart_cells[1:]:
|
||||||
cell_filter_fields = self.get_filter_fields(cell)
|
cell_filter_fields = self.get_filter_fields(cell)
|
||||||
|
@ -422,6 +433,12 @@ class ChartFiltersForm(ChartFiltersMixin, forms.ModelForm):
|
||||||
|
|
||||||
filters_cell.save()
|
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):
|
class ChartFiltersConfigForm(forms.ModelForm):
|
||||||
filters = forms.MultipleChoiceField(
|
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) {
|
form.submit(function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
$(window).trigger('combo:refresh-graphs');
|
$(window).trigger('combo:refresh-graphs');
|
||||||
|
|
|
@ -11,30 +11,8 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(function () {
|
$(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#panel-dataviz_chartngcell-{{ cell.pk }}-general div.content').change(function() {
|
||||||
$('div#cell-dataviz_chartngcell-{{ cell.pk }} button.save').click();
|
$('div#cell-dataviz_chartngcell-{{ cell.pk }} button.save').click();
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1721,6 +1721,10 @@ def test_chartng_cell_manager_new_api(app, admin_user, new_api_statistics):
|
||||||
assert cell.time_range == 'previous-year'
|
assert cell.time_range == 'previous-year'
|
||||||
|
|
||||||
resp.form[field_prefix + 'time_range'] = 'range'
|
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_start'] = '2020-10-01'
|
||||||
resp.form[field_prefix + 'time_range_end'] = '2020-11-03'
|
resp.form[field_prefix + 'time_range_end'] = '2020-11-03'
|
||||||
manager_submit_cell(resp.form)
|
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
|
field_prefix = 'cdataviz_chartngcell-%s-' % cell.id
|
||||||
|
|
||||||
resp.form[field_prefix + 'time_range'] = 'range-template'
|
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_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'
|
resp.form[field_prefix + 'time_range_end_template'] = 'now|add_days:"14"|adjust_to_week_monday'
|
||||||
manager_submit_cell(resp.form)
|
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.statistic = Statistic.objects.get(slug='one-serie')
|
||||||
first_cell.save()
|
first_cell.save()
|
||||||
resp = app.get('/')
|
resp = app.get('/')
|
||||||
assert len(resp.form.fields) == 8
|
assert len(resp.form.fields) == 6
|
||||||
assert 'filter-time_range_start' in resp.form.fields
|
assert 'filter-time_range_start' not in resp.form.fields
|
||||||
assert 'filter-time_range_end' in resp.form.fields
|
assert 'filter-time_range_end' not in resp.form.fields
|
||||||
|
|
||||||
time_range_field = resp.form['filter-time_range']
|
time_range_field = resp.form['filter-time_range']
|
||||||
assert time_range_field.value == ''
|
assert time_range_field.value == ''
|
||||||
|
@ -2777,7 +2785,7 @@ def test_chart_filters_cell(new_api_statistics, app, admin_user, nocache):
|
||||||
|
|
||||||
assert (
|
assert (
|
||||||
resp.form['filter-overridden_filters'].value
|
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
|
# 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)
|
@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')
|
page = Page.objects.create(title='One', slug='index')
|
||||||
cell = ChartNgCell(page=page, order=1, placeholder='content')
|
cell = ChartNgCell(page=page, order=1, placeholder='content')
|
||||||
cell.statistic = Statistic.objects.get(slug='one-serie')
|
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')
|
ChartFiltersCell.objects.create(page=page, order=2, placeholder='content')
|
||||||
|
|
||||||
app = login(app)
|
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('/')
|
resp = app.get('/')
|
||||||
assert 'filter-time_range' in resp.form.fields
|
assert 'filter-time_range' in resp.form.fields
|
||||||
assert 'filter-time_range_start' 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()
|
cell.save()
|
||||||
|
|
||||||
resp = app.get('/')
|
resp = app.get('/')
|
||||||
assert len(resp.form.fields) == 8
|
assert len(resp.form.fields) == 6
|
||||||
assert 'filter-ou' in resp.form.fields
|
assert 'filter-ou' in resp.form.fields
|
||||||
assert 'filter-service' in resp.form.fields
|
assert 'filter-service' in resp.form.fields
|
||||||
assert 'filter-time_range' 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])
|
manager_submit_cell(resp.forms[0])
|
||||||
|
|
||||||
resp = app.get('/')
|
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-ou' not in resp.form.fields
|
||||||
assert 'filter-service' in resp.form.fields
|
assert 'filter-service' in resp.form.fields
|
||||||
assert 'filter-time_range' in resp.form.fields
|
assert 'filter-time_range' in resp.form.fields
|
||||||
|
|
Loading…
Reference in New Issue