Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере устанавливаются и определяются настройки источника данных пузырькового дерева. После запуска примера выполняются следующие операции:
устанавливаются и возвращаются территориальное, календарное измерения и измерение объектов наблюдения;
устанавливаются и возвращаются метрики, определяющие цвет и размеры пузырьков дерева.
Для выполнения примера необходимо взамен метода executeExample класса ViewController (см. раздел «Отображение экспресс-отчёта») разместить следующий код:
-(void)executeExample {
// Создаём источник данных пузырькового дерева
BubbleTreeDataViewDataSource *bubbleTreeDatasource = [self createBubbleTreeDataViewDataSource];
// Выводим информацию об источнике данных пузырькового дерева
[self printDataSourceInfo: bubbleTreeDatasource];
}
// Создаёт источник данных для пузырькового дерева
-(BubbleTreeDataViewDataSource *) createBubbleTreeDataViewDataSource {
// Создаём источник данных пузырькового дерева
SPPLPivot bubbleTreePivot = PPLPivot::pivot(m_olapReport);
SPPLPivotTable bubbleTreePivotTable = PPLPivotTable::pivotTable(bubbleTreePivot);
BubbleTreeDataViewDataSource *bubbleTreeDataSource = [[BubbleTreeDataViewDataSource alloc] initWithPivotTable: bubbleTreePivotTable olapReport: m_olapReport];
// Получаем источник данных пузырькового дерева в виде PPLib++-библиотеки
SPPLibBubbleTreeDataSource plusplusDataSource = [bubbleTreeDataSource plusplusDataSource];
// Получаем измерения источника данных пузырькового дерева
SNArray dimensions = m_olapReport->dataSource()->dimensions();
for (int i = 0; i < dimensions->count(); i++) {
SPPLDimension dimension = dimensions->objectAtIndex(i)->qClass<PPLDimension>();
switch (dimension->type()) {
case PPLDimension::kCalendarDimension: {
// Устанавливает идентификатор календарного измерения
[bubbleTreeDataSource setTimelineDimensionId: dimension->id()->nsString()];
}
break;
case PPLDimension::kStandardDimension: {
NSString *dimensionId = dimension->id()->nsString();
NSString *metricsDimensionId = plusplusDataSource->metricsDimension()->id()->nsString();
NSString *observationDimensionId = plusplusDataSource->observationDimension()->id()->nsString();
if([dimensionId isEqualToString: metricsDimensionId]) {
// Устанавливаем идентификатор территориального измерения
[bubbleTreeDataSource setMetricsDimensionId: dimensionId];
// Получаем элементы измерения
SPPLDimensionElements elements = dimension->elements();
for (int j = 0; j < elements->itemsCount(); j++) {
int64 key = elements->itemsKeys()->objectAtIndex(j);
SPPLDimensionElement dimensionElement = elements->getElementByKey(key);
if (dimensionElement != nil) {
switch (j) {
case 0:
// Устанавливаем ключ метрики, определяющей цвет пузырьков
[bubbleTreeDataSource setColorMetricsKey: dimensionElement->key()];
break;
case 1:
// Устанавливаем размер метрики, определяющей цвет пузырьков
[bubbleTreeDataSource setSizeMetricsKey: dimensionElement->key()];
default:
break;
}
}
}
}
if([dimensionId isEqualToString: observationDimensionId]) {
// Устанавливает идентификатор измерения объектов наблюдений
[bubbleTreeDataSource setObservationDimensionId: dimensionId];
}
}
break;
default:
break;
}
}
return bubbleTreeDataSource;
}
// Выводит информацию об источнике данных пузырькового дерева
-(void)printDataSourceInfo: (BubbleTreeDataViewDataSource *)bubbleTreeDatasource {
// Выводим наименование измерений источника данных
printf("Наименование измерения объектов наблюдения: %s\n", [bubbleTreeDatasource observationDimension]->name()->UTF8String());
printf("Наименование территориального измерения: %s\n", [bubbleTreeDatasource metricsDimension]->name()->UTF8String());
printf("Наименование календарного измерения: %s\n", [bubbleTreeDatasource timelineDimension]->name()->UTF8String());
// Выводим ключ и наименование метрики, определяющей цвет пузырьков
PPLDimensionElement *colorMetricsElement = [bubbleTreeDatasource colorMetricsElement];
if (colorMetricsElement != nil) {
printf("Ключ метрики, определяющей цвет пузырьков: %lld\n", colorMetricsElement->key());
printf("Наименование метрики, определяющей цвет пузырьков: %s\n", colorMetricsElement->name()->UTF8String());
}
// Выводим ключ и наименование метрики, определяющей размер пузырьков
PPLDimensionElement *sizeMetricsElement = [bubbleTreeDatasource sizeMetricsElement];
if (sizeMetricsElement != nil) {
printf("Ключ метрики, определяющей размер пузырьков: %lld\n", sizeMetricsElement->key());
printf("Наименование метрики, определяющей размер пузырьков: %s\n", sizeMetricsElement->name()->UTF8String());
}
}
В результате выполнения примера в консоли среды разработки выведены наименования территориального, календарного измерений и измерения объектов наблюдения, а также ключи и наименования метрик, определяющих цвет и размеры пузырьков дерева:
Наименование измерения объектов наблюдения: World
Наименование территориального измерения: Indicators
Наименование календарного измерения: Calendar
Ключ метрики, определяющей цвет пузырьков: 1
Наименование метрики, определяющей цвет пузырьков: Economic Policy & Debt
Ключ метрики, определяющей размер пузырьков: 2
Наименование метрики, определяющей размер пузырьков: Balance of payments
См. также: