bek-cs commited on
Commit
429a3b8
·
verified ·
1 Parent(s): 85ba840

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +151 -77
index.html CHANGED
@@ -4,7 +4,7 @@
4
  <head>
5
  <meta charset="UTF-8">
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <title>Cloud Computing Lernplan - Dein persönlicher Lernassistent</title>
8
  <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
9
  <style>
10
  :root {
@@ -70,7 +70,7 @@
70
  left: 0;
71
  z-index: -1;
72
  opacity: 0.3;
73
- background-image:
74
  radial-gradient(circle at 20% 30%, rgba(255, 255, 255, 0.3) 0%, transparent 50%),
75
  radial-gradient(circle at 70% 60%, rgba(255, 255, 255, 0.2) 0%, transparent 40%),
76
  radial-gradient(circle at 40% 80%, rgba(255, 255, 255, 0.25) 0%, transparent 45%);
@@ -78,9 +78,19 @@
78
  }
79
 
80
  @keyframes floatClouds {
81
- 0%, 100% { transform: translateY(0) translateX(0); }
82
- 33% { transform: translateY(-20px) translateX(10px); }
83
- 66% { transform: translateY(10px) translateX(-10px); }
 
 
 
 
 
 
 
 
 
 
84
  }
85
 
86
  .animated-bg {
@@ -97,8 +107,13 @@
97
  }
98
 
99
  @keyframes rotateBG {
100
- 0% { transform: rotate(0deg); }
101
- 100% { transform: rotate(360deg); }
 
 
 
 
 
102
  }
103
 
104
  .container {
@@ -137,32 +152,13 @@
137
  opacity: 0;
138
  transform: translateY(-30px);
139
  }
 
140
  to {
141
  opacity: 1;
142
  transform: translateY(0);
143
  }
144
  }
145
 
146
- .personal-badge {
147
- position: absolute;
148
- top: -10px;
149
- right: -10px;
150
- background: var(--cloud-gradient);
151
- color: white;
152
- padding: 8px 20px;
153
- border-radius: 0 0 0 var(--radius-md);
154
- font-weight: 700;
155
- font-size: 0.85rem;
156
- transform: rotate(5deg);
157
- box-shadow: 0 5px 15px rgba(79, 172, 254, 0.4);
158
- animation: badgeGlow 2s ease-in-out infinite;
159
- }
160
-
161
- @keyframes badgeGlow {
162
- 0%, 100% { box-shadow: 0 5px 15px rgba(79, 172, 254, 0.4); }
163
- 50% { box-shadow: 0 5px 25px rgba(79, 172, 254, 0.6); }
164
- }
165
-
166
  h1 {
167
  font-size: 3rem;
168
  font-weight: 800;
@@ -178,8 +174,15 @@
178
  }
179
 
180
  @keyframes glow {
181
- 0%, 100% { filter: brightness(1); }
182
- 50% { filter: brightness(1.2); }
 
 
 
 
 
 
 
183
  }
184
 
185
  .header-icon {
@@ -197,8 +200,15 @@
197
  }
198
 
199
  @keyframes pulse {
200
- 0%, 100% { transform: scale(1); }
201
- 50% { transform: scale(1.05); }
 
 
 
 
 
 
 
202
  }
203
 
204
  .description {
@@ -230,8 +240,15 @@
230
  }
231
 
232
  @keyframes cloudFloat {
233
- 0%, 100% { transform: translateY(-50%) translateX(0); }
234
- 50% { transform: translateY(-50%) translateX(10px); }
 
 
 
 
 
 
 
235
  }
236
 
237
  .personal-info h3 {
@@ -248,6 +265,7 @@
248
  -webkit-text-fill-color: transparent;
249
  background-clip: text;
250
  margin-bottom: var(--spacing-xs);
 
251
  display: inline-block;
252
  position: relative;
253
  }
@@ -261,25 +279,17 @@
261
  }
262
 
263
  @keyframes sparkle {
264
- 0%, 100% { opacity: 0; transform: scale(0); }
265
- 50% { opacity: 1; transform: scale(1); }
266
- }
267
 
