-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexperiments.html
More file actions
240 lines (227 loc) · 11.8 KB
/
Copy pathexperiments.html
File metadata and controls
240 lines (227 loc) · 11.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
<!DOCTYPE html>
<html lang="en" data-theme="dark">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Virtual Laboratory - SPGE</title>
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700;900&family=Inter:wght@300;400;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/style.css" />
<link rel="stylesheet" href="css/footer.css" />
<link rel="stylesheet" href="css/modal.css" />
</head>
<body> <nav class="navbar">
<div class="nav-container">
<div class="nav-logo">
<h2>🧪 SPGE</h2>
</div>
<ul class="nav-menu">
<li><a href="index.html">Home</a></li>
<li><a href="about.html">About</a></li>
<li><a href="experiments.html" class="active">Laboratory</a></li>
</ul> <div class="nav-controls">
<div class="language-selector">
<button class="lang-btn active" data-lang="en">EN</button>
<button class="lang-btn" data-lang="bg">БГ</button>
</div>
</div>
</div>
</nav>
<main class="main-content"> <section class="experiments-intro">
<div class="container">
<h2 data-lang-key="experiments-title">Virtual Chemistry Laboratory</h2>
<p class="lead" data-lang-key="experiments-intro">Explore interactive chemistry experiments from the safety of your browser. Learn fundamental principles through hands-on simulations.</p>
</div>
</section>
<section class="experiments-catalog">
<div class="container">
<h3 data-lang-key="available-experiments">Available Experiments</h3>
<div class="experiments-grid"> <div class="experiment-card">
<h4>Combustion Analysis</h4>
<p>Explore the chemical reaction between fuel and oxygen, and measure the heat released.</p>
<button class="experiment-btn" data-experiment="combustion-advanced" data-lang-key="start-experiment">Start Experiment</button>
</div>
<div class="experiment-card">
<h4>Acid-Base Titration</h4>
<p>Determine the concentration of an acid or base by adding a solution of known concentration.</p>
<button class="experiment-btn" data-experiment="acid-base" data-lang-key="start-experiment">Start Experiment</button>
</div>
<div class="experiment-card">
<h4>Color Change Reactions</h4>
<p>Observe and analyze color changes in chemical reactions and learn about indicators.</p>
<button class="experiment-btn" data-experiment="color-change" data-lang-key="start-experiment">Start Experiment</button>
</div>
<div class="experiment-card">
<h4>Electrolysis</h4>
<p>Study the decomposition of substances using electricity and observe electron transfer.</p>
<button class="experiment-btn" data-experiment="electrolysis" data-lang-key="start-experiment">Start Experiment</button>
</div>
<div class="experiment-card">
<h4>Galvanic Cells</h4>
<p>Build batteries from chemical reactions and understand electrochemical principles.</p>
<button class="experiment-btn" data-experiment="galvanic" data-lang-key="start-experiment">Start Experiment</button>
</div>
<div class="experiment-card">
<h4>Polymer Synthesis</h4>
<p>Create polymers through chemical reactions and observe their properties.</p>
<button class="experiment-btn" data-experiment="polymer" data-lang-key="start-experiment">Start Experiment</button>
</div>
<div class="experiment-card">
<h4>Chromatography</h4>
<p>Separate and analyze mixtures based on different rates of migration.</p>
<button class="experiment-btn" data-experiment="chromatography" data-lang-key="start-experiment">Start Experiment</button>
</div>
</div>
</div>
</section>
<section class="laboratory-workspace">
<div class="container">
<h3>Laboratory Workspace</h3>
<div class="workspace-content"> <div class="workspace-header">
<h4 id="experimentTitle" data-lang-key="select-experiment">Select an experiment to begin</h4>
<div class="workspace-controls">
<button id="resetExperiment" class="control-btn" disabled data-lang-key="reset-experiment">Reset</button>
<button id="saveResults" class="control-btn" disabled data-lang-key="save-results">Save Results</button>
<button id="downloadData" class="control-btn" disabled data-lang-key="download-data">Download Data</button>
</div>
</div>
<div id="experimentWorkspace" class="experiment-workspace">
<div class="experiment-placeholder">
<p>Select an experiment from the catalog above to begin your virtual lab session</p>
<div class="lab-equipment-icons">
<!-- Lab equipment illustration -->
<span class="equipment">🧪</span>
<span class="equipment">🔬</span>
<span class="equipment">🧫</span>
<span class="equipment">⚗️</span>
<span class="equipment">🧑🔬</span>
</div>
</div>
</div>
<div class="data-collection">
<h4>Data Collection</h4>
<div id="dataCollection" class="data-grid">
<!-- Data points will appear here -->
<p class="no-data-message">No data collected yet</p>
</div>
</div>
</div>
</div>
</section>
<section class="lab-progress"> <div class="container">
<h3 data-lang-key="lab-progress">Your Lab Progress</h3>
<div class="progress-container">
<div class="progress-bar">
<div id="progressFill" class="progress-fill"></div>
</div>
<div class="progress-stats"> <p data-lang-key="experiments-completed">Experiments Completed: <span id="experimentsCompleted">0</span>/7</p>
<p data-lang-key="data-points">Data Points Collected: <span id="dataPointsCollected">0</span></p>
<p data-lang-key="achievement-level">Achievement Level: <span id="achievementLevel">Beginner Scientist</span></p>
</div>
</div>
</div>
</section>
</main>
<footer class="footer">
<div class="container">
<div class="footer-content">
<div class="footer-logo">
<h3>SPGE "John Atanasoff"</h3>
<p>The Chemistry of Innovation</p>
</div>
<div class="footer-links">
<a href="https://github.com/SPGE-DNA/SPGE-Elements" class="footer-link" target="_blank" rel="noopener">Github</a>
</div>
<div class="footer-social">
<div class="dev-credits">
<p><strong>Made by:</strong></p>
<p>Ivaylo Popov - main dev</p>
<p>Krum Lubomirov - frontend dev</p>
<p>Viktor Ludov - Info gatherer, Project leader</p>
<p>Ivan Yochev - Info gatherer, backend dev</p>
</div>
</div>
</div>
<div class="footer-bottom">
<p>© 2025 SPGE "John Atanasoff". All rights reserved.</p>
</div>
</div>
</footer>
<!-- Experiment Report Modal -->
<div id="reportModal" class="modal">
<div class="modal-content">
<span class="close" id="closeReportModal">×</span>
<div class="modal-header">
<h3>Experiment Report</h3>
</div>
<div class="modal-body" id="reportContent">
<!-- Report content will be generated dynamically -->
</div>
</div>
</div>
<script src="js/language.js"></script>
<script src="js/main.js"></script>
<script src="js/experiments.js"></script>
<!-- Add data attributes for Bulgarian translations of experiment descriptions -->
<script>
// Bulgarian translations for experiment descriptions
const experimentDescriptionsBg = {
'combustion-advanced': 'Изследвайте химичната реакция между горивото и кислорода и измерете отделената топлина.',
'acid-base': 'Определете концентрацията на киселина или основа чрез добавяне на разтвор с известна концентрация.',
'color-change': 'Наблюдавайте и анализирайте промените в цвета при химични реакции и научете за индикаторите.',
'electrolysis': 'Изучете разлагането на вещества чрез електричество и наблюдавайте пренос на електрони.',
'galvanic': 'Изградете батерии от химични реакции и разберете електрохимичните принципи.',
'polymer': 'Създайте полимери чрез химични реакции и наблюдайте техните свойства.',
'chromatography': 'Разделяйте и анализирайте смеси въз основа на различни скорости на миграция.'
};
// Apply translations when page loads and when language changes
document.addEventListener('DOMContentLoaded', function() {
updateExperimentDescriptions();
});
document.addEventListener('languageChanged', function(e) {
updateExperimentDescriptions();
});
function updateExperimentDescriptions() {
const cards = document.querySelectorAll('.experiment-card');
const currentLang = getCurrentLanguage ? getCurrentLanguage() : 'en';
cards.forEach(card => {
const experimentType = card.querySelector('.experiment-btn').dataset.experiment;
const descriptionElement = card.querySelector('p');
if (currentLang === 'bg' && experimentDescriptionsBg[experimentType]) {
descriptionElement.textContent = experimentDescriptionsBg[experimentType];
} else {
// Reset to English if needed (when switching back from Bulgarian)
if (currentLang === 'en') {
switch(experimentType) {
case 'combustion-advanced':
descriptionElement.textContent = 'Explore the chemical reaction between fuel and oxygen, and measure the heat released.';
break;
case 'acid-base':
descriptionElement.textContent = 'Determine the concentration of an acid or base by adding a solution of known concentration.';
break;
case 'color-change':
descriptionElement.textContent = 'Observe and analyze color changes in chemical reactions and learn about indicators.';
break;
case 'electrolysis':
descriptionElement.textContent = 'Study the decomposition of substances using electricity and observe electron transfer.';
break;
case 'galvanic':
descriptionElement.textContent = 'Build batteries from chemical reactions and understand electrochemical principles.';
break;
case 'polymer':
descriptionElement.textContent = 'Create polymers through chemical reactions and observe their properties.';
break;
case 'chromatography':
descriptionElement.textContent = 'Separate and analyze mixtures based on different rates of migration.';
break;
}
}
}
});
} </script> <!-- Back to Top Button -->
<button id="backToTopBtn" aria-label="Back to top" title="Back to top">
<span>↑</span>
</button>
<!-- Load utility functions -->
<script src="js/utilities.js"></script>
</body>
</html>