util_srv.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import coreModule from 'app/core/core_module';
  2. import appEvents from 'app/core/app_events';
  3. export class UtilSrv {
  4. modalScope: any;
  5. /** @ngInject */
  6. constructor(private $rootScope, private $modal) {}
  7. init() {
  8. appEvents.on('show-modal', this.showModal.bind(this), this.$rootScope);
  9. appEvents.on('hide-modal', this.hideModal.bind(this), this.$rootScope);
  10. appEvents.on('confirm-modal', this.showConfirmModal.bind(this), this.$rootScope);
  11. }
  12. hideModal() {
  13. if (this.modalScope && this.modalScope.dismiss) {
  14. this.modalScope.dismiss();
  15. }
  16. }
  17. showModal(options) {
  18. if (this.modalScope && this.modalScope.dismiss) {
  19. this.modalScope.dismiss();
  20. }
  21. this.modalScope = options.scope;
  22. if (options.model) {
  23. this.modalScope = this.$rootScope.$new();
  24. this.modalScope.model = options.model;
  25. } else if (!this.modalScope) {
  26. this.modalScope = this.$rootScope.$new();
  27. }
  28. const modal = this.$modal({
  29. modalClass: options.modalClass,
  30. template: options.src,
  31. templateHtml: options.templateHtml,
  32. persist: false,
  33. show: false,
  34. scope: this.modalScope,
  35. keyboard: false,
  36. backdrop: options.backdrop,
  37. });
  38. Promise.resolve(modal).then(modalEl => {
  39. modalEl.modal('show');
  40. });
  41. }
  42. showConfirmModal(payload) {
  43. const scope = this.$rootScope.$new();
  44. scope.onConfirm = () => {
  45. payload.onConfirm();
  46. scope.dismiss();
  47. };
  48. scope.updateConfirmText = value => {
  49. scope.confirmTextValid = payload.confirmText.toLowerCase() === value.toLowerCase();
  50. };
  51. scope.title = payload.title;
  52. scope.text = payload.text;
  53. scope.text2 = payload.text2;
  54. scope.confirmText = payload.confirmText;
  55. scope.onConfirm = payload.onConfirm;
  56. scope.onAltAction = payload.onAltAction;
  57. scope.altActionText = payload.altActionText;
  58. scope.icon = payload.icon || 'fa-check';
  59. scope.yesText = payload.yesText || 'Yes';
  60. scope.noText = payload.noText || 'Cancel';
  61. scope.confirmTextValid = scope.confirmText ? false : true;
  62. appEvents.emit('show-modal', {
  63. src: 'public/app/partials/confirm_modal.html',
  64. scope: scope,
  65. modalClass: 'confirm-modal',
  66. });
  67. }
  68. }
  69. coreModule.service('utilSrv', UtilSrv);