salesforce零基础学习(八十三)analytics:reportChart实现Dashboard(仪表盘)功能效果

项目中经常会用到Report以及Dashboard来分析汇总数据,Dashboard可以指定view as user,如果针对不同的用户需要显示其允许查看的数据,比如  根据role hierarchy来显示数据,需要指定run as login user.但是dashboards runas the logged-in user是有数量的限制的,针对此种情况,就需要使用自定义实现Dashboard功能。

使用自定义操作可以通过apex class获取数据,在visualforce page上画不同组的chart,点击chart以后跳转到相关详情的report页面,但是这种情况无法处理funnel chart的情况,因为visualforce的api没有提供funnel chart样式的元素。

这种情况下,比较偷懒的操作为在Report上使用Role Hierarchy进行限制来对数据进行获取,然后在Report中配置chart,使用aynalytics:reportChart传递需要显示的report ids进行展示,从而实现dashboard的效果。

 功能:实现自定义Dashboard,Dashboard显示两个chart,分别为通过Type对Account进行分组以及通过State/Province对Account分组,每个用户只能看到当前用户以及下级的内容。

准备工作:

1.创建Report,此Report通过Type进行分组,developername为Account_Report_By_Type

2.创建Report,此Report通过State/Province进行分组,developername为Account_By_Billing_State_Province

3.创建Dashboard,包含上面的两个Report,datasource也分别对应上面两个report。

准备工作结束,现在需要通过程序来实现上面的Dashboard。

1.AnalyticsReportChartController:用来获取上述两个report id,并放在reportIds

 1 public with sharing class AnalyticsReportChartController {
 2     public List<Id> reportIds{get;set;}
 3     public AnalyticsReportChartController() {
 4         reportIds = new List<Id>();
 5         reportIds.add(accountByTypeReportId);
 6         reportIds.add(accountByStateProvinceReportId);
 7     }
 8     public Id accountByTypeReportId{
 9         get {
10             if(accountByTypeReportId == null) {
11                 Report rt = [select id from Report where DeveloperName = 'Account_Report_By_Type' limit 1];
12                 accountByTypeReportId = rt.Id;
13             }
14             return accountByTypeReportId;
15         }set;
16     }
17 
18     public Id accountByStateProvinceReportId {
19         get {
20             if(accountByStateProvinceReportId == null) {
21                 Report rt = [select id from Report where DeveloperName = 'Account_By_Billing_State_Province' limit 1];
22                 accountByStateProvinceReportId = rt.Id;
23             }
24             return accountByStateProvinceReportId;
25         }set;
26         
27     }
28 }

2.AnalyticsReportChart.page:实现展示两个report的chart,点击后跳转到相关的report中

 1 <apex:page controller="AnalyticsReportChartController">
 2     <apex:panelGrid columns="2">
 3         <apex:outputPanel id="reportPanel">
 4             <apex:repeat value="{!reportIds}" var="report">
 5                 <div style="display: inline-block;width: 400px;height: 400px;vertical-align: top;">
 6                     <analytics:reportChart reportId="{!report}" showRefreshButton="false" size="small" cacheResults="false"></analytics:reportChart>
 7                 </div>
 8             </apex:repeat>
 9         </apex:outputPanel>
10     </apex:panelGrid>
11 </apex:page>

效果展示:

总结:使用analytics:reportChart可以很方便的实现DashBoard的展示效果,但是此种方式仅限于Dashboard中的一个Chart对应一个Report,而不是一个Chart对应多个Report,如果出现一个Chart对应多个Report,需要创建成一对一的关系才能实现。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏刘望舒

Android事件总线(一)EventBus3.0用法全解析

前言 EventBus是一款针对Android优化的发布/订阅事件总线。简化了应用程序内各组件间、组件与后台线程间的通信。优点是开销小,代码更优雅,以及将发送者...

2159
来自专栏前端人人

React第三方组件3(状态管理之Flux的使用③TodoList中)

本教程总共5篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章! 1、React第三方组件3(状态管理之Flux的使用①简单...

2575
来自专栏xingoo, 一个梦想做发明家的程序员

【设计模式】—— 状态模式State

  模式意图   允许一个对象在内部改变它的状态,并根据不同的状态有不同的操作行为。   例如,水在固体、液体、气体是三种状态,但是展现在我们面前的确实不同的...

1777
来自专栏前端人人

React第三方组件3(状态管理之Flux的使用②TodoList上)

本教程总共5篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章! 1、React第三方组件3(状态管理之Flux的使用①简单...

3144
来自专栏前端架构

再谈DOMContentLoaded与渲染阻塞—分析html页面事件与资源加载

浏览器的多线程中,有的线程负责加载资源,有的线程负责执行脚本,有的线程负责渲染界面,有的线程负责轮询、监听用户事件。

1.7K15
来自专栏前端架构

what is the purpose of square bracket usage in angular,why?中括号什么用

what is the purpose of square bracket usage in angular,why?

632
来自专栏前端架构

再谈DOMContentLoaded与渲染阻塞—分析html页面事件与资源加载

浏览器的多线程中,有的线程负责加载资源,有的线程负责执行脚本,有的线程负责渲染界面,有的线程负责轮询、监听用户事件。

272
来自专栏林冠宏的技术文章

记一次使用 android 自带 WebView 做富文本编辑器之API、机型的兼容及各种奇葩bug的解决

转载请声明出处(https://cloud.tencent.com/developer/user/1148436/activities) 目录 1,测试设备介绍...

43910
来自专栏林德熙的博客

WPF 高性能笔

如果需要经过路由事件才收到输入,如果有人在路由事件做了很多需要很长事件的代码,那么等待用户的路由事件就会使用很长的时间。

654
来自专栏PhpZendo

HTML 5 Web Workers 的基本信息

要将有趣的应用(例如从侧重服务器端的实施)移植到客户端 JavaScript,存在很多制约瓶颈。其中包括浏览器兼容性、静态类型、可访问性和性能。幸运的是,随着浏...

371

扫码关注云+社区