123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- '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
- * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- */
- /**
- * @class CanvasDnD
- * @hideconstructor
- *
- * @classdesc
- * Represents the drag and drop action within the dashboard canvas
- */
- define(['../CanvasDnDAPI', '../../../../../lib/@waca/dashboard-common/dist/core/APIFactory'], function (CanvasDnDAPI, APIFactory) {
- var PIN = 'pin';
- var WIDGET = 'widget';
- var GROUP_CONTENT = 'groupContent'; //this type occurs when grouped a few widgets into a single group, select a group, click on one of the widget within the group to select it and move it. When move it the type is 'groupContent'
- var DASHBOARD_DND_TYPES = [PIN, WIDGET];
- return function () {
- function CanvasDnD() {
- _classCallCheck(this, CanvasDnD);
- this._api = APIFactory.createAPI(this, [CanvasDnDAPI]);
- this.providers = [];
- }
- CanvasDnD.prototype.destroy = function destroy() {
- this.api = null;
- this.providers = [];
- };
- CanvasDnD.prototype.getAPI = function getAPI() {
- return this._api;
- };
- CanvasDnD.prototype.registerProvider = function registerProvider(provider) {
- var registered = this.providers.find(function (registeredProvider) {
- return registeredProvider.getImplType() === provider.getImplType();
- });
- if (typeof registered === 'undefined' || registered === null) {
- this.providers.push(provider);
- }
- };
- CanvasDnD.prototype.accepts = function accepts() {
- var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var options = arguments[1];
- var types = this._getSupportedTypes(options);
- if (types.indexOf(payload.type) !== -1) {
- return true;
- }
- var providerAccepted = this.providers.find(function (provider) {
- return provider.accepts(payload, options);
- });
- return providerAccepted ? true : false;
- };
- CanvasDnD.prototype.onDrop = function onDrop() {
- var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- if (payload.data && payload.data.operation === 'new') {
- return Promise.resolve(payload.data.model);
- }
- var promise = Promise.resolve();
- this.providers.forEach(function (provider) {
- promise = promise.then(function (model) {
- return model ? model : provider.onDrop(payload);
- });
- });
- return promise;
- };
- CanvasDnD.prototype._getSupportedTypes = function _getSupportedTypes(options) {
- if (options && options.fromMultipurposeWidget) {
- return [];
- }
- var types = [].concat(DASHBOARD_DND_TYPES);
- if (options && options.fromCanvas) {
- types.push(GROUP_CONTENT);
- }
- return types;
- };
- return CanvasDnD;
- }();
- });
- //# sourceMappingURL=CanvasDnD.js.map
|