makeConfigurationEditor.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. import { makeConfiguration } from '/configuration.js';
  2. import { getGlobals } from '/globals.js';
  3. import { deepCopyObject } from '/utilities.js';
  4. import { makeFormDiv,
  5. makeInput,
  6. makeObjectEditor,
  7. makeTagsPicker,
  8. makeDropdown } from '/domUtilities.js';
  9. function makeConfigurationEditor(configuration) {
  10. const jc = getGlobals().jc;
  11. const div = makeFormDiv(jc.Assets.configuration.color,
  12. jc.Assets.configuration.background);
  13. div.append(makeInput('randomize', undefined, () => {
  14. set(makeConfiguration());
  15. }));
  16. const generalDropdown = makeDropdown('general');
  17. const assetsDropdown = makeDropdown('assets');
  18. const audioDropdown = makeDropdown('audio');
  19. const connectorDropdown = makeDropdown('connector');
  20. const jamulusDropdown = makeDropdown('jamulus');
  21. const musicDropdown = makeDropdown('music');
  22. const wheelDropdown = makeDropdown('wheel');
  23. const wheelWorldDropdown = makeDropdown('wheel world');
  24. const transformersDropdown = makeDropdown('transformers');
  25. div.append(generalDropdown.div,
  26. assetsDropdown.div,
  27. audioDropdown.div,
  28. connectorDropdown.div,
  29. jamulusDropdown.div,
  30. musicDropdown.div,
  31. wheelDropdown.div,
  32. wheelWorldDropdown.div,
  33. transformersDropdown.div);
  34. let generalEditor;
  35. let assetsEditor;
  36. let audioEditor;
  37. let connectorEditor;
  38. let jamulusEditor;
  39. let musicEditor;
  40. let wheelEditor;
  41. let wheelWorldEditor;
  42. let transformersEditor;
  43. const get = () => {
  44. configuration.General = generalEditor.get();
  45. configuration.Assets = assetsEditor.get();
  46. configuration.Audio = audioEditor.get();
  47. configuration.Connector = connectorEditor.get();
  48. configuration.Jamulus = jamulusEditor.get();
  49. configuration.Music = musicEditor.get();
  50. configuration.Wheel = wheelEditor.get();
  51. configuration.WheelWorld = wheelWorldEditor.get();
  52. configuration.Transformers = transformersEditor.get();
  53. return deepCopyObject(configuration);
  54. };
  55. const set = newConfiguration => {
  56. configuration = deepCopyObject(newConfiguration);
  57. generalDropdown.body.innerHTML = "";
  58. generalEditor = makeObjectEditor(configuration.General);
  59. generalDropdown.body.append(generalEditor.div);
  60. assetsDropdown.body.innerHTML = "";
  61. assetsEditor = makeObjectEditor(configuration.Assets);
  62. assetsDropdown.body.append(assetsEditor.div);
  63. audioDropdown.body.innerHTML = "";
  64. audioEditor = makeObjectEditor(configuration.Audio);
  65. audioDropdown.body.append(audioEditor.div);
  66. connectorDropdown.body.innerHTML = "";
  67. connectorEditor = makeObjectEditor(configuration.Connector);
  68. connectorDropdown.body.append(connectorEditor.div);
  69. jamulusDropdown.body.innerHTML = "";
  70. jamulusEditor = makeObjectEditor(configuration.Jamulus);
  71. jamulusDropdown.body.append(jamulusEditor.div);
  72. musicDropdown.body.innerHTML = "";
  73. musicEditor = makeObjectEditor(configuration.Music);
  74. musicDropdown.body.append(musicEditor.div);
  75. generalDropdown.body.innerHTML = "";
  76. generalEditor = makeObjectEditor(configuration.General);
  77. generalDropdown.body.append(generalEditor.div);
  78. wheelDropdown.body.innerHTML = "";
  79. wheelEditor = makeObjectEditor(configuration.Wheel);
  80. wheelDropdown.body.append(wheelEditor.div);
  81. wheelWorldDropdown.body.innerHTML = "";
  82. wheelWorldEditor = makeObjectEditor(configuration.WheelWorld);
  83. wheelWorldDropdown.body.append(wheelWorldEditor.div);
  84. transformersDropdown.body.innerHTML = "";
  85. transformersEditor = makeObjectEditor(configuration.Transformers);
  86. transformersDropdown.body.append(transformersEditor.div);
  87. generalDropdown.body.innerHTML = "";
  88. generalEditor = makeObjectEditor(configuration.General);
  89. generalDropdown.body.append(generalEditor.div);
  90. };
  91. const dispose = () => {
  92. };
  93. set(configuration);
  94. return {div, get, set, dispose};
  95. }
  96. export { makeConfigurationEditor }