bimlibai / index.html
JarlJarle's picture
an app for creating, updating and maintain BIM models for high end library - Initial Deployment
1cfbb54 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LibraryBIM - High-End Library BIM Management</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
.model-viewer {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
border-radius: 12px;
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}
.sidebar {
transition: all 0.3s ease;
}
.collaboration-avatar {
transition: all 0.3s ease;
}
.collaboration-avatar:hover {
transform: translateY(-5px);
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.2);
}
.bim-element {
transition: all 0.2s ease;
}
.bim-element:hover {
transform: scale(1.02);
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}
@media (max-width: 768px) {
.sidebar {
position: absolute;
z-index: 50;
left: -100%;
}
.sidebar.active {
left: 0;
}
}
/* Custom scrollbar */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #f1f1f1;
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
background: #888;
border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover {
background: #555;
}
</style>
</head>
<body class="bg-gray-50 font-sans">
<div class="flex h-screen overflow-hidden">
<!-- Sidebar -->
<div class="sidebar bg-indigo-900 text-white w-64 flex-shrink-0 overflow-y-auto">
<div class="p-4 flex items-center justify-between border-b border-indigo-800">
<div class="flex items-center space-x-2">
<i class="fas fa-book-open text-2xl text-indigo-300"></i>
<h1 class="text-xl font-bold">LibraryBIM</h1>
</div>
<button id="sidebarToggle" class="md:hidden text-gray-300 hover:text-white">
<i class="fas fa-times"></i>
</button>
</div>
<div class="p-4">
<div class="mb-6">
<h2 class="text-sm uppercase font-semibold text-indigo-400 mb-2">Current Project</h2>
<div class="bg-indigo-800 p-3 rounded-lg">
<h3 class="font-medium">New York Public Library - Renovation</h3>
<p class="text-xs text-indigo-300 mt-1">Version 3.2.1</p>
</div>
</div>
<div class="mb-6">
<h2 class="text-sm uppercase font-semibold text-indigo-400 mb-2">Navigation</h2>
<ul class="space-y-2">
<li>
<a href="#" class="flex items-center space-x-2 p-2 rounded-lg bg-indigo-800 text-white">
<i class="fas fa-cube"></i>
<span>3D Model</span>
</a>
</li>
<li>
<a href="#" class="flex items-center space-x-2 p-2 rounded-lg hover:bg-indigo-800 text-indigo-100 hover:text-white">
<i class="fas fa-layer-group"></i>
<span>Elements</span>
</a>
</li>
<li>
<a href="#" class="flex items-center space-x-2 p-2 rounded-lg hover:bg-indigo-800 text-indigo-100 hover:text-white">
<i class="fas fa-file-alt"></i>
<span>Documents</span>
</a>
</li>
<li>
<a href="#" class="flex items-center space-x-2 p-2 rounded-lg hover:bg-indigo-800 text-indigo-100 hover:text-white">
<i class="fas fa-users"></i>
<span>Collaborators</span>
</a>
</li>
<li>
<a href="#" class="flex items-center space-x-2 p-2 rounded-lg hover:bg-indigo-800 text-indigo-100 hover:text-white">
<i class="fas fa-chart-line"></i>
<span>Analytics</span>
</a>
</li>
</ul>
</div>
<div>
<h2 class="text-sm uppercase font-semibold text-indigo-400 mb-2">Recent Files</h2>
<ul class="space-y-2">
<li class="p-2 rounded-lg hover:bg-indigo-800 cursor-pointer">
<div class="flex items-center space-x-2">
<i class="fas fa-file text-indigo-300"></i>
<span class="text-sm">Floor_Plan_v3.1.rvt</span>
</div>
</li>
<li class="p-2 rounded-lg hover:bg-indigo-800 cursor-pointer">
<div class="flex items-center space-x-2">
<i class="fas fa-file text-indigo-300"></i>
<span class="text-sm">Lighting_Design.dwg</span>
</div>
</li>
<li class="p-2 rounded-lg hover:bg-indigo-800 cursor-pointer">
<div class="flex items-center space-x-2">
<i class="fas fa-file text-indigo-300"></i>
<span class="text-sm">Acoustic_Analysis.pdf</span>
</div>
</li>
</ul>
</div>
</div>
</div>
<!-- Main Content -->
<div class="flex-1 flex flex-col overflow-hidden">
<!-- Top Navigation -->
<header class="bg-white border-b border-gray-200 flex-shrink-0">
<div class="flex items-center justify-between p-4">
<div class="flex items-center space-x-4">
<button id="mobileSidebarToggle" class="md:hidden text-gray-600 hover:text-gray-900">
<i class="fas fa-bars"></i>
</button>
<h2 class="text-xl font-semibold text-gray-800">3D Model Viewer</h2>
</div>
<div class="flex items-center space-x-4">
<div class="relative">
<button class="p-2 rounded-full bg-gray-100 text-gray-600 hover:bg-gray-200">
<i class="fas fa-bell"></i>
<span class="absolute top-0 right-0 h-2 w-2 rounded-full bg-red-500"></span>
</button>
</div>
<div class="relative">
<button class="flex items-center space-x-2">
<div class="h-8 w-8 rounded-full bg-indigo-600 flex items-center justify-center text-white font-medium">JD</div>
<span class="hidden md:inline text-gray-700">John Doe</span>
<i class="fas fa-chevron-down text-xs text-gray-500"></i>
</button>
</div>
</div>
</div>
<div class="px-4 pb-4">
<div class="flex flex-wrap items-center justify-between gap-4">
<div class="flex space-x-2">
<button class="px-3 py-1 bg-indigo-600 text-white rounded-md text-sm flex items-center space-x-1">
<i class="fas fa-plus"></i>
<span>New Model</span>
</button>
<button class="px-3 py-1 bg-white border border-gray-300 rounded-md text-sm flex items-center space-x-1">
<i class="fas fa-upload"></i>
<span>Import</span>
</button>
<button class="px-3 py-1 bg-white border border-gray-300 rounded-md text-sm flex items-center space-x-1">
<i class="fas fa-share-alt"></i>
<span>Share</span>
</button>
</div>
<div class="flex items-center space-x-2">
<div class="relative">
<input type="text" placeholder="Search model..." class="pl-8 pr-4 py-1 border border-gray-300 rounded-md text-sm">
<i class="fas fa-search absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400"></i>
</div>
<button class="p-2 rounded-md bg-gray-100 text-gray-600 hover:bg-gray-200">
<i class="fas fa-filter"></i>
</button>
</div>
</div>
</div>
</header>
<!-- Main Content Area -->
<main class="flex-1 overflow-auto p-4 bg-gray-100">
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
<!-- Model Viewer -->
<div class="lg:col-span-2">
<div class="model-viewer h-96 lg:h-full p-4 flex flex-col">
<div class="flex justify-between items-center mb-4">
<h3 class="font-medium text-gray-700">3D Model View</h3>
<div class="flex space-x-2">
<button class="p-2 bg-white rounded-md shadow-sm text-gray-600 hover:bg-gray-50">
<i class="fas fa-expand"></i>
</button>
<button class="p-2 bg-white rounded-md shadow-sm text-gray-600 hover:bg-gray-50">
<i class="fas fa-cog"></i>
</button>
</div>
</div>
<!-- Placeholder for 3D model viewer -->
<div class="flex-1 bg-white rounded-lg flex items-center justify-center">
<div class="text-center p-6">
<i class="fas fa-cube text-5xl text-gray-300 mb-4"></i>
<h4 class="text-lg font-medium text-gray-600">3D Model Viewer</h4>
<p class="text-gray-500 mt-2">Interactive BIM model would appear here</p>
<button class="mt-4 px-4 py-2 bg-indigo-600 text-white rounded-md text-sm">
Load Model
</button>
</div>
</div>
<div class="mt-4 flex justify-between items-center">
<div class="flex space-x-2">
<button class="p-2 bg-white rounded-md shadow-sm text-gray-600 hover:bg-gray-50">
<i class="fas fa-arrows-alt"></i>
</button>
<button class="p-2 bg-white rounded-md shadow-sm text-gray-600 hover:bg-gray-50">
<i class="fas fa-crop"></i>
</button>
<button class="p-2 bg-white rounded-md shadow-sm text-gray-600 hover:bg-gray-50">
<i class="fas fa-ruler"></i>
</button>
</div>
<div class="text-sm text-gray-500">
<span>Version 3.2.1</span>
<span class="mx-2">|</span>
<span>Last updated: 2 hours ago</span>
</div>
</div>
</div>
</div>
<!-- Model Details and Elements -->
<div class="space-y-6">
<!-- Model Information -->
<div class="bg-white rounded-lg shadow-sm p-4">
<div class="flex justify-between items-center mb-4">
<h3 class="font-medium text-gray-700">Model Information</h3>
<button class="text-indigo-600 hover:text-indigo-800">
<i class="fas fa-pencil-alt"></i>
</button>
</div>
<div class="space-y-3">
<div>
<label class="text-xs text-gray-500">Project Name</label>
<p class="font-medium">New York Public Library - Renovation</p>
</div>
<div>
<label class="text-xs text-gray-500">Location</label>
<p class="font-medium">476 5th Ave, New York, NY 10018</p>
</div>
<div>
<label class="text-xs text-gray-500">BIM Manager</label>
<p class="font-medium">John Doe</p>
</div>
<div>
<label class="text-xs text-gray-500">Status</label>
<span class="px-2 py-1 bg-green-100 text-green-800 rounded-full text-xs font-medium">In Progress</span>
</div>
</div>
</div>
<!-- Model Elements -->
<div class="bg-white rounded-lg shadow-sm p-4">
<div class="flex justify-between items-center mb-4">
<h3 class="font-medium text-gray-700">Model Elements</h3>
<div class="flex space-x-2">
<button class="text-indigo-600 hover:text-indigo-800">
<i class="fas fa-plus"></i>
</button>
<button class="text-gray-500 hover:text-gray-700">
<i class="fas fa-filter"></i>
</button>
</div>
</div>
<div class="space-y-3 max-h-64 overflow-y-auto">
<div class="bim-element p-3 border border-gray-100 rounded-lg hover:border-indigo-200 cursor-pointer">
<div class="flex justify-between items-center">
<div class="flex items-center space-x-3">
<div class="h-8 w-8 rounded-md bg-blue-100 flex items-center justify-center text-blue-600">
<i class="fas fa-columns"></i>
</div>
<div>
<p class="font-medium">Structural Columns</p>
<p class="text-xs text-gray-500">42 elements</p>
</div>
</div>
<i class="fas fa-chevron-right text-gray-400"></i>
</div>
</div>
<div class="bim-element p-3 border border-gray-100 rounded-lg hover:border-indigo-200 cursor-pointer">
<div class="flex justify-between items-center">
<div class="flex items-center space-x-3">
<div class="h-8 w-8 rounded-md bg-purple-100 flex items-center justify-center text-purple-600">
<i class="fas fa-book"></i>
</div>
<div>
<p class="font-medium">Bookshelves</p>
<p class="text-xs text-gray-500">128 elements</p>
</div>
</div>
<i class="fas fa-chevron-right text-gray-400"></i>
</div>
</div>
<div class="bim-element p-3 border border-gray-100 rounded-lg hover:border-indigo-200 cursor-pointer">
<div class="flex justify-between items-center">
<div class="flex items-center space-x-3">
<div class="h-8 w-8 rounded-md bg-yellow-100 flex items-center justify-center text-yellow-600">
<i class="fas fa-lightbulb"></i>
</div>
<div>
<p class="font-medium">Lighting Fixtures</p>
<p class="text-xs text-gray-500">76 elements</p>
</div>
</div>
<i class="fas fa-chevron-right text-gray-400"></i>
</div>
</div>
<div class="bim-element p-3 border border-gray-100 rounded-lg hover:border-indigo-200 cursor-pointer">
<div class="flex justify-between items-center">
<div class="flex items-center space-x-3">
<div class="h-8 w-8 rounded-md bg-green-100 flex items-center justify-center text-green-600">
<i class="fas fa-chair"></i>
</div>
<div>
<p class="font-medium">Reading Chairs</p>
<p class="text-xs text-gray-500">64 elements</p>
</div>
</div>
<i class="fas fa-chevron-right text-gray-400"></i>
</div>
</div>
<div class="bim-element p-3 border border-gray-100 rounded-lg hover:border-indigo-200 cursor-pointer">
<div class="flex justify-between items-center">
<div class="flex items-center space-x-3">
<div class="h-8 w-8 rounded-md bg-red-100 flex items-center justify-center text-red-600">
<i class="fas fa-fire-extinguisher"></i>
</div>
<div>
<p class="font-medium">Safety Equipment</p>
<p class="text-xs text-gray-500">18 elements</p>
</div>
</div>
<i class="fas fa-chevron-right text-gray-400"></i>
</div>
</div>
</div>
</div>
<!-- Collaboration -->
<div class="bg-white rounded-lg shadow-sm p-4">
<div class="flex justify-between items-center mb-4">
<h3 class="font-medium text-gray-700">Collaborators</h3>
<button class="text-indigo-600 hover:text-indigo-800">
<i class="fas fa-user-plus"></i>
</button>
</div>
<div class="flex flex-wrap gap-3">
<div class="collaboration-avatar relative">
<div class="h-10 w-10 rounded-full bg-indigo-600 flex items-center justify-center text-white font-medium">JD</div>
<div class="absolute -bottom-1 -right-1 h-4 w-4 rounded-full bg-green-500 border-2 border-white"></div>
</div>
<div class="collaboration-avatar relative">
<div class="h-10 w-10 rounded-full bg-purple-600 flex items-center justify-center text-white font-medium">AS</div>
<div class="absolute -bottom-1 -right-1 h-4 w-4 rounded-full bg-green-500 border-2 border-white"></div>
</div>
<div class="collaboration-avatar relative">
<div class="h-10 w-10 rounded-full bg-pink-600 flex items-center justify-center text-white font-medium">MR</div>
<div class="absolute -bottom-1 -right-1 h-4 w-4 rounded-full bg-yellow-500 border-2 border-white"></div>
</div>
<div class="collaboration-avatar relative">
<div class="h-10 w-10 rounded-full bg-blue-600 flex items-center justify-center text-white font-medium">TW</div>
<div class="absolute -bottom-1 -right-1 h-4 w-4 rounded-full bg-gray-500 border-2 border-white"></div>
</div>
<div class="collaboration-avatar relative">
<div class="h-10 w-10 rounded-full bg-green-600 flex items-center justify-center text-white font-medium">+3</div>
</div>
</div>
<div class="mt-4 p-3 bg-gray-50 rounded-lg">
<div class="flex items-start space-x-3">
<div class="flex-shrink-0">
<div class="h-8 w-8 rounded-full bg-indigo-100 flex items-center justify-center text-indigo-600">
<i class="fas fa-comment-alt"></i>
</div>
</div>
<div class="flex-1 min-w-0">
<p class="text-sm font-medium text-gray-800">John Doe</p>
<p class="text-sm text-gray-600">Has anyone reviewed the updated lighting plan for the reading area?</p>
<p class="text-xs text-gray-400 mt-1">2 minutes ago</p>
</div>
</div>
</div>
<div class="mt-3 flex items-center space-x-2">
<input type="text" placeholder="Add a comment..." class="flex-1 px-3 py-2 border border-gray-300 rounded-md text-sm">
<button class="p-2 bg-indigo-600 text-white rounded-md">
<i class="fas fa-paper-plane"></i>
</button>
</div>
</div>
</div>
</div>
<!-- Recent Activity -->
<div class="mt-6 bg-white rounded-lg shadow-sm p-4">
<div class="flex justify-between items-center mb-4">
<h3 class="font-medium text-gray-700">Recent Activity</h3>
<button class="text-sm text-indigo-600 hover:text-indigo-800">View All</button>
</div>
<div class="space-y-4">
<div class="flex items-start space-x-3">
<div class="flex-shrink-0">
<div class="h-8 w-8 rounded-full bg-blue-100 flex items-center justify-center text-blue-600">
<i class="fas fa-file-upload"></i>
</div>
</div>
<div class="flex-1 min-w-0">
<p class="text-sm text-gray-800"><span class="font-medium">Sarah Johnson</span> uploaded new version of <span class="font-medium">Structural_Plan.rvt</span></p>
<p class="text-xs text-gray-400 mt-1">1 hour ago</p>
</div>
</div>
<div class="flex items-start space-x-3">
<div class="flex-shrink-0">
<div class="h-8 w-8 rounded-full bg-green-100 flex items-center justify-center text-green-600">
<i class="fas fa-check-circle"></i>
</div>
</div>
<div class="flex-1 min-w-0">
<p class="text-sm text-gray-800"><span class="font-medium">Michael Chen</span> approved the <span class="font-medium">Lighting Design</span></p>
<p class="text-xs text-gray-400 mt-1">3 hours ago</p>
</div>
</div>
<div class="flex items-start space-x-3">
<div class="flex-shrink-0">
<div class="h-8 w-8 rounded-full bg-purple-100 flex items-center justify-center text-purple-600">
<i class="fas fa-comment"></i>
</div>
</div>
<div class="flex-1 min-w-0">
<p class="text-sm text-gray-800"><span class="font-medium">Alex Smith</span> commented on <span class="font-medium">Bookshelf Layout</span>: "We need to adjust spacing for accessibility"</p>
<p class="text-xs text-gray-400 mt-1">5 hours ago</p>
</div>
</div>
</div>
</div>
</main>
</div>
</div>
<!-- Model Properties Panel (hidden by default) -->
<div id="propertiesPanel" class="fixed right-0 top-0 h-full w-80 bg-white shadow-lg transform translate-x-full transition-transform duration-300 z-40">
<div class="p-4 border-b border-gray-200 flex justify-between items-center">
<h3 class="font-medium text-gray-700">Element Properties</h3>
<button id="closeProperties" class="text-gray-500 hover:text-gray-700">
<i class="fas fa-times"></i>
</button>
</div>
<div class="p-4 overflow-y-auto h-full">
<div class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Element Type</label>
<p class="text-sm bg-gray-100 p-2 rounded">Bookshelf - Standard (Type A)</p>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Dimensions</label>
<div class="grid grid-cols-3 gap-2">
<div>
<label class="block text-xs text-gray-500">Width</label>
<p class="text-sm bg-gray-100 p-2 rounded">900 mm</p>
</div>
<div>
<label class="block text-xs text-gray-500">Height</label>
<p class="text-sm bg-gray-100 p-2 rounded">2200 mm</p>
</div>
<div>
<label class="block text-xs text-gray-500">Depth</label>
<p class="text-sm bg-gray-100 p-2 rounded">300 mm</p>
</div>
</div>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Material</label>
<p class="text-sm bg-gray-100 p-2 rounded">Solid Oak with Clear Finish</p>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Fire Rating</label>
<p class="text-sm bg-gray-100 p-2 rounded">30 minutes</p>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Accessibility</label>
<p class="text-sm bg-gray-100 p-2 rounded">Compliant with ADA standards</p>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Manufacturer</label>
<p class="text-sm bg-gray-100 p-2 rounded">Library Furnishings Inc.</p>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Notes</label>
<textarea class="w-full border border-gray-300 rounded-md p-2 text-sm" rows="3">Adjust shelf heights to accommodate oversized art books in this section.</textarea>
</div>
<div class="pt-4">
<button class="w-full bg-indigo-600 text-white py-2 rounded-md text-sm font-medium">
Save Changes
</button>
</div>
</div>
</div>
</div>
<script>
// Toggle mobile sidebar
document.getElementById('mobileSidebarToggle').addEventListener('click', function() {
document.querySelector('.sidebar').classList.add('active');
});
document.getElementById('sidebarToggle').addEventListener('click', function() {
document.querySelector('.sidebar').classList.remove('active');
});
// Toggle properties panel
document.querySelectorAll('.bim-element').forEach(element => {
element.addEventListener('click', function() {
document.getElementById('propertiesPanel').classList.remove('translate-x-full');
});
});
document.getElementById('closeProperties').addEventListener('click', function() {
document.getElementById('propertiesPanel').classList.add('translate-x-full');
});
// Simulate loading a model
document.querySelector('.model-viewer button').addEventListener('click', function() {
const viewerPlaceholder = document.querySelector('.model-viewer .bg-white');
viewerPlaceholder.innerHTML = `
<div class="w-full h-full flex items-center justify-center">
<div class="text-center">
<div class="animate-spin rounded-full h-12 w-12 border-b-2 border-indigo-600 mx-auto mb-4"></div>
<p class="text-gray-600">Loading BIM model...</p>
</div>
</div>
`;
setTimeout(() => {
viewerPlaceholder.innerHTML = `
<div class="w-full h-full relative">
<div class="absolute inset-0 flex items-center justify-center bg-gray-100 rounded-lg">
<div class="text-center">
<i class="fas fa-cube text-5xl text-indigo-400 mb-4"></i>
<h4 class="text-lg font-medium text-gray-700">NYPL Renovation Model</h4>
<p class="text-gray-500 mt-2">Interactive 3D model loaded</p>
</div>
</div>
<div class="absolute top-4 right-4 flex space-x-2">
<button class="p-2 bg-white rounded-md shadow-sm text-gray-600 hover:bg-gray-50">
<i class="fas fa-layer-group"></i>
</button>
<button class="p-2 bg-white rounded-md shadow-sm text-gray-600 hover:bg-gray-50">
<i class="fas fa-eye"></i>
</button>
</div>
</div>
`;
}, 2000);
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=JarlJarle/bimlibai" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>