DynamicFileLoader.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. 'use strict';
  2. /**
  3. * Licensed Materials - Property of IBM
  4. * IBM Cognos Products: BI Cloud (C) Copyright IBM Corp. 2017
  5. * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  6. */
  7. define(['require'], function (require) {
  8. 'use strict';
  9. /**
  10. * This loader does dynamic requires based on relative paths. It must be located under dashboard-analytics/,
  11. * all paths it requires are relative to dashboard-analytics/[module]
  12. */
  13. if (require.toUrl('./').indexOf('dashboard-analytics') === -1) {
  14. throw new Error('Loader.js MUST be in the dashboard-analytics folder');
  15. }
  16. return {
  17. _require: require,
  18. /**
  19. * Loads a module relative to dashboard core. DONT MOVE THIS FILE
  20. * @param array
  21. */
  22. load: function load(modules) {
  23. if (!Array.isArray(modules)) {
  24. throw new Error('modules must be an array');
  25. }
  26. var ModulesToLoad = [];
  27. modules.forEach(function (element) {
  28. if (!element || !element.length) {
  29. ModulesToLoad.push('');
  30. } else if (element.indexOf('text!') !== -1) {
  31. ModulesToLoad.push(element.replace('text!', 'text!../'));
  32. } else {
  33. ModulesToLoad.push('../' + element);
  34. }
  35. });
  36. var promises = [];
  37. var deferreds = [];
  38. ModulesToLoad.forEach(function () {
  39. var dfd = {};
  40. var promise = new Promise(function (resolve, reject) {
  41. dfd.resolve = resolve;
  42. dfd.reject = reject;
  43. });
  44. deferreds.push(dfd);
  45. promises.push(promise);
  46. });
  47. this._require(ModulesToLoad, function () {
  48. for (var i = 0; i < ModulesToLoad.length; i++) {
  49. deferreds[i].resolve(i < arguments.length ? arguments[i] : undefined);
  50. }
  51. }, function (err) {
  52. deferreds[0].reject(err);
  53. });
  54. return Promise.all(promises);
  55. }
  56. };
  57. });
  58. //# sourceMappingURL=DynamicFileLoader.js.map