secutorpro commited on
Commit
6f116e6
·
verified ·
1 Parent(s): 424fe85

appel video avec plusieurs encrant de suivie par l'ia , connection appel 4g 5 g 3g , connection wifi Bluetooth , radio fréquence FM 85 mhz , tout geré par llama

Browse files
Files changed (4) hide show
  1. components/navbar.js +5 -1
  2. components/video-call.js +218 -0
  3. index.html +1 -0
  4. video-call.html +79 -0
components/navbar.js CHANGED
@@ -71,7 +71,7 @@ class CustomNavbar extends HTMLElement {
71
  <span>ComSync Pro</span>
72
  </a>
73
  <div class="nav-links">
74
- <a href="/" class="nav-link active">
75
  <i data-feather="map"></i>
76
  <span>Dashboard</span>
77
  </a>
@@ -79,6 +79,10 @@ class CustomNavbar extends HTMLElement {
79
  <i data-feather="message-circle"></i>
80
  <span>AI Assistant</span>
81
  </a>
 
 
 
 
82
  </div>
83
  </div>
84
  </nav>
 
71
  <span>ComSync Pro</span>
72
  </a>
73
  <div class="nav-links">
74
+ <a href="/" class="nav-link">
75
  <i data-feather="map"></i>
76
  <span>Dashboard</span>
77
  </a>
 
79
  <i data-feather="message-circle"></i>
80
  <span>AI Assistant</span>
81
  </a>
82
+ <a href="/video-call.html" class="nav-link">
83
+ <i data-feather="video"></i>
84
+ <span>Video Call</span>
85
+ </a>
86
  </div>
87
  </div>
88
  </nav>
components/video-call.js ADDED
@@ -0,0 +1,218 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class VideoCall extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ width: 100%;
9
+ height: 100%;
10
+ }
11
+ .video-container {
12
+ display: grid;
13
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
14
+ gap: 1rem;
15
+ padding: 1rem;
16
+ background: rgba(31, 41, 55, 0.8);
17
+ border-radius: 0.75rem;
18
+ border: 1px solid rgba(75, 85, 99, 0.5);
19
+ }
20
+ .video-box {
21
+ position: relative;
22
+ aspect-ratio: 16/9;
23
+ background: #111827;
24
+ border-radius: 0.5rem;
25
+ overflow: hidden;
26
+ }
27
+ .video-feed {
28
+ width: 100%;
29
+ height: 100%;
30
+ object-fit: cover;
31
+ }
32
+ .video-label {
33
+ position: absolute;
34
+ bottom: 0;
35
+ left: 0;
36
+ right: 0;
37
+ background: rgba(0, 0, 0, 0.7);
38
+ padding: 0.5rem;
39
+ color: white;
40
+ font-size: 0.875rem;
41
+ display: flex;
42
+ justify-content: space-between;
43
+ }
44
+ .connection-status {
45
+ display: flex;
46
+ gap: 0.5rem;
47
+ align-items: center;
48
+ }
49
+ .status-indicator {
50
+ width: 0.5rem;
51
+ height: 0.5rem;
52
+ border-radius: 50%;
53
+ }
54
+ .online { background: #10B981; }
55
+ .offline { background: #EF4444; }
56
+ .weak { background: #F59E0B; }
57
+ .controls {
58
+ display: flex;
59
+ justify-content: center;
60
+ gap: 1rem;
61
+ padding: 1rem;
62
+ background: rgba(31, 41, 55, 0.8);
63
+ border-radius: 0.75rem;
64
+ margin-top: 1rem;
65
+ border: 1px solid rgba(75, 85, 99, 0.5);
66
+ }
67
+ .control-btn {
68
+ width: 3rem;
69
+ height: 3rem;
70
+ border-radius: 50%;
71
+ display: flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ cursor: pointer;
75
+ transition: all 0.2s;
76
+ }
77
+ .end-call {
78
+ background: #EF4444;
79
+ }
80
+ .mute {
81
+ background: #3B82F6;
82
+ }
83
+ .video-toggle {
84
+ background: #3B82F6;
85
+ }
86
+ .ai-analysis {
87
+ background: #8B5CF6;
88
+ }
89
+ .ai-tracking {
90
+ position: absolute;
91
+ top: 0;
92
+ left: 0;
93
+ right: 0;
94
+ padding: 0.5rem;
95
+ background: rgba(0, 0, 0, 0.5);
96
+ color: white;
97
+ font-size: 0.75rem;
98
+ }
99
+ .network-info {
100
+ position: absolute;
101
+ top: 0.5rem;
102
+ right: 0.5rem;
103
+ background: rgba(0, 0, 0, 0.7);
104
+ padding: 0.25rem 0.5rem;
105
+ border-radius: 0.25rem;
106
+ font-size: 0.75rem;
107
+ color: white;
108
+ }
109
+ </style>
110
+ <div class="video-container">
111
+ <!-- Main Video Feed -->
112
+ <div class="video-box">
113
+ <video class="video-feed" autoplay muted></video>
114
+ <div class="video-label">
115
+ <span>You</span>
116
+ <div class="connection-status">
117
+ <div class="status-indicator online"></div>
118
+ <span>4G</span>
119
+ </div>
120
+ </div>
121
+ <div class="ai-tracking">AI Tracking: Facial Recognition Active</div>
122
+ <div class="network-info">85 MHz FM</div>
123
+ </div>
124
+
125
+ <!-- Remote Video Feeds -->
126
+ <div class="video-box">
127
+ <video class="video-feed" autoplay></video>
128
+ <div class="video-label">
129
+ <span>John Smith</span>
130
+ <div class="connection-status">
131
+ <div class="status-indicator online"></div>
132
+ <span>5G</span>
133
+ </div>
134
+ </div>
135
+ <div class="ai-tracking">AI Tracking: Location Tracking Active</div>
136
+ <div class="network-info">WiFi</div>
137
+ </div>
138
+
139
+ <div class="video-box">
140
+ <video class="video-feed" autoplay></video>
141
+ <div class="video-label">
142
+ <span>Maria Garcia</span>
143
+ <div class="connection-status">
144
+ <div class="status-indicator weak"></div>
145
+ <span>3G</span>
146
+ </div>
147
+ </div>
148
+ <div class="ai-tracking">AI Tracking: Vital Signs Monitoring</div>
149
+ <div class="network-info">Bluetooth</div>
150
+ </div>
151
+
152
+ <div class="video-box">
153
+ <video class="video-feed" autoplay></video>
154
+ <div class="video-label">
155
+ <span>Robert Johnson</span>
156
+ <div class="connection-status">
157
+ <div class="status-indicator offline"></div>
158
+ <span>Offline</span>
159
+ </div>
160
+ </div>
161
+ <div class="ai-tracking">AI Tracking: Last Known Position</div>
162
+ <div class="network-info">85 MHz FM</div>
163
+ </div>
164
+ </div>
165
+
166
+ <div class="controls">
167
+ <div class="control-btn mute">
168
+ <i data-feather="mic-off"></i>
169
+ </div>
170
+ <div class="control-btn video-toggle">
171
+ <i data-feather="video"></i>
172
+ </div>
173
+ <div class="control-btn ai-analysis">
174
+ <i data-feather="activity"></i>
175
+ </div>
176
+ <div class="control-btn end-call">
177
+ <i data-feather="phone-off"></i>
178
+ </div>
179
+ </div>
180
+ `;
181
+
182
+ // Initialize Feather Icons
183
+ const script = document.createElement('script');
184
+ script.src = "https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js";
185
+ script.onload = () => {
186
+ if (this.shadowRoot) {
187
+ window.feather.replace();
188
+ }
189
+ };
190
+ this.shadowRoot.appendChild(script);
191
+
192
+ // Simulate connection changes
193
+ this.simulateConnectionChanges();
194
+ }
195
+
196
+ simulateConnectionChanges() {
197
+ const connections = this.shadowRoot.querySelectorAll('.connection-status');
198
+
199
+ setInterval(() => {
200
+ connections.forEach(conn => {
201
+ const status = conn.querySelector('.status-indicator');
202
+ const network = conn.querySelector('span:last-child');
203
+
204
+ const random = Math.random();
205
+ if (random > 0.8) {
206
+ // Change status
207
+ const states = ['online', 'weak', 'offline'];
208
+ const networks = ['4G', '5G', '3G', 'WiFi', 'Bluetooth', '85 MHz FM'];
209
+
210
+ status.className = 'status-indicator ' + states[Math.floor(Math.random() * states.length)];
211
+ network.textContent = networks[Math.floor(Math.random() * networks.length)];
212
+ }
213
+ });
214
+ }, 5000);
215
+ }
216
+ }
217
+
218
+ customElements.define('video-call', VideoCall);
index.html CHANGED
@@ -790,5 +790,6 @@
790
  updateMemberDetails(currentSelectedMember);
791
  </script>
792
  <script src="components/navbar.js"></script>
 
793
  </body>
794
  </html>
 
790
  updateMemberDetails(currentSelectedMember);
791
  </script>
792
  <script src="components/navbar.js"></script>
793
+ <script src="components/video-call.js"></script>
794
  </body>
795
  </html>
video-call.html ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Video Call - ComSync Pro</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://unpkg.com/feather-icons"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
+ <script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.net.min.js"></script>
11
+ <style>
12
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
13
+ body {
14
+ font-family: 'Inter', sans-serif;
15
+ }
16
+ .scrollbar-hide::-webkit-scrollbar {
17
+ display: none;
18
+ }
19
+ </style>
20
+ </head>
21
+ <body class="bg-gray-900 text-gray-100">
22
+ <custom-navbar></custom-navbar>
23
+ <div id="vanta-bg" class="fixed inset-0 z-0"></div>
24
+ <div class="relative z-10 min-h-screen p-4 md:p-6">
25
+ <header class="bg-gray-800/80 backdrop-blur-md rounded-xl p-4 mb-6 border border-gray-700/50 shadow-lg">
26
+ <div class="flex items-center justify-between">
27
+ <div class="flex items-center space-x-3">
28
+ <i data-feather="video" class="w-8 h-8 text-purple-400"></i>
29
+ <h1 class="text-2xl font-bold bg-gradient-to-r from-purple-400 to-blue-400 bg-clip-text text-transparent">Team Video Call</h1>
30
+ </div>
31
+ <div class="flex items-center space-x-4">
32
+ <div class="flex items-center space-x-1">
33
+ <i data-feather="cpu" class="w-5 h-5 text-green-400"></i>
34
+ <span class="text-sm">Llama AI</span>
35
+ </div>
36
+ <div class="flex items-center space-x-1">
37
+ <i data-feather="clock" class="w-5 h-5"></i>
38
+ <span class="text-sm" id="current-time">14:45:32</span>
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </header>
43
+
44
+ <video-call></video-call>
45
+ </div>
46
+
47
+ <script>
48
+ // Initialize Vanta.js background
49
+ VANTA.NET({
50
+ el: "#vanta-bg",
51
+ mouseControls: true,
52
+ touchControls: true,
53
+ gyroControls: false,
54
+ minHeight: 200.00,
55
+ minWidth: 200.00,
56
+ scale: 1.00,
57
+ scaleMobile: 1.00,
58
+ color: 0x8b5cf6,
59
+ backgroundColor: 0x111827,
60
+ points: 10.00,
61
+ maxDistance: 22.00,
62
+ spacing: 18.00
63
+ });
64
+
65
+ // Update current time
66
+ function updateTime() {
67
+ const now = new Date();
68
+ document.getElementById('current-time').textContent = now.toLocaleTimeString();
69
+ }
70
+ setInterval(updateTime, 1000);
71
+ updateTime();
72
+
73
+ // Initialize Feather Icons
74
+ feather.replace();
75
+ </script>
76
+ <script src="components/navbar.js"></script>
77
+ <script src="components/video-call.js"></script>
78
+ </body>
79
+ </html>