From 0be2859f5b224736c03c37299ca1f1cc9ab99902 Mon Sep 17 00:00:00 2001 From: Prateeksha Singh Date: Sat, 25 Aug 2018 15:54:43 +0530 Subject: [PATCH] [hub][vue] Category and Published Products pages --- erpnext/public/js/hub/marketplace.js | 46 ++++++- erpnext/public/js/hub/pages/Category.vue | 64 ++++++++++ .../public/js/hub/pages/PublishedProducts.vue | 60 ++++++++++ erpnext/public/js/hub/pages/SavedProducts.vue | 1 - erpnext/public/js/hub/pages/category.js | 26 ---- .../public/js/hub/pages/published_products.js | 23 ---- erpnext/public/js/hub/pages/register.js | 113 ------------------ 7 files changed, 165 insertions(+), 168 deletions(-) create mode 100644 erpnext/public/js/hub/pages/Category.vue create mode 100644 erpnext/public/js/hub/pages/PublishedProducts.vue delete mode 100644 erpnext/public/js/hub/pages/category.js delete mode 100644 erpnext/public/js/hub/pages/published_products.js delete mode 100644 erpnext/public/js/hub/pages/register.js diff --git a/erpnext/public/js/hub/marketplace.js b/erpnext/public/js/hub/marketplace.js index b0e66caabf..448ca42547 100644 --- a/erpnext/public/js/hub/marketplace.js +++ b/erpnext/public/js/hub/marketplace.js @@ -3,18 +3,17 @@ import Vue from 'vue/dist/vue.js'; // pages import './pages/home'; import './pages/search'; -import './pages/category'; import './pages/item'; import './pages/seller'; -import './pages/register'; import './pages/profile'; -import './pages/published_products'; import './pages/messages'; import './pages/buying_messages'; import './pages/not_found'; import SavedProducts from './pages/SavedProducts.vue'; import Publish from './pages/Publish.vue'; +import Category from './pages/Category.vue'; +import PublishedProducts from './pages/PublishedProducts.vue'; // components import { ProfileDialog } from './components/profile_dialog'; @@ -179,7 +178,7 @@ erpnext.hub.Marketplace = class Marketplace { } if (route[1] === 'category' && route[2] && !this.subpages.category) { - this.subpages.category = new erpnext.hub.Category(this.$body); + this.subpages.category = new erpnext.hub.CategoryPage(this.$body); } if (route[1] === 'item' && route[2] && !this.subpages.item) { @@ -212,7 +211,7 @@ erpnext.hub.Marketplace = class Marketplace { } if (route[1] === 'my-products' && !this.subpages['my-products']) { - this.subpages['my-products'] = new erpnext.hub.PublishedProducts(this.$body); + this.subpages['my-products'] = new erpnext.hub.PublishedProductsPage(this.$body); } if (route[1] === 'messages' && !this.subpages['messages']) { @@ -304,3 +303,40 @@ erpnext.hub.PublishPage = class { } } + +erpnext.hub.CategoryPage = class { + constructor(parent) { + this.$wrapper = $(`
`).appendTo($(parent)); + + new Vue({ + render: h => h(Category) + }).$mount('#vue-area-category'); + } + + show() { + $('[data-page-name="category"]').show(); + } + + hide() { + $('[data-page-name="category"]').hide(); + } +} + +erpnext.hub.PublishedProductsPage = class { + constructor(parent) { + this.$wrapper = $(`
`).appendTo($(parent)); + + new Vue({ + render: h => h(PublishedProducts) + }).$mount('#vue-area-published-products'); + } + + show() { + $('[data-page-name="published-products"]').show(); + } + + hide() { + $('[data-page-name="published-products"]').hide(); + } +} + diff --git a/erpnext/public/js/hub/pages/Category.vue b/erpnext/public/js/hub/pages/Category.vue new file mode 100644 index 0000000000..c346ca9392 --- /dev/null +++ b/erpnext/public/js/hub/pages/Category.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/erpnext/public/js/hub/pages/PublishedProducts.vue b/erpnext/public/js/hub/pages/PublishedProducts.vue new file mode 100644 index 0000000000..cbebc03f01 --- /dev/null +++ b/erpnext/public/js/hub/pages/PublishedProducts.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/erpnext/public/js/hub/pages/SavedProducts.vue b/erpnext/public/js/hub/pages/SavedProducts.vue index a80c7ecd10..a094a1cabe 100644 --- a/erpnext/public/js/hub/pages/SavedProducts.vue +++ b/erpnext/public/js/hub/pages/SavedProducts.vue @@ -26,7 +26,6 @@ export default { return { page_name: frappe.get_route()[1], items: [], - all_items: [], item_id_fieldname: 'hub_item_code', // Constants diff --git a/erpnext/public/js/hub/pages/category.js b/erpnext/public/js/hub/pages/category.js deleted file mode 100644 index c279c1aab1..0000000000 --- a/erpnext/public/js/hub/pages/category.js +++ /dev/null @@ -1,26 +0,0 @@ -import SubPage from './subpage'; -import { get_item_card_container_html } from '../components/items_container'; - -erpnext.hub.Category = class Category extends SubPage { - refresh() { - this.category = frappe.get_route()[2]; - this.get_items_for_category(this.category) - .then(items => { - this.render(items); - }); - } - - get_items_for_category(category) { - this.$wrapper.find('.hub-items-container').empty(); - return hub.call('get_items', { - filters: { - hub_category: category - } - }); - } - - render(items) { - const html = get_item_card_container_html(items, __(this.category)); - this.$wrapper.append(html) - } -} diff --git a/erpnext/public/js/hub/pages/published_products.js b/erpnext/public/js/hub/pages/published_products.js deleted file mode 100644 index 17c115e70f..0000000000 --- a/erpnext/public/js/hub/pages/published_products.js +++ /dev/null @@ -1,23 +0,0 @@ -import SubPage from './subpage'; -import { get_item_card_container_html } from '../components/items_container'; - -erpnext.hub.PublishedProducts = class PublishedProducts extends SubPage { - get_items_and_render() { - this.$wrapper.find('.hub-items-container').empty(); - this.get_published_products() - .then(items => this.render(items)); - } - - refresh() { - this.get_items_and_render(); - } - - render(items) { - const items_container = $(get_item_card_container_html(items, __('Your Published Products'))); - this.$wrapper.append(items_container); - } - - get_published_products() { - return hub.call('get_items', { hub_seller: hub.settings.company_email }); - } -} diff --git a/erpnext/public/js/hub/pages/register.js b/erpnext/public/js/hub/pages/register.js deleted file mode 100644 index 36b08425f9..0000000000 --- a/erpnext/public/js/hub/pages/register.js +++ /dev/null @@ -1,113 +0,0 @@ -import SubPage from './subpage'; - -erpnext.hub.Register = class Register extends SubPage { - make_wrapper() { - super.make_wrapper(); - this.$register_container = $(`
`) - .appendTo(this.$wrapper); - this.$form_container = $('
') - .appendTo(this.$wrapper); - } - - refresh() { - this.$register_container.empty(); - this.$form_container.empty(); - this.render(); - } - - render() { - this.make_field_group(); - } - - make_field_group() { - const fields = [ - { - fieldtype: 'Link', - fieldname: 'company', - label: __('Company'), - options: 'Company', - onchange: () => { - const value = this.field_group.get_value('company'); - - if (value) { - frappe.db.get_doc('Company', value) - .then(company => { - this.field_group.set_values({ - country: company.country, - company_email: company.email, - currency: company.default_currency - }); - }); - } - } - }, - { - fieldname: 'company_email', - label: __('Email'), - fieldtype: 'Data' - }, - { - fieldname: 'country', - label: __('Country'), - fieldtype: 'Read Only' - }, - { - fieldname: 'currency', - label: __('Currency'), - fieldtype: 'Read Only' - }, - { - fieldtype: 'Text', - label: __('About your Company'), - fieldname: 'company_description' - } - ]; - - this.field_group = new frappe.ui.FieldGroup({ - parent: this.$form_container, - fields - }); - - this.field_group.make(); - - const default_company = frappe.defaults.get_default('company'); - this.field_group.set_value('company', default_company); - - this.$form_container.find('.form-column').append(` -
- -
- `); - - this.$form_container.find('.form-message').removeClass('hidden small').addClass('h4').text(__('Become a Seller')) - - this.$form_container.on('click', '.btn-register', (e) => { - this.register_seller(); - }); - } - - register_seller() { - const form_values = this.field_group.get_values(); - - let values_filled = true; - const mandatory_fields = ['company', 'company_email', 'company_description']; - mandatory_fields.forEach(field => { - const value = form_values[field]; - if (!value) { - this.field_group.set_df_property(field, 'reqd', 1); - values_filled = false; - } - }); - if (!values_filled) return; - - frappe.call({ - method: 'erpnext.hub_node.doctype.hub_settings.hub_settings.register_seller', - args: form_values, - btn: $(e.currentTarget) - }).then(() => { - frappe.set_route('marketplace', 'publish'); - - erpnext.hub.trigger('seller-registered'); - }); - } -}