Looker Studio menggunakan postMessage untuk memberikan informasi gaya dan data ke iframe yang berisi elemen visualisasi komunitas. Panduan ini memberikan detail lebih lanjut tentang penggunaan helper library.
Untuk visualisasi komunitas, ds-component memiliki dua fungsi.
- Mendapatkan dimensi iframe
- Mengelola komunikasi dengan Looker Studio
Berlangganan acara
Saat pengguna berinteraksi dengan visualisasi Anda, seperti mengubah kolom yang dipilih, mengubah gaya, atau mengubah ukuran komponen, Looker Studio akan mengirimkan peristiwa ke visualisasi.
dscc.subscribeToData
mendaftarkan callback yang akan dipanggil untuk setiap callback
Peristiwa postMessage
dari Looker Studio. Callback mendapatkan 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});
Data yang dikembalikan
Kedua transformasi data menampilkan objek dengan lima kunci.
Kunci | Tujuan |
---|---|
style |
Informasi gaya default dan yang dipilih pengguna |
fields |
Informasi kolom yang dipilih pengguna |
interactions |
Interaksi yang dipilih pengguna |
theme |
Laporkan informasi tema |
tables |
Baris data |
dateRanges |
Rentang tanggal default dan perbandingan |
Format data:
{
fields: object(fieldsByConfigId),
style: object(styleById),
interactions: object(interactionsById),
theme: object(themeStyle),
tables: object(tablesById),
dateRanges: object(dateRangesById),
}
Visualisasi yang berbeda membutuhkan format data yang berbeda pula. Dua format yang umum adalah satu array atau satu array objek. Library ds-component menyediakan dua yang dirancang untuk membantu Anda langsung ke format data ini.
Kedua transformasi tersebut didokumentasikan dalam
library-reference. Ini
mengubah peta dengan mudah ke format data yang umumnya diharapkan oleh JavaScript
perpustakaan visualisasi. Dua transformasi yang didukung adalah: objectTransform
,
yang menampilkan array objek, dan tableTransform
, yang menampilkan array
dari array.
dscc.objectTransform
Beberapa visualisasi mengharapkan data sebagai array objek.
Contoh:
var data = [
{'colA': 'hello', 'colB', 'world'},
{'colA': 'hello', 'colB', 'world'}
];
Kode berikut menunjukkan cara mengakses array objek dari
Format 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]
};
};
}
Jika bagian data ditetapkan sedemikian rupa sehingga pengguna bisa memasukkan beberapa {i>field<i} (untuk misalnya, jika ada dua dimensi yang ditentukan untuk diagram sankey), maka akan bergantung pada kasus penggunaan Anda, karena format data yang ditampilkan oleh Looker Studio akan terlihat seperti:
var dsccObjectTransformData = [
{'configId1': ['hello', 'there'], 'configId2': [1] },
{'configId1': ['world', 'globe'], 'configId2': [2] }
]
dscc.tableTransform
Beberapa library visualisasi memerlukan array array.
Contoh:
var data = [
['hello', 1],
['world', 2]
];
Kode berikut menunjukkan cara mengakses baris baris dari metode
Format 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});