Question about "ESSENTIAL VIEWPOINT" portion in some views, e.g. Business Capability Dashboard

Post Reply
xiaoqi
Posts: 128
Joined: 09 Feb 2023, 03:33

Hello,

Recently, I noticed the really useful feature from the top banner called ESSENTIAL VIEWPOINT in some views, see attached picture, like Business Capability Dashboard, Application Dashboard.

From this banner, it will be valuable to show some sub-scoping contexts, e.g. geographic, Business Units and more.

I want to utilize this feature in the new view that I may develop, could you help to guide me where is this banner's source code loated? or in some library file?

Thanks a lot,
Xiaoqi
You do not have the required permissions to view the files attached to this post.
JohnM
Posts: 478
Joined: 17 Feb 2009, 20:19

This is the roadmap enablement, the best way to see the pattern is in the core_al_app_provider_list_table.xsl

You need to send it a JSON structure, so use the marts if you can, or create a JSON structure and pass that to the framework.

Look for <xsl:call-template name="ViewUserScopingUI"></xsl:call-template> at the top of the <body>. That calls the framework.

In your $(document).ready(function(){ ... }). you need to add this line
essInitViewScoping(redrawView, ['Group_Actor', 'Geographic_Region', 'SYS_CONTENT_APPROVAL_STATUS'], responses[0].filters,true);

the [...] covers the classes in scope of the filter on the page, the responses[0].filters is adding the dynamic filters from the data set API and true says show the filtering.

You have to have a redrawView function var redrawView = function () {....}

In there, define your scope properties, these reflect the [...] values in the essInitViewScoping

and we pass the JSON property to filter on and the class, so your JSON has to have the property defined, e.g. orgUserIds which is an array of org ids only, e.g. ['org1', 'org2', 'org3']:
let appOrgScopingDef = new ScopingProperty('orgUserIds', 'Group_Actor');
let geoScopingDef = new ScopingProperty('geoIds', 'Geographic_Region');
let visibilityDef = new ScopingProperty('visId', 'SYS_CONTENT_APPROVAL_STATUS');
let domainScopingDef = new ScopingProperty('domainIds', 'Business_Domain');

include this line to reset the RM tables: essResetRMChanges();

Now apply the scoping to an array of objects, in this case our appList
let scopedApps = essScopeResources(scopedAppList, [appOrgScopingDef, geoScopingDef, visibilityDef].concat(dynamicAppFilterDefs), typeInfo);

this will return a filtered list of apps which you can then send back to your view and, e.g., update the table contents.

Hope that makes sense
xiaoqi
Posts: 128
Joined: 09 Feb 2023, 03:33

Great thanks John, I'll try to apply to my views base on your guide.
Post Reply