123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- '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 Business Analytics (C) Copyright IBM Corp. 2019, 2020
- * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- */
- /**
- * @class DataModel
- * @hideconstructor
- * @classdesc Provides access to the data model
- */
- define(['../UniqueID', '../../../lib/@waca/dashboard-common/dist/core/UniqueHashIdBuilder'], function (UniqueID, UniqueHashIdBuilder) {
- return function () {
- function DataModel(dataModelJson) {
- _classCallCheck(this, DataModel);
- this._dataModel = dataModelJson;
- this._currentIdList = this._processCurrentDataItemIds();
- }
- DataModel.prototype._processCurrentDataItemIds = function _processCurrentDataItemIds() {
- var idList = [];
- var dataViews = this._dataModel.dataViews;
- if (dataViews) {
- for (var i = 0; i < dataViews.length; i++) {
- if (!dataViews[i].id) {
- dataViews[i].id = UniqueID.generate('model');
- }
- var dataItems = dataViews[i].dataItems;
- if (dataItems) {
- for (var j = 0; j < dataItems.length; j++) {
- if (!dataItems[j].id) {
- var dataItemId = UniqueHashIdBuilder.createUniqueHashId(dataItems[j].itemId, idList);
- dataItems[j].id = dataItemId;
- }
- idList.push(dataItems[j].id);
- }
- }
- }
- }
- return idList;
- };
- DataModel.prototype.setModelRefInAllViews = function setModelRefInAllViews(modelRef) {
- var dataViews = this._dataModel.dataViews;
- var isSet = false;
- if (dataViews) {
- for (var i = 0; i < dataViews.length; i++) {
- isSet = true;
- dataViews[i].modelRef = modelRef;
- }
- }
- if (!isSet) {
- // create a default data view and set the model ref
- this.createDataView().modelRef = modelRef;
- }
- };
- DataModel.prototype.removeDataView = function removeDataView(viewId) {
- var dataViews = this._dataModel.dataViews;
- if (dataViews) {
- this._dataModel.dataViews = dataViews.filter(function (dataView) {
- return dataView.id !== viewId;
- });
- }
- };
- DataModel.prototype.getDataView = function getDataView(viewId) {
- var dataView = null;
- var dataViews = this._dataModel.dataViews;
- if (dataViews) {
- for (var i = 0; i < dataViews.length; i++) {
- // If view id is not provided, default to first view id.
- if (!viewId && i === 0 || dataViews[i].id === viewId) {
- dataView = dataViews[i];
- break;
- }
- }
- }
- return dataView;
- };
- DataModel.prototype.createDataView = function createDataView(id) {
- if (!this._dataModel.dataViews) {
- this._dataModel.dataViews = [];
- }
- var dataView = {
- id: id || UniqueID.generate('model')
- };
- this._dataModel.dataViews.push(dataView);
- return dataView;
- };
- DataModel.prototype.moveDataItemsToView = function moveDataItemsToView(dataItemIds, viewId) {
- var _this = this;
- dataItemIds.forEach(function (id) {
- var info = _this._getDataItemInfo(id);
- if (info.dataView.id !== viewId) {
- _this.addDataItem(info.dataItem, viewId);
- }
- });
- };
- DataModel.prototype.getDataViewIdForDataItem = function getDataViewIdForDataItem(dataItemId) {
- var info = this._getDataItemInfo(dataItemId);
- return info ? info.dataView.id : null;
- };
- DataModel.prototype.getDataItem = function getDataItem(dataItemId) {
- var info = this._getDataItemInfo(dataItemId);
- return info ? info.dataItem : null;
- };
- DataModel.prototype.removeDataItem = function removeDataItem(id, hasLocalFilter) {
- var removed = void 0;
- var info = this._getDataItemInfo(id);
- if (info) {
- info.dataView.dataItems.splice(info.dataItemIndex, 1);
- var idIndex = this._currentIdList.indexOf(id);
- if (idIndex !== -1) {
- this._currentIdList.splice(idIndex, 1);
- }
- removed = info.dataItem;
- if (info.dataView.dataItems.length === 0 && !hasLocalFilter) {
- // remove the empty dataView
- this.removeDataView(info.dataView.id);
- }
- }
- return removed;
- };
- DataModel.prototype.addDataItem = function addDataItem(dataItem, viewId) {
- if (!dataItem.id) {
- // We generate a predicatable unique id based on the column id
- dataItem.id = UniqueHashIdBuilder.createUniqueHashId(dataItem.columnId, this._currentIdList);
- }
- this._currentIdList.push(dataItem.id);
- // First remove it if it already exists
- var model = this.removeDataItem(dataItem.id);
- if (!model) {
- // Pick only id, itemId, columnId, itemLabel and navigationPathId
- // Eventually we will support more..
- model = function (_ref) {
- var id = _ref.id,
- itemId = _ref.itemId,
- columnId = _ref.columnId,
- itemLabel = _ref.itemLabel,
- navigationPathId = _ref.navigationPathId;
- return { id: id, itemId: itemId, columnId: columnId, itemLabel: itemLabel, navigationPathId: navigationPathId };
- }(dataItem);
- // The internal spec use itemId instead of columnId
- if (model.columnId) {
- model.itemId = model.columnId;
- delete model.columnId;
- }
- }
- // Find or create the target dataView
- var dataView = this.getDataView(viewId);
- if (!dataView) {
- dataView = this.createDataView();
- }
- if (!dataView.dataItems) {
- dataView.dataItems = [];
- }
- dataView.dataItems.push(model);
- return model;
- };
- DataModel.prototype.getDataItemList = function getDataItemList() {
- var result = [];
- var dataViews = this._dataModel.dataViews;
- if (dataViews) {
- for (var i = 0; i < dataViews.length; i++) {
- var dataItems = dataViews[i].dataItems;
- if (dataItems) {
- for (var j = 0; j < dataItems.length; j++) {
- result.push(dataItems[j]);
- }
- }
- }
- }
- return result;
- };
- DataModel.prototype._getDataItemInfo = function _getDataItemInfo(dataItemId) {
- var dataItemInfo = null;
- var dataViews = this._dataModel.dataViews;
- if (dataViews) {
- for (var i = 0; i < dataViews.length; i++) {
- var dataItems = dataViews[i].dataItems;
- if (dataItems) {
- for (var j = 0; j < dataItems.length; j++) {
- if (dataItems[j].id === dataItemId) {
- dataItemInfo = {
- dataItem: dataItems[j],
- dataView: dataViews[i],
- dataItemIndex: j,
- dataViewIndex: i
- };
- break;
- }
- }
- }
- if (dataItemInfo) {
- break;
- }
- }
- }
- return dataItemInfo;
- };
- return DataModel;
- }();
- });
- //# sourceMappingURL=DataModel.js.map
|