268
- .module-badge {
269
- display: inline-flex;
270
- align-items: center;
271
- gap: var(--spacing-xs);
272
- background: white;
273
- padding: 8px 16px;
274
- border-radius: 20px;
275
- font-weight: 600;
276
- color: #667eea;
277
- box-shadow: 0 4px 10px rgba(102, 126, 234, 0.2);
278
- margin-top: var(--spacing-sm);
279
- }
280
 
281
- .module-badge i {
282
- font-size: 1.2rem;
 
 
283
  }
284
 
285
  .attribution {
@@ -328,6 +338,7 @@
328
  opacity: 0;
329
  transform: translateY(30px);
330
  }
 
331
  to {
332
  opacity: 1;
333
  transform: translateY(0);
@@ -523,7 +534,9 @@
523
  }
524
 
525
  @keyframes spin {
526
- to { transform: rotate(360deg); }
 
 
527
  }
528
 
529
  .kpi-grid {
@@ -555,8 +568,13 @@
555
  }
556
 
557
  @keyframes rotate {
558
- 0% { transform: rotate(0deg); }
559
- 100% { transform: rotate(360deg); }
 
 
 
 
 
560
  }
561
 
562
  .kpi-card:hover {
@@ -640,8 +658,15 @@
640
  }
641
 
642
  @keyframes float {
643
- 0%, 100% { transform: translateY(0); }
644
- 50% { transform: translateY(-10px); }
 
 
 
 
 
 
 
645
  }
646
 
647
  .toast {
@@ -666,6 +691,7 @@
666
  opacity: 0;
667
  transform: translateX(100%);
668
  }
 
669
  to {
670
  opacity: 1;
671
  transform: translateX(0);
@@ -689,8 +715,13 @@
689
  }
690
 
691
  @keyframes fadeIn {
692
- from { opacity: 0; }
693
- to { opacity: 1; }
 
 
 
 
 
694
  }
695
 
696
  #calendar {
@@ -860,30 +891,25 @@
860
 
861
  <div class="container">
862
  <header>
863
- <div class="personal-badge">Cloud Computing Projekt</div>
864
  <h1>
865
  <div class="header-icon">
866
  <i class="fas fa-cloud"></i>
867
  </div>
868
- Cloud Computing Lernplan
869
  </h1>
870
-
871
  <div class="personal-info">
872
  <h3>👋 Willkommen bei deinem persönlichen Lernassistenten!</h3>
873
  <div class="name">Max Mustermann</div>
874
- <div class="module-badge">
875
- <i class="fas fa-cloud"></i>
876
- <span>Cloud Computing Modul</span>
877
- </div>
878
  </div>
879
 
880
  <p class="description">
881
- Erstelle automatisch einen personalisierten Lernplan für deine Cloud Computing Prüfungsvorbereitung.
882
  Gib einfach dein Fachthema, das Prüfungsdatum und deine tägliche Lernzeit ein.
883
  </p>
884
-
885
  <p class="attribution">
886
- <span>📚 Optimiert für Cloud Computing Studenten</span>
887
  <span>Built with <a href="https://huggingface.co/spaces/akhaliq/anycoder">anycoder</a></span>
888
  </p>
889
  </header>
@@ -891,12 +917,12 @@
891
  <main class="main-content">
892
  <section class="card">
893
  <h2 class="card-title">
894
- <i class="fas fa-cloud-upload-alt"></i> Cloud Computing Lernplandetails
895
  </h2>
896
 
897
  <form id="planForm">
898
  <div class="form-group">
899
- <label for="subject">Cloud Computing Fachthema</label>
900
  <input type="text" id="subject" name="subject" required placeholder="z.B. AWS Services, Docker, Kubernetes">
901
  </div>
902
 
@@ -909,7 +935,7 @@
909
  <label for="hoursPerDay">Stunden pro Tag</label>
910
  <input type="number" id="hoursPerDay" name="hoursPerDay"
911
  min="0.5" max="24" step="0.5" required placeholder="z.B. 2">
912
- <div class="help-text">Gib an, wie viele Stunden du täglich für Cloud Computing lernen möchtest.</div>
913
  </div>
