Looker Studio utilizza postMessage per fornire dati e informazioni sugli stili all'iframe contenente il della community. Questa guida fornisce ulteriori dettagli sull'uso dell'aiuto libreria.
Per le visualizzazioni della community, ds-component svolge due funzioni.
- Ottieni le dimensioni dell'iframe
- Gestisci la comunicazione con Looker Studio
Iscrizione agli eventi
Quando un utente interagisce con la visualizzazione, ad esempio modifica i campi selezionati, o ridimensionando il componente, Looker Studio invia gli eventi visualizzazione.
dscc.subscribeToData
registra un callback che verrà richiamato per ogni
postMessage
evento da Looker Studio. Per la richiamata viene passato un 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});
I dati restituiti
Entrambe le trasformazioni dei dati restituiscono un oggetto con cinque chiavi.
Chiave | Finalità |
---|---|
style |
Informazioni sullo stile predefinito e selezionato dall'utente |
fields |
Informazioni sui campi selezionati dall'utente |
interactions |
Interazioni selezionate dall'utente |
theme |
Informazioni sul tema del report |
tables |
Righe di dati |
dateRanges |
Intervalli di date predefiniti e di confronto |
Formato dei dati:
{
fields: object(fieldsByConfigId),
style: object(styleById),
interactions: object(interactionsById),
theme: object(themeStyle),
tables: object(tablesById),
dateRanges: object(dateRangesById),
}
Visualizzazioni diverse richiedono formati di dati diversi. Due formati comuni sono un array di oggetti. La libreria ds-component fornisce due trasformazioni, che sono progettate per accedere direttamente a questi formati di dati.
Le due trasformazioni sono documentate
Library-reference. Questi
trasforma facilmente la mappatura in formati di dati comunemente previsti da JavaScript
librerie di visualizzazione. Le due trasformazioni supportate sono: objectTransform
,
che restituisce un array di oggetti e tableTransform
, che restituisce un array
di array.
dscc.objectTransform
Alcune visualizzazioni prevedono i dati come un array di oggetti.
Ad esempio:
var data = [
{'colA': 'hello', 'colB', 'world'},
{'colA': 'hello', 'colB', 'world'}
];
Il seguente codice mostra come accedere a un array di oggetti dal
Formato 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]
};
};
}
Se le sezioni di dati sono definite in modo che un utente possa inserire più campi (ad Ad esempio, se per un diagramma di Sankey sono state definite due dimensioni), la classe dipende dal tuo caso d'uso, poiché il formato dei dati restituito da Looker Studio avrà un aspetto simile a questo:
var dsccObjectTransformData = [
{'configId1': ['hello', 'there'], 'configId2': [1] },
{'configId1': ['world', 'globe'], 'configId2': [2] }
]
dscc.tableTransform
Alcune librerie di visualizzazione prevedono un array di array.
Ad esempio:
var data = [
['hello', 1],
['world', 2]
];
Il seguente codice mostra come accedere a una riga di righe dal
Formato 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});