news

Saturday, December 12th

Victoria Myers

Good morning everyone!  It is certainly a better morning than LAST Saturday morning with all that icky ice and sleet!  Much easier to feel a little hint of energy, right?

I've switched to putting the entire Saturday letter here because Google groups - that I use for that mailing list, changed recently and now I can barely get one picture and a half a paragraph in before it tells me it is too long - and you guys know - I prefer to blather a little more than that!  And have more pretty pictures!!

It is less than TWO weeks until Christmas, so I imagine a lot of you are engaged on super fun finishing tasks, but we've still got some fun to distract (or reward) you!  

FIRST!  Plan some well-deserved selfish knitting with a nice end of the year kindness!  Until the end of the year, we are donating 30% of pattern sales to Open Table (the food pantry in Maynard).  It is a great time to pick up some new patterns and support a VERY needed food pantry during this wretched time.

We've also got a lovely new kit - so quick to crochet that you could still whip up several of them if you are behind on your gifts!  Here's Braided Jewels!

The only tricky part of this one, is that a couple colors were discontinued just after I made it, which means I only have a handful of the sample color - if you want it - get it quick!

It is also that time of year to remind all your peeps that we have Giftcards!  Quick to order - and then print - so even if they have been slow, you can still get the awesome gift of free yarn!!  :)

If you are shopping for knitters, I have a few delightful goodies from the new Mindful Collection that Knitter's Price put out - they are in super short supply, so I'm not going to put them online.  You can see them in store or email me if you are in love with something and can't make it in to order.

Lastly, since we are headed back to Phase 3, I had a few people coming in and asking if I was closing again.  I'm already complying with Phase 3 (I never actually moved the shop out of it), and you guys have been SO good about my rules and being safe and careful, that I think, for now, I'm staying open.  BUT, what do you think?  Is that the right choice?  I'd value your thoughts if you have any about this!  And of course, this could change - but for today, I'm open!  


1 comment

  • Please keep the shop open for even a few hours per week. Getting out of the house and walking into your world of color and texture and conversation is very therapeutic!

    Judy Gibian

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