messages.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /**
  2. * Copyright © Magento, Inc. All rights reserved.
  3. * See COPYING.txt for license details.
  4. */
  5. /**
  6. * @api
  7. */
  8. define([
  9. 'ko',
  10. 'uiClass'
  11. ], function (ko, Class) {
  12. 'use strict';
  13. return Class.extend({
  14. /** @inheritdoc */
  15. initialize: function () {
  16. this._super()
  17. .initObservable();
  18. return this;
  19. },
  20. /** @inheritdoc */
  21. initObservable: function () {
  22. this.errorMessages = ko.observableArray([]);
  23. this.successMessages = ko.observableArray([]);
  24. return this;
  25. },
  26. /**
  27. * Add message to list.
  28. * @param {Object} messageObj
  29. * @param {Object} type
  30. * @returns {Boolean}
  31. */
  32. add: function (messageObj, type) {
  33. var expr = /([%])\w+/g,
  34. message;
  35. if (!messageObj.hasOwnProperty('parameters')) {
  36. this.clear();
  37. type.push(messageObj.message);
  38. return true;
  39. }
  40. message = messageObj.message.replace(expr, function (varName) {
  41. varName = varName.substr(1);
  42. if (messageObj.parameters.hasOwnProperty(varName)) {
  43. return messageObj.parameters[varName];
  44. }
  45. return messageObj.parameters.shift();
  46. });
  47. this.clear();
  48. type.push(message);
  49. return true;
  50. },
  51. /**
  52. * Add success message.
  53. *
  54. * @param {Object} message
  55. * @return {*|Boolean}
  56. */
  57. addSuccessMessage: function (message) {
  58. return this.add(message, this.successMessages);
  59. },
  60. /**
  61. * Add error message.
  62. *
  63. * @param {Object} message
  64. * @return {*|Boolean}
  65. */
  66. addErrorMessage: function (message) {
  67. return this.add(message, this.errorMessages);
  68. },
  69. /**
  70. * Get error messages.
  71. *
  72. * @return {Array}
  73. */
  74. getErrorMessages: function () {
  75. return this.errorMessages;
  76. },
  77. /**
  78. * Get success messages.
  79. *
  80. * @return {Array}
  81. */
  82. getSuccessMessages: function () {
  83. return this.successMessages;
  84. },
  85. /**
  86. * Checks if an instance has stored messages.
  87. *
  88. * @return {Boolean}
  89. */
  90. hasMessages: function () {
  91. return this.errorMessages().length > 0 || this.successMessages().length > 0;
  92. },
  93. /**
  94. * Removes stored messages.
  95. */
  96. clear: function () {
  97. this.errorMessages.removeAll();
  98. this.successMessages.removeAll();
  99. }
  100. });
  101. });