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

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

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

Описание

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

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

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

Исходный код

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

// Получаем контроллер для работы с экспресс-отчётом
MAExpressAnalysisReportViewController *contr = (MAExpressAnalysisReportViewController *)m_controller;
// Получаем делегат для работы с экспресс-отчётом
EAReportDelegateImpl *delegate = [contr delegate];
// Получаем источник данных плоского дерева
TreeMapDataViewDataSource *treeMapDataSource = (TreeMapDataViewDataSource *)delegate.treeMapDatasource;
// Создаём контроллер для работы с плоским деревом
MATreeMapDataViewController *treeMapController = [[MATreeMapDataViewController alloc] initWithDataSource: treeMapDataSource];
[treeMapController setDelegate: contr];
[treeMapController setIsDataViewTitleVisible: YES];
SNString plistPath = PPLFileManager::getReportPlistPath(m_olapReport->descriptor());
NSString* correctPath = plistPath?plistPath->nsString():NULL;
if (correctPath) {
    correctPath = [correctPath stringByDeletingLastPathComponent];
    [treeMapController setPathToDirReport:correctPath];
    NSLog(@"Путь к папке с отчётом: %@", correctPath);
}
// Получаем настройки отчёта
SNDictionary sett = m_olapReport->settings();
SNDictionary treeMapSett = NULL; // Настройки плоского дерева
SNDictionary selectDict = m_olapReport->selectionDictionary();
if (sett) {
    SNID treeMap = sett->objectForKey(NStr("treemap"));
    // Получаем настройки плоского дерева
    treeMapSett = (treeMap?treeMap->qClass<NDictionary>():NULL);
    if (treeMapSett) {
        // Загружаем и применяем настройки плоского дерева
        [treeMapDataSource loadSettings:treeMapSett withSelection:selectDict];
        [treeMapController setXmlNameSettingFromDic:(NSDictionary *)treeMapSett->nsObject()];
        } else {
        // Устанавливаем настройки дерева
        [treeMapController setXmlNameSetting];
    }
}
// Обновляем данные дерева
[delegate controllerViewDidLoaded];
// Скрываем легенду размера
[treeMapController setIsSizeIndicator: NO];
// Скрываем легенду цвета
[treeMapController setIsSetColorIndicator: NO];
// Отображаем плоское дерево
[self showViewControllerInFullScreen: treeMapController];

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

В консоли среды разработки был выведен путь к папке с экспресс-отчётом, на основе данных которого было создано плоское дерево:

Путь к папке с отчётом: /Users/sea/Library/Application Support/iPhone Simulator/7.1/Applications/AC4804D8-C173-4008-B14D-4A2401B0B49D/Documents/repositories/910419CE79EA52E95F2F8FE76E7C24DE/OBJ21110

См. также:

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