__page_controler.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. /*
  2. * Core js fw functions
  3. * Do not edit this file
  4. */
  5. /*
  6. * Js page controler
  7. */
  8. function mgVuePageControler(controlerId) {
  9. this.baseLoaderUrl = mgUrlParser.getCurrentUrl();
  10. //main app container id
  11. this.vueLoaderId = controlerId;
  12. //main app instance
  13. this.vueLoader = false,
  14. //main app instance init
  15. this.vinit = function() {
  16. var self = this;
  17. Vue.use(Vuex);
  18. self.vueLoader = new Vue(self.getVueAppInits());
  19. },
  20. //prepare main app config object
  21. this.getVueAppInits = function() {
  22. var vAppId = this.vueLoaderId;
  23. var newVueAppConfig = mgDefauleVueObject;
  24. newVueAppConfig.el = '#' + vAppId;
  25. newVueAppConfig.data.targetId = vAppId;
  26. newVueAppConfig.data.targetUrl = mgUrlParser.getCurrentUrl();
  27. newVueAppConfig.store = new Vuex.Store({
  28. state: {
  29. componentsData: {}
  30. },
  31. getters: {
  32. getComponentData: (state) => (componentName, optionName, optionGroup) => {
  33. if (typeof state.componentsData[componentName] === 'undefined') {
  34. return null;
  35. }
  36. else if (typeof optionGroup !== 'undefined') {
  37. if (typeof state.componentsData[componentName][optionGroup] === 'undefined'){
  38. return null;
  39. } else {
  40. return state.componentsData[componentName][optionGroup][optionName];
  41. }
  42. } else {
  43. if (typeof state.componentsData[componentName][optionName] === 'undefined'){
  44. return null;
  45. } else {
  46. return state.componentsData[componentName][optionName];
  47. }
  48. }
  49. }
  50. },
  51. mutations: {
  52. updateComponentData(state, valueDetails) {
  53. if (typeof state.componentsData[valueDetails.componentName] === 'undefined')
  54. {
  55. state.componentsData[valueDetails.componentName] = {};
  56. }
  57. if (typeof valueDetails.optionGroup !== 'undefined' && typeof state.componentsData[valueDetails.componentName][valueDetails.optionGroup] === 'undefined')
  58. {
  59. state.componentsData[valueDetails.componentName][valueDetails.optionGroup] = {};
  60. if (typeof state.componentsData[valueDetails.componentName][valueDetails.optionGroup][valueDetails.optionName] === 'undefined')
  61. {
  62. state.componentsData[valueDetails.componentName][valueDetails.optionGroup][valueDetails.optionName] = valueDetails.optionValue;
  63. }
  64. }
  65. if (typeof valueDetails.optionGroup === 'undefined')
  66. {
  67. state.componentsData[valueDetails.componentName][valueDetails.optionName] = valueDetails.optionValue;
  68. }
  69. else
  70. {
  71. state.componentsData[valueDetails.componentName][valueDetails.optionGroup][valueDetails.optionName] = valueDetails.optionValue;
  72. }
  73. }
  74. }
  75. });
  76. return newVueAppConfig;
  77. },
  78. //modal data
  79. this.modalData = {};
  80. //modal instance
  81. this.modalInstance = null;
  82. //modal app container id
  83. this.modalAppContainerId = controlerId + '_modal';
  84. //load modal
  85. this.initModal = function(id, namespace, index, event, dataLoaded){
  86. var self = this;
  87. self.modalData.id = id;
  88. self.modalData.namespace = namespace;
  89. self.modalData.index = index;
  90. self.modalData.event = event;
  91. self.modalData.dataLoaded = dataLoaded.htmlData;
  92. jQuery('#' + self.modalAppContainerId).html(dataLoaded.htmlData);
  93. if (typeof dataLoaded.registrations !== 'undefined') {
  94. $('#loadedTemplates').html(dataLoaded.template);
  95. for (var key in dataLoaded.registrations) {
  96. if (!dataLoaded.registrations.hasOwnProperty(key)) {
  97. continue;
  98. }
  99. mgJsComponentHandler.registerNowByDefaultTemplate(key.toLowerCase(), dataLoaded.registrations[key]);
  100. }
  101. }
  102. self.modalInstance = new Vue(self.getVueModalAppInits());
  103. mgEventHandler.runCallback('ModalLoaded', self.modalData.id, {containerId: self.modalAppContainerId, modalInstance: self.modalInstance});
  104. },
  105. this.destructApp = function() {
  106. var self = this;
  107. self.vueLoader.$destroy();
  108. self.vueLoader = null;
  109. self = null;
  110. }
  111. this.destructModal = function() {
  112. var self = this;
  113. var modalId = self.modalData.id;
  114. self.modalInstance.$destroy();
  115. self.modalInstance = null;
  116. //unset modal data
  117. self.modalData.id = null;
  118. self.modalData.namespace = null;
  119. self.modalData.index = null;
  120. self.modalData.event = null;
  121. self.modalData.dataLoaded = null;
  122. //remove old modal content
  123. jQuery('#' + self.modalAppContainerId).html('');
  124. mgEventHandler.runCallback('ModalClosed', modalId, {});
  125. }
  126. this.reloadVueModal = function() {
  127. $('#mgModalContainer').append('<div id="mg-full-modal-wrapper" class="lu-preloader-container lu-preloader-container--full-screen lu-preloader-container--overlay" v-show="1"><div class="lu-preloader lu-preloader--sm"></div></div>');
  128. var self = this;
  129. var tempData = self.modalData;
  130. self.modalInstance.$destroy();
  131. self.vueLoader.reloadModalContent(tempData.event, tempData.id, tempData.namespace, tempData.index, null);
  132. };
  133. this.getVueModalAppInits = function () {
  134. var self = this;
  135. var vmAppId = self.modalAppContainerId;
  136. var newVuemAppConfig = mgDefauleVueModalObject;
  137. newVuemAppConfig.el = '#' + vmAppId;
  138. newVuemAppConfig.data.targetId = self.modalData.id;
  139. newVuemAppConfig.data.targetUrl = mgUrlParser.getCurrentUrl();
  140. return newVuemAppConfig;
  141. };
  142. this.initModalAdditions = function(){
  143. initModalSelects();
  144. initModalSwitchEvents();
  145. initModalTooltips();
  146. };
  147. //close modal on background click
  148. this.closeModal = function(event){
  149. var clickedEl = document.elementFromPoint(event.clientX, event.clientY);
  150. if ($(clickedEl).hasClass('lu-modal') && $(clickedEl).hasClass('show')) {
  151. //ff
  152. if (typeof event.explicitOriginalTarget !== 'undefined' && $(event.explicitOriginalTarget).hasClass('lu-modal') && $(event.explicitOriginalTarget).hasClass('show')) {
  153. this.destructModal();
  154. //chrome
  155. } else if(event.clientX === event.layerX) {
  156. this.destructModal();
  157. }
  158. }
  159. }
  160. }