123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- '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 VisDnD
- * @hideconstructor
- *
- * @classdesc Handles drag and drop of metadata to create a visualization.
- */
- define(['../../../../../lib/@waca/dashboard-common/dist/api/DnDProviderAPI', '../../../../../lib/@waca/dashboard-common/dist/core/APIFactory', 'underscore'], function (DnDProviderAPI, APIFactory, _) {
- var METADATA_TYPES = ['MODEL_ITEM', 'GRID_HEADER_ITEM'];
- return function () {
- function MetadataDnD() {
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- _classCallCheck(this, MetadataDnD);
- this.features = options.features;
- var canvasDnD = this.features['CanvasDnD'];
- if (!canvasDnD) {
- throw new Error('MetadataDnD should depend on the CanvasDnD dashboard feature');
- }
- canvasDnD.registerProvider(this.getAPI());
- }
- MetadataDnD.prototype.getAPI = function getAPI() {
- if (!this.api) {
- this.api = APIFactory.createAPI(this, [DnDProviderAPI]);
- }
- return this.api;
- };
- MetadataDnD.prototype.destroy = function destroy() {
- this.api = null;
- };
- MetadataDnD.prototype.accepts = function accepts(payload, options) {
- return MetadataDnD.canAccepts(payload, options);
- };
- MetadataDnD.canAccepts = function canAccepts() {
- var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
- var isValid = payload.data && payload.data.utils && payload.data.utils.isValid(options);
- return isValid && METADATA_TYPES.indexOf(payload.type) !== -1 ? true : false;
- };
- MetadataDnD.prototype.onDrop = function onDrop() {
- var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- if (!payload.data || !(METADATA_TYPES.indexOf(payload.type) !== -1)) {
- return null;
- }
- var dataItems = [];
- var localFilters = [];
- var droppedColumns = payload.data.columns ? payload.data.columns : [];
- var originalMetadataColumns = _.map(droppedColumns, function (column) {
- return column.original.metadataColumn;
- });
- var navPathIds = _.reduce(originalMetadataColumns, function (result, item) {
- var parent = item.getParent();
- var isDrillGroup = parent && parent.getObjectType() === 'DrillGroup';
- var navPathId = isDrillGroup && typeof parent.getIdentifier === 'function' ? parent.getId() : null;
- var itemId = item.getId();
- if (navPathId && itemId) {
- var currentNavPathID = {};
- currentNavPathID[itemId] = navPathId;
- return _.defaults(result, currentNavPathID);
- } else {
- return result;
- }
- }, {});
- var metadataColumns = _.map(droppedColumns, function (column) {
- return column.metadataColumn;
- });
- var columnIds = [];
- metadataColumns.forEach(function (metadataColumn) {
- if (metadataColumn.isFilter()) {
- localFilters.push({
- id: metadataColumn.getId(),
- columnId: metadataColumn.getId()
- });
- } else {
- columnIds.push(metadataColumn.getId());
- dataItems.push({
- itemId: metadataColumn.getId(),
- itemLabel: metadataColumn.getLabel()
- });
- }
- });
- //Now add selected members as local filters
- var columnsWithMembers = payload.data.utils.getColumnsWithMembers();
- metadataColumns.forEach(function (metadataColumn) {
- var useAsLocalFilters = columnsWithMembers[metadataColumn.getId()];
- if (useAsLocalFilters && useAsLocalFilters.length > 0) {
- var filter = {
- id: metadataColumn.getId(),
- columnId: metadataColumn.getId(),
- overrideHierarchyDefaultSelection: true,
- excludedValues: [],
- operator: 'in',
- type: null,
- binsLabel: metadataColumn.getLabel(),
- values: []
- };
- useAsLocalFilters.forEach(function (value) {
- filter.values.push({
- d: value.memberCaption,
- u: value.id
- });
- });
- localFilters.push(filter);
- }
- });
- var result = {
- type: 'live',
- data: {
- dataViews: [{
- modelRef: payload.data.sourceId,
- dataItems: dataItems
- }]
- }
- };
- if (localFilters.length > 0) {
- result.localFilters = localFilters;
- }
- // Go over the dataitems and insert the navpath id
- result.data.dataViews.forEach(function (dataView) {
- dataView.dataItems.forEach(function (dataItem) {
- dataItem.navigationPathId = navPathIds[dataItem.itemId] || null;
- });
- });
- return Promise.resolve(result);
- };
- return MetadataDnD;
- }();
- });
- //# sourceMappingURL=MetadataDnD.js.map
|