feat: Show brand line in search results
This commit is contained in:
parent
9ee13ba86b
commit
34f3a6629f
@ -323,7 +323,7 @@
|
|||||||
"label": "Show Categories in Search Autocomplete"
|
"label": "Show Categories in Search Autocomplete"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"default": "1",
|
"default": "0",
|
||||||
"description": "e.g. \"iPhone 12 by Apple\"",
|
"description": "e.g. \"iPhone 12 by Apple\"",
|
||||||
"fieldname": "show_brand_line",
|
"fieldname": "show_brand_line",
|
||||||
"fieldtype": "Check",
|
"fieldtype": "Check",
|
||||||
@ -333,7 +333,7 @@
|
|||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"issingle": 1,
|
"issingle": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2021-05-05 13:05:52.615719",
|
"modified": "2021-05-05 13:41:11.483232",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "E-commerce",
|
"module": "E-commerce",
|
||||||
"name": "E Commerce Settings",
|
"name": "E Commerce Settings",
|
||||||
|
@ -25,7 +25,9 @@ class ECommerceSettings(Document):
|
|||||||
self.validate_field_filters()
|
self.validate_field_filters()
|
||||||
self.validate_attribute_filters()
|
self.validate_attribute_filters()
|
||||||
self.validate_checkout()
|
self.validate_checkout()
|
||||||
|
self.validate_brand_check()
|
||||||
self.validate_search_index_fields()
|
self.validate_search_index_fields()
|
||||||
|
|
||||||
if self.enabled:
|
if self.enabled:
|
||||||
self.validate_exchange_rates_exist()
|
self.validate_exchange_rates_exist()
|
||||||
|
|
||||||
@ -76,6 +78,10 @@ class ECommerceSettings(Document):
|
|||||||
|
|
||||||
self.search_index_fields = ','.join(fields)
|
self.search_index_fields = ','.join(fields)
|
||||||
|
|
||||||
|
def validate_brand_check(self):
|
||||||
|
if self.show_brand_line and not ("brand" in self.search_index_fields):
|
||||||
|
self.search_index_fields += ",brand"
|
||||||
|
|
||||||
def validate_exchange_rates_exist(self):
|
def validate_exchange_rates_exist(self):
|
||||||
"""check if exchange rates exist for all Price List currencies (to company's currency)"""
|
"""check if exchange rates exist for all Price List currencies (to company's currency)"""
|
||||||
company_currency = frappe.get_cached_value('Company', self.company, "default_currency")
|
company_currency = frappe.get_cached_value('Company', self.company, "default_currency")
|
||||||
|
@ -99,8 +99,6 @@ def update_index_for_item(website_item_doc):
|
|||||||
# Reinsert to Cache
|
# Reinsert to Cache
|
||||||
insert_item_to_index(website_item_doc)
|
insert_item_to_index(website_item_doc)
|
||||||
define_autocomplete_dictionary()
|
define_autocomplete_dictionary()
|
||||||
# TODO: Only reindex updated items
|
|
||||||
create_website_items_index()
|
|
||||||
|
|
||||||
def delete_item_from_index(website_item_doc):
|
def delete_item_from_index(website_item_doc):
|
||||||
r = frappe.cache()
|
r = frappe.cache()
|
||||||
@ -111,9 +109,16 @@ def delete_item_from_index(website_item_doc):
|
|||||||
except:
|
except:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# TODO: Also delete autocomplete suggestion
|
delete_from_ac_dict(website_item_doc)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def delete_from_ac_dict(website_item_doc):
|
||||||
|
'''Removes this items's name from autocomplete dictionary'''
|
||||||
|
r = frappe.cache()
|
||||||
|
name_ac = AutoCompleter(make_key(WEBSITE_ITEM_NAME_AUTOCOMPLETE), conn=r)
|
||||||
|
name_ac.delete(website_item_doc.web_item_name)
|
||||||
|
|
||||||
def define_autocomplete_dictionary():
|
def define_autocomplete_dictionary():
|
||||||
"""Creates an autocomplete search dictionary for `name`.
|
"""Creates an autocomplete search dictionary for `name`.
|
||||||
Also creats autocomplete dictionary for `categories` if
|
Also creats autocomplete dictionary for `categories` if
|
||||||
@ -163,7 +168,6 @@ def reindex_all_web_items():
|
|||||||
for k, v in web_item.items():
|
for k, v in web_item.items():
|
||||||
super(RedisWrapper, r).hset(key, k, v)
|
super(RedisWrapper, r).hset(key, k, v)
|
||||||
|
|
||||||
|
|
||||||
def get_cache_key(name):
|
def get_cache_key(name):
|
||||||
name = frappe.scrub(name)
|
name = frappe.scrub(name)
|
||||||
return f"{WEBSITE_ITEM_KEY_PREFIX}{name}"
|
return f"{WEBSITE_ITEM_KEY_PREFIX}{name}"
|
||||||
|
@ -2,4 +2,8 @@
|
|||||||
height: 50px;
|
height: 50px;
|
||||||
width: 50px;
|
width: 50px;
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.brand-line {
|
||||||
|
color: gray;
|
||||||
}
|
}
|
@ -26,7 +26,6 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% set show_categories = frappe.db.get_single_value('E Commerce Settings', 'show_categories_in_search_autocomplete') %}
|
{% set show_categories = frappe.db.get_single_value('E Commerce Settings', 'show_categories_in_search_autocomplete') %}
|
||||||
|
|
||||||
{% if show_categories %}
|
{% if show_categories %}
|
||||||
<div id="categories" class="col-sm">
|
<div id="categories" class="col-sm">
|
||||||
<h2>Categories</h2>
|
<h2>Categories</h2>
|
||||||
@ -34,6 +33,11 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% set show_brand_line = frappe.db.get_single_value('E Commerce Settings', 'show_brand_line') %}
|
||||||
|
{% if show_brand_line %}
|
||||||
|
<span id="show-brand-line"></span>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -3,13 +3,14 @@ let loading = false;
|
|||||||
const searchBox = document.getElementById("search-box");
|
const searchBox = document.getElementById("search-box");
|
||||||
const results = document.getElementById("results");
|
const results = document.getElementById("results");
|
||||||
const categoryList = document.getElementById("category-suggestions");
|
const categoryList = document.getElementById("category-suggestions");
|
||||||
|
const showBrandLine = document.getElementById("show-brand-line");
|
||||||
|
|
||||||
function populateResults(data) {
|
function populateResults(data) {
|
||||||
html = ""
|
html = ""
|
||||||
for (let res of data.message) {
|
for (let res of data.message) {
|
||||||
html += `<li class="list-group-item list-group-item-action">
|
html += `<li class="list-group-item list-group-item-action">
|
||||||
<img class="item-thumb" src="${res.thumbnail || 'img/placeholder.png'}" />
|
<img class="item-thumb" src="${res.thumbnail || 'img/placeholder.png'}" />
|
||||||
<a href="/${res.route}">${res.web_item_name}</a>
|
<a href="/${res.route}">${res.web_item_name} <span class="brand-line">${showBrandLine && res.brand ? "by " + res.brand : ""}</span></a>
|
||||||
</li>`
|
</li>`
|
||||||
}
|
}
|
||||||
results.innerHTML = html;
|
results.innerHTML = html;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user