123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- 'use strict';
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- /*
- *+------------------------------------------------------------------------+
- *| Licensed Materials - Property of IBM
- *| IBM Cognos Products: Dashboard
- *| (C) Copyright IBM Corp. 2017, 2020
- *|
- *| US Government Users Restricted Rights - Use, duplication or disclosure
- *| restricted by GSA ADP Schedule Contract with IBM Corp.
- *+------------------------------------------------------------------------+
- */
- /**
- * This Utils Class processes Data Item from Query Result
- **/
- define(['underscore'], function (_) {
- var Utils = function () {
- function Utils() {
- _classCallCheck(this, Utils);
- }
- /**
- * Normalize a dataItem to make sure it has a complete format of {d:xxx, u:xxx, p:{d:xxx, u:xxxx}} (if p is present)
- * @param {QueryResultDataItem} dataItem
- */
- Utils.normalizeData = function normalizeData(dataItem) {
- this._normalizeTuplePart(dataItem);
- if (dataItem && dataItem.p !== undefined) {
- this._normalizeTuplePart(dataItem.p);
- }
- };
- Utils.isRectifyNeeded = function isRectifyNeeded(tuplePart) {
- return tuplePart === null; //Augment this if necessary
- };
- /**
- * Only create a JS Object if the tuple part is returned not as an Object
- */
- Utils.getRectifiedData = function getRectifiedData(tuplePart) {
- return {
- 'u': tuplePart
- };
- };
- /**
- * @param @param {Object} part is normalized only if it is an Object
- */
- Utils._normalizeTuplePart = function _normalizeTuplePart(part) {
- if (_.isObject(part)) {
- //TODO: once the queryResult Api is fully hooked up, we should clean here using dataCell.value only
- if (!part.hasOwnProperty('d')) {
- part.d = part.hasOwnProperty('u') ? part.u : part.hasOwnProperty('v') ? part.v : part.hasOwnProperty('value') ? part.value : part;
- }
- if (!part.hasOwnProperty('u')) {
- part.u = part.hasOwnProperty('d') ? part.d : part.hasOwnProperty('v') ? part.v : part.hasOwnProperty('value') ? part.value : part;
- }
- }
- };
- /**
- * TODO Need to review whether to expose this in QueryResultAPI or keep it here.
- * @return two dimensions array that stores the resolved values from query result data data points
- */
- Utils.getResolvedDataRows = function getResolvedDataRows(resultAPI) {
- var itemList = resultAPI.getResultItemList();
- var aResult = [];
- for (var i = 0; i < resultAPI.getRowCount(); i++) {
- aResult[i] = [];
- for (var j = 0; j < itemList.length; j++) {
- aResult[i].push(resultAPI.getValue(i, j));
- }
- }
- return aResult;
- };
- Utils.getDataItemIndex = function getDataItemIndex(queryResultData, dataItemRefID) {
- var nIndex = -1;
- if (queryResultData) {
- _.find(queryResultData.dataItems, function (dataItem, index) {
- var id = dataItem.itemClass && dataItem.itemClass['id'];
- if (id === dataItemRefID) {
- nIndex = index;
- return true;
- }
- });
- }
- return nIndex;
- };
- /**
- * Returns total number of data items
- *
- * @param resultItemList
- * @return Number - the dataitem count in all resultItems
- */
- Utils.getDataItemCount = function getDataItemCount(resultItemList) {
- return resultItemList.reduce(function (accumulator, currentValue) {
- return accumulator + currentValue.getDataItemList().length;
- }, 0);
- };
- /**
- * Returns array of data items
- *
- * @param resultItemList
- * @return array - the data items returned from query result
- */
- Utils.getResultDataItemList = function getResultDataItemList(resultItemList) {
- var dataItemList = [];
- resultItemList.forEach(function (item) {
- dataItemList.push.apply(dataItemList, item.getDataItemList());
- });
- return dataItemList;
- };
- return Utils;
- }();
- return Utils;
- });
- //# sourceMappingURL=QueryResultDataUtils.js.map
|