Wine

$58.00
$73.00
Save 21%
class SpzCustomDiscountFlashsale extends SPZ.BaseElement { constructor(element) { super(element); this.xhr_ = SPZServices.xhrFor(this.win); this.getFlashSaleApi = "\/api\/storefront\/promotion\/flashsale\/display_setting\/product_setting"; this.timer = null; this.variantId = "3405170f-8869-4b86-a426-2d34d798a813"; // 促销活动数据 this.flashsaleData = {} } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.templates_ = SPZServices.templatesForDoc(); this.viewport_ = this.getViewport(); // 挂载bind函数 解决this指向问题 this.render = this.render.bind(this); this.resize = this.resize.bind(this); this.switchVariant = this.switchVariant.bind(this); } mountCallback() { // 获取数据 this.getData(); this.element.onclick = (e) => { const cur = this.win.document.querySelector(".app_discount_flashsale_desc"); if (this.flashsaleData.product_setting.is_redirection && appDiscountUtils.inProductBody(this.element) && e.target !== cur) { this.win.open(`/promotions/discount-default/${this.flashsaleData.discount_info.id}`); } } // 绑定 this.viewport_.onResize(this.resize); // 监听子款式切换,重新渲染 this.win.document.addEventListener('dj.variantChange', this.switchVariant); } unmountCallback() { // 解绑 this.viewport_.removeResize(this.resize); this.win.document.removeEventListener('dj.variantChange', this.switchVariant); // 清除定时器 if (this.timer) { clearTimeout(this.timer); this.timer = null; } } resize() { if (this.timer) { clearTimeout(this.timer) this.timer = null; } this.timer = setTimeout(() => { this.render(); }, 200) } switchVariant(event) { const variant = event.detail.selected; if (variant.product_id == '436b2539-cd06-4f31-ae5c-1c302d0bd81c' && variant.id != this.variantId) { this.variantId = variant.id; this.getData(); } } getData() { const reqBody = { product_id: "436b2539-cd06-4f31-ae5c-1c302d0bd81c", product_type: "default", variant_id: this.variantId } this.flashsaleData = {}; this.win.fetch(this.getFlashSaleApi, { method: "POST", body: JSON.stringify(reqBody), headers: { "Content-Type": "application/json" } }).then(async (response) => { if (response.ok) { this.flashsaleData = await response.json(); this.render(); } else { this.clearDom(); } }).catch(err => { this.clearDom(); }); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } render() { this.templates_ .findAndRenderTemplate(this.element, { isMobile: appDiscountUtils.judgeMobile(), isRTL: appDiscountUtils.judgeRTL(), inProductDetail: appDiscountUtils.inProductBody(this.element), flashsaleData: this.flashsaleData, image_domain: this.win.SHOPLAZZA.image_domain, }) .then((el) => { this.clearDom(); this.element.appendChild(el); }) } } SPZ.defineElement('spz-custom-discount-flashsale', SpzCustomDiscountFlashsale);
Frame Color : Demi
Free Premium Packaging (Including Outer Box, Sunglasses Case And Microfiber Cloth)
(function(){ const TAG = 'spz-custom-lamb-add-btn'; class SpzCustomLambAddBtn extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.action_ = null; this.selected_variant = '{"id":"3405170f-8869-4b86-a426-2d34d798a813","product_id":"436b2539-cd06-4f31-ae5c-1c302d0bd81c","title":"Demi","weight_unit":"g","inventory_quantity":8,"sku":"ZSA3002-V1","barcode":"","position":1,"option1":"Demi","option2":"","option3":"","note":"","image":{"src":"\/\/img.staticdj.com\/a025699369a6c5bcb81c2342c78a9acb.jpg","path":"a025699369a6c5bcb81c2342c78a9acb.jpg","width":5000,"height":5000,"alt":"Wine Zealous","aspect_ratio":1},"wholesale_price":[{"price":58,"min_quantity":1}],"weight":"52.5","compare_at_price":"73","price":"58.00","retail_price":"73","available":true,"url":"\/products\/wine?variant=3405170f-8869-4b86-a426-2d34d798a813","available_quantity":8,"options":[{"name":"Frame Color","value":"Demi"}],"off_ratio":"21","flashsale_info":{"variant_id":"3405170f-8869-4b86-a426-2d34d798a813","product_id":"","quantity":0,"discount_id":"c8a27b12-5a0a-4cd6-a99b-c9c171938212","limit_time":1566933,"limit_buy":-1,"user_limit_buy":-1,"discount_sales":0,"discount_sales_rate":"0","discount_stock":8,"ends_at":1751860799,"starts_at":1750172822,"allow_oversold":"uncheck","allocation_method":"none","price":"58.00","compare_at_price":"73.00","discount_price":"58.00","customary_saved_price":"15.00","customary_off_ratio":"21","discount_saved_price":"15.00","discount_off_ratio":"21","use_before_price":false,"before_price":"0","title":"","properties":"","color_setting_promotional_copy":"Canada Day Sale","discount_quantity":0,"is_need_split":false},"sales":0}'; this.lens_process_id = ""; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.getLambLensSteps_(true); this.setupAction_(); } mountCallback() { document.addEventListener('dj.variantChange', (event) => { const variant = event.detail.selected; if (variant.product_id == '436b2539-cd06-4f31-ae5c-1c302d0bd81c') { this.selected_variant = JSON.stringify(variant); } }); } fetchLambLensSteps() { const lens_process_id = location.search.replace('?', '').split('&').find(v => v.includes('lens_process_id')); const template_id = location.search.replace('?', '').split('&').find(v => v.includes('template_id')); const stepsUrl = '/api/fireant/product/436b2539-cd06-4f31-ae5c-1c302d0bd81c/steps' + ((lens_process_id ? `?${lens_process_id}` : '') || (template_id ? `?${template_id}` : '')); return fetch(stepsUrl).then((res)=>{ return res.json(); }).then((data)=>{ return data; }) } showProductBtn() { var addToCart = document.getElementById('add_to_cart_normal'); var productQuantityBtn = document.getElementById('product_info_quantity_normal'); addToCart && addToCart.classList.remove('hidden'); productQuantityBtn && productQuantityBtn.classList.remove('hidden'); } getLambLensSteps_(isInit) { try{ this.fetchLambLensSteps().then((data)=>{ if(data.errors) { if(isInit){ this.renderBtn(false); this.showProductBtn(); } }else{ if(isInit){ this.lens_process_id = data?.lens_process_id; let frameOnlyArr = data?.prescription_types?.options.filter((option)=>{ return option.prescription_type === 'Frame Only' }); let frameOnlyObj = frameOnlyArr.length > 0 ? frameOnlyArr[0] : {}; let available = true; if(available && (frameOnlyObj?.frame_only_display_at == 'product_detail' || frameOnlyObj?.frame_only_display_at == 'all')){ this.renderBtn({ ...frameOnlyObj, process_type: data.process_type }); }else{ this.renderBtn({ process_type: data.process_type }); } } } }); }catch(e){ this.renderBtn(false); this.showProductBtn(); } } renderBtn = (isRenderProcessBtn) => { return this.templates_ .findAndRenderTemplate(this.element, isRenderProcessBtn) .then((el) => { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); this.element.appendChild(el); }); } handleClickFrameOnlyBtn_ = async () => { try { const reqBody = { product_id: "436b2539-cd06-4f31-ae5c-1c302d0bd81c", variant_id: JSON.parse(this.selected_variant)?.id, quantity: 1, properties: { lens_processing_id: this.lens_process_id, prescription_type: "Frame Only" } } const data = await this.xhr_.fetchJson('/api/fireant/v2/customize_cart', { method: "post", body: reqBody }); if(data.state === 'success') { this.atc_loading_ = false; this.element.removeAttribute('atc-loading'); this.triggerEvent_("dj.addToCart", data); window.location.href = "/cart"; } else { this.atc_loading_ = false; this.element.removeAttribute('atc-loading'); } } catch (e) { this.atc_loading_ = false; this.element.removeAttribute('atc-loading'); const toast = SPZCore.Dom.scopedQuerySelector(document, `#error-toast`); toast && SPZ.whenApiDefined(toast).then((api) => { e.then((result)=>{ api.showToast(result?.errors[0] || 'Unknown error'); }) }); } } trackAddToCart = () => { const params = { business_type: "product_plugin", function_name: "prescription_lens", plugin_name: "prescription_lens", module: "apps", tab_name: "process_btn", event_type: "click", event_developer: "jozy", event_info: JSON.stringify({ action_type: "frame_only_add_to_cart", product_id: '"436b2539-cd06-4f31-ae5c-1c302d0bd81c"', process_id: this.lens_process_id, process_type: "glasses", element_type: "button", element_name: "frame_only_btn" }) } window.spzutm && window.spzutm.registerParams('add_to_cart', params ); } setupAction_ = () => { this.registerAction('handleClickBtn', (invocation) => { this.saveAllFormProperties_(); const glassesInfo = { product:{ title: "Wine", id: "436b2539-cd06-4f31-ae5c-1c302d0bd81c", image: {"src":"\/\/img.staticdj.com\/a025699369a6c5bcb81c2342c78a9acb.jpg","path":"a025699369a6c5bcb81c2342c78a9acb.jpg","width":5000,"height":5000,"alt":"Wine Zealous","aspect_ratio":1}, selected_variant: JSON.parse(this.selected_variant) }, atcType: 'add_lens' }; const tempElement = document.getElementById('process-request-script'); tempElement && SPZ.whenApiDefined(tempElement).then(async (api) => { await api.requestLensProcess(glassesInfo, invocation.args.process_type); }); setTimeout(() => { const proceeBtn = document.getElementById('lens_add_to_cart'); proceeBtn && proceeBtn.classList.remove('pointer-events-none'); }, 3000); }); this.registerAction('handleClickFrameOnlyBtn', (invocation) => { this.trackAddToCart(); this.atc_loading_ = true; this.element.setAttribute('atc-loading',""); this.handleClickFrameOnlyBtn_(); }); } saveAllFormProperties_(){ const formEntries = this.getFormData_(); const properties = this.getFormAllProperties_(formEntries); // 获取的form所有properties存全局 window.app_lamb_form_properties = properties; } getFormData_() { const form = this.element.closest("form"); const formData = new FormData(form); const formEntries = Object.fromEntries(formData.entries()); return formEntries; } getFormAllProperties_(obj){ const result = {}; Object.entries(obj).forEach(([key, value]) => { if (key.startsWith("properties")) { result[key.substring(11, key.length - 1)] = value; } }); return result; } triggerEvent_(name, params) { const event = SPZUtils.Event.create( this.win, name, params, {bubbles: true} ); this.element.dispatchEvent(event); } isLayoutSupported = (layout) => { return layout == SPZCore.Layout.CONTAINER; } } SPZ.defineElement(TAG, SpzCustomLambAddBtn) })()
Description

Product Description:

Step into the world of luxury with the Zealous "Wine" sunglasses, a sophisticated accessory designed for those who refuse to compromise on style or quality. Crafted for the modern fashion enthusiast, these sunglasses seamlessly blend contemporary aesthetics with exceptional craftsmanship. Whether you're strolling along sun-drenched beaches, enjoying outdoor brunches, or attending chic gatherings, the Zealous "Wine" sunglasses will elevate your look and provide optimal eye protection.

Key Features:

  • UV400 Protection: Shield your eyes from harmful UV rays with our advanced TAC polarized lenses that effectively block 100% of UVA and UVB radiation. Enjoy your outdoor activities without worry, knowing your eyes are safe from long-term damage caused by the sun.
  • Premium Acetate Construction: Our sunglasses are meticulously crafted from high-grade acetate, which not only provides a luxurious look and feel but also ensures durability and lightweight comfort. Experience the freedom of all-day wear without compromising on style or comfort.
  • Trendy Square Design: The fashionable square shape paired with a rich "Wine" hue makes these sunglasses a versatile addition to any wardrobe. Their modern silhouette is perfect for all occasions, from casual outings to elegant events, ensuring you always make a stylish statement.
  • Comfort Fit: Designed with your comfort in mind, the built-in nose pads provide a secure and adjustable fit, allowing you to wear these sunglasses for hours without discomfort. Say goodbye to pinching and sliding—these shades are made for ultimate wearability.
  • Superlative Packaging: Each pair of Zealous "Wine" sunglasses is elegantly presented in a high-quality magnetic sunglasses case, accompanied by a microfiber cleaning cloth. This exquisite packaging not only protects your investment but also makes for a perfect gift for friends, family, or even yourself—a little luxury you deserve!

Product Specifications:

  • Model Number: ZSA3002
  • Lens Width: 46 mm
  • Bridge Width: 21 mm
  • Frame Width: 145 mm
  • Weight: 52.5 g

Perfect For:

These sunglasses are your ideal companion for various activities—whether you're driving under the sun, lounging by the poolside, exploring new cities, or enjoying a stylish brunch with friends. The Zealous "Wine" sunglasses not only protect your eyes but also enhance your overall look, making them an essential accessory in your collection.

Join the Zealous Revolution:

Indulge in the luxurious experience of Zealous eyewear, where high quality meets smart pricing. Discover your perfect pair today and redefine your accessory game—because style should never be out of reach!

Details
window.__bright__ = { getMetaData_: () => { const metaData = [ {"value": "", "title": "Size", "owner_resource": "product", "key": "size"}, {"value": "", "title": "Weight", "owner_resource": "product", "key": "weight"}, {"value": "", "title": "Rim", "owner_resource": "product", "key": "rim"}, {"value": "", "title": "RXable", "owner_resource": "product", "key": "rxable"}, {"value": "Demi / Light Demi", "title": "Frame Color", "owner_resource": "product", "key": "frame_color"}, {"value": "Demi / Light Demi", "title": "Temple Color", "owner_resource": "product", "key": "temple_color"}, {"value": "Acetate", "title": "Frame Material", "owner_resource": "product", "key": "material"}, {"value": "Acetate", "title": "Temple Material", "owner_resource": "product", "key": "temple_material"}, {"value": "Black/Grey", "title": "Lens Color", "owner_resource": "product", "key": "color"}, {"value": "Square", "title": "Shape", "owner_resource": "product", "key": "shape"}, {"value": "TAC Polarized", "title": "Lens Type", "owner_resource": "product", "key": "_LensType"}, {"value": "Built In", "title": "Nose Pad", "owner_resource": "product", "key": "nose_pad"}, {"value": "Anti scratch", "title": "Coating", "owner_resource": "product", "key": "Coating"}, {"value": "Yes", "title": "Polarized", "owner_resource": "product", "key": "Polarized"}, ]; return metaData; }, getBlockData_: () => { const blockSettingData = { "frameWidth": { "value": "145", }, "lensWidth": { "value": "46", }, "bridgeWidth": { "value": "21", }, "lensHeight": { "value": "39", }, "templeLength": { "value": "", } }; return blockSettingData; } }; (function(){ const TAG = 'spz-custom-structured-logic'; class SpzCustomStructuredLogic extends SPZ.BaseElement { constructor(element) { super(element); this.xhr_ = SPZServices.xhrFor(this.win); } buildCallback = () => { this.setupAction_(); this.unit = 'mm'; this.variantChange_(); this.selectedData = this.getProductData_(); this.init_(); } static deferredMount() { return false; } isLayoutSupported = (layout) => { return layout == SPZCore.Layout.CONTAINER; } setupAction_ = () => { this.registerAction('changeUnit', (invocation) => { const changeUnit = invocation.args.data; this.unit = changeUnit; this.init_(); }); } init_ = () => { this.meteData_ = window.__bright__.getMetaData_(); this.blockData_ = window.__bright__.getBlockData_(); this.renderParameter_(); this.renderStructuredImg_(); this.renderTempleLength_(); this.renderBtn_(); } getProductData_ = () => { let pJson = document.getElementById('product-json'); if (pJson) { return JSON.parse(pJson.innerHTML); } if (typeof $ === 'function') { return $(document).data('djproduct'); } return undefined; } renderParameter_ = () => { const structuredParameterContainerRender = document.getElementById('structured-parameter-container-render'); SPZ.whenApiDefined(structuredParameterContainerRender).then(async (api) => { const parameter = []; this.meteData_.forEach(meta => { if (meta.owner_resource === 'product') { parameter.push({ title: meta.title, value: meta.value }); } else { parameter.push({ title: meta.title, value: meta.value[this.selectedData.selected.id] }); } }); api.render(parameter); }); } renderStructuredImg_ = () => { const glassesImgRender = document.getElementById('glasses-img-render'); SPZ.whenApiDefined(glassesImgRender).then(async (api) => { const parameter = {}; parameter.unit = this.unit; Object.keys(this.blockData_).forEach(key => { if (typeof this.blockData_[key].value === 'string') { parameter[key] = this.blockData_[key].value; } else { parameter[key] = this.blockData_[key].value[this.selectedData.selected.id]; } }); api.render(parameter); }); } renderTempleLength_ = () => { const lensImgRender = document.getElementById('lens-img-render'); SPZ.whenApiDefined(lensImgRender).then(async (api) => { let parameter = {}; parameter.unit = this.unit; if (this.blockData_.templeLength.value) { if (typeof this.blockData_.templeLength.value === 'string') { parameter.value = this.blockData_.templeLength.value; } else { parameter.value = this.blockData_.templeLength.value[this.selectedData.selected.id]; } } api.render(parameter); }); } renderBtn_ = () => { const conversionBtnRender = document.getElementById('conversion-btn-render'); conversionBtnRender && SPZ.whenApiDefined(conversionBtnRender).then(async (api) => { const parameter = {}; Object.keys(this.blockData_).forEach(key => { if (typeof this.blockData_[key].value === 'string') { parameter[key] = this.blockData_[key].value; } else { parameter[key] = this.blockData_[key].value[this.selectedData.selected.id]; } }); parameter.unit = this.unit; api.render(parameter); }) } variantChange_ = () => { document.addEventListener('dj.variantChange', (e) => { this.init_(); this.selectedData = e.detail; }); document.addEventListener('dj.editor.update', (e) => { this.init_(); }); } } SPZ.defineElement(TAG, SpzCustomStructuredLogic) })();