Spaces:
Sleeping
Sleeping
Update templates/philosophie.html
Browse files- templates/philosophie.html +38 -8
templates/philosophie.html
CHANGED
|
@@ -1,4 +1,3 @@
|
|
| 1 |
-
--- START OF FILE philosophie (13).html ---
|
| 2 |
|
| 3 |
<!DOCTYPE html>
|
| 4 |
<html lang="fr">
|
|
@@ -58,7 +57,7 @@
|
|
| 58 |
}
|
| 59 |
|
| 60 |
.form-group {
|
| 61 |
-
margin-bottom:
|
| 62 |
}
|
| 63 |
|
| 64 |
label {
|
|
@@ -73,8 +72,7 @@
|
|
| 73 |
padding: 15px;
|
| 74 |
border-radius: 8px;
|
| 75 |
border: 1px solid var(--border-color);
|
| 76 |
-
min-height: 58px;
|
| 77 |
-
margin-bottom: 15px;
|
| 78 |
font-size: 16px;
|
| 79 |
line-height: 1.6;
|
| 80 |
transition: border-color 0.3s, box-shadow 0.3s;
|
|
@@ -82,6 +80,7 @@
|
|
| 82 |
-webkit-appearance: none;
|
| 83 |
-moz-appearance: none;
|
| 84 |
appearance: none;
|
|
|
|
| 85 |
}
|
| 86 |
|
| 87 |
.form-select {
|
|
@@ -205,6 +204,17 @@
|
|
| 205 |
<option value="type2">Type 2 (Introduction autour d'une citation)</option>
|
| 206 |
</select>
|
| 207 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 208 |
<div class="form-group">
|
| 209 |
<label for="question">Entrez votre sujet de dissertation</label>
|
| 210 |
<textarea id="question" v-model="question" placeholder="Entrez votre sujet ou la citation à analyser ici..."></textarea>
|
|
@@ -246,13 +256,15 @@
|
|
| 246 |
</div>
|
| 247 |
|
| 248 |
<script>
|
| 249 |
-
const { createApp
|
| 250 |
|
| 251 |
const app = createApp({
|
| 252 |
data() {
|
| 253 |
return {
|
| 254 |
question: '',
|
| 255 |
-
dissertationType: 'type1',
|
|
|
|
|
|
|
| 256 |
isLoading: false,
|
| 257 |
errorMessage: null,
|
| 258 |
dissertation: null
|
|
@@ -263,7 +275,23 @@
|
|
| 263 |
return this.dissertationType === 'type1' ? 'Type 1' : 'Type 2';
|
| 264 |
}
|
| 265 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 266 |
methods: {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 267 |
async generateDissertation() {
|
| 268 |
if (!this.question.trim()) {
|
| 269 |
this.errorMessage = "Veuillez entrer un sujet de dissertation.";
|
|
@@ -276,10 +304,10 @@
|
|
| 276 |
const response = await fetch('/api/generate_dissertation', {
|
| 277 |
method: 'POST',
|
| 278 |
headers: { 'Content-Type': 'application/json' },
|
| 279 |
-
// Envoi du sujet ET du type
|
| 280 |
body: JSON.stringify({
|
| 281 |
question: this.question,
|
| 282 |
-
type: this.dissertationType
|
|
|
|
| 283 |
})
|
| 284 |
});
|
| 285 |
const data = await response.json();
|
|
@@ -328,7 +356,9 @@
|
|
| 328 |
}
|
| 329 |
});
|
| 330 |
|
|
|
|
| 331 |
app.config.compilerOptions.delimiters = ['[[', ']]'];
|
|
|
|
| 332 |
app.mount('#app');
|
| 333 |
</script>
|
| 334 |
</body>
|
|
|
|
|
|
|
| 1 |
|
| 2 |
<!DOCTYPE html>
|
| 3 |
<html lang="fr">
|
|
|
|
| 57 |
}
|
| 58 |
|
| 59 |
.form-group {
|
| 60 |
+
margin-bottom: 20px;
|
| 61 |
}
|
| 62 |
|
| 63 |
label {
|
|
|
|
| 72 |
padding: 15px;
|
| 73 |
border-radius: 8px;
|
| 74 |
border: 1px solid var(--border-color);
|
| 75 |
+
min-height: 58px;
|
|
|
|
| 76 |
font-size: 16px;
|
| 77 |
line-height: 1.6;
|
| 78 |
transition: border-color 0.3s, box-shadow 0.3s;
|
|
|
|
| 80 |
-webkit-appearance: none;
|
| 81 |
-moz-appearance: none;
|
| 82 |
appearance: none;
|
| 83 |
+
box-sizing: border-box;
|
| 84 |
}
|
| 85 |
|
| 86 |
.form-select {
|
|
|
|
| 204 |
<option value="type2">Type 2 (Introduction autour d'une citation)</option>
|
| 205 |
</select>
|
| 206 |
</div>
|
| 207 |
+
|
| 208 |
+
<div class="form-group">
|
| 209 |
+
<label for="course-context">Choisir un cours comme contexte (optionnel)</label>
|
| 210 |
+
<select id="course-context" v-model="selectedCourse" class="form-select">
|
| 211 |
+
<option value="">-- Aucun cours en contexte --</option>
|
| 212 |
+
<option v-for="course in courses" :key="course.id" :value="course.id">
|
| 213 |
+
[[ course.title ]]
|
| 214 |
+
</option>
|
| 215 |
+
</select>
|
| 216 |
+
</div>
|
| 217 |
+
|
| 218 |
<div class="form-group">
|
| 219 |
<label for="question">Entrez votre sujet de dissertation</label>
|
| 220 |
<textarea id="question" v-model="question" placeholder="Entrez votre sujet ou la citation à analyser ici..."></textarea>
|
|
|
|
| 256 |
</div>
|
| 257 |
|
| 258 |
<script>
|
| 259 |
+
const { createApp } = Vue;
|
| 260 |
|
| 261 |
const app = createApp({
|
| 262 |
data() {
|
| 263 |
return {
|
| 264 |
question: '',
|
| 265 |
+
dissertationType: 'type1',
|
| 266 |
+
courses: [], // Pour stocker la liste des cours
|
| 267 |
+
selectedCourse: '', // Pour stocker l'ID du cours sélectionné
|
| 268 |
isLoading: false,
|
| 269 |
errorMessage: null,
|
| 270 |
dissertation: null
|
|
|
|
| 275 |
return this.dissertationType === 'type1' ? 'Type 1' : 'Type 2';
|
| 276 |
}
|
| 277 |
},
|
| 278 |
+
mounted() {
|
| 279 |
+
// Au chargement du composant, on récupère la liste des cours
|
| 280 |
+
this.fetchCourses();
|
| 281 |
+
},
|
| 282 |
methods: {
|
| 283 |
+
async fetchCourses() {
|
| 284 |
+
try {
|
| 285 |
+
const response = await fetch('/api/philosophy/courses');
|
| 286 |
+
if (!response.ok) throw new Error('Impossible de charger les cours. Vérifiez la connexion à la base de données.');
|
| 287 |
+
const data = await response.json();
|
| 288 |
+
if (data.error) throw new Error(data.error);
|
| 289 |
+
this.courses = data;
|
| 290 |
+
} catch (error) {
|
| 291 |
+
this.errorMessage = error.message;
|
| 292 |
+
console.error("Erreur de chargement des cours:", error);
|
| 293 |
+
}
|
| 294 |
+
},
|
| 295 |
async generateDissertation() {
|
| 296 |
if (!this.question.trim()) {
|
| 297 |
this.errorMessage = "Veuillez entrer un sujet de dissertation.";
|
|
|
|
| 304 |
const response = await fetch('/api/generate_dissertation', {
|
| 305 |
method: 'POST',
|
| 306 |
headers: { 'Content-Type': 'application/json' },
|
|
|
|
| 307 |
body: JSON.stringify({
|
| 308 |
question: this.question,
|
| 309 |
+
type: this.dissertationType,
|
| 310 |
+
courseId: this.selectedCourse // On envoie l'ID du cours sélectionné
|
| 311 |
})
|
| 312 |
});
|
| 313 |
const data = await response.json();
|
|
|
|
| 356 |
}
|
| 357 |
});
|
| 358 |
|
| 359 |
+
// ⚠️ Changer les délimiteurs pour éviter le conflit avec Jinja2
|
| 360 |
app.config.compilerOptions.delimiters = ['[[', ']]'];
|
| 361 |
+
|
| 362 |
app.mount('#app');
|
| 363 |
</script>
|
| 364 |
</body>
|