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.
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
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.
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.
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.
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.
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
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!
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
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.
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
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!
/* 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);