news

Saturday, April 2, 2022

Victoria Myers

Good morning lovely knitters!  I hope you all had a fantastic week and that we are out of the winter woods!  It looks like a rainy week ahead though, so maybe take advantage of this sunny, nice day to pop in and grab a project to help you through days of rain!  Which reminds me....

It is April!  Which means we have a NEW featured pattern/kit this month!   

Watery Ripples!!  This is the perfect knit for April showers and just the perfect thing to have ready to wear when you finally venture out!  I *hope* I have enough Cumulus Rainbow for the month of this pattern, but it always goes quite quickly, so if you don't want to miss out - grab one soon!

As with all of our featured monthly patterns, you'll get a bonus 25% off any pattern code in addition to the free code for the Watery Ripples when you get the kit here: https://island-yarn.com/products/watery-ripples-kit
If you want to score this pattern alone for 25% off, you can use code APRILPOM and get it here: https://www.ravelry.com/patterns/library/watery-ripples-2
There are just 1 - 2 place left in all upcoming classes.  We've got Beginner Cabling tomorrow, Moebius cast on soon, and more!!  Sign-up up soon before they are all filled up!
There were also NEW Mad Balls this week, but they are almost gone, so if this batch is speaking to you, don't delay!
Island Yarn 
189 Main Street
Maynard, MA  01754
Hours: Wednesday 12 - 5, Thursday 12 - 8, Friday and Saturday, 12-5

Leave a Comment

Please note, comments must be approved before they are published

const selectVariantByClickingImage = { // Create variant images from productJson object _createVariantImage: function (product) { const variantImageObject = {}; product.variants.forEach((variant) => { if ( typeof variant.featured_image !== 'undefined' && variant.featured_image !== null ) { const variantImage = variant.featured_image.src .split('?')[0] .replace(/http(s)?:/, ''); variantImageObject[variantImage] = variantImageObject[variantImage] || {}; product.options.forEach((option, index) => { const optionValue = variant.options[index]; const optionKey = `option-${index}`; if ( typeof variantImageObject[variantImage][optionKey] === 'undefined' ) { variantImageObject[variantImage][optionKey] = optionValue; } else { const oldValue = variantImageObject[variantImage][optionKey]; if (oldValue !== null && oldValue !== optionValue) { variantImageObject[variantImage][optionKey] = null; } } }); } }); return variantImageObject; }, _updateVariant: function (event, id, product, variantImages) { const arrImage = event.target.src .split('?')[0] .replace(/http(s)?:/, '') .split('.'); const strExtention = arrImage.pop(); const strRemaining = arrImage.pop().replace(/_[a-zA-Z0-9@]+$/, ''); const strNewImage = `${arrImage.join('.')}.${strRemaining}.${strExtention}`; if (typeof variantImages[strNewImage] !== 'undefined') { product.variants.forEach((option, index) => { const optionValue = variantImages[strNewImage][`option-${index}`]; if (optionValue !== null && optionValue !== undefined) { const selects = document.querySelectorAll('#'+ id + ' [class*=single-option-selector]'); const options = selects[index].options; for (let option, n = 0; (option = options[n]); n += 1) { if (option.value === optionValue) { selects[index].selectedIndex = n; selects[index].dispatchEvent(new Event('change')); break; } } } }); } }, _selectVariant: function() { const productJson = document.querySelectorAll('[id^=ProductJson-'); if (productJson.length > 0) { productJson.forEach((product) => { const sectionId = product.id.replace("ProductJson-", "shopify-section-"); const thumbnails = document.querySelectorAll('#'+ sectionId + ' img[src*="/products/"]'); if (thumbnails.length > 1) { const productObject = JSON.parse(product.innerHTML); const variantImages = this._createVariantImage(productObject); // need to check variants > 1 if (productObject.variants.length > 1) { thumbnails.forEach((thumbnail) => { thumbnail.addEventListener('click', (e) => this._updateVariant(e, sectionId, productObject, variantImages), ); }); } } }); } }, }; if (document.readyState !== 'loading') { selectVariantByClickingImage._selectVariant(); } else { document.addEventListener( 'DOMContentLoaded', selectVariantByClickingImage._selectVariant(), ); }