Получение параметров блока аналитической панели

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

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

Описание

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

Исходный код

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

// Получаем контроллер аналитической панели
MADashboardReportViewController *controller = (MADashboardReportViewController*)m_controller;
if ([[[controller report] compositeBlocks] count] > 0) {
    // Получаем блок аналитической панели
    APCompositeBlock *block = [[[controller report] compositeBlocks] allValues][0];
    // Загружаем представление, если оно не было загружено
    if([block view] != nil){
        [block loadView];
        // Извещаем блок о том, что загружены дочерние представления
        if([block isViewLoaded])
        [block viewDidLayoutSubviews];
    }
    // Выводим информацию о привязках блока аналитической панели
    NSLog(@"Признак привязки блока к верхней границе окна: %hhd", [block anchorTop]);
    NSLog(@"Признак привязки блока к нижней границе окна: %hhd", [block anchorBottom]);
    NSLog(@"Признак привязки блока к левой границе окна: %hhd", [block anchorLeft]);
    NSLog(@"Признак привязки блока к правой границе окна: %hhd", [block anchorRight]);
    // Выводим информацию об отступах блока аналитической панели
    if([block usePaddings]){
        NSLog(@"Значения отступа блока сверху: %f", [block paddingTop]);
        NSLog(@"Значения отступа блока снизу: %f", [block paddingBottom]);
        NSLog(@"Значения отступа блока слева: %f", [block paddingLeft]);
        NSLog(@"Значения отступа блока справа: %f", [block paddingRight]);
    }
    // Выводим информацию о тени блока аналитической панели
    if([block useShadow]){
        const CGFloat *c = CGColorGetComponents([block shadowColor].CGColor);
        NSLog(@"Компоненты цвета тени блока: R:%f G:%f B:%f A:%f", c[0], c[1], c[2], c[3]);
        NSLog(@"Значение прозрачности тени блока: %f", [block shadowOpacity]);
        NSLog(@"Значения ширины тени блока: %f", [block shadowWidth]);
    }
    // Выводим информацию о фоне блока аналитической панели
    if([block useBackground]){
        const CGFloat *c = CGColorGetComponents([block backgroundColor].CGColor);
        NSLog(@"Компоненты цвета фона блока: R:%f G:%f B:%f A:%f", c[0], c[1], c[2], c[3]);
    }
    // Выводим информацию о границах блока аналитической панели
    if([block useBorder]){
        const CGFloat *c = CGColorGetComponents([block borderColor].CGColor);
        NSLog(@"Компоненты цвета границы блока: R:%f G:%f B:%f A:%f", c[0], c[1], c[2], c[3]);
        NSLog(@"Ширина границы блока панели: %f", [block borderWidth]);
    }
    // Выводим информацию о скруглении углов границ блока аналитической панели
    if([block useBorderRadius]){
        NSLog(@"Радиус скругления углов границ: %f", [block cornerRadius]);
    }
    // Выводим информацию о градиенте блока аналитической панели
    if([block useGradient]){
        const CGFloat *c = CGColorGetComponents([block gradientColor].CGColor);
        NSLog(@"Компоненты цвета градиента: R:%f G:%f B:%f A:%f", c[0], c[1], c[2], c[3]);
        NSLog(@"Угол градиента: %f", [block gradientAngle]);
    }
    // Выводим размеры блока аналитической панели
    if([block hasWidth])
    NSLog(@"Ширина блока аналитической панели: %f", [block width]);
    if([block hasHeight])
    NSLog(@"Высота блока аналитической панели: %f", [block height]);
    // Получаем массив атрибутов блока аналитической панели
    NSDictionary *attributes = [block attributes];
    // Выводим имя блока аналитической панели
    NSLog(@"Имя блока аналитической панели: %@", [attributes valueForKey:@"name"]);
    // Выводим описание, тип и ключ блока аналитической панели
    if([block tag] != nil)
    NSLog(@"Описание блока аналитической панели: %@", [block tag]);
    if([block type] != nil)
    NSLog(@"Тип блока аналитической панели: %@", [block type]);
    if([block key] != nil)
    NSLog(@"Ключ блока аналитической панели: %@", [block key]);
    // Выводим количество блоков аналитической панели
    NSLog(@"Количество блоков аналитической панели: %d", [[[block kap] compositeBlocks] count]);
    // Создаем копию блока аналитической панели
    APXMLParserObject *data = [block data];
    APCompositeBlock *copy = [[APCompositeBlock new] autorelease];
    [copy initWithParserObject:data kap:[block kap]];
    // Создаем и устанавливаем справочник свойств
    NSArray *valArray = [NSArray arrayWithObjects:@"string", [NSNumber numberWithBool:YES], [NSNumber numberWithDouble:42.42],
    [NSNumber numberWithInt:42], nil];
    NSArray *keyArray = [NSArray arrayWithObjects:@"stringKey", @"boolKey", @"doubleKey", @"intKey", nil];
    NSMutableDictionary *props = [NSMutableDictionary dictionaryWithObjects:valArray forKeys:keyArray];
    [copy setValue:props forKey:@"m_properties"];
    // Выводим имя элемента блока аналитической панели
    APXMLParserObject *obj = [copy propForKey:[[[copy objects][0] attributes] allValues][0]];
    NSLog(@"Имя элемента блока аналитической панели: %@", [obj elementName]);
    // Выводим значения свойств указанных типов
    if([[copy properties] count] != 0){
        if([copy hasPropForKey:@"stringKey"])
        NSLog(@"Значение свойства строкового типа: %@", [copy stringPropForKey:@"stringKey"]);
        NSLog(@"Значение свойства логического типа: %hhd", [copy boolPropForKey:@"boolKey"]);
        NSLog(@"Значение свойства вещественного типа: %f", [copy doublePropForKey:@"doubleKey"]);
        NSLog(@"Значение свойства целочисленного типа: %i", [copy intPropForKey:@"intKey"]);
    }
    } else {
    NSLog(@"Блоки аналитической панели отсутствуют");
}

В результате в консоль среды разработки будет выведена информация о блоке аналитической панели:

Признак привязки блока к верхней границе окна: 1

Признак привязки блока к нижней границе окна: 1

Признак привязки блока к левой границе окна: 1

Признак привязки блока к правой границе окна: 1

Компоненты цвета фона блока: R:1.000000 G:1.000000 B:1.000000 A:1.000000

Компоненты цвета границы блока: R:0.788235 G:0.788235 B:0.788235 A:1.000000

Ширина границы блока панели: 1.000000

Ширина блока аналитической панели: 348.923077

Высота блока аналитической панели: 190.666667

Имя блока аналитической панели: Таблица

Тип блока аналитической панели: Table

Ключ блока аналитической панели: 7HBEWOKE7UKGM6VB

Количество блоков аналитической панели: 1

Имя элемента блока аналитической панели: prop

Значение свойства строкового типа: string

Значение свойства логического типа: 1

Значение свойства вещественного типа: 42.420000

Значение свойства целочисленного типа: 42

См. также:

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