/* * Core js fw functions * Do not edit this file */ /* * Components Handler * collects all vue components/components templates and register it */ var mgJsComponentHandler = { defaultComponentJs: {}, customComponentJs: {}, defaultBasedComponents: {}, //adds default component js template addDefaultComponent: function (componentId, componentObj) { this.defaultComponentJs[componentId] = componentObj; }, //returns default component js template by id getDefaultComponent: function (componentId) { if (this.defaultComponentJs.hasOwnProperty(componentId)) { return this.defaultComponentJs[componentId]; } else { return false; } }, //adds custom component js addCustomComponent: function (componentId, componentObj) { this.customComponentJs[componentId] = componentObj; }, //adds a component based on default js template addComponentByDefaultTemplate: function (componentId, templateId) { this.defaultBasedComponents[componentId] = templateId; }, //register all avalible components as a Vue components registerComponents: function () { this.registerDefaultComponents(); this.registerCustomComponents(); }, //register custom components as a Vue components registerCustomComponents: function () { for (var key in this.customComponentJs) { if (!this.customComponentJs.hasOwnProperty(key)) { continue; } var componentObj = this.customComponentJs[key]; Vue.component('mg-component-body-' + key, componentObj); } }, //register default components as a Vue components registerDefaultComponents: function () { for (var key in this.defaultBasedComponents) { if (!this.defaultBasedComponents.hasOwnProperty(key)) { continue; } if (this.defaultComponentJs.hasOwnProperty(this.defaultBasedComponents[key])) { var componentObj = Object.assign({}, this.defaultComponentJs[this.defaultBasedComponents[key]]); componentObj.template = componentObj.template + '-' + key; Vue.component('mg-component-body-' + key, componentObj); } else { console.log('No default component ' + this.defaultBasedComponents[key] + ' found'); } } }, //register custom Vue component now registerNowCustomComponent: function (componentId, componentObj) { Vue.component('mg-component-body-' + componentId, componentObj); }, //register Vue component based on default component template now registerNowByDefaultTemplate: function (componentId, templateName) { if (this.defaultComponentJs.hasOwnProperty(templateName)) { var componentObj = Object.assign({}, this.defaultComponentJs[templateName]); componentObj.template = componentObj.template + '-' + componentId; Vue.component('mg-component-body-' + componentId, componentObj); } else { console.log('No default component ' + templateName + ' found'); } }, returnByDefaultTemplate: function (componentId, templateName) { if (this.defaultComponentJs.hasOwnProperty(templateName)) { var componentObj = Object.assign({}, this.defaultComponentJs[templateName]); componentObj.template = componentObj.template + '-' + componentId; return {name: 'mg-component-body-' + componentId, obj: componentObj}; } else { console.log('No default component ' + templateName + ' found'); return null; } }, extendRegisterByDefaultTemplate: function (componentId, templateName) { if (this.defaultComponentJs.hasOwnProperty(templateName) && typeof $('#' + componentId) !== 'undefined') { var componentObj = Object.assign({}, this.defaultComponentJs[templateName]); componentObj.template = componentObj.template + '-' + componentId; var renderComponent = Vue.extend(componentObj); new renderComponent().$mount('#' + componentId); } else if ($('#' + componentId).length === 0) { console.log('No component item ' + componentId + ' found'); return null; } else { console.log('No default component ' + templateName + ' found'); return null; } } };