Belle-Ve Bricks

Building Brands, Brick by Brick.

LEGO® Central Perk (21319) BOXXCO Review 2

LEGO® Central Perk (21319) BOXXCO Review

Create Your

We help you from start to finish to create and deliver your tailor-made custom model.
Custom model
Continue

Are you someone who hates the laborious task of dusting your LEGO® sets? Well, now you don’t have to – thanks to BOXXCO. The premium storage cases BOXXCO offers are designed for anyone who loves LEGO® and wants to collect and display their favorite LEGO® in a safe, dust-free environment.

If you would like to read more about LEGO® display ideas you will love 10+ Best Creative LEGO Display Ideas.

Key Takeaway

  • BOXXCO offers a wide range of LEGO® premium storage from their website.
  • The Central Perk (21319) set was released in 2019.
  • There is an optional background piece for the BOXXCO storage box that makes your set stand out whilst in storage.
  • The Central Perk (21319) set is based on the coffee shop seen in the popular US sitcom, Friends.
  • The BOXXCO cases stop your LEGO® sets from getting dusty and protect the sets from accidental damage.

If you want to keep your LEGO® Central Perk (21319) dust free you can pick up your own premium storage case from BOXXCO by clicking here.

Display Cases Protect Your LEGO® Set

Display cases are the ideal way to keep your LEGO® sets free from dust and accidental damage. They provide an essential barrier between your collection and environmental elements, making sure that whatever you create will remain in perfect condition for years to come. Whether it’s a work of art or a unique design, display cases are the perfect way to show off your LEGO® sets, without worrying about any potential damage. Investing in a quality display case will ensure that your set is well-protected and looks great!

LEGO® Central Perk (21319) BOXXCO Review

Packaging

LEGO® Central Perk (21319) BOXXCO Review box

The package was delivered quickly by a premium courier, it was packaged very well with a fragile label on the box.

Unboxing

Inside the package, the contents were protected in bubble wrap (double-wrapped), it also had a couple of lines of tape around to keep it from unraveling.

LEGO® Central Perk (21319) BOXXCO Review 16

All of the pieces were covered front and back in a protective film to prevent them from being scratched or damaged in transit. This peels off really easily when you are ready.

LEGO® Central Perk (21319) BOXXCO Review 19

Taking out the base of the display case it was quick to see that it was of good quality, it did not flex at all. The color of the base is black, definitely the right choice for this LEGO® set.

The base also had the shape of the Central Perk set carved out of it, this was nearly done with no sharp or unfinished edges.

LEGO® Central Perk (21319) BOXXCO Review 11

The back piece of the display case came with a nice scene printed on it, this is an optional extra that you can choose when ordering from BOXXCO.

LEGO® Central Perk (21319) BOXXCO Review 6

This was a really nice touch, BOXXCO provides you with a sticker that you can apply to the display case. It contains information about the set, how many pieces, the year you built it, and your name.

Building

LEGO® Central Perk (21319) BOXXCO Review 4

Assembly of BOXXCO’s LEGO® display case was simple, on each corner you fixed the sides together with this block and a couple of flat-headed screws.

It took no longer than 15 minutes to assemble the display case, it took me longer to find my screwdriver than it did to build the LEGO® display case!

LEGO® Central Perk (21319) BOXXCO Review 12

Once the sides were all screwed together this is the end result. The top of the display case slots down on the base, it slotted down easily and it looks great.

Displaying

LEGO® Central Perk (21319) BOXXCO Review 1

Once the display case was built I placed it in on the base, it fits perfectly with no room for the set to move around.

LEGO® Central Perk (21319) BOXXCO Review 14
LEGO® Central Perk (21319) BOXXCO Review 3
LEGO® Central Perk (21319) BOXXCO Review 2

Once the LEGO® Central Perk (21319) set was placed inside and the surrounding case put on it looked amazing, somehow putting it in BOXXCO’s LEGO® display case improved the look and feel of the set.

This now sits proudly on our LEGO® shelf with our LEGO® Star Wars The Razor Crest Set (75292) placed on top of the display case (another perk of putting your LEGO® sets in display cases).

LEGO® Central Perk (21319) BOXXCO Video

