Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 

56 linhas
1.1 KiB

  1. define([
  2. 'misc/fileLister',
  3. 'misc/events',
  4. 'path'
  5. ], function(
  6. fileLister,
  7. events,
  8. pathUtilities
  9. ) {
  10. var onReady = null;
  11. var components = {
  12. components: {},
  13. waiting: [],
  14. init: function(callback) {
  15. onReady = callback;
  16. events.emit('onBeforeGetComponents', this.components);
  17. this.getComponentFolder();
  18. },
  19. getComponentFolder: function() {
  20. var files = fileLister.getFolder('./components/');
  21. files = files.filter(w => (
  22. (w.indexOf('components') == -1) &&
  23. (w.indexOf('cpnBase') == -1) &&
  24. (w.indexOf('projectile') == -1)
  25. ));
  26. var fLen = files.length;
  27. for (var i = 0; i < fLen; i++) {
  28. this.getComponentFile(`./components/${files[i]}`);
  29. }
  30. },
  31. getComponentFile: function(path) {
  32. var fileName = pathUtilities.basename(path);
  33. fileName = fileName.replace('.js', '');
  34. this.waiting.push(fileName);
  35. require([ path ], this.onGetComponent.bind(this));
  36. },
  37. onGetComponent: function(template) {
  38. this.waiting.spliceWhere(w => w == template.type);
  39. this.components[template.type] = template;
  40. if (this.waiting.length == 0) {
  41. delete this.waiting;
  42. onReady();
  43. }
  44. }
  45. };
  46. return components;
  47. });