123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- 'use strict';
- var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- define(['underscore', '../../../apiHelpers/SlotAPIHelper'], function (_, SlotAPIHelper) {
- var VIPRDataPointSummarizer = function () {
-
- function VIPRDataPointSummarizer(visualization) {
- _classCallCheck(this, VIPRDataPointSummarizer);
- this.slots = visualization && visualization.getSlots();
- }
-
- VIPRDataPointSummarizer.prototype.summarizeDataPointValues = function summarizeDataPointValues(viprDataPoints, itemIndex, itemSource) {
- var _this = this;
-
- var values = this._buildHeaderLine(itemSource, itemIndex);
- if (!viprDataPoints || !viprDataPoints.length || !this.slots) {
-
- return values;
- }
-
-
- var datapointsMap = {};
- var dataset = itemSource.dataset;
- if (dataset) {
- (function () {
- var slotList = _this.slots.getMappedSlotList();
- var datasetSlotList = slotList.filter(function (slot) {
- return slot.getDefinition().getDatasetIdList().indexOf(dataset.id) !== -1;
- });
- var multiMeasureAssignment = _this._getMultiMeasureAssignment(datasetSlotList, itemSource);
-
- var _loop = function _loop(itemIdx) {
- var viprDataItem = dataset.getDataItem(itemIdx);
- if (viprDataItem.getType() === 'cont') {
-
-
-
- var slotIndex = viprDataItem.indexes && viprDataItem.indexes.dataitem;
- if (slotIndex == null) {
-
- slotIndex = itemIdx;
- }
- var slotAPI = datasetSlotList[slotIndex];
- var dataItemAPIs = slotAPI.getDataItemList();
-
- slotAPI.getDataItemList().forEach(function (dataitemAPI) {
- var columnId = dataitemAPI.getColumnId();
- if (!datapointsMap[columnId]) {
- datapointsMap[columnId] = {
- measureValues: [],
- aggregationType: dataitemAPI.getAggregation() || 'sum'
- };
- }
- });
-
- viprDataPoints.forEach(function (viprDataPoint) {
- var measureId = _this._getMeasureIdFromDataPoint(viprDataPoint, dataItemAPIs, multiMeasureAssignment, slotAPI, itemIdx - slotIndex);
- if (measureId) {
- var viprValue = viprDataPoint.getValue(itemIdx);
- datapointsMap[measureId].measureValues.push(viprValue.getValue());
- datapointsMap[measureId].indexInResult = slotIndex;
- }
- });
- }
- };
- for (var itemIdx = 0; itemIdx < dataset.getDataItemCount(); itemIdx++) {
- _loop(itemIdx);
- }
-
- values = _this._summarizeValuesInPointsMap(values, datapointsMap);
- })();
- }
- return values;
- };
-
-
-
-
-
-
-
- VIPRDataPointSummarizer.prototype._getMultiMeasureAssignment = function _getMultiMeasureAssignment(slotList, itemSource) {
- var mmPlaceholderSlotIndex = void 0;
- var mmPlaceholderIndexInSlot = void 0;
- var numMMItems = void 0;
- var mmDataItem = _.find(slotList, function (slotAPI, slotIdx) {
- mmPlaceholderSlotIndex = slotIdx;
- var dataItems = slotAPI.getDataItemList() || [];
- if (SlotAPIHelper.isMultiMeasuresValueSlot(slotAPI)) {
- numMMItems = dataItems.length;
- }
- return _.find(dataItems, function (dataitemAPI, dataItemIdx) {
- mmPlaceholderIndexInSlot = dataItemIdx;
- return dataitemAPI.getColumnId() === '_multiMeasuresSeries';
- });
- });
- var multiMeasureTuples = mmDataItem && itemSource && itemSource.dataset && itemSource.dataset.dataItems[mmPlaceholderSlotIndex].tuples;
- if (mmDataItem) {
- return {
- slotIndex: mmPlaceholderSlotIndex,
- indexInSlot: mmPlaceholderIndexInSlot,
- tuplesInSlot: multiMeasureTuples,
- multiMeasureItemCount: numMMItems
- };
- }
- return null;
- };
- VIPRDataPointSummarizer.prototype._getMeasureIdFromDataPoint = function _getMeasureIdFromDataPoint(viprDataPoint, dataItemAPIs, multiMeasureAssignment, slotAPI, dataItemIndex) {
- var measureId = null;
- if (dataItemAPIs.length > 1 && multiMeasureAssignment && SlotAPIHelper.isMultiMeasuresValueSlot(slotAPI)) {
-
-
-
-
-
- var mmTupleIdx = viprDataPoint.getTupleIndex(multiMeasureAssignment.slotIndex);
- var dataItemUId = multiMeasureAssignment.tuplesInSlot[mmTupleIdx].tuple[multiMeasureAssignment.indexInSlot].u;
- var dataItemAPI = _.find(dataItemAPIs, function (dataItemAPI) {
- return dataItemUId === dataItemAPI.getId();
- });
- measureId = dataItemAPI && dataItemAPI.getColumnId();
- } else if (!multiMeasureAssignment || multiMeasureAssignment && viprDataPoint.index % multiMeasureAssignment.multiMeasureItemCount === 0) {
-
-
-
-
- measureId = dataItemAPIs[dataItemIndex].getColumnId();
- }
- return measureId;
- };
- VIPRDataPointSummarizer.prototype._summarizeValuesInPointsMap = function _summarizeValuesInPointsMap(values, datapointsMap) {
-
- for (var measureId in datapointsMap) {
- var measureValues = datapointsMap[measureId].measureValues;
- var _aggregationType = datapointsMap[measureId].aggregationType;
- var idxInResult = datapointsMap[measureId].indexInResult;
- values[idxInResult] = values[idxInResult] || [];
- var summarized = void 0;
- if (measureValues.length > 1 && (_aggregationType === 'avg' || _aggregationType === 'countdistinct' || _aggregationType === 'calculated')) {
- summarized = 'N/A';
- } else {
- summarized = measureValues[0];
- for (var valueIdx = 1; valueIdx < measureValues.length; valueIdx++) {
- summarized += measureValues[valueIdx] || 0;
- }
- }
- values[idxInResult].push(summarized);
- }
- return values;
- };
-
- VIPRDataPointSummarizer.prototype._buildHeaderLine = function _buildHeaderLine(itemSource, itemIndex) {
- var values = [];
- if (typeof itemIndex !== 'undefined' && typeof itemSource !== 'undefined') {
- if (itemSource.tuple) {
- values[itemIndex] = itemSource.tuple;
- } else {
- var aValues = [];
- aValues.push({
- u: itemSource.getUniqueName(),
- d: itemSource.getCaption()
- });
- values[itemIndex] = aValues;
- }
- if (itemSource.getParent && itemSource.getParent()) {
- values[itemIndex][0].p = itemSource.getParent();
- }
- }
- return values;
- };
-
- VIPRDataPointSummarizer.prototype.summarizeDataPointTargets = function summarizeDataPointTargets(prevTargets) {
- var summary;
- var sumOrdIndex = -1;
- _.each(prevTargets, function (target) {
- if (!summary) {
-
- summary = _extends({}, target);
- summary.values = JSON.parse(JSON.stringify(target.values));
- } else {
-
- if (sumOrdIndex < 0) {
- _.each(target.values, function (value, index) {
-
- if (typeof value[0] === 'number') {
- sumOrdIndex = index;
- } else if (_.isEqual(_.pluck(summary.values[index], 'u'), _.pluck(value, 'u')) === false) {
-
- summary.values[index] = undefined;
- }
- });
- }
-
- _.each(summary.values[sumOrdIndex], function (value, index) {
- if (target.values[sumOrdIndex] && target.values[sumOrdIndex][index]) {
- summary.values[sumOrdIndex][index] += target.values[sumOrdIndex][index];
- }
- });
- }
- });
-
- return [summary];
- };
- return VIPRDataPointSummarizer;
- }();
- return VIPRDataPointSummarizer;
- });
|