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

Требования к операционной системе: 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

См. также:

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