Создание представлений данных аналитической панели

Требования к операционной системе: iOS 5.0 и выше.

Мобильное устройство: iPad.

Описание

В данном примере создаются и отображаются представления данных аналитической панели.

Исходный код

Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Отображение аналитической панели») следующий код:

// Определяем типы блоков аналитической панели
enum BlockType {
    kTable,
    kChart,
    kBubbles,
    kMap,
    kBubbleTree,
    kTreeMap,
    kOther
};
-(void)executeExample {
    // Проходим в цикле по всем составным блокам
    for (int i = 0; i < [[[self kap] compositeBlocks] count]; i++) {
        // Получаем составной блок по индексу
        APCompositeBlock *block = [[[[self kap] compositeBlocks] allValues] objectAtIndex:i];
        // Определяем ключ составного блока
        NSString *blockKey = [[[block data] attributes] objectForKey:@"key"];
        switch ([self typeOfBlock: block]) {
            case kTable: {
                // Создаём контроллер представления данных в виде диаграммы
                MAGridDataViewController *gridCtrl = (MAGridDataViewController *)[[self kapDelegate] createGridDataViewControllerWithMetabaseKey: [self metabaseKey: blockKey] blockKey: blockKey];
                [self showViewController: gridCtrl];
                break;
            }
            case kChart: {
                // Создаём контроллер представления данных в виде диаграммы
                MAChartDataViewController *chartCtrl = (MAChartDataViewController *)[[self kapDelegate] createChartDataViewControllerWithMetabaseKey: [self metabaseKey: blockKey] blockKey: blockKey];
                [self showViewController: chartCtrl];
                break;
            }
            case kBubbles: {
                // Создаём контроллер представления данных в виде пузырьковой диаграммы
                MABubbleDataViewController *bubblesCtrl = (MABubbleDataViewController *)[[self kapDelegate] createBubbleDataViewControllerWithMetabaseKey: [self metabaseKey: blockKey] blockKey: blockKey];
                [self showViewController: bubblesCtrl];
                break;
            }
            case kMap: {
                // Создаём контроллер представления данных в виде карты
                MAMapDataViewController *mapCtrl = (MAMapDataViewController *)[[self kapDelegate] createMapDataViewControllerWithMetabaseKey: [self metabaseKey: blockKey] blockKey: blockKey];
                [self showViewController: mapCtrl];
                break;
            }
            case kBubbleTree: {
                // Создаём контроллер представления данных в виде пузырькового дерева
                MABubbleTreeDataViewController *bubbleTreeCtrl = (MABubbleTreeDataViewController *)[[self kapDelegate] createBubbleTreeDataViewControllerWithMetabaseKey: [self metabaseKey: blockKey] blockKey: blockKey];
                [self showViewController: bubbleTreeCtrl];
                break;
            }
            case kTreeMap: {
                // Создаём контроллер представления данных в виде плоского дерева
                MATreeMapDataViewController *treeMapCtrl = (MATreeMapDataViewController *)[[self kapDelegate] createTreeMapDataViewControllerWithMetabaseKey: [self metabaseKey: blockKey] blockKey: blockKey];
                [self showViewController: treeMapCtrl];
                break;
            }
            default:
            break;
        }
    }
}
// Отображает представление контроллера
-(void)showViewController: (MADataViewController *) controller {
    [self showViewControllerInNavigationController: controller];
    // Обновляем представление контроллера
    [(MADashboardReportDelegateImpl *)[[self kapDelegate] delegate] refreshPivots];
}
// Возвращает аналитическую панель
-(APKap *)kap {
    return [m_controller valueForKey:@"m_report"];
}
// Возвращает контроллер аналитической панели
-(MADashboardReportViewController *)kapDelegate {
    // Получаем контроллер аналитической панели
    return (MADashboardReportViewController *)[[self kap] delegate];
}
// Определяет ключ источника данных, соответствующего составному блоку
-(NSString *) metabaseKey: (NSString *) blockKey {
    return [[self kapDelegate] metabaseKeyByBlockKey:blockKey];
}
// Возвращает тип блока аналитической панели
-(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;
}

В результате выполнения примера было отображено представление данных аналитической панели.

См. также:

Примеры использования компонентов