Looker Studio از رابط postMessage برای ارائه دادهها و اطلاعات استایلبندی به iframe حاوی تجسم جامعه استفاده میکند. این راهنما جزئیات بیشتری در مورد استفاده از کتابخانه کمکی ارائه میدهد.
برای تجسم جامعه، ds-component دو عملکرد را ارائه میدهد.
- ابعاد iframe را بدست آورید
- مدیریت ارتباط با Looker Studio
اشتراک در رویدادها
وقتی کاربری با مصورسازی شما تعامل میکند، مثلاً فیلدهای انتخابشده را تغییر میدهد، استایل میدهد یا اندازهی کامپوننت را تغییر میدهد، Looker Studio رویدادهایی را به مصورسازی شما ارسال میکند.
dscc.subscribeToData یک تابع فراخوانی (callback) ثبت میکند که برای هر رویداد postMessage از Looker Studio فراخوانی میشود. به این تابع فراخوانی، یک شیء data object) ارسال میشود.
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});
دادههای برگشتی
هر دو تبدیل داده، یک شیء با پنج کلید را برمیگردانند.
| کلید | هدف |
|---|---|
style | اطلاعات سبک انتخابی کاربر و پیشفرض |
fields | اطلاعات فیلدهای انتخاب شده توسط کاربر |
interactions | تعاملات انتخابشده توسط کاربر |
theme | گزارش اطلاعات قالب |
tables | ردیفهای داده |
dateRanges | محدودههای تاریخ پیشفرض و مقایسه |
قالب دادهها:
{
fields: object(fieldsByConfigId),
style: object(styleById),
interactions: object(interactionsById),
theme: object(themeStyle),
tables: object(tablesById),
dateRanges: object(dateRangesById),
}
مصورسازیهای مختلف به قالبهای داده متفاوتی نیاز دارند. دو قالب رایج، آرایهای از آرایهها یا آرایهای از اشیاء هستند. کتابخانه ds-component دو تبدیل ارائه میدهد که برای دسترسی مستقیم شما به این قالبهای داده طراحی شدهاند.
این دو تبدیل در library-reference مستند شدهاند. این تبدیلها به راحتی به فرمتهای دادهای که معمولاً توسط کتابخانههای تجسم جاوا اسکریپت انتظار میرود، نگاشت میشوند. دو تبدیل پشتیبانیشده عبارتند از: objectTransform که آرایهای از اشیاء را برمیگرداند و tableTransform که آرایهای از آرایهها را برمیگرداند.
dscc.objectTransform
برخی از مصورسازیها، دادهها را به صورت آرایهای از اشیاء در نظر میگیرند.
برای مثال:
var data = [
{'colA': 'hello', 'colB', 'world'},
{'colA': 'hello', 'colB', 'world'}
];
کد زیر نحوه دسترسی به آرایهای از اشیاء از قالب 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]
};
};
}
اگر بخشهای داده به گونهای تعریف شوند که کاربر بتواند چندین فیلد را وارد کند (برای مثال، اگر دو بُعد برای نمودار sankey تعریف شده باشد)، آنگاه تبدیل به مورد استفاده شما بستگی خواهد داشت، زیرا قالب دادهای که توسط Looker Studio برگردانده میشود بیشتر شبیه به این خواهد بود:
var dsccObjectTransformData = [
{'configId1': ['hello', 'there'], 'configId2': [1] },
{'configId1': ['world', 'globe'], 'configId2': [2] }
]
dscc.tableTransform
برخی از کتابخانههای مصورسازی، آرایهای از آرایهها را انتظار دارند.
برای مثال:
var data = [
['hello', 1],
['world', 2]
];
کد زیر نحوه دسترسی به یک ردیف از ردیفها را از قالب 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});