LEISURE SOCIETY TEMPEST

With the same material and overall construction used in the Tiburon, the Tempest offers square lenses for those who prefer something different from the traditional aviator tear-dropped lenses. This frame is crafted from multi-layered cotton-based acetate insets and an intricately detailed gold-plated pure titanium chassis that comes in 12k, 18k, or 24k gold. The block-titanium temples have hidden spring hinges for comfort and flexibility around the ears. This frame also has the special Meye Precious™ 24k gold-coated mirrored lenses for the 24k Gold/Navy color option.
CA$1,599.00
CA$1,653.00
Save CA$54.00
(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":"63cec38e-50c3-4138-9b1c-63924ebecdac","product_id":"bd6fe703-a57e-441b-8037-91c73a9221af","title":"","weight_unit":"kg","inventory_quantity":0,"sku":"-A0021504","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":1599,"min_quantity":1}],"weight":"0","compare_at_price":"1653","price":"1599","retail_price":"1653","available":false,"url":"\/products\/leisure-society-tempest?variant=63cec38e-50c3-4138-9b1c-63924ebecdac","available_quantity":0,"options":[],"off_ratio":3,"flashsale_info":[],"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 == 'bd6fe703-a57e-441b-8037-91c73a9221af') { 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/bd6fe703-a57e-441b-8037-91c73a9221af/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 = false; 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: "bd6fe703-a57e-441b-8037-91c73a9221af", 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: '"bd6fe703-a57e-441b-8037-91c73a9221af"', 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: "LEISURE SOCIETY TEMPEST", id: "bd6fe703-a57e-441b-8037-91c73a9221af", image: {"src":"\/\/img.staticdj.com\/ab11f6e0cd692737cf3e2b64eb12212c.webp","path":"ab11f6e0cd692737cf3e2b64eb12212c.webp","width":2048,"height":2731,"alt":"","aspect_ratio":0.7499084584401318}, 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) })()
Free worldwide shipping
Free returns
Sustainably made
Secure payments
people are viewing this right now
Description

MEASUREMENTS:

54-20-145:

  • 18k Rose Gold/Glacier
  • 18k Rose Gold/Black Tortoise
  • 24k Gold/Navy

DETAILS:

  • Material: Block Titanium, Acetate
  • Ion-plated in 12k silver, 18k gold/rose gold, or 24k gold
  • Titanium nose pads
  • Acetate insets for 18k Rose Gold/Glacier, 18k Rose Gold/Black Tortoise, and 24k Gold/Navy color options

    ABOUT THE LENSES:

    • Proprietary 12-layer anti-reflective UGR12™ coating, Diamond Cast™ anti-scratch coating, and water-repelling hydrophobic coating
    • Polarized CR-39 sun lens with 99.9% distortion-free, 100% UVA/UVB protection, and block eye-fatiguing blue light

    ABOUT THE FRAMES:

    All Leisure Society frames are crafted in small batches, individually numbered, and handmade in Japan from the world’s finest artisanal craftsmen with a lifetime warranty.

    Every frame purchase comes in a nesting gift box that includes a premium 20x20cm microfiber cleaning cloth, a genuine leather folding case with a magnetic closure that collapses down for easy storage, and a Leisure Society Key Club warranty booklet.

    Details
    window.__bright__ = { getMetaData_: () => { const metaData = [ {"value": "", "title": "Size", "owner_resource": "product", "key": "size"}, {"value": "18k Rose Gold/Black Tortoise With polorized brown lenses", "title": "Color", "owner_resource": "product", "key": "color"}, {"value": "", "title": "Weight", "owner_resource": "product", "key": "weight"}, {"value": "Block Titanium - Acetate, Ion-plated in 18k gold, Titanium nose pads", "title": "Material", "owner_resource": "product", "key": "material"}, {"value": "", "title": "Rim", "owner_resource": "product", "key": "rim"}, {"value": "M", "title": "Gender", "owner_resource": "product", "key": "gender"}, {"value": "Y", "title": "RXable", "owner_resource": "product", "key": "rxable"}, {"value": "SQUARE", "title": "Shape", "owner_resource": "product", "key": "shape"}, ]; return metaData; }, getBlockData_: () => { const blockSettingData = { "frameWidth": { "value": "", }, "lensWidth": { "value": "54", }, "bridgeWidth": { "value": "20", }, "lensHeight": { "value": "43", }, "templeLength": { "value": "145", } }; 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) })();