Alcon TOTAL30® 6PK

Monthly Replacement
CA$75.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":"48810d1b-94ea-4b73-b5fb-f1cf141ec318","product_id":"98069dfc-3aec-4b00-b851-88ba8075ec2e","title":"","weight_unit":"kg","inventory_quantity":0,"sku":"","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":75,"min_quantity":1}],"weight":"0","compare_at_price":"75","price":"75","retail_price":"75","available":true,"url":"\/products\/alcon-total30\u00ae-6pk?variant=48810d1b-94ea-4b73-b5fb-f1cf141ec318","available_quantity":999999999,"options":[],"off_ratio":0,"flashsale_info":[],"sales":4}'; 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 == '98069dfc-3aec-4b00-b851-88ba8075ec2e') { 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/98069dfc-3aec-4b00-b851-88ba8075ec2e/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: "98069dfc-3aec-4b00-b851-88ba8075ec2e", 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: '"98069dfc-3aec-4b00-b851-88ba8075ec2e"', 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: "Alcon TOTAL30\u00ae 6PK", id: "98069dfc-3aec-4b00-b851-88ba8075ec2e", image: {"src":"\/\/img.staticdj.com\/2f9f92498f1db1c1c7c9d2418cf54515.jpg","path":"2f9f92498f1db1c1c7c9d2418cf54515.jpg","width":1800,"height":1350,"alt":"Alcon TOTAL30\u00ae 6PK | Uni Vision","aspect_ratio":1.3333333333333333}, 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) })()
people are viewing this right now
Best quality
Fast delivery
Sustainably made
Secure payments
Description


Introducing the Alcon TOTAL30® 6PK, a top-of-the-line product specifically engineered to deliver exceptional performance and lasting results. This innovative solution boasts a cutting-edge feature: permanent water surface technology. With this advanced technology, you can say goodbye to the hassle of constantly dealing with water accumulation on surfaces. Designed with utmost precision and expertise, the Alcon TOTAL30® 6PK provides a seamless and permanent solution to combat water-related issues. Whether you're looking to enhance the functionality of your outdoor furniture, improve the longevity of your building's exteriors, or simply want to enjoy a pristine and water-free surface, this product is your ultimate go-to. Trust in our expertise and let the Alcon TOTAL30® 6PK revolutionize your space with its unparalleled performance and long-lasting results.