Работа с базовым представлением данных в виде плоского дерева

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

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

Описание

В данном примере описываются некоторые приемы работы с базовым представлением данных в виде плоского дерева. После запуска примера выполняются следующие операции:

Необходимые файлы

В базовый пример «Отображение экспресс-отчёта» необходимо добавить следующий файл:

Исходный код

Для выполнения примера необходимо создать класс делегата, предназначенного для работы с представлением данных в виде плоского дерева, а также добавить заголовочный файл класса в исходный код  класса 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

См. также:

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