123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- '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: BI Cloud (C) Copyright IBM Corp. 2018
- * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- */
- define(['../../lib/@waca/core-client/js/core-client/utils/ClassFactory', 'underscore'], function (ClassFactory, _) {
- /**
- * Helper class used to create the required dashboard extensions.
- * This includes the board model, layout and canvas extensions as well as the dashboard service extensions.
- */
- var ExtensionHelper = function () {
- function ExtensionHelper(dashboardApi) {
- _classCallCheck(this, ExtensionHelper);
- this.dashboardApi = dashboardApi;
- this.logger = this.dashboardApi.getGlassCoreSvc('.Logger');
- }
- ExtensionHelper.prototype.registerExtensions = function registerExtensions() {
- return Promise.all([this._getLayoutExtensions(), this._getCanvasExtensions()]).then(function (result) {
- return result;
- }.bind(this));
- };
- ExtensionHelper.prototype._getLayoutExtensions = function _getLayoutExtensions() {
- var _this = this;
- var promise = Promise.resolve();
- var layoutExtensions = this.dashboardApi.getCollectionConfig('layoutExtension');
- if (layoutExtensions) {
- var collectionId = layoutExtensions.id;
- promise = Promise.all([this.dashboardApi.findGlassCollection(collectionId)]).then(function (collections) {
- var collection = collections[0] || [];
- return _this.loadLayoutModelExtensions(collection);
- });
- }
- return promise;
- };
- ExtensionHelper.prototype.loadLayoutModelExtensions = function loadLayoutModelExtensions(collections) {
- var combinedExtensions = this._combineLayoutModelExtensions(collections);
- return this._loadModelExtensions(combinedExtensions);
- };
- ExtensionHelper.prototype._combineLayoutModelExtensions = function _combineLayoutModelExtensions(collection) {
- var combinedExtensions = {};
- //this is where it gets squirrely, we should edevour to simplify this... Yeah, and when monkeys fly
- collection.forEach(function (entry) {
- var extensions = entry.extensions;
- Object.keys(extensions).forEach(function (key) {
- var layoutMode = extensions[key];
- if (!combinedExtensions[key]) {
- combinedExtensions[key] = {};
- }
- Object.keys(layoutMode).forEach(function (layoutKey) {
- combinedExtensions[key][layoutKey] = layoutMode[layoutKey];
- });
- });
- });
- return combinedExtensions;
- };
- ExtensionHelper.prototype._loadModelExtensions = function _loadModelExtensions(layoutExtensions) {
- var modelExtensions = layoutExtensions.modelExtensions;
- if (modelExtensions) {
- var logger = this.logger;
- return Promise.all(Object.keys(modelExtensions).map(function (key) {
- return ClassFactory.loadModule(modelExtensions[key]).then(function (module) {
- var _ref;
- return _ref = {}, _ref[key] = module, _ref;
- }).catch(function (err) {
- logger.error(err);
- return {};
- });
- })).then(function (results) {
- // each array member contains a single key/value so we merge them all into 1 object;
- layoutExtensions.modelExtensions = _.extend.apply(_, results);
- return layoutExtensions;
- });
- }
- return Promise.resolve(layoutExtensions);
- };
- ExtensionHelper.prototype._getCanvasExtensions = function _getCanvasExtensions() {
- var promise;
- var canvasExtension = this.dashboardApi.getCollectionConfig('canvasExtension');
- if (canvasExtension) {
- var collectionId = canvasExtension.id;
- promise = Promise.all([this.dashboardApi.findGlassCollection(collectionId)]).then(function (collections) {
- var canvasExtensions = [];
- if (collections.length > 0 && collections[0]) {
- collections[0].forEach(function (collection) {
- canvasExtensions.push(collection);
- }.bind(this));
- }
- return canvasExtensions;
- }.bind(this));
- }
- return promise || Promise.resolve();
- };
- ExtensionHelper.prototype.getBoardModelExtensions = function getBoardModelExtensions() {
- var boardModelCollection = this.dashboardApi.getCollectionConfig('boardModel');
- var collectionId = boardModelCollection.id;
- return this.dashboardApi.findGlassCollection(collectionId).then(function (extensionCollection) {
- return this._loadBoardModelExtensions(extensionCollection);
- }.bind(this));
- };
- ExtensionHelper.prototype.loadBoardModelExtensions = function loadBoardModelExtensions(extensionsCollection) {
- return this._loadBoardModelExtensions(extensionsCollection);
- };
- ExtensionHelper.prototype._loadBoardModelExtensions = function _loadBoardModelExtensions(extensionCollection) {
- if (!extensionCollection) {
- return;
- }
- var promises = [];
- extensionCollection.forEach(function (extensionObj) {
- if (!extensionObj.name || !extensionObj.class) {
- return;
- }
- promises.push(ClassFactory.loadModule(extensionObj.class).then(function (ModelExtension) {
- return {
- 'name': extensionObj.name,
- 'type': extensionObj.type || 'model',
- 'class': ModelExtension,
- 'triggers': extensionObj.triggers || [],
- // backward compatible default is true unless value is explicitly false.
- 'autoCreate': extensionObj.autoCreate !== false
- };
- }.bind(this)).catch(function (error) {
- this.logger.error(error);
- }.bind(this)));
- }, this);
- return Promise.all(promises).then(function (results) {
- // Failed promises will return an undefined extension in the results. Make sure we filter it out
- return results.filter(function (n) {
- return n != undefined;
- });
- });
- };
- return ExtensionHelper;
- }();
- return ExtensionHelper;
- });
- //# sourceMappingURL=ExtensionsHelper.js.map
|