[hub] items searchable via core filters

This commit is contained in:
Prateeksha Singh 2018-01-26 15:39:13 +05:30
parent b8e9c9be08
commit 3eaccffbd9
3 changed files with 45 additions and 32 deletions

View File

@ -15,25 +15,15 @@ def enable_hub():
return hub_settings return hub_settings
@frappe.whitelist() @frappe.whitelist()
def get_items(start=0, limit=20, fields=["*"], category=None, order_by=None, company=None, text=None): def get_items(doctype, start=0, limit=20, fields=["*"], filters="{}", order_by=None):
connection = get_client_connection() connection = get_client_connection()
filters = json.loads(filters)
filters = {} response = connection.get_list(doctype,
if category:
filters.update({ 'hub_category': category })
if text:
filters.update({'item_name': ('like', '%' + text + '%')})
if company:
filters.update({'company_name': company})
response = connection.get_list('Hub Item',
limit_start=start, limit_page_length=limit, limit_start=start, limit_page_length=limit,
filters=filters, fields=fields) filters=filters, fields=fields)
return response return response
#
@frappe.whitelist() @frappe.whitelist()
def get_hub_item_meta(): def get_hub_item_meta():
connection = get_client_connection() connection = get_client_connection()

View File

@ -21,7 +21,15 @@ frappe.views.HubFactory = frappe.views.Factory.extend({
console.log("pages?"); console.log("pages?");
if (page === 'Item' && !route[2]) { if (page === 'Item' && !route[2]) {
frappe.require(assets['List'], () => { frappe.require(assets['List'], () => {
erpnext.hub.pages[page_name] = new erpnext.hub.HubPage({ erpnext.hub.pages[page_name] = new erpnext.hub.ItemListing({
doctype: 'Hub Settings',
parent: this.make_page(true, page_name)
});
window.hub_page = erpnext.hub.pages[page_name];
});
} if (page === 'Company' && !route[2]) {
frappe.require(assets['List'], () => {
erpnext.hub.pages[page_name] = new erpnext.hub.CompanyListing({
doctype: 'Hub Settings', doctype: 'Hub Settings',
parent: this.make_page(true, page_name) parent: this.make_page(true, page_name)
}); });

View File

@ -1,6 +1,6 @@
frappe.provide('erpnext.hub'); frappe.provide('erpnext.hub');
erpnext.hub.HubPage = class HubPage extends frappe.views.BaseList { erpnext.hub.ItemListing = class ItemListing extends frappe.views.BaseList {
setup_defaults() { setup_defaults() {
super.setup_defaults(); super.setup_defaults();
this.page_title = __('Hub'); this.page_title = __('Hub');
@ -23,16 +23,12 @@ erpnext.hub.HubPage = class HubPage extends frappe.views.BaseList {
} }
setup_fields() { setup_fields() {
this.fields = ['name', 'hub_item_code', 'image', 'item_name', 'item_code']; this.fields = ['name', 'hub_item_code', 'image', 'item_name', 'item_code', 'company_name'];
} }
set_breadcrumbs() { set_breadcrumbs() { }
} setup_side_bar() { }
setup_side_bar() {
}
setup_filter_area() { setup_filter_area() {
this.custom_filter_configs = [ this.custom_filter_configs = [
@ -53,29 +49,41 @@ erpnext.hub.HubPage = class HubPage extends frappe.views.BaseList {
this.filter_area = new FilterArea(this); this.filter_area = new FilterArea(this);
} }
setup_sort_selector() { setup_sort_selector() { }
setup_view() { }
get_filters_for_args() {
let filters = {};
this.filter_area.get().forEach(f => {
let field = f[1] !== 'name' ? f[1] : 'item_name';
filters[field] = [f[2], f[3]];
});
if(this.current_category) {
filters['hub_category'] = this.current_category;
} }
return filters;
setup_view() {
} }
get_args() { get_args() {
console.log('filters', this.get_filters_for_args());
return { return {
doctype: 'Hub Item'
start: this.start, start: this.start,
limit: this.page_length, limit: this.page_length,
category: this.category || '',
order_by: this.order_by, order_by: this.order_by,
company: this.company || '', fields: this.fields,
text: this.search_text || '', filters: this.get_filters_for_args()
fields: this.fields
// category: this.category || '',
// company: this.company || '',
// text: this.search_text || '',
}; };
} }
update_data(r) { update_data(r) {
const data = r.message; const data = r.message;
console.log('update data', data); // console.log('update data', data);
if (this.start === 0) { if (this.start === 0) {
this.data = data; this.data = data;
@ -103,7 +111,7 @@ erpnext.hub.HubPage = class HubPage extends frappe.views.BaseList {
render_image_view() { render_image_view() {
let data = this.data; let data = this.data;
console.log('this.data render', this.data); // console.log('this.data render', this.data);
if (this.start === 0) { if (this.start === 0) {
this.$result.html('<div class="image-view-container small padding-top">'); this.$result.html('<div class="image-view-container small padding-top">');
data = this.data.slice(this.start); data = this.data.slice(this.start);
@ -117,6 +125,8 @@ erpnext.hub.HubPage = class HubPage extends frappe.views.BaseList {
item._name = encodeURI(item.name); item._name = encodeURI(item.name);
const encoded_name = item._name; const encoded_name = item._name;
const title = strip_html(item['item_name' || 'item_code']); const title = strip_html(item['item_name' || 'item_code']);
console.log(item);
const company_name = item['company_name'];
const route = `#Hub/Item/${item.hub_item_code}`; const route = `#Hub/Item/${item.hub_item_code}`;
@ -137,9 +147,14 @@ erpnext.hub.HubPage = class HubPage extends frappe.views.BaseList {
<h5 class="bold"> <h5 class="bold">
${ title } ${ title }
</h5> </h5>
<p>${ company_name }</p>
</div> </div>
</a> </a>
</div> </div>
`; `;
} }
}; };
erpnext.hub.CompanyListing = class CompanyListing extends frappe.views.BaseList {
};