import Vue from 'vue/dist/vue.js'; import './vue-plugins'; // components import PageContainer from './PageContainer.vue'; import Sidebar from './Sidebar.vue'; import { ProfileDialog } from './components/profile_dialog'; // helpers import './hub_call'; import EventEmitter from './event_emitter'; frappe.provide('hub'); frappe.provide('erpnext.hub'); $.extend(erpnext.hub, EventEmitter.prototype); erpnext.hub.Marketplace = class Marketplace { constructor({ parent }) { this.$parent = $(parent); this.page = parent.page; frappe.db.get_doc('Hub Settings') .then(doc => { hub.settings = doc; const is_registered = hub.settings.registered this.setup_header(); this.make_sidebar(); this.make_body(); this.setup_events(); this.refresh(); if (!is_registered && frappe.user_roles.includes('System Manager')) { this.page.set_primary_action('Become a Seller', this.show_register_dialog.bind(this)) } }); } setup_header() { this.page.set_title(__('Marketplace')); } setup_events() { this.$parent.on('click', '[data-route]', (e) => { const $target = $(e.currentTarget); const route = $target.data().route; frappe.set_route(route); }); // generic action handler this.$parent.on('click', '[data-action]', e => { const $target = $(e.currentTarget); const action = $target.data().action; if (action && this[action]) { this[action].apply(this, $target); } }) } make_sidebar() { this.$sidebar = this.$parent.find('.layout-side-section').addClass('hidden-xs'); new Vue({ el: $('