Source: src/main/javascript/oracle/oj/ojdatagrid/PagingHeaderSet.js

Oracle® JavaScript Extension Toolkit (JET)
1.1.2

E65298-01

/**
 * Copyright (c) 2015, Oracle and/or its affiliates.
 * All rights reserved.
 */

/**
 * A HeaderSet represents a collection of headers. The HeaderSet is an object returned by the success callback
 * of the fetchHeaders method on DataGridDataSource. This is a paging specific implementation of the HeaderSet.
 * @param {Object} headerSet an headerSet object
 * @param {number} startIndex the true startIndex of the headerSet
 * @constructor
 * @export
 */
oj.PagingHeaderSet = function(headerSet, startIndex)
{
    this.m_headerSet = headerSet;
    this.m_startIndex = startIndex;
};

/**
 * Gets the data of the specified index.  An error is throw when 1) the range is not yet available and
 * 2) the index specified is out of bounds. 
 * @param {number} index the absolute index of the header in which we want to retrieve the header from.  
 * @param {number=} level the level of the header, 0 is the outermost header and increments by 1 moving inward
 * @return {Object} the data object for the specific index.
 * @export
 */
oj.PagingHeaderSet.prototype.getData = function(index, level)
{
    return this.m_headerSet.getData(index + this.m_startIndex, level);
};

/**
 * Gets the metadata of the specified index.  An error is throw when 1) the range is not yet available and 
 * 2) the index specified is out of bounds. 
 * The metadata that the data source can optionally return are:
 *  1) sortDirection - the initial sort direction of the header.  Valid values are "ascending" and "descending".
 *  2) key - the key of the row/column header.
 * @param {number} index the absolute index of the header in which we want to retrieve the metadata from.  
 * @param {number=} level the level of the header, 0 is the outermost header and increments by 1 moving inward
 * @return {Object} the metadata object for the specific index.
 * @export
 */
oj.PagingHeaderSet.prototype.getMetadata = function(index, level)
{
    return this.m_headerSet.getMetadata(index + this.m_startIndex, level);
};

/**
 * Gets the actual count of the result set, the total indexes spanned by the headerSet
 * along the innermost header.
 * @return {number} the actual count of the result set.  
 * @export
 */
oj.PagingHeaderSet.prototype.getCount = function()
{
    return this.m_headerSet.getCount();
};

/**
 * Gets the actual number of levels of the result set for the specified axis. The levels
 * are the counted from the outermost header indexed at 0, and moving inwards toward the 
 * databody would increment the level by 1.
 * @return {number} the number of levels of the result set
 * @export
 */
oj.PagingHeaderSet.prototype.getLevelCount = function()
{
     return this.m_headerSet.getLevelCount();
};
 
/**
 * Gets the extent of an index on a particular level within the context of the headerSet. Extent is defined as the 
 * number of indexes covered by the header. If the extent extends beyond the start and end of the requested 
 * range the extent should be trimmed to the edge of the requested range and the object for {'more': {before, after}}
 * should have the value appropriate boolean set. For innermost headers the extent will always be 1.
 * @param {number} index the absolute index along the innermost header of the extent to get, 0 is the first header in the data source
 * @param {number=} level the level of the header, 0 is the outermost header and increments by 1 moving inward
 * @return {Object} an object containing two values
 *              extent: the number of absolute indexes spanned by the header at this index 
 *                      bounded by the edges of the result set for the specified axis. 
 *              more: object with keys 'before'/'after' and boolean values true/false representing whether
 *                       there are more indexes before/after what is in the headerSet
 * @example <caption>In this example the header spans 5 indexes and there are more indexes to cover after the request that
 *              aren't included in this headerSet:</caption>                     
 * {'extent':5, 'more': {'before':false, 'after':true}}
 * @export
 */
oj.PagingHeaderSet.prototype.getExtent = function(index, level)
{
     return this.m_headerSet.getExtent(index, level);
};
 
/**
 * Gets the depth of an index starting at a particular level. The depth is the number 
 * of levels spanned by the header.
 * @param {number} index the absolute index of the depth to get
 * @param {number=} level the level of the header, 0 is the outermost header
 * @return {number} the number of levels spanned by the header at the specified position
 * @export
 */
oj.PagingHeaderSet.prototype.getDepth = function(index, level)
{
     return this.m_headerSet.getDepth(index, level);
};

/**
 * For internal testing purposes. Gets the underlying headerSet.
 * @return {Object} the underlying headerSet
 * @export
 * @ignore
 */
oj.PagingHeaderSet.prototype.getHeaderSet = function()
{
    return this.m_headerSet;
};

/**
 * For internal testing purposes. Gets the start index.
 * @return {number} the start index
 * @export
 * @ignore
 */
oj.PagingHeaderSet.prototype.getStartIndex = function()
{
    return this.m_startIndex;
};