1. 1 : import { EMPTY_STRING } from '../constants/constants.js';
  2. 2 : import { MelObject } from '../mel_object.js';
  3. 3 :
  4. 4 : export { BnumMessage, eMessageType };
  5. 5 :
  6. 6 : /**
  7. 7 : * @class
  8. 8 : * @classdesc Contient des fonctions utiles pour afficher des messages sur le bnum
  9. 9 : * @static
  10. 10 : */
  11. 11 : class BnumMessage {
  12. 12 : /**
  13. 13 : * @private
  14. 14 : */
  15. 15 : constructor() {
  16. 16 : throw 'Cannot be instantiate';
  17. 17 : }
  18. 18 :
  19. 19 : /**
  20. 20 : * @type {rcube_webmail}
  21. 21 : * @readonly
  22. 22 : */
  23. 23 : static get Rcmail() {
  24. 24 : return MelObject.Empty().rcmail();
  25. 25 : }
  26. 26 :
  27. 27 : /**
  28. 28 : * Affiche un message sur le bnum
  29. 29 : * @param {string} message Message à afficher
  30. 30 : * @param {eMessageType} type Couleur ou icône lié au message
  31. 31 : * @returns {string}
  32. 32 : * @static
  33. 33 : */
  34. 34 : static DisplayMessage(message, type = eMessageType.Information) {
  35. 35 : return this.Rcmail.display_message(message, type);
  36. 36 : }
  37. 37 :
  38. 38 : /**
  39. 39 : * Affiche un message de chargement sur le Bnum
  40. 40 : * @returns {string} Id du message
  41. 41 : */
  42. 42 : static DisplayLoadingMessage() {
  43. 43 : return this.DisplayMessage('loading', 'loading');
  44. 44 : }
  45. 45 :
  46. 46 : /**
  47. 47 : * Supprime les messages du bnum
  48. 48 : * @returns {typeof BnumMessage} Chaînage
  49. 49 : * @static
  50. 50 : */
  51. 51 : static ClearMessages() {
  52. 52 : this.Rcmail.clear_messages();
  53. 53 : return this;
  54. 54 : }
  55. 55 :
  56. 56 : /**
  57. 57 : * Supprime un message sur le bnum à partir de son id.
  58. 58 : * @param {string} id Id du message
  59. 59 : * @returns {typeof BnumMessage} Chaînage
  60. 60 : * @static
  61. 61 : */
  62. 62 : static ClearMessage(id) {
  63. 63 : this.Rcmail.hide_message(id);
  64. 64 : return this;
  65. 65 : }
  66. 66 :
  67. 67 : /**
  68. 68 : * Passe le bnum en mode "occupé" et affiche un message de chargement
  69. 69 : * @static
  70. 70 : */
  71. 71 : static SetBusyLoading() {
  72. 72 : if (!this.busy) {
  73. 73 : /**
  74. 74 : * @type {?string}
  75. 75 : */
  76. 76 : this.busy = this.Rcmail.set_busy(true, 'loading');
  77. 77 : }
  78. 78 : }
  79. 79 :
  80. 80 : /**
  81. 81 : * Passe le bnum en mode "libre" et supprime le message de chargement
  82. 82 : * @static
  83. 83 : */
  84. 84 : static StopBusyLoading() {
  85. 85 : if (this.busy) {
  86. 86 : this.Rcmail.set_busy(false, 'loading', this.busy);
  87. 87 : this.busy = null;
  88. 88 : }
  89. 89 : }
  90. 90 : }
  91. 91 :
  92. 92 : /**
  93. 93 : * Type de message
  94. 94 : * @enum {string}
  95. 95 : * @see {@link BnumMessage.DisplayMessage}
  96. 96 : */
  97. 97 : const eMessageType = {
  98. 98 : Information: EMPTY_STRING,
  99. 99 : Confirmation: 'confirmation',
  100. 100 : Error: 'error',
  101. 101 : Warning: 'warning',
  102. 102 : };