914
 
915
  <div class="form-group">
@@ -932,21 +958,21 @@
932
 
933
  <button type="submit" class="btn btn-primary" id="submitBtn">
934
  <i class="fas fa-cloud-upload-alt"></i>
935
- <span>Cloud Lernplan erstellen</span>
936
  </button>
937
  </form>
938
  </section>
939
 
940
  <section class="card">
941
  <h2 class="card-title">
942
- <i class="fas fa-server"></i> Gespeicherte Cloud Lernpläne
943
  </h2>
944
  <ul id="plansList"></ul>
945
  </section>
946
 
947
  <section class="card">
948
  <h2 class="card-title">
949
- <i class="fas fa-calendar-alt"></i> Cloud Learning Kalender
950
  </h2>
951
 
952
  <div id="calendarHeader">
@@ -964,7 +990,7 @@
964
 
965
  <section id="resultsSection" class="card hidden">
966
  <h2 class="card-title">
967
- <i class="fas fa-chart-line"></i> Dein Cloud Computing Lernplan
968
  </h2>
969
 
970
  <div class="kpi-grid">
@@ -992,7 +1018,7 @@
992
  <thead>
993
  <tr>
994
  <th>Datum</th>
995
- <th>Cloud Thema</th>
996
  <th>Stunden</th>
997
  </tr>
998
  </thead>
@@ -1006,7 +1032,7 @@
1006
  <div class="empty-icon">
1007
  <i class="fas fa-cloud-slash"></i>
1008
  </div>
1009
- <h3>Keine Cloud Lernplaneinträge</h3>
1010
  <p>Alle ausgewählten Daten sind blockiert. Bitte passe deine Einstellungen an.</p>
1011
  </div>
1012
  </section>
@@ -1057,4 +1083,52 @@
1057
 
1058
  function formatDate(dateString) {
1059
  const date = new Date(dateString);
1060
- const options = { day: '2-digit', month: '2-digit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  <head>
5
  <meta charset="UTF-8">
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Lernplan - Dein persönlicher Lernassistent</title>
8
  <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
9
  <style>
10
  :root {
 
70
  left: 0;
71
  z-index: -1;
72
  opacity: 0.3;
73
+ background-image:
74
  radial-gradient(circle at 20% 30%, rgba(255, 255, 255, 0.3) 0%, transparent 50%),
75
  radial-gradient(circle at 70% 60%, rgba(255, 255, 255, 0.2) 0%, transparent 40%),
76
  radial-gradient(circle at 40% 80%, rgba(255, 255, 255, 0.25) 0%, transparent 45%);
 
78
  }
79
 
80
  @keyframes floatClouds {
81
+
82
+ 0%,
83
+ 100% {
84
+ transform: translateY(0) translateX(0);
85
+ }
86
+
87
+ 33% {
88
+ transform: translateY(-20px) translateX(10px);
89
+ }
90
+
91
+ 66% {
92
+ transform: translateY(10px) translateX(-10px);
93
+ }
94
  }
95
 
96
  .animated-bg {
 
107
  }
108
 
109
  @keyframes rotateBG {
110
+ 0% {
111
+ transform: rotate(0deg);
112
+ }
113
+
114
+ 100% {
115
+ transform: rotate(360deg);
116
+ }
117
  }
118
 
119
  .container {
 
152
  opacity: 0;
153
  transform: translateY(-30px);
154
  }
155
+
156
  to {
157
  opacity: 1;
158
  transform: translateY(0);
159
  }
160
  }
161
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  h1 {
163
  font-size: 3rem;
164
  font-weight: 800;
 
174
  }
175
 
176
  @keyframes glow {
177
+
178
+ 0%,
179
+ 100% {
180
+ filter: brightness(1);
181
+ }
182
+
183
+ 50% {
184
+ filter: brightness(1.2);
185
+ }
186
  }
187
 
188
  .header-icon {
 
200
  }
201
 
202
  @keyframes pulse {
203
+
204
+ 0%,
205
+ 100% {
206
+ transform: scale(1);
207
+ }
208
+
209
+ 50% {
210
+ transform: scale(1.05);
211
+ }
212
  }
213
 
214
  .description {
 
240
  }
241
 
242
  @keyframes cloudFloat {
243
+
244
+ 0%,
245
+ 100% {
246
+ transform: translateY(-50%) translateX(0);
247
+ }
248
+
249
+ 50% {
250
+ transform: translateY(-50%) translateX(10px);
251
+ }
252
  }
253
 
254
  .personal-info h3 {
 
265
  -webkit-text-fill-color: transparent;
266
  background-clip: text;
267
  margin-bottom: var(--spacing-xs);
268
+ margin-top: var(--spacing-sm);
269
  display: inline-block;
270
  position: relative;
271
  }
 
279
  }
