Creating Dashboard Data Views

Operating system requirements: iOS 5.0 or later.

Mobile device: iPad.

Description

This example shows creating and displaying of dashboard data views.

Source Code

Executing the example requires to place the following code in the body of the executeExample method of the ViewController class (see the Displaying of Dashboard section):

// Determine dashboard block types
enum BlockType {
    kTable,
    kChart,
    kBubbles,
    kMap,
    kBubbleTree,
    kTreeMap,
    kOther
};
-(void)executeExample {
    // Go through all composite blocks in cycle
    for (int i = 0; i < [[[self kap] compositeBlocks] count]; i++) {
        // Get composite block by index
        APCompositeBlock *block = [[[[self kap] compositeBlocks] allValues] objectAtIndex:i];
        // Determine composite block key
        NSString *blockKey = [[[block data] attributes] objectForKey:@"key"];
        switch ([self typeOfBlock: block]) {
            case kTable: {
                // Create chart data view controller
                MAGridDataViewController *gridCtrl = (MAGridDataViewController *)[[self kapDelegate] createGridDataViewControllerWithMetabaseKey: [self metabaseKey: blockKey] blockKey: blockKey];
                [self showViewController: gridCtrl];
                break;
            }
            case kChart: {
                // Create chart data view controller
                MAChartDataViewController *chartCtrl = (MAChartDataViewController *)[[self kapDelegate] createChartDataViewControllerWithMetabaseKey: [self metabaseKey: blockKey] blockKey: blockKey];
                [self showViewController: chartCtrl];
                break;
            }
            case kBubbles: {
                // Create bubble chart data view controller
                MABubbleDataViewController *bubblesCtrl = (MABubbleDataViewController *)[[self kapDelegate] createBubbleDataViewControllerWithMetabaseKey: [self metabaseKey: blockKey] blockKey: blockKey];
                [self showViewController: bubblesCtrl];
                break;
            }
            case kMap: {
                // Create map data view controller
                MAMapDataViewController *mapCtrl = (MAMapDataViewController *)[[self kapDelegate] createMapDataViewControllerWithMetabaseKey: [self metabaseKey: blockKey] blockKey: blockKey];
                [self showViewController: mapCtrl];
                break;
            }
            case kBubbleTree: {
                // Create bubble tree data view controller
                MABubbleTreeDataViewController *bubbleTreeCtrl = (MABubbleTreeDataViewController *)[[self kapDelegate] createBubbleTreeDataViewControllerWithMetabaseKey: [self metabaseKey: blockKey] blockKey: blockKey];
                [self showViewController: bubbleTreeCtrl];
                break;
            }
            case kTreeMap: {
                // Create tree map data view controller
                MATreeMapDataViewController *treeMapCtrl = (MATreeMapDataViewController *)[[self kapDelegate] createTreeMapDataViewControllerWithMetabaseKey: [self metabaseKey: blockKey] blockKey: blockKey];
                [self showViewController: treeMapCtrl];
                break;
            }
            default:
            break;
        }
    }
}
// Displays controller view
-(void)showViewController: (MADataViewController *) controller {
    [self showViewControllerInNavigationController: controller];
    // Refreshes controller view
    [(MADashboardReportDelegateImpl *)[[self kapDelegate] delegate] refreshPivots];
}
// Returns dashboard
-(APKap *)kap {
    return [m_controller valueForKey:@"m_report"];
}
// Returns dashboard controller
-(MADashboardReportViewController *)kapDelegate {
    // Get dashboard controller
    return (MADashboardReportViewController *)[[self kap] delegate];
}
// Determines key of data source corresponding to composite block
-(NSString *) metabaseKey: (NSString *) blockKey {
    return [[self kapDelegate] metabaseKeyByBlockKey:blockKey];
}
// Returns dashboard block type
-(BlockType) typeOfBlock: (APCompositeBlock *) block {
    if ([[block type] isEqual: @"Table"]) return kTable;
    if ([[block type] isEqual: @"Chart"]) return kChart;
    if ([[block type] isEqual: @"Bubbles"]) return kBubbles;
    if ([[block type] isEqual: @"Map"]) return kMap;
    if ([[block type] isEqual: @"BubbleTree"]) return kBubbleTree;
    if ([[block type] isEqual: @"TreeMap"]) return kTreeMap;
    return kOther;
}

After executing the example the dashboard data view is displayed.

See also:

Example of Component Use