Wizualizacji utworzonej przez społeczność możesz użyć jako filtra wykresu, filtrując raport na podstawie interakcji z wizualizacją utworzoną przez społeczność.
Jak działają filtry wykresów wizualizacji społeczności
Aby użyć wizualizacji utworzonej przez społeczność jako filtra wykresu, musisz:
- Konfigurowanie właściwości
config.interactions
- Napisz kod, który wywołuje funkcję
dscc.sendInteraction()
z informacjami o filtrze.
Definiowanie interakcji
Jeśli wizualizacja obsługuje interakcje, musisz je zdefiniować w konfiguracji. Gdy to zrobisz, w panelu właściwości pojawi się pole wyboru.
Przykładowy element config.interactions
:
{
"data": ...,
"style": ...,
"interactions": [
{
"id": "interactionsConfigId",
"supportedActions": ["FILTER"]
}
]
}
Pisanie kodu filtra
Użyj narzędzia dscc.sendInteraction()
, aby powiązać interakcję użytkownika z działaniem filtra.
Przykład:
const handleInteraction = () => {
// this is the interactionId defined in the config
const interactionId = "interactionConfigId";
// the ID of the field you want to filter on
const dimensionId = "qt_ky8sltutsb";
// the value of the field you want to filter on
const value = "USA";
// the interaction type - only FILTER is supported right now
const FILTER = dscc.InteractionType.FILTER;
let interactionData = {
concepts: [dimensionId],
values: [[value]]
};
// send Looker Studio an instruction to filter other charts in the dashboard
dscc.sendInteraction(interactionId, FILTER, interactionData);
};
Looker Studio zignoruje komunikaty wysyłane przez dscc.sendInteraction
, jeśli edytor raportów nie włączył interakcji „filtr” na potrzeby wizualizacji.
Śledzenie stanu filtra
Obiekt data
, który Looker Studio wysyła do wizualizacji, zawiera informacje o interakcjach.
Przykładowy element data.interactions
:
"onClick": {
"value": {
"type": "FILTER",
"data": {
"concepts": [
"qt_h6oibrb6wb",
"qt_i6oibrb6wb"
],
"values": [
[
"Afternoon",
"Sunday"
],
[
"Afternoon",
"Thursday"
],
[
"Morning",
"Tuesday"
]
]
}
},
"supportedActions": [
"FILTER"
]
}
Jeśli parametr value.data
nie jest określony, wizualizacja filtruje obecnie inne komponenty panelu.
Przykład:
const barHighlighting = (interactionsById) => {
// the interactionId defined in the config
const interactionId = "interactionConfigId";
const interactionField = interactionsById[interactionId];
// if filter is selected
const filterSelected = interactionField.type === "FILTER";
// if the viz is currently acting as a filter
const filterHasData = "data" in interactionField;
if (filterSelected && filterHasData){
// call the highlightBar function on the selected data
highlightBar(interactionField.data);
} else {
// clear highlighting if no data selected
clearHighlight()
}
}
Tworzę: interactionData
Obiekt interactionData
określa, jak Looker Studio będzie filtrować panel.
Jeden filtr wymiaru
Ten wykres słupkowy przedstawia liczbę książek według języka (1 wymiar i 1 rodzaj danych). Załóżmy, że użytkownik wybrał pasek odpowiadający książek w języku hiszpańskim i chcesz, aby ten filtr odfiltrowywał resztę panelu. Twój interactionData
będzie wyglądać tak:
var interactionData = {
"concepts": ["languageDimensionId"],
"values": [["Spanish"]]
}
Filtr wielu wymiarów
Ta mapa termiczna przedstawia temperaturę według dnia tygodnia i pory dnia (2 wymiary i 1 rodzaj danych). Załóżmy, że użytkownik zaznaczył komórki odpowiadające wartościom „Poniedziałkowy wieczór” i „Piątkowe popołudnie” i chcesz przefiltrować resztę panelu w taki sposób, aby wyświetlały się tylko dane z „Poniedziałkowego wieczoru” lub „Piątkowego popołudnie”. interactionData
będzie wyglądać tak:
var interactionData = {
"concepts": ["dayOfWeekDimensionId", "timeOfDayDimensionId"],
"values": [
["Monday", "evening"],
["Friday", "afternoon"]
]
}