...
- An XML file that will define the method that will be called to retrieve the results and the various settings of the dashboard
- A Java method that will retrieve the dashboard results.
- A summary page that the dashboard component will link to.
A data entry page that will give the user the ability to adjust the dashboard settings. (optional)
Dashboard Component XML file
...
In the following example completedActinitiesPerTypeAndMonth.xml is created under ../pages/dashboards/activities
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<?xml version="1.0" encoding="UTF-8"?><dashboardcomponent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/dashboards.xsd"> <name>key_completed_activities_per_type_and_month</name> <description>key_completed_activities_per_type_and_month_stacked_bar_chart</description> <ejb>CRMUIActivityDashboard</ejb> <method>loadCompletedActivitiesPerTypeAndMonth</method> <type>stack</type> <orientation>vertical</orientation> <primaryfield>ACTIVITIES.ACTIVITYID</primaryfield> <primaryfieldlabel>key_number_of_activities</primaryfieldlabel> <groupbyfield>ACTIVITIES.ACTTYPEID,ACTUALCLOSINGDATE_FILTER</groupbyfield> <groupbyfieldlabel>key_month,_type</groupbyfieldlabel> <valuelabels>ejb/CRMUIActivityType.getTypeOptions</valuelabels> <summarypage>activities/activitiesPerType</summarypage> <setting> <page>dashboards/activitiesPerTypeSettings</page> <classname>ejb/CRMUIActivityDashboard</classname> <method>loadActivitiesPerTypeSettingsForm</method> </setting> </dashboardcomponent> |
Java Method to Retrieve Results
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
public DashboardComponentData loadNewActivitiesPerTypeAndMonth(
String dashboardID,
String dashboardComponentID,
String filterConditions,
ArrayList<Object> parameters) throws Exception {
CRMDODashboard dashboard = (CRMDODashboard)dashboardBean.load(dashboardID);
CRMDODashboardComponent dashboardComponent = (CRMDODashboardComponent)dashboardComponentBean.load(dashboard, dashboardComponentID);
String dashboardComponentSettings = "";
Set<CRMDOActivityType> activityTypes = activityDashboardXMLUtilBean.loadActivityTypesPerTypeFromXML(dashboardComponent);
if (activityTypes!=null && activityTypes.size()>0)
{
dashboardComponentSettings += "\n AND ACTIVITYTYPES.ACTTYPEID IN ( ";
Iterator<CRMDOActivityType> iter = activityTypes.iterator();
while (iter.hasNext())
{
CRMDOActivityType activityType = iter.next();
dashboardComponentSettings += "\n '" + activityType.getId() + "',";
}
dashboardComponentSettings = dashboardComponentSettings.substring(0, dashboardComponentSettings.length()-1);
dashboardComponentSettings += "\n )";
}
String sql =
"\n SELECT * FROM ( " +
"\n SELECT ACTIVITYTYPES.ACTTYPEID, " +
"\n CASE " +
"\n " + DateUtil.getMonthSQL(getCRMSession().getDbtype(), "ACTIVITIES.ACTIVITYSTARTDATE") +
"\n WHEN '1' THEN 'JAN' " +
"\n WHEN '2' THEN 'FEB' " +
"\n WHEN '3' THEN 'MAR' " +
"\n WHEN '4' THEN 'APR' " +
"\n WHEN '5' THEN 'MAY' " +
"\n WHEN '6' THEN 'JUN' " +
"\n WHEN '7' THEN 'JUL' " +
"\n WHEN '8' THEN 'AUG' " +
"\n WHEN '9' THEN 'SEP' " +
"\n WHEN '10' THEN 'OCT' " +
"\n WHEN '11' THEN 'NOV' " +
"\n WHEN '12' THEN 'DEC' " +
"\n END AS MONTH, " +
"\n COUNT(ACTIVITIES.ACTIVITYID) AS TOTAL " +
"\n FROM ACTIVITIES " +
"\n INNER JOIN ACTIVITYTYPES ON ACTIVITYTYPES.ACTTYPEID = ACTIVITIES.ACTTYPEID " +
"\n WHERE ACTIVITIES.ACTIVITYDELETED = 0 " +
"\n AND ACTIVITYTYPES.ACTTYPEDELETED = 0 " +
"\n " + dashboardComponentSettings +
"\n " + filterConditions +
"\n AND " + DateUtil.getSQLFirstDayOfMonthDate(getCRMSession().getDbtype(), "ACTIVITIES.ACTIVITYSTARTDATE")+" >= " + DateUtil.addMonthsSQLDate(getCRMSession().getDbtype(), DateUtil.getSelectSQLDate(getCRMSession().getDbtype(), DateUtil.getFirstDateOfMonth(getCurrentDate())), -12) + " " +
"\n GROUP BY ACTIVITYTYPES.ACTTYPEID, " +
"\n CASE " +
"\n " + DateUtil.getMonthSQL(getCRMSession().getDbtype(), "ACTIVITIES.ACTIVITYSTARTDATE") +
"\n WHEN '1' THEN 'JAN' " +
"\n WHEN '2' THEN 'FEB' " +
"\n WHEN '3' THEN 'MAR' " +
"\n WHEN '4' THEN 'APR' " +
"\n WHEN '5' THEN 'MAY' " +
"\n WHEN '6' THEN 'JUN' " +
"\n WHEN '7' THEN 'JUL' " +
"\n WHEN '8' THEN 'AUG' " +
"\n WHEN '9' THEN 'SEP' " +
"\n WHEN '10' THEN 'OCT' " +
"\n WHEN '11' THEN 'NOV' " +
"\n WHEN '12' THEN 'DEC' " +
"\n END " +
"\n ) TEMP " +
"\n ORDER BY ( " +
getOrderByWithCurrentMonthPriority() +
"\n ), ACTTYPEID ";
ResultSetUtil data = SQLUtil.executeUsingPreparedStatement(sql, getOrganisationID(), parameters, getCRMSession().getDbtype());
DashboardComponentData componentData = new DashboardComponentData(data);
return componentData;
} |
Defining Dashboard Components in Metadata
...