Workbench for Garage,ENJOYWOOD Heavy-Duty 48 inch 2 Tier Wood Work Bench with Storage Pegboards,Rubber Mat,Power Outlets, Rubber Wood Tabletop 2000 LBS Load Bearing Workstation Garage Desk Table
Workbench for Garage,ENJOYWOOD Heavy-Duty 48 inch 2 Tier Wood Work Bench with Storage Pegboards,Rubber Mat,Power Outlets, Rubber Wood Tabletop 2000 LBS Load Bearing Workstation Garage Desk Table
${function() {
const variantData = data.variant || {"id":"abb33bfb-dc43-48b4-9cf8-02892372769c","product_id":"82725e29-7645-41d6-91ac-52534b050be3","title":"","weight_unit":"lb","inventory_quantity":0,"sku":"tm96876826SLQs6P1","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":259.99,"min_quantity":1}],"weight":"0","compare_at_price":"299.99","price":"259.99","retail_price":"299.99","available":true,"url":"\/products\/workbench-for-garage-enjoywood-heavy-duty-48-inch-2-tier-wood-work-bench-with-storage-pegboards-rubber-mat-power-outlets-rubber-wood-tabletop-2000-lbs-load-bearing-workstation-garage-desk-table?variant=abb33bfb-dc43-48b4-9cf8-02892372769c","available_quantity":999999999,"options":[],"off_ratio":"13","flashsale_info":{"variant_id":"abb33bfb-dc43-48b4-9cf8-02892372769c","product_id":"","quantity":0,"discount_id":"","limit_time":0,"limit_buy":0,"user_limit_buy":0,"discount_sales":0,"discount_sales_rate":"","discount_stock":0,"ends_at":0,"starts_at":0,"allow_oversold":"","allocation_method":"","price":"259.99","compare_at_price":"","discount_price":"259.99","customary_saved_price":"","customary_off_ratio":"","discount_saved_price":"","discount_off_ratio":"13","use_before_price":false,"before_price":"","title":"","properties":"","color_setting_promotional_copy":"","discount_quantity":0,"is_need_split":false},"sales":0};
const saveType = null;
const productSaveLabel = null;
return `
-
${ variantData.off_ratio }%
`; }()}
${function(){
return `
${data.starNum}/${data.starTotal}
`;
}()}
${function(){
return `
${data.showStarText === 'true' ? `
${data.starNum}/${data.starTotal}
` : ''}
`;
}()}
const TAG = 'spz-custom-revue-star';
class SPZCustomRevueStar extends SPZ.BaseElement {
constructor(element) {
super(element);
}
static deferredMount() {
return false;
}
buildCallback = () => {
this.action_ = SPZServices.actionServiceForDoc(this.element);
this.templates_ = SPZServices.templatesForDoc(this.element);
this.xhr_ = SPZServices.xhrFor(this.win);
this.starNum = this.element.getAttribute('starNum');
this.starTotal = this.element.getAttribute('starTotal');
this.showStarText = this.element.getAttribute('showStarText');
this.starColor = this.element.getAttribute('color');
this.interact = this.element.getAttribute('interact');
this.starSize = this.element.getAttribute('starSize') || 14;
}
mountCallback = () => {
this.doRender_({
starTotal: this.starTotal,
totalArray: Array.from({ length: Number(this.starTotal) }, (v, k) => k + 1),
starNum: this.starNum,
showStarText: this.showStarText,
starColor: this.starColor,
starSize: this.starSize
}).then(() => {
if (this.interact) {
this.addEventListeners_();
}
});
}
addEventListeners_ = () => {
const stars = document.querySelectorAll('.revue-star__star');
stars.forEach(star => {
star.addEventListener('click', event => {
const starEl = star.closest('.revue-star__star');
const starIndex = Number(starEl.dataset.index);
let isHalf = event.offsetX < star.offsetWidth / 2;
// rtl
if (document.documentElement.getAttribute('dir') === 'rtl') {
isHalf = event.offsetX > star.offsetWidth / 2;
}
const starValue = isHalf ? starIndex - 0.5 : starIndex;
this.starClickHandler_({ value: starValue });
});
});
}
renderStar = () => {
const isRtl = document.documentElement.getAttribute('dir') === 'rtl';
const stars = this.element.querySelectorAll('.revue-star__star');
stars.forEach((star, i) => {
const starIndex = i + 1;
const starEl = star.querySelector('svg:nth-child(2)');
const isHalf = this.starNum % 1 > 0 && Math.ceil(this.starNum) === starIndex;
const isSolid = starIndex <= Math.ceil(this.starNum);
starEl.style.display = isSolid ? 'block' : 'none';
if (isHalf) {
if (isRtl) {
// RTL布局下,如果是半星,显示星星的右半边
starEl.style.clipPath = `polygon(50% 0, 100% 0, 100% 100%, 50% 100%)`;
} else {
// LTR布局下,如果是半星,显示星星的左半边
starEl.style.clipPath = `polygon(0 0, 50% 0, 50% 100%, 0 100%)`;
}
} else {
starEl.style.clipPath = `polygon(0 0, 100% 0, 100% 100%, 0 100%)`
}
});
const showCountEle = this.element.querySelector('#revue-star-show-count');
showCountEle && SPZ.whenApiDefined(showCountEle).then((api) => {
api.render({ starNum: this.starNum, starTotal: this.starTotal });
});
}
doRender_ = (data) => {
return this.templates_
.findAndRenderTemplate(this.element, { starSize: this.starSize, ...data }, null)
.then((el) => {
const children = this.element.querySelector('*:not(template)');
children && SPZCore.Dom.removeElement(children);
this.element.appendChild(el);
})
.then(() => {
this.starNum = data.starNum;
this.renderStar();
});
}
starClickHandler_ = (event) => {
this.starNum = event.value;
this.renderStar();
this.triggerEvent_('change', { value: event.value });
}
triggerEvent_(name, data) {
const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {});
this.action_.trigger(this.element, name, event);
}
isLayoutSupported(layout) {
return layout == SPZCore.Layout.CONTAINER;
}
}
SPZ.defineElement(TAG, SPZCustomRevueStar)
()
try {
const productId = window.SHOPLAZZA.meta.page.resource_id;
const productType = `default`;
const getProductReviews = (star_least) =>
fetch('/api/comment/count-star-multi',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
product_id: [productId],
star_least: star_least || 1,
}),
}).then(res => res.json());
try {
const section = document.querySelector('#revue-product-star');
if(productType === "gift_card" && section) {
section.style.display = 'none';
}
} catch(e) {
console.log(e);
window.addEventListener('load', () => {
try {
const section = document.querySelector('#revue-product-star');
if(productType=== "gift_card" && section) {
section.style.display = 'none';
}
} catch(e) {
console.log(e)
}
})
}
const getReviewsConfig = async () => {
let data = {};
const url = new URL(window.location.href);
const preview_theme_id = url.searchParams.get('preview_theme_id');
const commentConfig = await fetch('/api/comment-config', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
}
}).then(res => res.json());
data = commentConfig.data;
const themeConfig = await fetch(`/api/comment-config?theme_id=${preview_theme_id || ''}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
}
}).then(res => res.json());
if (themeConfig?.data && themeConfig.data.star_color) {
data.star_color = themeConfig.data.star_color;
}
if (preview_theme_id) {
data.star_least = window.apps_global && apps_global.reviews && apps_global.reviews.preview_star_least;
} else if (themeConfig?.data && themeConfig.data.product_settings) {
data.star_least = themeConfig.data.product_settings.star_least;
}
return data;
};
if (productId && window.SHOPLAZZA.meta.page.template_type == 1) {
getReviewsConfig().then(async res => {
const config = res;
let review = await getProductReviews(config.star_least);
review = review.data[productId];
if (!config.open_status || (!review.comment_avg_star && !config.show_no_comment_star)) return;
const render = async () => {
const section = document.querySelector('#revue-product-star');
const starComponent = document.querySelector('#revue-product-star-component');
const count = document.querySelector('#revue-product-star-count');
count.innerText = review.published_count;
const api = await SPZ.whenApiDefined(starComponent);
api.doRender_({
starNum: review.comment_avg_star,
starTotal: 5,
showStarText: false,
starColor: config.star_color,
totalArray: Array.from({ length: 5 }, (v, k) => k + 1)
});
section.style.opacity = 1;
}
render();
document.addEventListener('dj.editor.update', render);
});
}
} catch (e) {console.warn(e)};
${function() {
const minInventory = parseInt('7');
const maxInventory = parseInt('10');
const randomInventory = Math.round(Math.random() * (maxInventory - minInventory)) + minInventory;
const customText = "Only {stock} item(s) left in stock!".replace(/\{stock\}/g, '' + randomInventory + '');
const barWidth = (randomInventory / maxInventory) * 100 + '%';
return `
`;
}()}
Product was out of stock.
Enjoy free shipping on every order, delivered to your doorstep no matter where you are in the world.
Shop with confidence with our hassle-free returns policy, ensuring you love what you buy.
Designed with the planet in mind, all our products are committed to sustainable practices.
Your payment information is always protected with our advanced, encrypted checkout security.
- Are you ready to make your workspace more organized? The ENJOYWOOD adjustable workbench featuring three 16’’x24’’ storage pegboards and double rubber wood to meet the storage requirements of various tools. It is made of solid rubberwood and sturdy steel frame with metal feet, which is stable and have great wear resistance. 4-level adjustable heights from 31.5" to 39.4" provide you unlimited usage scenarios for your needs. In addition, the built-in socket allows you to electrify the tool at all time. Whether it's a home DIY table or a work desk, ENJOYWOOD workbench can greatly increase your productivity!
- 【EXCEPTIONAL STRENGTH】30mm rubberwood workbench with 1.2ft thick, load bearing up to 2000lbs. The workbench comes with graduated rubber pads, which is scratch-resistant, waterproof and easy to clean. Providing you with a smooth exceptional strength surface.
- 【SUPERIOR STABILITY】ENJOYWOOD workbench is made of sturdy steel frame with metal feet. 50mm frame diameter with 1.2mm thick. H-shaped frame can withstand the rigour of daily use. Anti-slip silent metal feet adapt to uneven ground while avoiding damage to the floor.
- 【ELT CERTIFICATION OUTLETS】Equipped with 4 AC Outlets and 1 Switch which is ELT certified for safety and durability. Bring convenience and security to the use of workbench.
- 【EXCELLENT STORAGE SPACE】Three 16’’x24’’ storage pegboards and double rubberwood provide excellent storage space for the workbench. Storage pegboards bearing 10lbs in one hole to provide strong support. The modular combination meets the storage requirements of various tools.
- 【ADJUSTABLE HEIGHT】4 adjustable heights from 31.5’’ to 39.4’’, screw adjustment to meet the different heights of people. You are free to choose to work sitting or standing.
- 【EASY ASSEMBLY】Coming with pre-drilled holes and instruction, ensuring you will install the workbench easily.
Vendor by :
ENJOYWOOD
Sku :
tm96876826SLQs6P1
Inventory :
999999999
${function(){
const variantData = data.variant || {"id":"abb33bfb-dc43-48b4-9cf8-02892372769c","product_id":"82725e29-7645-41d6-91ac-52534b050be3","title":"","weight_unit":"lb","inventory_quantity":0,"sku":"tm96876826SLQs6P1","barcode":"","position":1,"option1":"","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":259.99,"min_quantity":1}],"weight":"0","compare_at_price":"299.99","price":"259.99","retail_price":"299.99","available":true,"url":"\/products\/workbench-for-garage-enjoywood-heavy-duty-48-inch-2-tier-wood-work-bench-with-storage-pegboards-rubber-mat-power-outlets-rubber-wood-tabletop-2000-lbs-load-bearing-workstation-garage-desk-table?variant=abb33bfb-dc43-48b4-9cf8-02892372769c","available_quantity":999999999,"options":[],"off_ratio":"13","flashsale_info":{"variant_id":"abb33bfb-dc43-48b4-9cf8-02892372769c","product_id":"","quantity":0,"discount_id":"","limit_time":0,"limit_buy":0,"user_limit_buy":0,"discount_sales":0,"discount_sales_rate":"","discount_stock":0,"ends_at":0,"starts_at":0,"allow_oversold":"","allocation_method":"","price":"259.99","compare_at_price":"","discount_price":"259.99","customary_saved_price":"","customary_off_ratio":"","discount_saved_price":"","discount_off_ratio":"13","use_before_price":false,"before_price":"","title":"","properties":"","color_setting_promotional_copy":"","discount_quantity":0,"is_need_split":false},"sales":0};
return `
Vendor by :
${data.product && data.product.vendor}
Weight :
${variantData && variantData.weight}${variantData && variantData.weight_unit}
Barcode :
${variantData && variantData.barcode}
Sku :
${variantData && variantData.sku}
Inventory :
${variantData && variantData.available_quantity}
` }()}