Требования к операционной системе: 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;
}
В результате выполнения примера было отображено представление данных аналитической панели.

См. также: