UIB: Transforming data for Related Content Component
Create & Setup Data Resource to bring in records (I used the “Look up Records” resource)
Create Client State Parameter (Type = JSON, Initial Value = Blank)
Add the Related Content component to your page. Tie the component to your new Client State Parameter by setting Items field to @state.CSName (The name of your Client State Parameter)
Create a new Page Script
Name the script and set it up (below is an example script used to bring in and format the data)
/**
* @param {params} params
* @param {api} params.api
* @param {any} params.event
* @param {any} params.imports
*/
function handler({
api,
event,
helpers,
imports
}) {
const {
setState,
state,
emit
} = api;
//Build Object
const buildObj = function(results) {
var payloadObj = [];
var payload = {};
results.forEach(r => {
payload.title = {
"label": r.name.displayValue,
"variant": "secondary",
"href": "/x/app/profile/" + r._row_data.uniqueValue,
"opensWindow": "false"
};
payload.fields = [];
if (r.email.displayValue)
payload.fields.push({
"text": r.email.displayValue,
"type": "string",
"tooltip": "email"
});
if (r.title.displayValue)
payload.fields.push({
"text": r.title.displayValue,
"type": "string",
"tooltip": "Job title"
});
payloadObj.push(payload);
payload = {};
});
return payloadObj;
};
//Build obj state
if (event.name == "DATA_FETCH_SUCCEEDED") {
// This sets the state of the client state parameter by calling the buildObj function and feeding it the arrray of results from your Data Resource
setState('userObj', buildObj(api.data.get_users.results));
}
}
6. Go back to your Data Resource, and click Events. Then create a new Event Handler under “Data Fetch Succeeded” that called your Page script you created above
Resources

