DynamicFileLoader.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. 'use strict';
  2. /**
  3. * Licensed Materials - Property of IBM
  4. * IBM Cognos Products: BI Cloud (C) Copyright IBM Corp. 2018
  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. /**
  9. * DO NOT MOVE THIS FILE
  10. * This loader does dynamic requires based on relative paths. It must be located under dashboard-common/,
  11. * all paths it requires are relative to dashboard-common/[module]
  12. */
  13. return {
  14. _require: require,
  15. /**
  16. * Loads a module relative to dashboard common. DONT MOVE THIS FILE
  17. *
  18. * @param {string[]} modules - array of modules to load
  19. *
  20. * @return {Promise} Promise to be resolved or rejected with the loaded modules
  21. */
  22. load: function load(modules) {
  23. if (!Array.isArray(modules)) {
  24. throw new Error('modules must be an array');
  25. }
  26. modules.forEach(function (element, index) {
  27. if (element.indexOf('text!') !== -1) {
  28. modules[index] = element.replace('text!', 'text!./');
  29. } else {
  30. modules[index] = './' + element;
  31. }
  32. });
  33. var promises = [];
  34. var deferreds = [];
  35. modules.forEach(function () {
  36. var dfd = {};
  37. var promise = new Promise(function (resolve, reject) {
  38. dfd.resolve = resolve;
  39. dfd.reject = reject;
  40. });
  41. deferreds.push(dfd);
  42. promises.push(promise);
  43. });
  44. this._require(modules, function () {
  45. for (var i = 0; i < arguments.length; i++) {
  46. deferreds[i].resolve(arguments[i]);
  47. }
  48. }, function (err) {
  49. deferreds[0].reject(err);
  50. });
  51. return Promise.all(promises);
  52. },
  53. /**
  54. * Loads a module relative to dashboard common. DONT MOVE THIS FILE
  55. * Note: Same as calling `load`
  56. *
  57. * @param {string[]} modules - array of modules to load
  58. *
  59. * @return {Promise} Promise to be resolved or rejected with the loaded modules
  60. */
  61. loadModules: function loadModules(modules) {
  62. return this.load(modules);
  63. }
  64. };
  65. });
  66. //# sourceMappingURL=DynamicFileLoader.js.map