|
@@ -14,19 +14,18 @@ def get_option_groups(
|
|
|
data: DataFrame, filter_data: Dict[str, Tuple[set, set]],
|
|
|
k: str, g: str, _type: str
|
|
|
):
|
|
|
- in_chart = data['$/unit'].apply(lambda x: (x or False) and True)
|
|
|
- if k in data:
|
|
|
- k_data_in_chart = chain(*data[in_chart]["tags"]) if k == "tag" else data[in_chart][k]
|
|
|
+ if k in data or (k == 'tag' and 'tags' in data):
|
|
|
+ k_data_in_chart = chain(*data["tags"]) if k == "tag" else data[k]
|
|
|
else:
|
|
|
k_data_in_chart = []
|
|
|
-
|
|
|
+
|
|
|
groups = sorted(set(data[g] if g is not None and g in data else []))
|
|
|
groups.append(None)
|
|
|
if _type == "exclude":
|
|
|
prefix = "!"
|
|
|
else:
|
|
|
prefix = ""
|
|
|
-
|
|
|
+
|
|
|
for group in groups:
|
|
|
selected = []
|
|
|
unselected = []
|
|
@@ -46,7 +45,7 @@ def get_option_groups(
|
|
|
filter_data[k][0] - set(k_data_in_chart) - filter_data[k][1]
|
|
|
))
|
|
|
else:
|
|
|
- k_grouped_data_in_chart = set(data[in_chart & (data[g].apply(lambda x,axis=None: x == group))][k]) if k in data else set()
|
|
|
+ k_grouped_data_in_chart = set(data[data[g].apply(lambda x,axis=None: x == group)][k]) if k in data else set()
|
|
|
if _type == "include":
|
|
|
selected.extend(filter_data[k][0] & set(k_grouped_data_in_chart))
|
|
|
unselected.extend(k_grouped_data_in_chart - filter_data[k][0])
|
|
@@ -56,7 +55,7 @@ def get_option_groups(
|
|
|
options = sorted(map(lambda x: {
|
|
|
"selected": x[0],
|
|
|
"value": f"{prefix}{x[1]}",
|
|
|
- "display": x[1]
|
|
|
+ "display": x[1]
|
|
|
}, chain(
|
|
|
map(lambda x: (True, x), set(selected)),
|
|
|
map(lambda x: (False, x), set(unselected)),
|