From f2acced18f311b3c8fff7cec52b216084ce5e1d4 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Mon, 24 Jan 2022 18:13:24 +0100 Subject: [PATCH] wip --- combo/apps/dataviz/forms.py | 6 +++--- .../migrations/0022_chartngcell_subfilters.py | 19 +++++++++++++++++++ combo/apps/dataviz/models.py | 4 ++++ 3 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 combo/apps/dataviz/migrations/0022_chartngcell_subfilters.py diff --git a/combo/apps/dataviz/forms.py b/combo/apps/dataviz/forms.py index 28b5b3b7..aaf7a779 100644 --- a/combo/apps/dataviz/forms.py +++ b/combo/apps/dataviz/forms.py @@ -65,7 +65,7 @@ class ChartFiltersMixin: def get_filter_fields(self, cell): fields = OrderedDict() - for filter_ in cell.statistic.filters: + for filter_ in cell.statistic.filters + cell.subfilters: filter_id = filter_['id'] choices = [(option['id'], option['label']) for option in filter_['options']] initial = cell.filter_params.get(filter_id, filter_.get('default')) @@ -147,11 +147,11 @@ class ChartNgForm(ChartFiltersMixin, forms.ModelForm): if 'statistic' in self.changed_data: self.instance.filter_params.clear() self.instance.time_range = '' - for filter_ in self.instance.statistic.filters: + for filter_ in self.instance.statistic.filters + self.instance.subfilters: if 'default' in filter_: self.instance.filter_params[filter_['id']] = filter_['default'] else: - for filter_ in self.instance.statistic.filters: + for filter_ in self.instance.statistic.filters + self.instance.subfilters: self.instance.filter_params[filter_['id']] = self.cleaned_data.get(filter_['id']) return super().save(*args, **kwargs) diff --git a/combo/apps/dataviz/migrations/0022_chartngcell_subfilters.py b/combo/apps/dataviz/migrations/0022_chartngcell_subfilters.py new file mode 100644 index 00000000..5f69ce86 --- /dev/null +++ b/combo/apps/dataviz/migrations/0022_chartngcell_subfilters.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.19 on 2022-01-25 16:21 + +import django.contrib.postgres.fields.jsonb +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('dataviz', '0021_chartfilterscell'), + ] + + operations = [ + migrations.AddField( + model_name='chartngcell', + name='subfilters', + field=django.contrib.postgres.fields.jsonb.JSONField(default=list), + ), + ] diff --git a/combo/apps/dataviz/models.py b/combo/apps/dataviz/models.py index d75c0585..0d7dddf8 100644 --- a/combo/apps/dataviz/models.py +++ b/combo/apps/dataviz/models.py @@ -186,6 +186,7 @@ class ChartNgCell(CellBase): 'This list may take a few seconds to be updated, please refresh the page if an item is missing.' ), ) + subfilters = JSONField(default=list) filter_params = JSONField(default=dict) title = models.CharField(_('Title'), max_length=150, blank=True) time_range = models.CharField( @@ -357,6 +358,9 @@ class ChartNgCell(CellBase): self.add_data_to_chart(chart, data, y_labels) else: data = response['data'] + if self.subfilters != data.get('subfilters', []): + self.subfilters = data['subfilters'] + self.save() interval = self.filter_params.get('time_interval', '') if ( -- 2.30.2