Looker Studio używa interfejsu postMessage, aby przekazywać dane i informacje o stylu do elementu iframe zawierającego wizualizację społecznościową. Ten przewodnik zawiera więcej informacji o korzystaniu z biblioteki pomocniczej.
W przypadku wizualizacji utworzonych przez społeczność tag ds-component pełni 2 funkcje.
- Pobieranie wymiarów elementu iframe
- Zarządzanie komunikacją z Looker Studio
Subskrybowanie zdarzeń
Gdy użytkownik wejdzie w interakcję z wizualizacją, np. zmieni wybrane pola, styl lub rozmiar komponentu, Looker Studio wyśle zdarzenia do wizualizacji.
dscc.subscribeToData rejestruje wywołanie zwrotne, które będzie wywoływane w przypadku każdego zdarzenia z Looker Studio.postMessage Wywołanie zwrotne otrzymuje obiekt data.
function drawViz(data){
// obtain the height and width to scale your visualization appropriately
var height = dscc.getHeight();
var width = dscc.getWidth();
// write your visualization code here
console.log("I'm the callback and I was passed this data: " + JSON.stringify(data, null, ' '));
}
// call drawViz every time Looker Studio sends a new postMessage
dscc.subscribeToData(drawViz, {transform: dscc.objectTransform});
Zwrócone dane
Obie transformacje danych zwracają obiekt z 5 kluczami.
| Klucz | Cel |
|---|---|
style |
Informacje o stylu wybranym przez użytkownika i domyślnym |
fields |
Informacje o polach wybranych przez użytkownika |
interactions |
Interakcje wybrane przez użytkownika |
theme |
Informacje o temacie raportu |
tables |
wiersze danych, |
dateRanges |
Domyślne i porównawcze zakresy dat |
Format danych:
{
fields: object(fieldsByConfigId),
style: object(styleById),
interactions: object(interactionsById),
theme: object(themeStyle),
tables: object(tablesById),
dateRanges: object(dateRangesById),
}
Różne wizualizacje wymagają różnych formatów danych. Dwa popularne formaty to tablica tablic lub tablica obiektów. Biblioteka ds-component udostępnia 2 przekształcenia, które umożliwiają bezpośrednie uzyskanie tych formatów danych.
Oba przekształcenia są opisane w dokumentacji biblioteki. Te przekształcenia łatwo można dopasować do formatów danych, których zwykle oczekują biblioteki wizualizacji w JavaScript. Obsługiwane są 2 rodzaje przekształceń: objectTransform, które zwraca tablicę obiektów, i tableTransform, które zwraca tablicę tablic.
dscc.objectTransform
Niektóre wizualizacje oczekują danych w postaci tablicy obiektów.
Na przykład:
var data = [
{'colA': 'hello', 'colB', 'world'},
{'colA': 'hello', 'colB', 'world'}
];
Poniższy kod pokazuje, jak uzyskać dostęp do tablicy obiektów w formacie dscc.objectTransform.
function drawViz(data){
// what the object transform could look like
// [
// {'configId1': ['hello'], 'configId2': [1] },
// {'configId1': ['world'], 'configId2': [2] }
// ]
var dsccObjectTransformData = data.tables.DEFAULT;
// creating an array of objects
var arrayOfObjects = dscc.ObjectTransformData.rows.map(function(d){
return {
'configId1': d.configId1[0],
'configId2': d.configId2[0]
};
};
}
Jeśli sekcje danych są zdefiniowane w taki sposób, że użytkownik może wprowadzać wiele pól (np. jeśli dla diagramu Sankeya zdefiniowano 2 wymiary), przekształcenie będzie zależeć od Twojego przypadku użycia, ponieważ format danych zwracany przez Looker Studio będzie wyglądać mniej więcej tak:
var dsccObjectTransformData = [
{'configId1': ['hello', 'there'], 'configId2': [1] },
{'configId1': ['world', 'globe'], 'configId2': [2] }
]
dscc.tableTransform
Niektóre biblioteki wizualizacji oczekują tablicy tablic.
Na przykład:
var data = [
['hello', 1],
['world', 2]
];
Poniższy kod pokazuje, jak uzyskać dostęp do wiersza z wierszy w formacie dscc.tableTransform.
function drawViz(data);
// what the below object looks like
// {
// headers: [{
// "id": "qt_ky8sltutsb",
// "name": "dimension",
// "type": "TEXT",
// "concept": "DIMENSION",
// "configId": "configId1"
// }, {
// "id": "qt_m9dtntutsb",
// "name": "metric",
// "type": "NUMBER",
// "concept": "METRIC",
// "configId": "configId2"
// }],
// rows: [
// ['hello', 1],
// ['world', 2]
// ];
// }
var dsccTableTransformObject = data.tables.DEFAULT;
// accessing the row of rows
var rowOfRows = dsccTableTransformObject.rows;
// accessing the header row
var headers = dsccTableTransformObject.headers;
}
dscc.subscribeToData(drawViz, {transform: tableTransform});