/* * Core js fw functions * Do not edit this file */ /* * Default Vue App object */ var mgDefauleVueObject = { el: null,//'#'+controlerId, data: { targetId : null,//controlerId, targetUrl : null, //mgUrlParser.getCurrentUrl(), pageLoading : false, returnedData : null, loading : false, loaderComponent : '
', sSearch : null, showModal : false, htmlContent : '', modalBodyContainer : 'mg-modal-body', refreshingState : [], massActionIds : null, massActionTargetCont : null, pagePreLoader : null, destroyComponent: false, modalInstance : null, mgNewModalContainerName: 'mg-component-body-empty-modal', mgNewModalJsObj: null, mgNewModalvIf: false, appActionBlockingState: false }, created: function () { var self = this; self.$on('restartRefreshingState', self.cleanRefreshActionsState()); self.$nextTick(function(){ initContainerSelects('layers'); }); mgEventHandler.runCallback('AppCreated', self.targetId, {instance: self}); }, methods: { selectChangeAction : function($event) { mgEventHandler.runCallback('SelectFieldValueChanged', $event.target.name, {data: $event.target}); }, rendKey: function (lenth) { if (!lenth) { lenth = 6; } var randKey = ""; var avChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; for (var i = 0; i < lenth; i++) { randKey += avChars.charAt(Math.floor(Math.random() * avChars.length)); } return randKey; }, vloadData : function (params, forceRawData) { var self = this; var returnType = forceRawData ? 'text' : 'json'; self.refreshUrl(); for(var propertyName in params) { self.addUrlComponent(propertyName, params[propertyName]); } self.addUrlComponent('ajax', '1'); return $.get(self.targetUrl, function(data){ if (!forceRawData) { data = data.data; if (data.callBackFunction && typeof window[data.callBackFunction] === "function") { window[data.callBackFunction](data); } } }, returnType).fail(function(jqXHR, textStatus, errorThrown) { //self.addAlert('danger', 'Action Failed'); console.log('Action Failed'); }); }, addUrlComponent : function($name, $value) { var self = this; if (typeof $value === 'object') { for (var key in $value) { if (!$value.hasOwnProperty(key)) { continue; } self.targetUrl += (self.targetUrl.indexOf('?') !== -1 ? '&' : '?') + $name + '[' + key + ']' + '=' + encodeURIComponent($value[key]); } } else{ self.targetUrl += (self.targetUrl.indexOf('?') !== -1 ? '&' : '?') + $name + '=' + encodeURIComponent($value); } }, updateUrlParam : function(key, value, event){ var self = this; value = self.updateValueByAttrs(key, value, event); if(self.targetUrl.indexOf(key) === -1){ self.addUrlComponent(key, value); } else { var baseUrlParts = self.targetUrl.split('?'); var currentUrlParams = baseUrlParts[1].split('&'); for(i=0; i < currentUrlParams.length; i++){ if(currentUrlParams[i].indexOf(key) === 0){ if(value === ''){ currentUrlParams.splice(i, 1); } else { currentUrlParams[i] = key + '=' + value; } } } var updatedUrlParams = currentUrlParams.join('&'); self.targetUrl = baseUrlParts[0] + '?' + updatedUrlParams; } }, updateValueByAttrs : function(key, value, event){ if(value.indexOf(':') !== 0){ return value; } else { if($(event.target).attr('data-' + key)) { return $(event.target).attr('data-' + key); } else if( $(event.target).parents('a').first().attr('data-' + key)) { return $(event.target).parents('a').first().attr('data-' + key); } else if( $(event.target).parents('button').first().attr('data-' + key)) { return $(event.target).parents('button').first().attr('data-' + key); } else { return value; } } }, refreshUrl : function() { var self = this; self.targetUrl = mgUrlParser.getCurrentUrl(); if(self.targetUrl.indexOf('#') > 0) { self.targetUrl = self.targetUrl.substr(0, self.targetUrl.indexOf('#')); } }, loadModal : function(event, targetId, namespace, index, params, addSpinner){ event.preventDefault(); event.stopImmediatePropagation(); var self = this; if (self.appActionBlockingState) { return true; } self.appActionBlockingState = true; self.htmlContent = '
'; if (addSpinner) { self.showSpinner(event); } self.refreshUrl(); self.initRefreshActions(event, targetId); self.initMassActions(event); self.addUrlComponent('loadData', targetId); self.addUrlComponent('namespace', namespace); if (params && params.length > 0) { for (i = 0; i < params.length; i++) { self.addUrlComponent(params[i].name, params[i].value); } } self.addUrlComponent('index', index); self.addUrlComponent('mgformtype', 'read'); self.getActionId(event); self.addUrlComponent('ajax', '1'); var request = $.get(self.targetUrl, function(data){ data = data.data; if(data.status === 'success'){ self.htmlContent = data.rawData.htmlData; mgPageControler.initModal(targetId, namespace, index, event, data.rawData); } else { self.handleErrorMessage(data); mgEventHandler.runCallback('ModalLoadFailed', targetId, {respData: data}); } self.$nextTick(function() { if (data.callBackFunction && typeof window[data.callBackFunction] === "function") { window[data.callBackFunction](data, targetId, event); } }); if (addSpinner) { self.hideSpinner(event); } self.appActionBlockingState = false; }, 'json').fail(function(jqXHR, textStatus, errorThrown) { if (addSpinner) { self.hideSpinner(event); } self.appActionBlockingState = false; self.handleServerError(jqXHR, textStatus, errorThrown); mgEventHandler.runCallback('ModalLoadFailed', targetId, {jqXHR : jqXHR, textStatus: textStatus, errorThrown: errorThrown}); }); self.refreshUrl(); return request; }, showSpinner : function(event) { var self = this; var spinnerTarget = self.getSpinerTarget(event); if (spinnerTarget && spinnerTarget.length > 0 || $(spinnerTarget).tagName === 'I') { var isBtnIcon = $(spinnerTarget).hasClass('lu-btn__icon'); $(spinnerTarget).attr('originall-button-icon', $(spinnerTarget).attr('class')); $(spinnerTarget).removeAttr('class'); $(spinnerTarget).attr('class', (isBtnIcon ? 'lu-btn__icon ' : '') + 'lu-btn__icon lu-preloader lu-preloader--sm'); } else { self.addSpinner(event); } }, reloadModalContent: function(event, targetId, namespace, index, params, addSpinner) { var self = this; $('#mgModalContainer').append('
'); self.refreshUrl(); self.initRefreshActions(event, targetId); self.initMassActions(targetId); self.addUrlComponent('loadData', targetId); self.addUrlComponent('namespace', namespace); self.addUrlComponent('index', index); self.addUrlComponent('mgformtype', 'reload'); self.getActionId(event); self.addUrlComponent('ajax', '1'); var formData =[]; if($('#mgModalContainer').find('form').length > 0) { var formTargetId = $('#mgModalContainer').find('form').first().attr('id'); var formCont = new mgFormControler(formTargetId); var formData = formCont.getFieldsData(); } $.post(self.targetUrl, formData).done(function (data) { data = data.data; if(data.status === 'success'){ self.htmlContent = data.rawData.htmlData; self.destroyComponent = true; mgPageControler.initModal(targetId, namespace, index, event, data.rawData); } else { self.handleErrorMessage(data); $('#mgModalContainer #mg-full-modal-wrapper').remove(); } self.$nextTick(function() { if (data.callBackFunction && typeof window[data.callBackFunction] === "function") { window[data.callBackFunction](data, targetId, event); } }); }, 'json').fail(function() { //self.addAlert('danger', 'Action Failed'); console.log('Action Failed'); }); self.refreshUrl(); }, hideSpinner : function(event) { var self = this; var spinnerTarget = self.getSpinerTarget(event); if ($(event.target).attr('originall-button-content')) { self.removeSpinner(event); } else if (spinnerTarget && spinnerTarget.length > 0 || $(spinnerTarget).tagName === 'I') { $(spinnerTarget).removeAttr('class'); $(spinnerTarget).attr('class', $(spinnerTarget).attr('originall-button-icon')); $(spinnerTarget).removeAttr('originall-button-icon'); } }, removeSpinner : function(event) { $(event.target).html($(event.target).attr('originall-button-content')); $(event.target).removeAttr('originall-button-content'); }, addSpinner : function(event) { var elWidth = $(event.target).width(); var spinnerClass = $(event.target).hasClass('lu-btn--success') ? 'lu-preloader-success' : ($(event.target).hasClass('lu-btn--danger') ? 'lu-preloader-danger' : ''); $(event.target).attr('originall-button-content', $(event.target).html()); $(event.target).html(''); }, getSpinerParent : function(event) { if($(event.target)[0].tagName === 'A' || $(event.target)[0].tagName === 'BUTTON'){ return $(event.target)[0]; } else if($(event.target)[0].parents('button').first()){ return $(event.target)[0].parents('button').first(); } else if($(event.target)[0].parents('a').first()){ return $(event.target)[0].parents('a').first(); } else { return null; } }, getSpinerTarget : function(event) { if($(event.target)[0].tagName === 'I'){ return $(event.target); } else if($(event.target)[0].tagName === 'SPAN'){ var aParents = $(event.target).parents('a'); return aParents.length === 0 ? $(event.target).parents('button').first().find('i').first() : $(event.target).parents('a').first().find('i').first(); } else if($(event.target)[0].tagName === 'A'){ return $(event.target).find('i').first(); } else if($(event.target)[0].tagName === 'BUTTON'){ return $(event.target).find('i').first(); } else { return null; } }, initMassActions : function(event){ var self = this; self.cleanMassActions(); if($(event.target).parents('.lu-t-c__mass-actions').length === 0) { return; } self.addUrlComponent('isMassAction', '1'); var tableContainer = $(event.target).parents('.vueDatatableTable').first().attr('id'); self.massActionTargetCont = tableContainer; self.massActionIds = collectTableMassActionsData(tableContainer); }, addMassActionsToData : function (formData){ var self = this; if(self.massActionIds){ for (var key in self.massActionIds) { if (!self.massActionIds.hasOwnProperty(key)) { continue; } formData.set('massActions[' + key + ']', self.massActionIds[key]); } return formData; }else{ return formData; } }, cleanMassActions : function(){ var self = this; if(self.massActionIds || self.massActionTargetCont){ self.massActionIds = null; //uncheckSelectAllCheck(self.massActionTargetCont); self.$nextTick(function() { self.massActionTargetCont = null; }); } }, addRefreshActions: function (targetId) { var self = this; self.refreshingState.push(targetId); }, initRefreshActions : function(event, targetId) { var self = this; var menuReloading = ['addGroupButton', 'editGroupButton', 'deleteGroupButton']; if(menuReloading.indexOf(targetId) > -1) { self.refreshingState = ['mg-category-menu']; return; } var tableContainer = $(event.target).parents('.vueDatatableTable').first(); self.refreshingState = [$(tableContainer).attr('id')]; }, runRefreshActions : function(ids, data) { var self = this; var rfIds = (ids && ids.length > 0) ? ids : self.refreshingState; var customParams = (data && typeof data.customParams !== undefined) ? data.customParams : null; if(rfIds && rfIds.length > 0){ $.each(rfIds, function (index, Id) { var targetId = Id; self.$nextTick(function() { self.$emit('reloadMgData', targetId, customParams); }); }); } }, cleanRefreshActionsState : function() { var self = this; self.refreshingState = []; }, getActionId : function(event) { var self = this; var tableActions = $(event.target).parents("td.mgTableActions"); var widgetActionComponent = $(event.target).parents("div.widgetActionComponent"); if($(tableActions).length === 1){ var row = $(tableActions[0]).parent('tr'); var actionElementId = $(row).attr("actionid"); if(actionElementId){ self.addUrlComponent('actionElementId', actionElementId); } } else if(widgetActionComponent.length === 1){ var actionElementId = widgetActionComponent.first().attr("actionid"); if(actionElementId){ self.addUrlComponent('actionElementId', actionElementId); } } }, submitForm : function(targetId, event) { event.preventDefault(); var self = this; if (self.appActionBlockingState) { return true; } self.appActionBlockingState = true; var formTargetId = ($('#'+targetId)[0].tagName === 'FORM') ? targetId : $('#'+targetId).find('form').attr('id'); if(formTargetId){ self.showSpinner(event); var formCont = new mgFormControler(formTargetId); var formData = formCont.getFieldsData(); formData = self.addMassActionsToData(formData); self.refreshUrl(); self.addUrlComponent('loadData', formTargetId); self.addUrlComponent('namespace', getItemNamespace(formTargetId)); self.addUrlComponent('index', getItemIndex(formTargetId)); self.addUrlComponent('ajax', '1'); self.addUrlComponent('mgformtype', $('#'+formTargetId).attr('mgformtype')); $.ajax({ type: "POST", url: self.targetUrl, data: formData, processData: false, contentType: false}) .done(function( data ) { data = data.data; self.hideSpinner(event); self.$nextTick(function() { if (data.callBackFunction && typeof window[data.callBackFunction] === "function") { window[data.callBackFunction](data, targetId, event); } }); if(data.status === 'success'){ self.showModal = false; self.runRefreshActions((data && typeof data.refreshIds !== undefined) ? data.refreshIds : null, data); self.cleanMassActions(); self.addAlert(data.status, data.message); formCont.updateFieldsValidationMessages([]); } else if (data.rawData !== undefined && data.rawData.FormValidationErrors !== undefined) { formCont.updateFieldsValidationMessages(data.rawData.FormValidationErrors); } else { formCont.updateFieldsValidationMessages([]); self.handleErrorMessage(data); } self.appActionBlockingState = false; }).fail(function(jqXHR, textStatus, errorThrown) { self.hideSpinner(event); self.handleServerError(jqXHR, textStatus, errorThrown); self.appActionBlockingState = false; }); } else { //todo error reporting } }, handleErrorMessage: function(data) { var self = this; self.addAlert(data.status,(data.message ? data.message : (typeof data.data !== 'undefined' ? ((typeof data.data.errorCode !== 'undefined' ? 'Error Code: ' + data.data.errorCode + '
' : '') + (typeof data.data.errorToken !== 'undefined' ? 'Error Token: ' + data.data.errorToken + '
' : '') + (typeof data.data.errorTime !== 'undefined' ? 'Error Time: ' + data.data.errorTime + '
' : '') + (typeof data.data.errorMessage !== 'undefined' ? 'Message: ' + data.data.errorMessage : '')) : '') )); if ((typeof data.data !== 'undefined') && (typeof data.data.errorCode !== 'undefined')) { console.log(data.data); } }, handleServerError: function(jqXHR, textStatus, errorThrown) { var self = this; if (jqXHR.responseText.indexOf('id="mg-sh-h-492318-64534" value="') > 0){ var errTokenStart = jqXHR.responseText.indexOf('mg-sh-h-492318-64534') + 20; var errTokenEnd = jqXHR.responseText.indexOf('mg-sh-h-492318-64534-end'); var errToken = jqXHR.responseText.substr(errTokenStart, (errTokenEnd - errTokenStart)); errToken = errToken.replace('value=', '').replace(/\"/g, '').replace(/\s/g, ''); self.addAlert('error', 'Unexpected Error.
Error Token: ' + errToken); console.log('Action Failed. Error Token: ' + errToken); } else { console.log('Action Failed'); } }, ajaxAction : function(event, targetId, namespace, index, postData) { var self = this; self.refreshUrl(); self.initRefreshActions(event, targetId); self.addUrlComponent('loadData', targetId); self.addUrlComponent('namespace', namespace); self.addUrlComponent('index', index); self.getActionId(event); self.addUrlComponent('ajax', '1'); $.post(self.targetUrl, postData) .done(function( data ) { data = data.data; self.addAlert(data.status, data.message); self.$nextTick(function() { if (data.callBackFunction && typeof window[data.callBackFunction] === "function") { window[data.callBackFunction](data, targetId, event); } }); if(data.status === 'success'){ } }, 'json'); self.refreshUrl(); }, updateSorting : function(order, loadData, namespace) { var self = this; self.refreshUrl(); self.addUrlComponent('loadData', loadData); self.addUrlComponent('namespace', namespace); self.addUrlComponent('ajax', '1'); self.addUrlComponent('mgformtype', "reorder"); var formData = {order : order} $.post(self.targetUrl, {formData: formData}).done(function( data ) { data = data.data; self.addAlert(data.status, data.message); self.pageLoading = false; self.$nextTick(function() { if (data.callBackFunction && typeof window[data.callBackFunction] === "function") { window[data.callBackFunction](data, loadData); } }); if(data.status === 'success') { //Dispaly alert? } else { //TODO: Dispaly alert } }); }, addAlert : function(type, message){ type = (type === 'error') ? 'danger' : type; layers.alert.create({ $alertPosition: 'right-top', $alertStatus: type, $alertBody: message, $alertTimeout: 10000 }); }, makeCustomAction : function(functionName, params, event, namespace, index) { var self = this; if (functionName && typeof mgPageControler.vueLoader[functionName] === "function") { mgPageControler.vueLoader[functionName](self, params, event, namespace, index); } else if (functionName && typeof window[functionName] === "function") { window[functionName](self, params, event, namespace, index); } }, redirect : function (event, params, targetBlank) { var self = this; var tempUrl = self.targetUrl; if(params.rawUrl !== undefined){ self.targetUrl = params.rawUrl; } if(params.actionElementId !== undefined) { self.getActionId(event); } $.each(params, function(key, value){ if(key === 'rawUrl' || key === 'actionElementId'){ return false; } else { self.updateUrlParam(key.replace('__', '-'), value, event); } }); if (targetBlank) { window.open(self.targetUrl, '_blank'); } else { window.location = self.targetUrl; } }, submitFormByEvent : function(event){ var self = this; self.submitForm($(event.target).parents("form").first().attr('id'), event); }, submitFormByField: function(event) { }, toggler: function(event, container, selector){ let element = $(event.target).closest(container).find(selector); let switcher = $(event.target).closest(container).find('[data-toggle=1]'); if(element.hasClass('hidden')) { element.removeClass('hidden'); switcher.removeClass(switcher.data('toggle-on')).addClass(switcher.data('toggle-off')); } else { element.addClass('hidden'); switcher.removeClass(switcher.data('toggle-off')).addClass(switcher.data('toggle-on')); } }, } };