categoryMenuDynamicContent.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. /*
  2. * Left category menu, right content
  3. */
  4. /*
  5. * Empty container for reload contents //mg-emptyContainer
  6. */
  7. mgJsComponentHandler.addDefaultComponent('category-empty-container', {
  8. template: '#category-menu',
  9. data: function () {
  10. return {
  11. contentLoading: true
  12. };
  13. }
  14. });
  15. /*
  16. * Empty container registred by default
  17. */
  18. mgJsComponentHandler.addComponentByDefaultTemplate('empty-menu-cont', 'category-empty-container');
  19. /*
  20. * Menu and reloads logic
  21. */
  22. mgJsComponentHandler.addDefaultComponent('category-menu', {
  23. template: '#mg-category-menu',
  24. data: function () {
  25. var self = this;
  26. return {
  27. tableWrapperId: 'mg-category-menu',
  28. returnedData: [],
  29. targetid: null,
  30. menuLoading: false,
  31. sSearch: null,
  32. dataContent: '',
  33. showModal: false,
  34. contentContainerName: 'mg-component-body-empty-menu-cont', //+ self.component_id,
  35. modalBodyContainer: 'mg-modal-body',
  36. };
  37. },
  38. props: ['makeCustomAction', 'toggleFormSection', 'component_id'],
  39. mounted: function () {
  40. this.loadCategories(this.loadCategories);
  41. },
  42. created: function () {
  43. var self = this;
  44. self.$parent.$root.$on('reloadMgData', this.updateMgData);
  45. },
  46. methods: {
  47. updateMgData: function (toReloadId) {
  48. var self = this;
  49. if (self.tableWrapperId === toReloadId) {
  50. self.loadCategories(true);
  51. self.$nextTick(function () {
  52. self.$emit('restartRefreshingState');
  53. });
  54. }
  55. },
  56. reloadMenuContent: function (categoryId, namespace, index) {
  57. if ($("#groupList").attr("isBeingSorted")) {
  58. $("#groupList").removeAttr("isBeingSorted");
  59. return;
  60. }
  61. var self = this;
  62. self.contentContainerName = 'mg-component-body-empty-menu-cont';
  63. var resp = self.$parent.$options.methods.vloadData({loadData: categoryId, namespace: namespace, index: index});
  64. resp.done(function (data) {
  65. var data = data.data.rawData;
  66. $('#loadedTemplates').append(data.template);
  67. for (var key in data.registrations) {
  68. if (!data.registrations.hasOwnProperty(key)) {
  69. continue;
  70. }
  71. mgJsComponentHandler.registerNowByDefaultTemplate(key.toLowerCase(), data.registrations[key]);
  72. }
  73. $('#groupList').find('li.is-active').removeClass('is-active');
  74. $('#groupList').find('#' + categoryId).addClass('is-active');
  75. self.contentContainerName = 'mg-templatecontainer';
  76. Vue.component('mg-templatecontainer', {
  77. template: data.htmlData,
  78. methods: {
  79. submitForm: function (targetId, event) {
  80. mgPageControler.vueLoader.submitForm(targetId, event);
  81. }
  82. }
  83. });
  84. mgPageControler.vueLoader.$nextTick(function () {
  85. $('#itemContentContainer [data-content-slider]').luContentSlider();
  86. });
  87. self.$nextTick(function () {
  88. tldCategoriesSortableController();
  89. });
  90. });
  91. },
  92. searchData: function (event) {
  93. var self = this;
  94. self.sSearch = $(event.target).val();
  95. self.loadCategories();
  96. },
  97. loadCategories: function (callback = false) {
  98. var self = this;
  99. self.menuLoading = true;
  100. self.targetid = self.$el.attributes.getNamedItem('targetid').value;
  101. var reqParams = {loadData: self.targetid, namespace: getItemNamespace(self.targetid), index: getItemIndex(self.targetid)};
  102. if (self.sSearch !== null) {
  103. reqParams.sSearch = self.sSearch;
  104. }
  105. var resp = self.$parent.$options.methods.vloadData(reqParams);
  106. resp.done(function (data) {
  107. self.returnedData = data.data.rawData;
  108. self.menuLoading = false;
  109. if (callback) {
  110. self.reloadMenuContent(data.data.rawData[0].elId, data.data.rawData[0].namespace, data.data.rawData[0].id);
  111. }
  112. self.$nextTick(function () {
  113. tldCategoriesSortableController();
  114. });
  115. });
  116. },
  117. loadModal: function (event, targetId, namespace, index) {//needs refactoring
  118. event.stopImmediatePropagation();
  119. mgPageControler.vueLoader.loadM2(event, targetId, namespace, index);
  120. },
  121. submitForm: function (event) {
  122. mgPageControler.vueLoader.submitForm('itemContentContainer', event);
  123. }
  124. // },
  125. // makeCustomAction: function (functionName, params, event, namespace, index) {
  126. // mgPageControler.vueLoader.makeCustomAction(functionName, params, event, namespace, index);
  127. // }
  128. }
  129. });