Working with Dashboard Data Source Dimension

Operating system requirements: iOS 5.0 or later.

Mobile device: iPad.

Description

This example displays working with a dashboard data source and its container. After starting the example the following operations are executed:

Source Code

Executing the example requires to place the following code instead of the executeExample method of the ViewController class (see the Displaying of Dashboard section):

-(void)executeExample {
    // Get data source dimension container
    SPPLDashboardDataSourceDimensionObjects dimensionObjects1 =
    m_dashboardReport->dataSourceDimensionObjects();
    if (dimensionObjects1 != NULL) {
        // Create a dictionary with data source dimension container
        SNMutableArray objectDescriptions = dimensionObjects1->generatePlist()->qClass<NMutableArray>();
        if (objectDescriptions->count() > 0) {
            // Get first data source dimension
            SPPLDashboardDataSourceDimensionObject dimensionObject1 =
            [self getDimensionObjectFromObjects: objectDescriptions ByIndex:0];
            
            // Create a dictionary with data source dimension settings
            SNMutableDictionary plist1 = dimensionObject1->generatePlist()->qClass<NMutableDictionary>();
            // Set new identifier value for the first data source dimension
            plist1->setObjectForKey(NNumber::numberWithInt(5), NStr("changeCounter"));
            
            // Create a second data source object based on dictionary
            SPPLDashboardDataSourceDimensionObject dimensionObject2 =
            PPLDashboardDataSourceDimensionObject::dimensionObject(plist1, m_dashboardReport->dataSourceObjects());
            // Display information about this dimension
            [self showDimensionObjectInfo: dimensionObject2];
        }
    }
}
// Returns data source dimension by index
-(SPPLDashboardDataSourceDimensionObject) getDimensionObjectFromObjects: (SNArray)objectDescriptions
ByIndex: (int) index {
    // Get data source dimension
    SPPLDashboardDataSourceDimensionObjects dimensionObjects =
    PPLDashboardDataSourceDimensionObjects::dimensionObjects(
    objectDescriptions,
    m_dashboardReport->dataSourceObjects());
    // Get data source dimension by index
    SNString dimensionObjectId = dimensionObjects->objects()->objectAtIndex(index)->qClass<PPLDashboardDataSourceDimensionObject>()->dashboardRelatedId();
    SNString dataSourceObjectId = m_dashboardReport->dataSourceObjects()->objects()->
    objectAtIndex(index)->qClass<PPLDashboardDataSourceObject>()->dashboardRelatedId();
    return dimensionObjects->getDimensionObject(dimensionObjectId, dataSourceObjectId);
}
// Displays information about data source dimension
-(void)showDimensionObjectInfo: (SPPLDashboardDataSourceDimensionObject) dimensionObject {
    printf("Dimension identifier in data source: %s \n", dimensionObject->id()->UTF8String());
    printf("Dimension key in data source: %lld \n", dimensionObject->key());
    printf("Dimension name in data source: %s \n", dimensionObject->name()->UTF8String());
    printf("Number of dimension changes in data source: %lld \n", dimensionObject->changeCounter());
    printf("Data source identifier in dashboard: %s \n",
    dimensionObject->dashboardRelatedId()->UTF8String());
    printf("Data source dimension key in dashboard: %lld \n",
    dimensionObject->dashboardRelatedKey());
    printf("Data source dimension name in dashboard: %s \n",
    dimensionObject->dashboardRelatedName()->UTF8String());
    // Check if data source dimension is unique
    if(dimensionObject->isOriginal()) {
        printf("Data source dimension is unique\n");
        } else {
        printf("Data source dimension is not unique\n");
    }
    // Get data source object
    SPPLDashboardDataSourceObject dataSourceObject =
    dimensionObject->dataSourceObject();
    // Check if dimension is linked to data source object
    if(dimensionObject->isLinkedDSO()) {
        // Get linked data source object
        SPPLDashboardDataSourceObject dataSourceObject =
        dimensionObject->dataSourceObject();
        printf("Dimension is linked to data source object %s \n", dataSourceObject->id()->UTF8String());
        } else {
        printf("Dimension is not linked to data source object %s \n", dataSourceObject->id()->UTF8String());
    }
}

After executing the example the development environment console displays information on the first dimension of dashboard data source:

Dimension identifier in data source: FACTS_98

Dimension key in data source: 98

Dimension name in data source: Facts

Number of dimension changes in data source: 5

Data source dimension identifier in dashboard: DIMITEM

Data source dimension key in dashboard: 1

Data source dimension name in dashboard: Facts

Data source dimension is unique

Dimension is not linked to data source object OBJ9630

See also:

Example of pplib++ Library Use