Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описываются некоторые приемы работы с делегатом экспресс-отчета. После запуска примера выполняются следующие операции:
создается и извлекается делегат экспресс-отчета;
из полученного делегата извлекается экспресс-отчет;
извлекаются права доступа к экспресс-отчету;
создается объект прав доступа к экспресс-отчёту на основе битовой маски;
извлекается справочник, содержащий первоначальные настройки экспресс-отчета;
проверяется наличие скриншота в экспресс-отчете;
осуществляется сохранение экспресс-отчета в избранное.
Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Отображение экспресс-отчёта») следующий код:
// Получаем экземпляр делегата экспресс-отчета
EAReportDelegateImpl *reportDelegate = (EAReportDelegateImpl *)[m_controller delegate];
// Получаем экспресс-отчет
SPPLOlapReport report = [reportDelegate olapReport];
// Выводим в консоль среды разработки начальный режим отображения данных экспресс-отчета
NSLog(@"Начальный режим отображения данных экспресс-отчета: %@", report->startMode()->nsString());
// Получаем права доступа к экспресс-отчету
MAReportAccessRights *rights = [reportDelegate accessRights];
// Выводим в консоль среды разработки права доступа к экспресс-отчету
NSLog(@"Права доступа к экспресс-отчету:");
NSLog(@"Чтение: %@", [rights canRead]? @"разрешено": @"запрещено");
NSLog(@"Запись: %@", [rights canWrite]? @"разрешена": @"запрещена");
NSLog(@"Удаление: %@", [rights canDelete]? @"разрешено": @"запрещено");
NSLog(@"Печать: %@", [rights canPrint]? @"разрешена": @"запрещена");
// Создаем новый объект прав доступа к экспресс-отчету на основе битовой маски
MAReportAccessRights *rights2 = [[MAReportAccessRights alloc] initWithBitmask:[rights bitmask]];
// Сравниваем новый объект с объектом прав доступа к экспресс-отчету и выводим в консоль среды разработки результат сравнения
if([rights isEqual: rights2])
{
NSLog(@"Сравнение нового объекта прав доступа к экспресс-отчету с исходным объектом: объекты равны");
}
else{
NSLog(@"Сравнение нового объекта прав доступа к экспресс-отчету с исходным объектом: объекты не равны");
}
// Получаем справочник, содержащий первоначальные настройки отчета
NSDictionary *settings = [reportDelegate reportSettings];
// Получаем справочник, содержащий первоначальные настройки диаграммы
NSDictionary *chart = [settings valueForKey:@"chart"];
// Получаем массив ключей справочника настроек диаграммы
NSArray *settingsKeys = [chart allKeys];
// Выводим в консоль среды разработки параметры диаграммы
NSLog(@"Параметры диаграммы, содержащиеся в справочнике:" );
// Перебираем в цикле ключи справочника настроек диаграммы
for(NSString *key in settingsKeys)
{
// Выводим в консоль среды разработки наименование и значение параметра настроек диаграммы
NSLog(@"%@: %@", key, [chart valueForKey:key]);
}
// Проверяем наличие скриншота и выводим в консоль среды разработки результат проверки
NSLog(@"Наличие скриншота: %@", [reportDelegate hasScreenshot]? @"присутствует":@"отсутствует");
// Получаем ссылку на репозиторий
SPPLMetabase metabase = PPLMetabase::sharedMetabase(report->descriptor()->repositoryDescriptor());
// Выводим в консоль среды разработки количество избранных объектов репозитория до добавления отчета в избранное
NSLog(@"Количество избранных объектов репозитория до добавления отчета в избранное: %d",metabase->favoriteDescriptors()->count());
// Сохраняем отчет в избранное
[reportDelegate saveFavoriteWithName:@"favorite1"];
// Выводим в консоль среды разработки количество избранных объектов репозитория после добавления отчета в избранное
NSLog(@"Количество избранных объектов репозитория после добавления отчета в избранное: %d",metabase->favoriteDescriptors()->count());
Также необходимо в файле статичного примера MAExpressAnalysisReportViewControllerFactory.mm в методе createReport: заменить фрагмент кода перед строкой:
SNString plistPath = PPLFileManager::getReportPlistPath(olapReport->descriptor());
на следующий код:
// Создаём делегат отчета EAReportDelegateImpl *delegate = [[[EAReportDelegateImpl alloc] initWithOlapReport:olapReport] autorelease]; // Создаём контроллер аналитической панели MAExpressAnalysisReportViewController *report = [[[MAExpressAnalysisReportViewController alloc] initWithDelegate:delegate] autorelease]; // Задаем контроллер аналитической панели для созданного делегата delegate.expressReportController = report;
В результате выполнения примера в консоли среды разработки была выведена информация об экспресс-отчете, параметры настроек диаграммы экспресс-отчета, результат сравнения нового объекта прав доступа к экспресс-отчету с исходным объектом, а также количество избранных объектов в репозитории до и после добавления экспресс-отчета в избранное:
Начальный режим отображения данных экспресс-отчета: Table
Права доступа к экспресс-отчету:
Чтение: разрешено
Запись: разрешена
Удаление: разрешено
Печать: разрешена
Сравнение нового объекта прав доступа к экспресс-отчету с исходным объектом: объекты не равны
Параметры диаграммы, содержащиеся в справочнике:
legendOrientation: 3
chartType: 0
legendVisible: true
Наличие скриншота: отсутствует
Количество избранных объектов репозитория до добавления отчета в избранное: 0
Количество избранных объектов репозитория после добавления отчета в избранное: 1
См. также: