Office Meeting & Conference Room Layout Planner

Office Meeting & Conference Room Layout Planner

Design your ideal room layout by dragging and dropping furniture items.

Room Canvas

Toolbox

Add furniture items in the Configuration tab.

Layout Summary

No items placed yet.

Room Dimensions (in feet)

Manage Furniture Types

Estimated Capacity: ${chairCount} seats

    ${Object.entries(counts).map(([name, count]) => `
  • ${name}: ${count}
  • `).join('')}
`; } async function downloadPDF() { const { jsPDF } = window.jspdf; try { const canvasElement = await html2canvas(canvas, { scale: 2 }); const imgData = canvasElement.toDataURL('image/png'); const doc = new jsPDF('l', 'mm', 'a4'); // landscape doc.setFontSize(18); doc.text('Meeting Room Layout Plan', 14, 22); doc.setFontSize(11); doc.text(`Dimensions: ${roomWidthInput.value}ft x ${roomLengthInput.value}ft`, 14, 30); const pdfWidth = doc.internal.pageSize.getWidth(); const pdfHeight = doc.internal.pageSize.getHeight(); doc.addImage(imgData, 'PNG', 14, 40, pdfWidth - 28, pdfHeight - 50, undefined, 'FAST'); doc.save('Room-Layout.pdf'); } catch (error) { console.error("Error generating PDF:", error); } } // --- Event Listeners --- addFurnitureBtn.addEventListener('click', addFurnitureConfig); [roomWidthInput, roomLengthInput].forEach(input => input.addEventListener('change', updateCanvas)); downloadPdfBtn.addEventListener('click', downloadPDF); toolbox.addEventListener('dragstart', (e) => { if (e.target.classList.contains('toolbox-item')) { draggedItem = e.target; } }); canvas.addEventListener('dragover', (e) => e.preventDefault()); canvas.addEventListener('drop', (e) => { e.preventDefault(); if (draggedItem && draggedItem.classList.contains('toolbox-item')) { const canvasRect = canvas.getBoundingClientRect(); const x = Math.round((e.clientX - canvasRect.left) / GRID_SIZE) * GRID_SIZE; const y = Math.round((e.clientY - canvasRect.top) / GRID_SIZE) * GRID_SIZE; const newItem = createFurniture( draggedItem.dataset.name, draggedItem.dataset.width, draggedItem.dataset.length, y, x ); canvas.appendChild(newItem); draggedItem = null; updateSummary(); } }); // --- Initial Setup --- updateNavButtons(); updateCanvas(); updateToolbox(); updateSummary(); });
Scroll to Top