0001-wip.patch
combo/apps/dataviz/forms.py | ||
---|---|---|
65 | 65 | |
66 | 66 |
def get_filter_fields(self, cell): |
67 | 67 |
fields = OrderedDict() |
68 |
for filter_ in cell.statistic.filters: |
|
68 |
for filter_ in cell.statistic.filters + cell.subfilters:
|
|
69 | 69 |
filter_id = filter_['id'] |
70 | 70 |
choices = [(option['id'], option['label']) for option in filter_['options']] |
71 | 71 |
initial = cell.filter_params.get(filter_id, filter_.get('default')) |
... | ... | |
147 | 147 |
if 'statistic' in self.changed_data: |
148 | 148 |
self.instance.filter_params.clear() |
149 | 149 |
self.instance.time_range = '' |
150 |
for filter_ in self.instance.statistic.filters: |
|
150 |
for filter_ in self.instance.statistic.filters + self.instance.subfilters:
|
|
151 | 151 |
if 'default' in filter_: |
152 | 152 |
self.instance.filter_params[filter_['id']] = filter_['default'] |
153 | 153 |
else: |
154 |
for filter_ in self.instance.statistic.filters: |
|
154 |
for filter_ in self.instance.statistic.filters + self.instance.subfilters:
|
|
155 | 155 |
self.instance.filter_params[filter_['id']] = self.cleaned_data.get(filter_['id']) |
156 | 156 |
return super().save(*args, **kwargs) |
157 | 157 |
combo/apps/dataviz/migrations/0022_chartngcell_subfilters.py | ||
---|---|---|
1 |
# Generated by Django 2.2.19 on 2022-01-25 16:21 |
|
2 | ||
3 |
import django.contrib.postgres.fields.jsonb |
|
4 |
from django.db import migrations |
|
5 | ||
6 | ||
7 |
class Migration(migrations.Migration): |
|
8 | ||
9 |
dependencies = [ |
|
10 |
('dataviz', '0021_chartfilterscell'), |
|
11 |
] |
|
12 | ||
13 |
operations = [ |
|
14 |
migrations.AddField( |
|
15 |
model_name='chartngcell', |
|
16 |
name='subfilters', |
|
17 |
field=django.contrib.postgres.fields.jsonb.JSONField(default=list), |
|
18 |
), |
|
19 |
] |
combo/apps/dataviz/models.py | ||
---|---|---|
186 | 186 |
'This list may take a few seconds to be updated, please refresh the page if an item is missing.' |
187 | 187 |
), |
188 | 188 |
) |
189 |
subfilters = JSONField(default=list) |
|
189 | 190 |
filter_params = JSONField(default=dict) |
190 | 191 |
title = models.CharField(_('Title'), max_length=150, blank=True) |
191 | 192 |
time_range = models.CharField( |
... | ... | |
357 | 358 |
self.add_data_to_chart(chart, data, y_labels) |
358 | 359 |
else: |
359 | 360 |
data = response['data'] |
361 |
if self.subfilters != data.get('subfilters', []): |
|
362 |
self.subfilters = data['subfilters'] |
|
363 |
self.save() |
|
360 | 364 | |
361 | 365 |
interval = self.filter_params.get('time_interval', '') |
362 | 366 |
if ( |
363 |
- |