diff --git a/frappe/public/js/frappe/views/pageview.js b/frappe/public/js/frappe/views/pageview.js index 5c6b4c5348..9567e445f0 100644 --- a/frappe/public/js/frappe/views/pageview.js +++ b/frappe/public/js/frappe/views/pageview.js @@ -41,6 +41,23 @@ frappe.views.pageview = { show: function(name) { if(!name) { name = (frappe.boot ? frappe.boot.home_page : window.page_name); + + if(name === "desktop") { + let page = frappe.container.add_page('desktop'); + console.log('frappe.container.page',JSON.parse(JSON.stringify(page)), JSON.parse(JSON.stringify(frappe.container.page))); + + let container = $('
').appendTo(page); + + frappe.container.change_to('desktop'); + frappe.require('/assets/js/frappe-vue.min.js', () => { + Vue.prototype.__ = window.__; + new Vue({ + el: container[0], + render: h => h(Modules) + }); + }); + return; + } } frappe.model.with_doctype("Page", function() { frappe.views.pageview.with_page(name, function(r) { @@ -83,23 +100,13 @@ frappe.views.Page = Class.extend({ frappe.dom.set_style(this.pagedoc.style || ''); } - if(this.name === "desktop") { - frappe.require('/assets/js/frappe-vue.min.js', () => { - Vue.prototype.__ = window.__; - new Vue({ - el: this.wrapper, - render: h => h(Modules) - }); - }); - } else { - this.trigger_page_event('on_page_load'); - // set events - $(this.wrapper).on('show', function() { - window.cur_frm = null; - me.trigger_page_event('on_page_show'); - me.trigger_page_event('refresh'); - }); - } + this.trigger_page_event('on_page_load'); + // set events + $(this.wrapper).on('show', function() { + window.cur_frm = null; + me.trigger_page_event('on_page_show'); + me.trigger_page_event('refresh'); + }); }, trigger_page_event: function(eventname) { var me = this; @@ -155,3 +162,41 @@ frappe.show_message_page = function(opts) { frappe.container.change_to(opts.page_name); }; + +frappe.views.ModulesFactory = class ModulesFactory extends frappe.views.Factory { + show() { + if (frappe.pages.modules) { + frappe.container.change_to('modules'); + } else { + this.make('modules'); + } + } + + make(page_name) { + /// + } +}; + +// frappe.provide('frappe.modules'); + +// frappe.modules.Home = class { +// constructor({ parent }) { +// this.$parent = $(parent); +// this.page = parent.page; +// this.setup_header(); +// this.make_body(); +// } +// make_body() { +// this.$modules_container = this.$parent.find('.layout-main'); +// frappe.require('/assets/js/frappe-vue.min.js', () => { +// Vue.prototype.__ = window.__; +// new Vue({ +// el: this.$modules_container[0], +// render: h => h(Modules) +// }); +// }); +// } +// setup_header() { +// this.page.set_title(__('Modules')); +// } +// };