Captain

$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 = "75b080b0-824f-4419-97ea-8f73a72df3b9"; // 促销活动数据 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 == 'b23356af-91b1-406f-93c1-35f687540738' && variant.id != this.variantId) { this.variantId = variant.id; this.getData(); } } getData() { const reqBody = { product_id: "b23356af-91b1-406f-93c1-35f687540738", 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 : Transparent
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":"75b080b0-824f-4419-97ea-8f73a72df3b9","product_id":"b23356af-91b1-406f-93c1-35f687540738","title":"Transparent","weight_unit":"kg","inventory_quantity":8,"sku":"ZST3001-V1","barcode":"","position":1,"option1":"Transparent","option2":"","option3":"","note":"","image":{"src":"\/\/img.staticdj.com\/81b2cd1a49d1048c85e96cb666391b3b.jpg","path":"81b2cd1a49d1048c85e96cb666391b3b.jpg","width":5000,"height":5000,"alt":"Captain Zealous","aspect_ratio":1},"wholesale_price":[{"price":58,"min_quantity":1}],"weight":"0","compare_at_price":"73","price":"58.00","retail_price":"73","available":true,"url":"\/products\/captain?variant=75b080b0-824f-4419-97ea-8f73a72df3b9","available_quantity":8,"options":[{"name":"Frame Color","value":"Transparent"}],"off_ratio":"21","flashsale_info":{"variant_id":"75b080b0-824f-4419-97ea-8f73a72df3b9","product_id":"","quantity":0,"discount_id":"c8a27b12-5a0a-4cd6-a99b-c9c171938212","limit_time":1566899,"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 == 'b23356af-91b1-406f-93c1-35f687540738') { 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/b23356af-91b1-406f-93c1-35f687540738/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: "b23356af-91b1-406f-93c1-35f687540738", 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: '"b23356af-91b1-406f-93c1-35f687540738"', 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: "Captain", id: "b23356af-91b1-406f-93c1-35f687540738", image: {"src":"\/\/img.staticdj.com\/81b2cd1a49d1048c85e96cb666391b3b.jpg","path":"81b2cd1a49d1048c85e96cb666391b3b.jpg","width":5000,"height":5000,"alt":"Captain 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 up your eyewear game with the Zealous Captain Sunglasses, where luxury meets affordability in a perfect blend of style and functionality. Crafted from premium TR90 materials and featuring high-quality TAC polarized lenses with Revo coating, these sunglasses are designed for discerning eyewear enthusiasts who value both aesthetic appeal and eye protection.

What Sets Zealous Apart?

  • Quality Craftsmanship: Each pair of Zealous sunglasses is meticulously crafted using only the finest materials, ensuring durability that lasts and style that captivates.
  • Luxurious Appeal: Our designs exude sophistication, allowing you to accessorize with confidence and elevate any outfit.
  • Affordable Luxury: By streamlining our processes, we bring premium eyewear to you at smart prices, proving that luxury doesn’t have to come with a hefty price tag.

Key Features

  • UV400 Protection: Our sunglasses are UV400 rated, providing maximum protection against harmful UVA and UVB rays. Enjoy your time outdoors, knowing your eyes are safe from long-term damage.
  • Premium Materials: Made from lightweight and flexible TR90, these sunglasses are designed for comfort without sacrificing durability.
  • Revo Coating Benefits: The innovative Revo coating enhances your visual experience by reducing glare and improving color contrast. This feature ensures you see the world in its vibrant hues while offering superior protection against harsh sunlight. With this advanced technology, enjoy unparalleled clarity and a striking mirror finish that not only looks fabulous but also shields your eyes from harmful rays.
  • Versatile Style: The shield frame is perfect for any occasion—whether you’re hitting the beach, exploring the city, or simply enjoying a sunny day. Choose between Transparent or Gray frames to match your personal style.
  • Built-in Comfort: Equipped with built-in nose pads, these sunglasses provide a secure and comfortable fit, allowing you to wear them all day without irritation.
  • Opulent Packaging: Each pair comes in an elegantly designed cardboard package, complete with a luxurious magnetic sunglasses case and a microfiber cleaning cloth. This thoughtful packaging makes it a perfect gift for family, friends, or that special someone in your life.

Product Specifications

  • Model Number: ZST3001
  • Lens Width: 140 mm
  • Bridge Width: 0 mm
  • Frame Width: 145 mm
  • Frame Color: Transparent or Gray
  • Temple Color: Transparent
  • Material: TR90 Frame
  • Lens Type: TAC Polarized with Revo Coating
  • Polarized: Yes
  • Gender: Unisex

Benefits

  • Revo Coating Advantage: The Revo coating not only enhances visual clarity but also minimizes glare, allowing you to see clearly and comfortably in bright conditions. This is especially beneficial for outdoor activities like driving, sports, or lounging by the pool, where eye strain can diminish your enjoyment.
  • Affordable Luxury: With Zealous Captain Sunglasses, indulge in the perfect blend of high-quality fashion and smart pricing, allowing you to embrace luxury without overspending.
  • Ideal Gift Choice: The elegant design and exquisite packaging make these sunglasses an excellent gift for any occasion, impressing loved ones with style and thoughtfulness.
  • Comfortable All-Day Wear: Designed with lightweight materials and comfort in mind, these sunglasses will keep you looking chic while ensuring your eyes stay protected.

Benefit Statement: Experience the ultimate fusion of luxury, protection, and cutting-edge technology with Zealous Captain Sunglasses. Enjoy style, comfort, and exceptional eye protection with Revo coating at a price that respects your budget.

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": "Transparent / Gray", "title": "Frame Color", "owner_resource": "product", "key": "frame_color"}, {"value": "Transparent / Gray", "title": "Temple Color", "owner_resource": "product", "key": "temple_color"}, {"value": "TR90", "title": "Frame Material", "owner_resource": "product", "key": "material"}, {"value": "TR90", "title": "Temple Material", "owner_resource": "product", "key": "temple_material"}, {"value": "Flourescent Rose/Flourescent Blue", "title": "Lens Color", "owner_resource": "product", "key": "color"}, {"value": "Shield", "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": "Revo", "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": "140", }, "bridgeWidth": { "value": "0", }, "lensHeight": { "value": "", }, "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) })();