Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описываются некоторые приемы работы с базовым представлением данных в виде плоского дерева. После запуска примера выполняются следующие операции:
создается контроллер базового представления данных в виде плоского дерева;
скрываются легенды цвета и размера плоского дерева;
определяется путь к папке с экспресс-отчётом, на основе данных которого создаётся плоское дерево.
В базовый пример «Отображение экспресс-отчёта» необходимо добавить следующий файл:
MATreeMap3DViewControllerDelegateImpl.h/.m. Делегат для работы с представлением данных в виде плоского дерева.
Для выполнения примера необходимо создать класс делегата, предназначенного для работы с представлением данных в виде плоского дерева, а также добавить заголовочный файл класса в исходный код класса ViewController (см. раздел «Отображение экспресс-отчёта»). Далее необходимо разместить в теле метода executeExample класса ViewController следующий код:
// Получаем контроллер для работы с экспресс-отчётом
MAExpressAnalysisReportViewController *contr = (MAExpressAnalysisReportViewController *)m_controller;
// Получаем делегат для работы с экспресс-отчётом
EAReportDelegateImpl *delegate = [contr delegate];
// Получаем источник данных плоского дерева
TreeMapDataViewDataSource *treeMapDataSource = (TreeMapDataViewDataSource *)[delegate treeMapDatasource];
// Создаём делегат для работы с плоским деревом
MATreeMap3DViewControllerDelegateImpl *treeMap3DCtrlDelegateImpl = [MATreeMap3DViewControllerDelegateImpl new];
// Создаём контроллер для работы с базовым представлением данных в виде плоского дерева
MATreeMap3DViewController *treeMap3DController = [[MATreeMap3DViewController new] autorelease];
[treeMap3DController setDataSource: [treeMapDataSource plusplusDataSource]];
[treeMap3DController setDelegate: treeMap3DCtrlDelegateImpl];
// Устанавливаем контроллер для работы с базовым представлением данных в виде плоского дерева
[treeMap3DCtrlDelegateImpl setTreeMap3DViewController: treeMap3DController withDataSource: treeMapDataSource];
// Устанавливаем путь к папке с отчетом, на основе данных которого создается плоское дерево
SNString plistPath = PPLFileManager::getReportPlistPath(m_olapReport->descriptor());
NSString* correctPath = plistPath?plistPath->nsString():NULL;
if (correctPath) {
correctPath = [correctPath stringByDeletingLastPathComponent];
[treeMap3DController setPathToDirReport: NString::stringWithNSString(correctPath)];
NSLog(@"Путь к папке с отчётом: %@", correctPath);
}
// Получаем настройки отчёта
SNDictionary sett = m_olapReport->settings();
SNDictionary treeMapSett = NULL; // Настройки плоского дерева
if (sett) {
SNID treeMap = sett->objectForKey(NStr("treemap"));
// Получаем настройки плоского дерева
treeMapSett = (treeMap?treeMap->qClass<NDictionary>():NULL);
if (treeMapSett) {
// Устанавливаем настройки плоского дерева
SNID xmlNameSetting = treeMapSett->objectForKey(NStr("xmlsettingsfile"));
[treeMap3DController setXmlNameSetting: (xmlNameSetting->qClass<NString>())];
}
}
// Обновляем данные дерева
[delegate controllerViewDidLoaded];
// Скрываем легенду размера
[treeMap3DController setIsSetSizeIndicator: NO];
// Скрываем легенду цвета
[treeMap3DController setIsSetColorIndicator: NO];
// Загружаем дочерние представления данных
[treeMap3DController subviewsDidLayout];
// Удаляем все дочерние представления окна
NSArray *subviews = [self.view subviews];
for(UIView *subView in subviews)
{
[subView removeFromSuperview];
}
// Отображаем панель измерений
[self.view addSubview: [treeMap3DController view]];
В результате выполнения примера было отображено базовое представление данных в виде плоского дерева. Легенды цвета и размера были скрыты:

В консоли среды разработки был выведен путь к папке с экспресс-отчётом, на основе данных которого было создано плоское дерево, а также путь к файлу со скриншотом:
Путь к папке с отчётом: /Users/sea/Library/Application
Support/iPhone Simulator/7.1/Applications/AC4804D8-C173-4008-B14D-4A2401B0B49D/Documents/repositories/910419CE79EA52E95F2F8FE76E7C24DE/OBJ21110
Путь к файлу со скриншотом: /Users/sea/Library/Application Support/iPhone
Simulator/7.1/Applications/AC4804D8-C173-4008-B14D-4A2401B0B49D/Documents/MATreeMap3DViewController.png
См. также: