news

January 9, 2021

Victoria Myers

Good morning lovely knitters!  Boy, what a week.  I have been knitting furiously this week in an attempt to keep myself sane, but I don't know if it is working!  Even more so this week than normally, I'm really grateful that you guys are so wonderful - calm (ish), kind, inspiring and just all around lovely.  It is a treat to see you during days like these and helps me not descend into utter disbelief and sadness. Thank you all for just being the BEST!

And, now some yarn stuff!

Speaking of sanity - this is the last weekend to sign up for our Save Our Sanity knit box so that you don't miss January's box.  Any sign-ups after the 10th will automatically be for February, so sign-up now!  These are previous projects - but give you a little sense of style - there are way more on the SOS page!

I've also had enough people talk about the Temperature Blanket knits - that we're gonna do it - a year long K+ CAL!  You can see all the details and kits here.  The kits will be ready to pick up or ship on Wednesday but if you want to pop in and build your own out of any yarn, feel free - it is pretty fun to put it together and a great little bit of knitting or crocheting to center you in the morning!!

And a lot of you have been asking about charity knitting.  Cindy found a place that is accepting donations and generously offered to drop off things to their Cambridge location.  We'll collect in the shop and I'll pass them off to her, so if you have been itching to do some charity knitting...hats, mittens, and scarves are all welcome!

And now, I'm going back to knitting furiously until it seems safe to come up for air!


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(), ); }