Skip to content

Commit 5aba2e8

Browse files
Merge pull request #842 from gooddata/cbon-lx-379-visualization-update
feat: add attributeFilterConfig to Visualization
2 parents 69354eb + 4c1d44f commit 5aba2e8

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

gooddata-sdk/gooddata_sdk/visualization.py

+42
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,38 @@ def __repr__(self) -> str:
440440
return repr(self._filter)
441441

442442

443+
class VisualizationAttributeFilterConfig:
444+
"""
445+
Represents attribute filter configuration used by a visualization.
446+
"""
447+
448+
def __init__(self, afc: tuple[str, Any]) -> None:
449+
local_id, data = afc
450+
self._local_id = local_id
451+
self._data = data
452+
453+
@property
454+
def local_id(self) -> str:
455+
return self._local_id
456+
457+
@property
458+
def label_id(self) -> str:
459+
return self._data["displayAsLabel"]["identifier"]["id"]
460+
461+
@property
462+
def type(self) -> str:
463+
return self._data["displayAsLabel"]["identifier"]["type"]
464+
465+
def __str__(self) -> str:
466+
return self.__repr__()
467+
468+
def __repr__(self) -> str:
469+
return (
470+
f"VisualizationAttributeFilterConfig(local_id='{self.local_id}', label_id='{self.label_id}', "
471+
f"type='{self.type}')"
472+
)
473+
474+
443475
class VisualizationSortLocator:
444476
def __init__(self, locator: dict[str, str], locator_type: LocatorItemType) -> None:
445477
self._locator = locator
@@ -546,6 +578,7 @@ def __init__(
546578
side_loads: Optional[SideLoads] = None,
547579
) -> None:
548580
self._vo = from_vis_obj
581+
self._attribute_filter_configs: Optional[list[VisualizationAttributeFilterConfig]] = None
549582
self._buckets: Optional[list[VisualizationBucket]] = None
550583
self._filters: Optional[list[VisualizationFilter]] = None
551584
self._sorts: Optional[list[VisualizationSort]] = None
@@ -568,6 +601,15 @@ def are_relations_valid(self) -> str:
568601
# Fallback to true for tests, where fixtures were generated without HTTP header activating this feature
569602
return self._vo["attributes"].get("areRelationsValid", "true")
570603

604+
@property
605+
def attribute_filter_configs(self) -> Optional[list[VisualizationAttributeFilterConfig]]:
606+
visualization_attribute_filter_configs = safeget(self._vo, ["attributes", "content", "attributeFilterConfigs"])
607+
if self._attribute_filter_configs is None and visualization_attribute_filter_configs is not None:
608+
self._attribute_filter_configs = [
609+
VisualizationAttributeFilterConfig(afc) for afc in visualization_attribute_filter_configs.items()
610+
]
611+
return self._attribute_filter_configs
612+
571613
@property
572614
def buckets(self) -> list[VisualizationBucket]:
573615
if self._buckets is None:

0 commit comments

Comments
 (0)