Files
wyczarujprezent.pl/modules/jxmegalayout/views/js/app/main.js
2024-10-28 22:14:22 +01:00

176 lines
4.7 KiB
JavaScript

/**
* 2017-2019 Zemez
*
* JX Mega Layout
*
* NOTICE OF LICENSE
*
* This source file is subject to the General Public License (GPL 2.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/GPL-2.0
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade the module to newer
* versions in the future.
*
* @author Zemez (Alexander Grosul & Alexander Pervakov)
* @copyright 2017-2019 Zemez
* @license http://opensource.org/licenses/GPL-2.0 General Public License (GPL 2.0)
*/
var Vue = require('vue')
var VueResource = require('vue-resource')
var Vuex = require('vuex')
var jxmlSectionDropdown = require('./components/main/jxml-sections-dropdown.vue')
var jxmlSectionTools = require('./components/tools/jxml-tools-tabs.vue')
var jxmlSectionContent = require('./components/main/jxml-sections-content.vue')
var Translation = require('./mixins/translate')
Vue.use(VueResource)
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
max_file_size: max_file_size,
endpoint: jxml_theme_url+'&ajax',
status: 'loading',
jxmegalayoutTabs: jxmegalayoutTabs,
translations: app_translations
},
getters: {
maxfilesize(state) {
return state.max_file_size
},
status(state) {
return state.status
},
endpoint(state) {
return state.endpoint
},
getJxmegalayoutTabs(state) {
return state.jxmegalayoutTabs
}
},
mutations: {
setLoadingStatus(state) {
state.status = 'loading';
},
setReadyStatus(state) {
state.status = 'ready';
},
setErrorStatus(state) {
state.status = 'error';
}
}
});
Vue.mixin(Translation)
app = new Vue({
el: '#jxmegalayout-vue-app',
store,
data: {
jxmegalayoutNeedOptimization: !needOptimization,
jxmegalayoutAction: 'loadLayoutTab',
jxmegalayoutTabsActive: 'displayHeader',
jxmegalayoutToolsTabsActive: 'Export',
jxmegalayoutTabsSectionType: 'MainLayouts'
},
methods: {
jxmegalayoutSetActiveTab: function(identificator) {
this.jxmegalayoutTabsActive = identificator;
//this.getTabContent();
},
onJxmegalayoutSetActiveSection: function(identificator) {
this.jxmegalayoutTabsSectionType = identificator;
if (this.jxmegalayoutTabsSectionType == 'MainLayouts') {
this.jxmegalayoutTabsActive = 'displayHeader'
} else {
this.jxmegalayoutTabsActive = 'displayFooterProduct'
}
// invoke tab content updating after layouts type switching
//this.getTabContent();
},
getTabContent: function() {
if (this.jxmegalayoutTabsActive == 'Tools') {
return;
}
this.$store.commit('setLoadingStatus');
var options = {
action : this.jxmegalayoutAction,
tab_name : this.jxmegalayoutTabsActive
};
var resource = this.$resource(this.$store.getters.endpoint);
resource.get(options).then(function(response) {
this.$store.commit('setReadyStatus');
}, function(error) {
})
},
showPopup: function(message) {
$.fancybox.open({
type : 'inline',
autoScale : true,
minHeight : 30,
minWidth : 320,
maxWidth : 815,
padding : 0,
content : '<div class="bootstrap jxml-popup">' + message + '</div>',
helpers : {
overlay : {
locked : false
}
},
afterClose : function() {
$('.button-container a:not(.edit-styles)').removeClass('active');
}
});
},
validateLayoutName : function(name) {
if ($.trim(name) == '') {
return false;
}
for (i = 0; i < name.length; i++) {
if (i == 0 && name[i] == '-') {
return false;
}
if (/^[a-zA-Z0-9-]*$/.test(name[i]) == false) {
return false;
}
}
return true;
},
optimizeFiles: function() {
var options = {
action : 'updateOptionOptimize'
};
var resource = this.$resource(this.$store.getters.endpoint);
resource.get(options).then(function(response) {
this.$store.commit('setReadyStatus');
this.jxmegalayoutNeedOptimization = false;
showSuccessMessage(response.body.response_msg);
}, function(error) {})
}
},
created: function() {
this.$store.commit('setReadyStatus');
//this.getTabContent();
},
computed: {
status() {
return this.$store.getters.status;
},
jxmegalayoutTabs() {
return this.$store.getters.getJxmegalayoutTabs;
}
},
components: {
'jxml-sections-dropdown': jxmlSectionDropdown,
'jxml-tools-tabs': jxmlSectionTools,
'jxml-section-content': jxmlSectionContent
}
});