/* * 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; // loadComponsnts(); self.$on('restartRefreshingState', self.cleanRefreshActionsState()); //self.$on('requestCloseModal', self.closeModalt ); }, 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; 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) { var self = this; if (self.appActionBlockingState) { return true; } self.appActionBlockingState = true; self.htmlContent = '
'; 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'); $.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); } self.$nextTick(function () { if (data.callBackFunction && typeof window[data.callBackFunction] === "function") { window[data.callBackFunction](data, targetId, event); } }); self.hideSpinner(event); self.appActionBlockingState = false; }, 'json').fail(function (jqXHR, textStatus, errorThrown) { self.hideSpinner(event); self.appActionBlockingState = false; self.handleServerError(jqXHR, textStatus, errorThrown); }); self.refreshUrl(); }, loadM2: function (event, targetId, namespace, index, params) { var self = this; self.loadModal(event, targetId, namespace, index, params); }, showSpinner: function (event) { var self = this; var spinnerTarget = self.getSpinerTarget(event); if (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) { 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); } 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.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) { formData.massActions = self.massActionIds; 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) { var self = this; var rfIds = (ids && ids.length > 0) ? ids : self.refreshingState; if (rfIds && rfIds.length > 0) { $.each(rfIds, function (index, Id) { var targetId = Id; self.$nextTick(function () { self.$emit('reloadMgData', targetId); }); }); } }, 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')); $.post(self.targetUrl, formData) .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); 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 : 'Error Code: ' + data.data.errorCode + '
Error Token: ' + data.data.errorToken + '
Error Time: ' + data.data.errorTime + '
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 (typeof functionName === "function") { 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); } } };