280
 
281
  @keyframes sparkle {
 
 
 
282
 
283
+ 0%,
284
+ 100% {
285
+ opacity: 0;
286
+ transform: scale(0);
287
+ }
 
 
 
 
 
 
 
288
 
289
+ 50% {
290
+ opacity: 1;
291
+ transform: scale(1);
292
+ }
293
  }
294
 
295
  .attribution {
 
338
  opacity: 0;
339
  transform: translateY(30px);
340
  }
341
+
342
  to {
343
  opacity: 1;
344
  transform: translateY(0);
 
534
  }
535
 
536
  @keyframes spin {
537
+ to {
538
+ transform: rotate(360deg);
539
+ }
540
  }
541
 
542
  .kpi-grid {
 
568
  }
569
 
570
  @keyframes rotate {
571
+ 0% {
572
+ transform: rotate(0deg);
573
+ }
574
+
575
+ 100% {
576
+ transform: rotate(360deg);
577
+ }
578
  }
579
 
580
  .kpi-card:hover {
 
658
  }
659
 
660
  @keyframes float {
661
+
662
+ 0%,
663
+ 100% {
664
+ transform: translateY(0);
665
+ }
666
+
667
+ 50% {
668
+ transform: translateY(-10px);
669
+ }
670
  }
671
 
672
  .toast {
 
691
  opacity: 0;
692
  transform: translateX(100%);
693
  }
694
+
695
  to {
696
  opacity: 1;
697
  transform: translateX(0);
 
715
  }
716
 
717
  @keyframes fadeIn {
718
+ from {
719
+ opacity: 0;
720
+ }
721
+
722
+ to {
723
+ opacity: 1;
724
+ }
725
  }
726
 
727
  #calendar {
 
891
 
892
  <div class="container">
893
  <header>
 
894
  <h1>
895
  <div class="header-icon">
896
  <i class="fas fa-cloud"></i>
897
  </div>
898
+ Lernplan
899
  </h1>
900
+
901
  <div class="personal-info">
902
  <h3>👋 Willkommen bei deinem persönlichen Lernassistenten!</h3>
903
  <div class="name">Max Mustermann</div>
 
 
 
 
904
  </div>
905
 
906
  <p class="description">
907
+ Erstelle automatisch einen personalisierten Lernplan für deine Prüfungsvorbereitung.
908
  Gib einfach dein Fachthema, das Prüfungsdatum und deine tägliche Lernzeit ein.
909
  </p>
910
+
911
  <p class="attribution">
912
+ <span>📚 Optimiert für Studenten</span>
913
  <span>Built with <a href="https://huggingface.co/spaces/akhaliq/anycoder">anycoder</a></span>
914
  </p>
915
  </header>
 
917
  <main class="main-content">
918
  <section class="card">
919
  <h2 class="card-title">
920
+ <i class="fas fa-cloud-upload-alt"></i> Lernplandetails
921
  </h2>
922
 
923
  <form id="planForm">
924
  <div class="form-group">
925
+ <label for="subject">Fachthema</label>
926
  <input type="text" id="subject" name="subject" required placeholder="z.B. AWS Services, Docker, Kubernetes">
927
  </div>
928
 
 
935
  <label for="hoursPerDay">Stunden pro Tag</label>
936
  <input type="number" id="hoursPerDay" name="hoursPerDay"
