December 08, 2022
#html-body [data-pb-style=OUL71AY]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}
An Introduction To Snooker Spectacles
Many people, even snooker players, are unaware of specialty
snooker spectacles
and how useful they can be. Playing snooker with regular everyday glasses is a struggle because it's such a vision-sensitive game.
Those who have been fans of snooker for some time will remember Dennis Taylor. Taylor was famous not only for his success in the sport but also for his unusual and slightly comedic glasses. However, those oversized, upside-down glasses, weren’t worn as a joke. Taylor wore them so his impaired eyesight didn't put him at a disadvantage. His snooker glasses gave him a greater view field and clearer vision, helping him become the World Snooker champion in 1985.
.product-items .glide__slide {
max-width: calc((100% - 30px)/4);
margin-left: 5px;
margin-right: 5px;
}
@media (max-width: 1280px) {
.product-items .glide__slide {
max-width: calc(100% /3);
}
}
@media (max-width: 1024px) {
.product-items .glide__slide {
max-width: calc(100%/2);
}
}
@media (max-width: 740px) {
.product-items .glide__slide {
max-width: calc(10/11*100%);
}
}
Eligible for Speedy Shipping:
This product qualifies for our Speedy Shipping service! Your order will be sent via Royal Mail Tracked 48hr, ensuring quick and reliable delivery straight to your door.
GG1326S
function initPriceBox__6a4dc4f8132a4()
{
return {
additionalPriceElement : document.querySelector('#regular-price_' + 128285),
regularPrice : 276,
updatePrice(priceData) {
const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price');
const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price');
if (regularPriceLabel) {
if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
regularPriceLabel.classList.add('hidden');
} else {
regularPriceLabel.classList.remove('hidden');
}
}
regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
basePriceElement && (basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount));
if (this.additionalPriceElement) {
if (priceData.finalPrice.amount === this.regularPrice) {
this.additionalPriceElement.classList.add('hidden');
} else if (priceData.finalPrice.amount < this.regularPrice) {
this.additionalPriceElement.classList.remove('hidden');
}
}
}
}
}
58
function initConfigurableSwatchOptions_128285() {
const configurableOptionsComponent = initConfigurableOptions(
'128285',
{"attributes":{"93":{"id":"93","code":"color","label":"Colour","options":[{"id":"10","label":"Black","products":["128216"]}],"position":"0"},"156":{"id":"156","code":"a01_size_option","label":"Size Option","options":[{"id":"4928","label":"58-19-140","products":[]}],"position":"1"}},"template":"$","currencyFormat":"$%s","optionPrices":{"128216":{"baseOldPrice":{"amount":230},"oldPrice":{"amount":276},"basePrice":{"amount":230},"finalPrice":{"amount":276},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"$%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":230},"oldPrice":{"amount":276},"basePrice":{"amount":230},"finalPrice":{"amount":276}},"productId":"128285","chooseText":"Choose an Option...","images":[],"index":{"128216":{"93":"10","156":null}},"salable":[],"canDisplayShowOutOfStockStatus":false,"preSelectedGallery":[],"supplier_colour_data":{"colour_attribute_id":93,"mapping":{"128216":"001"}},"additional_product_data":{"configurable":{"id":"128285","sku":"GG1326S","custom_options":null},"simples":{"128216":{"sku":"GG1326S-001-58-19-140"}}}} );
const swatchOptionsComponent = initSwatchOptions({"93":{"10":{"type":"2","value":"https:\/\/jpopticians.com\/media\/attribute\/swatch\/swatch_image\/40x24\/b\/l\/black_20.png","thumb":"https:\/\/jpopticians.com\/media\/attribute\/swatch\/swatch_thumb\/110x90\/b\/l\/black_20.png","label":"Black"},"additional_data":"{\"swatch_input_type\":\"visual\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":\"0\"}"}});
return Object.assign(
configurableOptionsComponent,
swatchOptionsComponent,
{
mediaCallback: "https\u003A\u002F\u002Fjpopticians.com\u002Fjp_us\u002Fswatches\u002Fajax\u002Fmedia\u002F",
changeOption(optionId, value, skipUpdateGallery) {
if (value === '') {
this.selectedValues = this.removeAttrFromSelection(this.selectedValues, optionId)
} else {
this.selectedValues[optionId] = value;
}
this.findSimpleIndex();
this.findAllowedAttributeOptions();
this.updatePrices();
!skipUpdateGallery && this.updateGallery();
let candidates = this.findProductIdsForPartialSelection(this.selectedValues);
window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
detail: {
productId: this.productId,
optionId,
value,
productIndex: this.productIndex,
selectedValues: this.selectedValues,
candidates: candidates,
skuCandidates: this.optionConfig.sku ? Object.values(candidates).map(id => this.optionConfig.sku[id]) : [],
}
}));
},
updateGallery() {
if (!this.productIndex) {
return;
}
fetch(`${this.mediaCallback}?product_id=${this.productIndex}&parent_id=${this.productId}&isAjax=true`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
}
).then(response => {
return response.json()
}
).then(data => {
if (data.errors) {
// non critical failure only console logged
console.warn(data.errors);
} else {
const image = data && data.medium;
image && window.dispatchEvent(
new CustomEvent(
"update-gallery-128285",
{detail: image}
)
);
}
}).catch(error => {
console.warn(error)
});
},
preselectQuerystringItems() {
// pre-select option like ?size=167
const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
Object.values(this.optionConfig.attributes).map(attribute => {
// Don't update images on load, since PLPs already set the main image to the selected options
const skipUpdateGallery = true;
urlQueryParams.get(attribute.code) &&
this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
});
},
mouseDown: false,
startX: 0,
maxScroll: 0,
scrollLeft: null,
slider: null,
scrollEvents: {
['@mousedown'](e) {
this.slider = e.target.closest('.snap');
if (!this.slider) {
return;
}
this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
this.startX = e.pageX - this.slider.offsetLeft;
this.scrollLeft = this.slider.scrollLeft;
this.mouseDown = true;
},
['@mouseout.self']() {
this.mouseDown = false;
},
['@mouseup']() {
this.mouseDown = false;
},
['@mousemove'](e) {
e.preventDefault();
if (!this.mouseDown) {
return;
}
const x = e.pageX - this.slider.offsetLeft;
const scroll = x - this.startX;
const scrollLeft = this.scrollLeft - scroll;
if (scrollLeft > this.maxScroll) {
this.slider.scrollLeft = this.maxScroll;
return
}
this.slider.scrollLeft = this.scrollLeft - scroll;
},
['@onselectstart']() {
return false;
}
},
resizeEvent() {
Array.from(this.$root.querySelectorAll('.snap')).forEach(slider => {
slider.scrollLeft = 0;
})
}
}
);
}
As low as
$276.00
BB0172O
function initPriceBox__6a4dc4f823741()
{
return {
additionalPriceElement : document.querySelector('#regular-price_' + 128282),
regularPrice : 252.54,
updatePrice(priceData) {
const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price');
const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price');
if (regularPriceLabel) {
if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
regularPriceLabel.classList.add('hidden');
} else {
regularPriceLabel.classList.remove('hidden');
}
}
regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
basePriceElement && (basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount));
if (this.additionalPriceElement) {
if (priceData.finalPrice.amount === this.regularPrice) {
this.additionalPriceElement.classList.add('hidden');
} else if (priceData.finalPrice.amount < this.regularPrice) {
this.additionalPriceElement.classList.remove('hidden');
}
}
}
}
}
54
function initConfigurableSwatchOptions_128282() {
const configurableOptionsComponent = initConfigurableOptions(
'128282',
{"attributes":{"93":{"id":"93","code":"color","label":"Colour","options":[{"id":"10","label":"Black","products":["128212"]}],"position":"0"},"156":{"id":"156","code":"a01_size_option","label":"Size Option","options":[{"id":"456","label":"54-16-140","products":[]}],"position":"1"}},"template":"$","currencyFormat":"$%s","optionPrices":{"128212":{"baseOldPrice":{"amount":210.45},"oldPrice":{"amount":252.54},"basePrice":{"amount":210.45},"finalPrice":{"amount":252.54},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"$%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":210.45},"oldPrice":{"amount":252.54},"basePrice":{"amount":210.45},"finalPrice":{"amount":252.54}},"productId":"128282","chooseText":"Choose an Option...","images":[],"index":{"128212":{"93":"10","156":null}},"salable":[],"canDisplayShowOutOfStockStatus":false,"preSelectedGallery":[],"supplier_colour_data":{"colour_attribute_id":93,"mapping":{"128212":"001"}},"additional_product_data":{"configurable":{"id":"128282","sku":"BB0172O","custom_options":null},"simples":{"128212":{"sku":"BB0172O-001-54-16-140"}}}} );
const swatchOptionsComponent = initSwatchOptions({"93":{"10":{"type":"2","value":"https:\/\/jpopticians.com\/media\/attribute\/swatch\/swatch_image\/40x24\/b\/l\/black_20.png","thumb":"https:\/\/jpopticians.com\/media\/attribute\/swatch\/swatch_thumb\/110x90\/b\/l\/black_20.png","label":"Black"},"additional_data":"{\"swatch_input_type\":\"visual\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":\"0\"}"}});
return Object.assign(
configurableOptionsComponent,
swatchOptionsComponent,
{
mediaCallback: "https\u003A\u002F\u002Fjpopticians.com\u002Fjp_us\u002Fswatches\u002Fajax\u002Fmedia\u002F",
changeOption(optionId, value, skipUpdateGallery) {
if (value === '') {
this.selectedValues = this.removeAttrFromSelection(this.selectedValues, optionId)
} else {
this.selectedValues[optionId] = value;
}
this.findSimpleIndex();
this.findAllowedAttributeOptions();
this.updatePrices();
!skipUpdateGallery && this.updateGallery();
let candidates = this.findProductIdsForPartialSelection(this.selectedValues);
window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
detail: {
productId: this.productId,
optionId,
value,
productIndex: this.productIndex,
selectedValues: this.selectedValues,
candidates: candidates,
skuCandidates: this.optionConfig.sku ? Object.values(candidates).map(id => this.optionConfig.sku[id]) : [],
}
}));
},
updateGallery() {
if (!this.productIndex) {
return;
}
fetch(`${this.mediaCallback}?product_id=${this.productIndex}&parent_id=${this.productId}&isAjax=true`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
}
).then(response => {
return response.json()
}
).then(data => {
if (data.errors) {
// non critical failure only console logged
console.warn(data.errors);
} else {
const image = data && data.medium;
image && window.dispatchEvent(
new CustomEvent(
"update-gallery-128282",
{detail: image}
)
);
}
}).catch(error => {
console.warn(error)
});
},
preselectQuerystringItems() {
// pre-select option like ?size=167
const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
Object.values(this.optionConfig.attributes).map(attribute => {
// Don't update images on load, since PLPs already set the main image to the selected options
const skipUpdateGallery = true;
urlQueryParams.get(attribute.code) &&
this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
});
},
mouseDown: false,
startX: 0,
maxScroll: 0,
scrollLeft: null,
slider: null,
scrollEvents: {
['@mousedown'](e) {
this.slider = e.target.closest('.snap');
if (!this.slider) {
return;
}
this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
this.startX = e.pageX - this.slider.offsetLeft;
this.scrollLeft = this.slider.scrollLeft;
this.mouseDown = true;
},
['@mouseout.self']() {
this.mouseDown = false;
},
['@mouseup']() {
this.mouseDown = false;
},
['@mousemove'](e) {
e.preventDefault();
if (!this.mouseDown) {
return;
}
const x = e.pageX - this.slider.offsetLeft;
const scroll = x - this.startX;
const scrollLeft = this.scrollLeft - scroll;
if (scrollLeft > this.maxScroll) {
this.slider.scrollLeft = this.maxScroll;
return
}
this.slider.scrollLeft = this.scrollLeft - scroll;
},
['@onselectstart']() {
return false;
}
},
resizeEvent() {
Array.from(this.$root.querySelectorAll('.snap')).forEach(slider => {
slider.scrollLeft = 0;
})
}
}
);
}
As low as
$252.54
BIO-1029
function initPriceBox__6a4dc4f828c84()
{
return {
additionalPriceElement : document.querySelector('#regular-price_' + 123851),
regularPrice : 95.22,
updatePrice(priceData) {
const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price');
const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price');
if (regularPriceLabel) {
if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
regularPriceLabel.classList.add('hidden');
} else {
regularPriceLabel.classList.remove('hidden');
}
}
regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
basePriceElement && (basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount));
if (this.additionalPriceElement) {
if (priceData.finalPrice.amount === this.regularPrice) {
this.additionalPriceElement.classList.add('hidden');
} else if (priceData.finalPrice.amount < this.regularPrice) {
this.additionalPriceElement.classList.remove('hidden');
}
}
}
}
}
53.0
function initConfigurableSwatchOptions_123851() {
const configurableOptionsComponent = initConfigurableOptions(
'123851',
{"attributes":{"93":{"id":"93","code":"color","label":"Colour","options":[{"id":"11","label":"Gold","products":["121946"]}],"position":"0"},"156":{"id":"156","code":"a01_size_option","label":"Size Option","options":[{"id":"391","label":"53-20-145","products":["121946"]}],"position":"1"}},"template":"$","currencyFormat":"$%s","optionPrices":{"121946":{"baseOldPrice":{"amount":79.35},"oldPrice":{"amount":95.22},"basePrice":{"amount":79.35},"finalPrice":{"amount":95.22},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"$%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":79.35},"oldPrice":{"amount":95.22},"basePrice":{"amount":79.35},"finalPrice":{"amount":95.22}},"productId":"123851","chooseText":"Choose an Option...","images":[],"index":{"121946":{"93":"11","156":"391"}},"salable":[],"canDisplayShowOutOfStockStatus":false,"preSelectedGallery":[],"supplier_colour_data":{"colour_attribute_id":93,"mapping":{"121946":"Gold"}},"additional_product_data":{"configurable":{"id":"123851","sku":"BIO-1029","custom_options":null},"simples":{"121946":{"sku":"BIO-1029-001"}}}} );
const swatchOptionsComponent = initSwatchOptions({"93":{"11":{"type":"2","value":"https:\/\/jpopticians.com\/media\/attribute\/swatch\/swatch_image\/40x24\/g\/o\/gold_58.png","thumb":"https:\/\/jpopticians.com\/media\/attribute\/swatch\/swatch_thumb\/110x90\/g\/o\/gold_58.png","label":"Gold"},"additional_data":"{\"swatch_input_type\":\"visual\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":\"0\"}"}});
return Object.assign(
configurableOptionsComponent,
swatchOptionsComponent,
{
mediaCallback: "https\u003A\u002F\u002Fjpopticians.com\u002Fjp_us\u002Fswatches\u002Fajax\u002Fmedia\u002F",
changeOption(optionId, value, skipUpdateGallery) {
if (value === '') {
this.selectedValues = this.removeAttrFromSelection(this.selectedValues, optionId)
} else {
this.selectedValues[optionId] = value;
}
this.findSimpleIndex();
this.findAllowedAttributeOptions();
this.updatePrices();
!skipUpdateGallery && this.updateGallery();
let candidates = this.findProductIdsForPartialSelection(this.selectedValues);
window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
detail: {
productId: this.productId,
optionId,
value,
productIndex: this.productIndex,
selectedValues: this.selectedValues,
candidates: candidates,
skuCandidates: this.optionConfig.sku ? Object.values(candidates).map(id => this.optionConfig.sku[id]) : [],
}
}));
},
updateGallery() {
if (!this.productIndex) {
return;
}
fetch(`${this.mediaCallback}?product_id=${this.productIndex}&parent_id=${this.productId}&isAjax=true`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
}
).then(response => {
return response.json()
}
).then(data => {
if (data.errors) {
// non critical failure only console logged
console.warn(data.errors);
} else {
const image = data && data.medium;
image && window.dispatchEvent(
new CustomEvent(
"update-gallery-123851",
{detail: image}
)
);
}
}).catch(error => {
console.warn(error)
});
},
preselectQuerystringItems() {
// pre-select option like ?size=167
const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
Object.values(this.optionConfig.attributes).map(attribute => {
// Don't update images on load, since PLPs already set the main image to the selected options
const skipUpdateGallery = true;
urlQueryParams.get(attribute.code) &&
this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
});
},
mouseDown: false,
startX: 0,
maxScroll: 0,
scrollLeft: null,
slider: null,
scrollEvents: {
['@mousedown'](e) {
this.slider = e.target.closest('.snap');
if (!this.slider) {
return;
}
this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
this.startX = e.pageX - this.slider.offsetLeft;
this.scrollLeft = this.slider.scrollLeft;
this.mouseDown = true;
},
['@mouseout.self']() {
this.mouseDown = false;
},
['@mouseup']() {
this.mouseDown = false;
},
['@mousemove'](e) {
e.preventDefault();
if (!this.mouseDown) {
return;
}
const x = e.pageX - this.slider.offsetLeft;
const scroll = x - this.startX;
const scrollLeft = this.scrollLeft - scroll;
if (scrollLeft > this.maxScroll) {
this.slider.scrollLeft = this.maxScroll;
return
}
this.slider.scrollLeft = this.scrollLeft - scroll;
},
['@onselectstart']() {
return false;
}
},
resizeEvent() {
Array.from(this.$root.querySelectorAll('.snap')).forEach(slider => {
slider.scrollLeft = 0;
})
}
}
);
}
As low as
$95.22
ONB-4013