YouTube video

Conclusion

If you have had LEGO® for any time at all you will know the dust is a big problem, BOXXCO solves this issue with their premium display cases. The case that I built was high quality and will definitely keep my LEGO® Central Perk (21319) set safe from accidental damage and dust!

BOXXCO has a wide range of LEGO display cases.

<div class="badge-base LI-profile-badge" data-locale="en_US" data-size="large" data-theme="dark" data-type="HORIZONTAL" data-vanity="ferdi-vol" data-version="v1"><a class="badge-base__link LI-simple-link" href="https://www.linkedin.com/in/%E2%9C%85-ferdi-vol-corporate-gifts/?trk=profile-badge"></a></div>
/* Auto generated, hash = 5dceu9kevqjdyuy2uw1atqrsu */
//TODO: Break this file down so that we can actually unit test it.
(function(window) {
  /**
  * Renders all unrendred LinkedIn Badges on the page
  */
  window.LIRenderAll = function () {
    var CALLBACK_NAME     = 'LIBadgeCallback', //Must match callback on helpers.js
        BADGE_NAMES       = '.LI-profile-badge, .LI-entity-badge',
        // TODO -- tracking param for other badge types
        TRACKING_PARAM    = 'profile-badge',
        responsesReceived = 0, //Keeps track of number of responses recieved for proper cleanup when finished
        expectedResponses = 0, //Keeps track of number of responses to expect
        scripts           = [ ], //Keeps track of scripts added for proper cleanup when finished
        childScripts      = {}, //Keeps track of child scripts to render
        badges            = Array.prototype.slice.call(document.querySelectorAll(BADGE_NAMES));

    var i, len, badge, rendered;
    for (i = 0, len = badges.length;  i < len; i++) {
      badge    = badges[i];
      rendered =  badge.getAttribute('data-rendered');
      if (!rendered) {
        expectedResponses++;
        badge.setAttribute('data-rendered', true);
        renderBadge(badge);
      }
    }

    function isCNDomain() {
      if (typeof window !== "undefined") {
        var hostName = window.location && window.location.hostname ||  '';
        return (/linkedin(-ei)?.cn$/).test(hostName);
      }

      return false;
    }

    function generateUrl(isEI) {
      var domainPrefix = isEI ? 'https://badges.linkedin-ei' : 'https://badges.linkedin';
      if (isCNDomain()) {
        return domainPrefix + ".cn/";
      }

      return domainPrefix + ".com/";
    }

    function getBadgeKeyQueryParams(badge) {
      return Array.prototype.slice.call(badge.attributes).filter(function (attr) {
        return attr.name.lastIndexOf('data-key-', 0) !== -1;
      }).map(function (attr) {
        // Most browsers automatically lowercase the attribute name when its being read
        // We are calling lowercase on it again to ensure consistency for any browsers that are lagging behind.
        return encodeURIComponent(attr.name.replace('data-', '').toLowerCase()) + '=' + encodeURIComponent(attr.value);
      });
    }

    /*
    * Renders a single badge on the page
    * @param badge: div element of badge to render
    */
    function renderBadge(badge) {
      var size       = badge.getAttribute('data-size'),
          locale     = badge.getAttribute('data-locale'),
          type       = badge.getAttribute('data-type'),
          theme      = badge.getAttribute('data-theme'),
          vanity     = badge.getAttribute('data-vanity'),
          version    = badge.getAttribute('data-version'),
          isEI       = badge.hasAttribute('data-ei'),
          entity     = badge.getAttribute('data-entity'),
          isCreatePage = badge.hasAttribute('data-iscreate'),
          uid        = Math.round(1000000 * Math.random()),
          baseUrl = generateUrl(isEI),
          queryParams = [
            'locale=' + encodeURIComponent(locale),
            'badgetype=' + encodeURIComponent(type),
            'badgetheme=' + encodeURIComponent(theme),
            'uid=' + encodeURIComponent(uid),
            'version=' + encodeURIComponent(version)
          ],
          url;

      if (version === 'v2') {
        baseUrl += 'view';
        queryParams.push('badgesize=' + encodeURIComponent(size));
        queryParams.push('entity=' + encodeURIComponent(entity));
        queryParams = queryParams.concat(getBadgeKeyQueryParams(badge));
      } else {
        baseUrl += 'profile';
        queryParams.push('maxsize=' + encodeURIComponent(size));
        queryParams.push('trk=' + encodeURIComponent(TRACKING_PARAM));
        queryParams.push('vanityname=' + encodeURIComponent(vanity));
      }

      if (isCreatePage) {
        queryParams.push('fromCreate=true');
      }

      url = baseUrl + '?' + queryParams.join('&');
      badge.setAttribute('data-uid' , uid);
      jsonp(url); //Calls responseHandler when done
    }

    /**
    * Handles a response from the server. Finds badge matching badgeUid and inserts badgeHtml there
    * @param badgeHtml: String representing contents of the badge
    * @param badgeUid: UID of the badge to target
    **/
    function responseHandler(badgeHtml, badgeUid) {
      responsesReceived ++;

      var i, badge, uid, isCreate;
      var defaultWidth = 330 // max possible width
      var defaultHeight = 300 // max possible height

      for (i = 0, len = badges.length; i < len; i++) {
        badge = badges[i];
        // isCreate needed to prevent reloading artdeco script tag
        isCreate = badge.getAttribute('data-iscreate');
        uid   = parseInt(badge.getAttribute('data-uid'), 10);
        if (uid === badgeUid) {
          var badgeMarkup = `<body>${badgeHtml}</body>`
          var iframe = document.createElement('iframe');
          iframe.onload = function() {
            var iframeBody = iframe.contentWindow.document.body;
            // 5 px buffer to avoid the badge border being cut off.
            iframe.setAttribute('height', (iframeBody.scrollHeight || defaultHeight) + 5);
            iframe.setAttribute('width', (iframeBody.scrollWidth || defaultWidth) + 5);
          };
          iframe.setAttribute('frameBorder', '0');
          iframe.style.display = 'block';
          badge.appendChild(iframe);
          iframe.contentWindow.document.open();
          iframe.contentWindow.document.write(badgeMarkup);
          iframe.contentWindow.document.close();
          replaceScriptTags(badge, isCreate);
        }
      }
      tryClean();
    }

  // These functions are needed because badge markup is added via innerHtml property which does not run script tags
  function replaceScriptTags(node, isCreate) {
    if (shouldReplaceNode(node, isCreate)) {
      node.parentNode.replaceChild(cloneScriptNode(node), node);
      childScripts[node.src] = true;
    } else {
      var i = 0,
          children = node.childNodes;
      while (i < children.length) {
        replaceScriptTags(children[i++], isCreate);
      }
    }
    return node;
  }

  function shouldReplaceNode(node, isCreate) {
    return isScriptNode(node) && !childScripts[node.src] && (!isCreate || (isCreate && !node.getAttribute('data-isartdeco')));
  }

  function isScriptNode(node) {
    return node.tagName === 'SCRIPT';
  }

  function cloneScriptNode(node){
    var script  = document.createElement("script");
    for( var i = node.attributes.length-1; i >= 0; i-- ) {
      script.setAttribute( node.attributes[i].name, node.attributes[i].value );
    }
    return script;
  }

    // Gets all incoming responses
    window[CALLBACK_NAME] = responseHandler;

    /**
    * Tries to clean added tags
    **/
    function tryClean() {
      //Clean up after all requests are done..
      //Accounts for people including script more than once
      var done = (responsesReceived >= expectedResponses && expectedResponses > 0) || responsesReceived >= badges.length;
      if (done) {
        delete window[CALLBACK_NAME];

        // remove all script tags
        scripts.map(function(script){
          document.body.removeChild(script);
        });

      }
    }

    /*
    * Makes Jsonp request, responses handles by CALLBACK_NAME
    * @param url String: url of server to make request to
    */
    function jsonp(url) {
      var script = document.createElement('script');
      script.src = url;
      scripts.push(script);
      document.body.appendChild(script);
    }
  };

  if (document.readyState === 'complete') {
    window.LIRenderAll();
  } else {
    window.addEventListener('load', window.LIRenderAll, false);
  }

})(window);
Popular Posts