| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- if (typeof mgDtAjaxCpWrappers === 'undefined') {
- var mgDtAjaxCpWrappers = {
- ajaxComponents: {},
- updateInProgress: false,
- registerAjaxComponent: function(object) {
- var self = this;
- var tmpAjaxObj = {
- obj: object,
- status: 'notStarted'
- };
-
- self.ajaxComponents[object.component_id] = tmpAjaxObj;
- setTimeout(function() {
- self.loadAjaxData();
- }, 100);
- },
- loadAjaxData: async function() {
- var self = this;
- if (self.updateInProgress) {
- return true;
- }
- self.updateInProgress = true;
- for (var key in self.ajaxComponents) {
- if (!self.ajaxComponents.hasOwnProperty(key)) {
- continue;
- }
- if (self.ajaxComponents[key].status !== 'notStarted') {
- continue;
- }
-
- await self.getPromise(key).then(function(){
- self.ajaxComponents[key].status = 'completed';
- });
- }
- },
- getPromise: function(key) {
- var self = this;
- return new Promise(function(resolve, reject) {
- self.ajaxComponents[key].obj.loadAjaxData().then(function(data){
- resolve();
- });
- });
- },
- getUnloadedKey: function () {
- var self = this;
- for (var key in self.ajaxComponents) {
- if (!self.ajaxComponents.hasOwnProperty(key)) {
- continue;
- }
- if (self.ajaxComponents[key].status === 'notStarted') {
- return key;
- }
- }
-
- return false;
- }
- };
- }
- mgJsComponentHandler.addDefaultComponent('dt-ajax-field', {
- template: '#t-dt-ajax-field',
- data: function () {
- return {
- component_id: null,
- component_namespace: null,
- component_index: null,
- wrapper_id: null,
- loading_async: null,
- loading_lang: null,
- data: {},
- loading_state: true
- };
- },
- mounted: function () {
- var self = this;
- var wrapper = $(self.$el).parent();
- self.wrapper_id = $(wrapper).attr('id');
- self.component_id = $(wrapper).attr('component_id');
- self.component_namespace = $(wrapper).attr('component_namespace');
- self.component_index = $(wrapper).attr('component_index');
- self.loading_lang = $(wrapper).attr('loading_lang');
- self.loading_async = $(wrapper).attr('loading_async');
- initTooltipsForDatatables(self.wrapper_id);
-
- self.initAjaxCp();
- },
- methods: {
- initAjaxCp: function() {
- var self = this;
- if (self.loading_async) {
- mgDtAjaxCpWrappers.registerAjaxComponent(this);
- } else {
- self.loadAjaxData();
- }
- },
- loadAjaxData: function() {
- var self = this;
- self.loading_state = true;
- var requestParams = {
- loadData: self.component_id,
- namespace: self.component_namespace,
- index: self.component_index
- };
-
- var response = mgPageControler.vueLoader.vloadData(requestParams);
- return response.done(function(data){
- self.data = data.data.rawData;
- self.loading_state = false;
- });
- }
- }
- });
|