From ef4579e4ebd0cb37d2aaa6400d6a4d0376f3d08c Mon Sep 17 00:00:00 2001 From: marination Date: Wed, 14 Jul 2021 01:36:50 +0530 Subject: [PATCH] chore: Wishlist UI (minor) - Minor wishlist UI refresh, actions on hover, new icon - Increase max length of wishlist card title - Dont fetch outdated price in wishlist - Translate 'out of stock' - Use ORM --- erpnext/e_commerce/product_grid.js | 6 +++--- erpnext/e_commerce/product_list.js | 5 ++++- erpnext/public/scss/shopping_cart.scss | 26 ++++++++-------------- erpnext/templates/includes/macros.html | 30 +++++++++++++------------- erpnext/templates/pages/wishlist.py | 24 ++++++++++++--------- 5 files changed, 45 insertions(+), 46 deletions(-) diff --git a/erpnext/e_commerce/product_grid.js b/erpnext/e_commerce/product_grid.js index d29f62f937..b46e0d983a 100644 --- a/erpnext/e_commerce/product_grid.js +++ b/erpnext/e_commerce/product_grid.js @@ -61,7 +61,7 @@ erpnext.ProductGrid = class { get_card_body_html(item, title, settings) { let body_html = `
-
+
`; body_html += this.get_title(item, title); @@ -76,7 +76,7 @@ erpnext.ProductGrid = class { } - body_html += `
`; // close div on line 50 + body_html += `
`; body_html += `
${ item.item_group || '' }
`; if (item.formatted_price) { @@ -145,7 +145,7 @@ erpnext.ProductGrid = class { get_stock_availability(item, settings) { if (!item.has_variants && !item.in_stock && settings.show_stock_availability) { - return `Out of stock`; + return `${ __("Out of stock") }`; } return ``; } diff --git a/erpnext/e_commerce/product_list.js b/erpnext/e_commerce/product_list.js index 03cef604f2..822a9efe19 100644 --- a/erpnext/e_commerce/product_list.js +++ b/erpnext/e_commerce/product_list.js @@ -126,7 +126,10 @@ erpnext.ProductList = class { get_stock_availability(item, settings) { if (!item.has_variants && !item.in_stock && settings.show_stock_availability) { - return `
Out of stock`; + return ` +
+ ${ __("Out of stock") } + `; } return ``; } diff --git a/erpnext/public/scss/shopping_cart.scss b/erpnext/public/scss/shopping_cart.scss index 0130e70302..e25de9ac6d 100644 --- a/erpnext/public/scss/shopping_cart.scss +++ b/erpnext/public/scss/shopping_cart.scss @@ -203,6 +203,10 @@ body.product-page { .wishlist-card { padding: var(--padding-sm); min-width: 260px; + .card-body-flex { + display: flex; + flex-direction: column; + } } } @@ -984,30 +988,18 @@ body.product-page { float: right; } -.wishlist-cart-not-added { - color: var(--blue-500); - background-color: white; - border: 1px solid var(--blue-500); - --icon-stroke: var(--blue-500); - font-size: 14px; - - &:hover { - background-color: var(--blue-500); - color: white; - --icon-stroke: white; - } -} - .remove-wish { - background-color: var(--gray-200); + background-color: white; position: absolute; cursor: pointer; top:10px; right: 20px; + width: 32px; + height: 32px; + border-radius: 50%; border: 1px solid var(--gray-100); - width: 25px; - height: 25px; + box-shadow: 0px 2px 6px rgba(17, 43, 66, 0.08), 0px 1px 4px rgba(17, 43, 66, 0.1); } .wish-removed { diff --git a/erpnext/templates/includes/macros.html b/erpnext/templates/includes/macros.html index 2863e1572d..99b71541ba 100644 --- a/erpnext/templates/includes/macros.html +++ b/erpnext/templates/includes/macros.html @@ -145,9 +145,9 @@ {%- macro wishlist_card(item, settings) %} {%- set title = item.web_item_name or ''-%} -{%- set title = title[:50] + "..." if title|len > 50 else title -%} +{%- set title = title[:90] + "..." if title|len > 90 else title -%}
-
+
@@ -173,18 +171,19 @@ {%- endmacro -%} {%- macro wishlist_card_body(item, title, settings) %} -
-
+
+
{{ title or ''}}
+
{{ item.item_group or '' }}
- {{ item.formatted_price or '' }} + {{ item.get("formatted_price") or '' }} {% if item.get("formatted_mrp") %} - + {{ item.formatted_mrp }} - + {{ item.discount }} OFF {% endif %} @@ -192,7 +191,8 @@ {% if (item.available and settings.show_stock_availability) or (not settings.show_stock_availability) %} - {% else %} -
- {{ _("Not in Stock") }} +
+ {{ _("Out of stock") }}
{% endif %}
diff --git a/erpnext/templates/pages/wishlist.py b/erpnext/templates/pages/wishlist.py index 5992863b67..dfd60f58ec 100644 --- a/erpnext/templates/pages/wishlist.py +++ b/erpnext/templates/pages/wishlist.py @@ -21,6 +21,7 @@ def get_context(context): ) if price_details: + item.formatted_price = price_details.get('formatted_price') item.formatted_mrp = price_details.get('formatted_mrp') if item.formatted_mrp: item.discount = price_details.get('formatted_discount_percent') or \ @@ -42,13 +43,16 @@ def get_stock_availability(item_code, warehouse): return bool(stock_qty) def get_wishlist_items(): - if frappe.db.exists("Wishlist", frappe.session.user): - return frappe.db.sql(""" - Select - web_item_name, item_code, item_name, website_item, price, - warehouse, image, item_group, route, formatted_price - from - `tabWishlist Item` - where - parent=%(user)s""", {"user": frappe.session.user}, as_dict=1) - return \ No newline at end of file + if not frappe.db.exists("Wishlist", frappe.session.user): + return [] + + return frappe.db.get_all( + "Wishlist Item", + filters={ + "parent": frappe.session.user + }, + fields=[ + "web_item_name", "item_code", "item_name", + "website_item", "price", "warehouse", + "image", "item_group", "route" + ])