937
  min="0.5" max="24" step="0.5" required placeholder="z.B. 2">
938
+ <div class="help-text">Gib an, wie viele Stunden du täglich lernen möchtest.</div>
939
  </div>
940
 
941
  <div class="form-group">
 
958
 
959
  <button type="submit" class="btn btn-primary" id="submitBtn">
960
  <i class="fas fa-cloud-upload-alt"></i>
961
+ <span>Lernplan erstellen</span>
962
  </button>
963
  </form>
964
  </section>
965
 
966
  <section class="card">
967
  <h2 class="card-title">
968
+ <i class="fas fa-server"></i> Gespeicherte Lernpläne
969
  </h2>
970
  <ul id="plansList"></ul>
971
  </section>
972
 
973
  <section class="card">
974
  <h2 class="card-title">
975
+ <i class="fas fa-calendar-alt"></i> Learning Kalender
976
  </h2>
977
 
978
  <div id="calendarHeader">
 
990
 
991
  <section id="resultsSection" class="card hidden">
992
  <h2 class="card-title">
993
+ <i class="fas fa-chart-line"></i> Dein Lernplan
994
  </h2>
995
 
996
  <div class="kpi-grid">
 
1018
  <thead>
1019
  <tr>
1020
  <th>Datum</th>
1021
+ <th>Thema</th>
1022
  <th>Stunden</th>
1023
  </tr>
1024
  </thead>
 
1032
  <div class="empty-icon">
1033
  <i class="fas fa-cloud-slash"></i>
1034
  </div>
1035
+ <h3>Keine Lernplaneinträge</h3>
1036
  <p>Alle ausgewählten Daten sind blockiert. Bitte passe deine Einstellungen an.</p>
1037
  </div>
1038
  </section>
 
1083
 
1084
  function formatDate(dateString) {
1085
  const date = new Date(dateString);
1086
+ const options = { day: '2-digit', month: '2-digit', year: 'numeric' };
1087
+ return date.toLocaleDateString('de-DE', options);
1088
+ }
1089
+
1090
+ // Kalender Funktionen
1091
+ function renderCalendar() {
1092
+ const firstDay = new Date(currentYear, currentMonth, 1);
1093
+ const lastDay = new Date(currentYear, currentMonth + 1, 0);
1094
+ const prevLastDay = new Date(currentYear, currentMonth, 0);
1095
+ const firstDayIndex = firstDay.getDay();
1096
+ const lastDayIndex = lastDay.getDay();
1097
+ const nextDays = 7 - lastDayIndex - 1;
1098
+
1099
+ document.getElementById('calendarTitle').textContent =
1100
+ new Date(currentYear, currentMonth).toLocaleDateString('de-DE', { month: 'long', year: 'numeric' });
1101
+
1102
+ let days = '';
1103
+ let dayNum = 1;
1104
+
1105
+ // Wochentage Header
1106
+ const weekDays = ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'];
1107
+ weekDays.forEach(day => {
1108
+ days += `<div class="calendar-day-header">${day}</div>`;
1109
+ });
1110
+
1111
+ // Leere Tage am Anfang
1112
+ for (let x = firstDayIndex; x > 0; x--) {
1113
+ days += `<div class="calendar-day">${prevLastDay.getDate() - x + 1}</div>`;
1114
+ }
1115
+
1116
+ // Tage des Monats
1117
+ for (let i = 1; i <= lastDay.getDate(); i++) {
1118
+ const currentDate = new Date(currentYear, currentMonth, i);
1119
+ const dateKey = toDateKey(currentDate);
1120
+ let classes = 'calendar-day';
1121
+
1122
+ if (currentDate.toDateString() === new Date().toDateString()) {
1123
+ classes += ' calendar-today';
1124
+ }
1125
+
1126
+ if (cachedLearningDays.includes(dateKey)) {
1127
+ classes += ' calendar-learning';
1128
+ }
1129
+
1130
+ days += `<div class="${classes}">${i}</div>`;
1131
+ }
1132
+
1133
+ // Leere Tage am Ende
1134
+ for (let j