Sudegk commited on
Commit
d67e414
·
verified ·
1 Parent(s): 57d4dd7

ders programı > yeni program ekle kısmında üstte akademisyeni seçmemeli ve tabloda hücre seçim işlemleri saatleriyle doğru orantılı olmalı diyelim ki salı günü veri yapıları dersi 2 saat olacak şekilde 14.00 hücresine tıkladığında ve bu verileri girdiğinde ilk seçilen hücreden itibaren o dersin saati kadar yer kaplamlın kaydet butonuyla veriler kaydedilmeli düzenle butonuna basınca kaydedilmiş olanaları düzenleyip silebiliyor olmalı - Initial Deployment

Browse files
Files changed (2) hide show
  1. README.md +7 -5
  2. index.html +1577 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Sude
3
- emoji: 🚀
4
- colorFrom: green
5
- colorTo: blue
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: sude
3
+ emoji: 🐳
4
+ colorFrom: pink
5
+ colorTo: pink
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,1577 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="tr">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Üniversite Portalı</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <style>
10
+ /* Custom CSS for specific styling needs */
11
+ .sidebar {
12
+ transition: all 0.3s;
13
+ }
14
+ .sidebar-collapsed {
15
+ width: 70px;
16
+ }
17
+ .sidebar-expanded {
18
+ width: 250px;
19
+ }
20
+ .main-content {
21
+ transition: all 0.3s;
22
+ }
23
+ .content-expanded {
24
+ margin-left: 250px;
25
+ }
26
+ .content-collapsed {
27
+ margin-left: 70px;
28
+ }
29
+ .cell-hover:hover {
30
+ background-color: #e2e8f0;
31
+ cursor: pointer;
32
+ }
33
+ .rotate-90 {
34
+ transform: rotate(90deg);
35
+ }
36
+ .schedule-cell.selected {
37
+ background-color: #93c5fd;
38
+ }
39
+ .schedule-cell.booked {
40
+ background-color: #fca5a5;
41
+ cursor: not-allowed;
42
+ }
43
+ </style>
44
+ </head>
45
+ <body class="bg-gray-100">
46
+ <!-- Login Screen -->
47
+ <div id="login-screen" class="fixed inset-0 flex items-center justify-center bg-gray-900 bg-opacity-50 z-50">
48
+ <div class="bg-white p-8 rounded-lg shadow-lg w-96">
49
+ <div class="text-center mb-6">
50
+ <i class="fas fa-university text-5xl text-blue-600 mb-2"></i>
51
+ <h1 class="text-2xl font-bold text-gray-800">Üniversite Portalı</h1>
52
+ <p class="text-gray-600">Lütfen giriş yapın</p>
53
+ </div>
54
+ <form id="login-form" class="space-y-4">
55
+ <div>
56
+ <label class="block text-gray-700 mb-2" for="username">Kullanıcı Adı</label>
57
+ <input type="text" id="username" class="w-full px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="Kullanıcı adınızı girin">
58
+ </div>
59
+ <div>
60
+ <label class="block text-gray-700 mb-2" for="password">Şifre</label>
61
+ <input type="password" id="password" class="w-full px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="Şifrenizi girin">
62
+ </div>
63
+ <button type="submit" class="w-full bg-blue-600 text-white py-2 px-4 rounded-lg hover:bg-blue-700 transition duration-300">Giriş Yap</button>
64
+ </form>
65
+ </div>
66
+ </div>
67
+
68
+ <!-- Main Layout -->
69
+ <div id="main-layout" class="hidden">
70
+ <!-- Sidebar -->
71
+ <div id="sidebar" class="sidebar sidebar-expanded fixed top-0 left-0 h-screen bg-blue-800 text-white shadow-lg overflow-y-auto">
72
+ <div class="p-4 flex items-center justify-between border-b border-blue-700">
73
+ <span class="text-xl font-bold">Üniversite Portalı</span>
74
+ <button id="toggle-sidebar" class="text-white hover:text-blue-200">
75
+ <i class="fas fa-bars"></i>
76
+ </button>
77
+ </div>
78
+ <nav class="mt-6">
79
+ <div class="px-4 mb-4">
80
+ <div class="flex items-center justify-between cursor-pointer" id="menu-ders-programi">
81
+ <div class="flex items-center">
82
+ <i class="fas fa-calendar-alt mr-3"></i>
83
+ <span class="font-medium">Ders Programı</span>
84
+ </div>
85
+ <i class="fas fa-chevron-up transform transition duration-300" id="arrow-ders-programi"></i>
86
+ </div>
87
+ <div class="pl-10 mt-2 space-y-2 hidden" id="submenu-ders-programi">
88
+ <div class="py-1 hover:bg-blue-700 px-2 rounded cursor-pointer" data-page="programlar">Programlar</div>
89
+ <div class="py-1 hover:bg-blue-700 px-2 rounded cursor-pointer" data-page="yeni-program-ekle">Yeni Program Ekle</div>
90
+ </div>
91
+ </div>
92
+
93
+ <div class="px-4 mb-4">
94
+ <div class="flex items-center justify-between cursor-pointer" id="menu-sinav-programi">
95
+ <div class="flex items-center">
96
+ <i class="fas fa-clipboard-list mr-3"></i>
97
+ <span class="font-medium">Sınav Programı</span>
98
+ </div>
99
+ <i class="fas fa-chevron-up transform transition duration-300" id="arrow-sinav-programi"></i>
100
+ </div>
101
+ <div class="pl-10 mt-2 space-y-2 hidden" id="submenu-sinav-programi">
102
+ <div class="py-1 hover:bg-blue-700 px-2 rounded cursor-pointer" data-page="sinavlar">Sınavlar</div>
103
+ <div class="py-1 hover:bg-blue-700 px-2 rounded cursor-pointer" data-page="yeni-sinav-programi-olustur">Yeni Program Oluştur</div>
104
+ </div>
105
+ </div>
106
+
107
+ <div class="px-4 mb-4">
108
+ <div class="flex items-center justify-between cursor-pointer" id="menu-akademisyen">
109
+ <div class="flex items-center">
110
+ <i class="fas fa-chalkboard-teacher mr-3"></i>
111
+ <span class="font-medium">Akademisyen</span>
112
+ </div>
113
+ <i class="fas fa-chevron-up transform transition duration-300" id="arrow-akademisyen"></i>
114
+ </div>
115
+ <div class="pl-10 mt-2 space-y-2 hidden" id="submenu-akademisyen">
116
+ <div class="py-1 hover:bg-blue-700 px-2 rounded cursor-pointer" data-page="akademisyenler">Akademisyenler</div>
117
+ <div class="py-1 hover:bg-blue-700 px-2 rounded cursor-pointer" data-page="akademisyen-ekle">Yeni Ekle</div>
118
+ </div>
119
+ </div>
120
+
121
+ <div class="px-4 mb-4">
122
+ <div class="flex items-center cursor-pointer" id="menu-fakulte" data-page="fakulte-islemleri">
123
+ <i class="fas fa-building mr-3"></i>
124
+ <span class="font-medium">Fakülte İşlemleri</span>
125
+ </div>
126
+ </div>
127
+
128
+ <div class="px-4">
129
+ <div class="flex items-center cursor-pointer" id="menu-kullanici" data-page="kullanici">
130
+ <i class="fas fa-user mr-3"></i>
131
+ <span class="font-medium">Kullanıcı İşlemleri</span>
132
+ </div>
133
+ </div>
134
+ </nav>
135
+ </div>
136
+
137
+ <!-- Main Content -->
138
+ <div id="main-content" class="main-content content-expanded min-h-screen p-6">
139
+ <!-- Top Navigation -->
140
+ <div class="bg-white rounded-lg shadow p-4 mb-6 flex justify-between items-center">
141
+ <h1 id="page-title" class="text-2xl font-bold text-gray-800">Ana Sayfa</h1>
142
+ <div class="flex items-center space-x-4">
143
+ <div class="flex items-center space-x-2">
144
+ <img src="https://via.placeholder.com/40" alt="User" class="rounded-full">
145
+ <span id="current-user" class="font-medium"></span>
146
+ </div>
147
+ <button id="logout-btn" class="text-gray-600 hover:text-blue-600">
148
+ <i class="fas fa-sign-out-alt"></i>
149
+ </button>
150
+ </div>
151
+ </div>
152
+
153
+ <!-- Content Area -->
154
+ <div id="content-area" class="bg-white rounded-lg shadow p-6">
155
+ <div class="text-center py-10" id="dashboard-view">
156
+ <i class="fas fa-university text-6xl text-blue-500 mb-6"></i>
157
+ <h2 class="text-3xl font-bold text-gray-800 mb-4">Üniversite Yönetim Sistemine Hoşgeldiniz</h2>
158
+ <p class="text-gray-600 max-w-2xl mx-auto">Sol menüden işlem yapmak istediğiniz modülü seçerek, ders programları oluşturabilir, sınav takvimleri düzenleyebilir, akademisyen ve fakülte bilgilerini yönetebilirsiniz.</p>
159
+ </div>
160
+
161
+ <!-- Programlar View -->
162
+ <div id="programlar-view" class="hidden">
163
+ <div class="flex justify-between items-center mb-6">
164
+ <h2 class="text-xl font-bold">Programlar</h2>
165
+ <div class="flex space-x-4">
166
+ <select id="program-select-department" class="border rounded-lg px-3 py-2">
167
+ <option value="">Bölüm Seçin</option>
168
+ <option value="bilgisayar">Bilgisayar Mühendisliği</option>
169
+ <option value="elektrik">Elektrik-Elektronik Mühendisliği</option>
170
+ <option value="mimarlik">Mimarlık</option>
171
+ </select>
172
+ <select id="program-select-academician" class="border rounded-lg px-3 py-2 hidden">
173
+ <option value="">Akademisyen Seçin</option>
174
+ <option value="ahmet-yilmaz">Ahmet Yılmaz</option>
175
+ <option value="ayse-demir">Ayşe Demir</option>
176
+ <option value="mehmet-kaya">Mehmet Kaya</option>
177
+ </select>
178
+ <button class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 hidden" id="pdf-generate-btn">
179
+ <i class="fas fa-file-pdf mr-2"></i>PDF Oluştur
180
+ </button>
181
+ </div>
182
+ </div>
183
+
184
+ <div class="flex mb-6 border-b">
185
+ <button class="px-4 py-2 font-medium border-b-2 border-blue-600 text-blue-600" data-tab="academician-programs">Akademisyen Programları</button>
186
+ <button class="px-4 py-2 font-medium text-gray-600 hover:text-blue-600" data-tab="department-programs">Bölüm Programları</button>
187
+ </div>
188
+
189
+ <div id="academician-programs-tab">
190
+ <div class="flex space-x-4 mb-4">
191
+ <select id="academician-program-filter" class="border rounded-lg px-3 py-2">
192
+ <option value="">Tüm Akademisyenler</option>
193
+ <option value="ahmet-yilmaz">Ahmet Yılmaz</option>
194
+ <option value="ayse-demir">Ayşe Demir</option>
195
+ <option value="mehmet-kaya">Mehmet Kaya</option>
196
+ </select>
197
+ <button class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700">
198
+ <i class="fas fa-sync-alt mr-2"></i>Yenile
199
+ </button>
200
+ </div>
201
+ <div class="border rounded-lg overflow-hidden">
202
+ <table class="min-w-full border">
203
+ <thead class="bg-gray-100">
204
+ <tr>
205
+ <th class="py-3 px-4 border">Akademisyen</th>
206
+ <th class="py-3 px-4 border">Bölüm</th>
207
+ <th class="py-3 px-4 border">Dönem</th>
208
+ <th class="py-3 px-4 border">Son Güncelleme</th>
209
+ <th class="py-3 px-4 border">İşlem</th>
210
+ </tr>
211
+ </thead>
212
+ <tbody>
213
+ <tr class="hover:bg-gray-50">
214
+ <td class="py-2 px-4 border">Ahmet Yılmaz</td>
215
+ <td class="py-2 px-4 border">Bilgisayar Mühendisliği</td>
216
+ <td class="py-2 px-4 border">2023-2024 Güz</td>
217
+ <td class="py-2 px-4 border">15.09.2023</td>
218
+ <td class="py-2 px-4 border">
219
+ <button class="text-blue-600 hover:text-blue-800 mr-2">
220
+ <i class="fas fa-eye"></i>
221
+ </button>
222
+ <button class="text-green-600 hover:text-green-800">
223
+ <i class="fas fa-file-pdf"></i>
224
+ </button>
225
+ </td>
226
+ </tr>
227
+ <tr class="hover:bg-gray-50">
228
+ <td class="py-2 px-4 border">Ayşe Demir</td>
229
+ <td class="py-2 px-4 border">Elektrik-Elektronik Mühendisliği</td>
230
+ <td class="py-2 px-4 border">2023-2024 Güz</td>
231
+ <td class="py-2 px-4 border">14.09.2023</td>
232
+ <td class="py-2 px-4 border">
233
+ <button class="text-blue-600 hover:text-blue-800 mr-2">
234
+ <i class="fas fa-eye"></i>
235
+ </button>
236
+ <button class="text-green-600 hover:text-green-800">
237
+ <i class="fas fa-file-pdf"></i>
238
+ </button>
239
+ </td>
240
+ </tr>
241
+ </tbody>
242
+ </table>
243
+ </div>
244
+ </div>
245
+
246
+ <div id="department-programs-tab" class="hidden">
247
+ <div class="flex space-x-4 mb-4">
248
+ <select id="department-program-filter" class="border rounded-lg px-3 py-2">
249
+ <option value="">Tüm Bölümler</option>
250
+ <option value="bilgisayar">Bilgisayar Mühendisliği</option>
251
+ <option value="elektrik">Elektrik-Elektronik Mühendisliği</option>
252
+ <option value="mimarlik">Mimarlık</option>
253
+ </select>
254
+ <select id="class-program-filter" class="border rounded-lg px-3 py-2">
255
+ <option value="">Tüm Sınıflar</option>
256
+ <option value="1">1. Sınıf</option>
257
+ <option value="2">2. Sınıf</option>
258
+ <option value="3">3. Sınıf</option>
259
+ <option value="4">4. Sınıf</option>
260
+ </select>
261
+ <button class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700">
262
+ <i class="fas fa-sync-alt mr-2"></i>Yenile
263
+ </button>
264
+ </div>
265
+ <div class="border rounded-lg overflow-hidden">
266
+ <table class="min-w-full border">
267
+ <thead class="bg-gray-100">
268
+ <tr>
269
+ <th class="py-3 px-4 border">Bölüm</th>
270
+ <th class="py-3 px-4 border">Sınıf</th>
271
+ <th class="py-3 px-4 border">Dönem</th>
272
+ <th class="py-3 px-4 border">Son Güncelleme</th>
273
+ <th class="py-3 px-4 border">İşlem</th>
274
+ </tr>
275
+ </thead>
276
+ <tbody>
277
+ <tr class="hover:bg-gray-50">
278
+ <td class="py-2 px-4 border">Bilgisayar Mühendisliği</td>
279
+ <td class="py-2 px-4 border">1. Sınıf</td>
280
+ <td class="py-2 px-4 border">2023-2024 Güz</td>
281
+ <td class="py-2 px-4 border">12.09.2023</td>
282
+ <td class="py-2 px-4 border">
283
+ <button class="text-blue-600 hover:text-blue-800 mr-2">
284
+ <i class="fas fa-eye"></i>
285
+ </button>
286
+ <button class="text-green-600 hover:text-green-800">
287
+ <i class="fas fa-file-pdf"></i>
288
+ </button>
289
+ </td>
290
+ </tr>
291
+ <tr class="hover:bg-gray-50">
292
+ <td class="py-2 px-4 border">Bilgisayar Mühendisliği</td>
293
+ <td class="py-2 px-4 border">2. Sınıf</td>
294
+ <td class="py-2 px-4 border">2023-2024 Güz</td>
295
+ <td class="py-2 px-4 border">13.09.2023</td>
296
+ <td class="py-2 px-4 border">
297
+ <button class="text-blue-600 hover:text-blue-800 mr-2">
298
+ <i class="fas fa-eye"></i>
299
+ </button>
300
+ <button class="text-green-600 hover:text-green-800">
301
+ <i class="fas fa-file-pdf"></i>
302
+ </button>
303
+ </td>
304
+ </tr>
305
+ </tbody>
306
+ </table>
307
+ </div>
308
+ </div>
309
+ </div>
310
+
311
+ <!-- Yeni Program Ekle View -->
312
+ <div id="yeni-program-ekle-view" class="hidden">
313
+ <h2 class="text-xl font-bold mb-6">Yeni Program Ekle</h2>
314
+
315
+ <div class="bg-gray-100 p-4 rounded-lg mb-6">
316
+ <h3 class="font-bold mb-3">Program Bilgileri</h3>
317
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-4">
318
+ <div>
319
+ <label class="block text-gray-700 mb-1">Bölüm</label>
320
+ <select class="w-full border rounded-lg px-3 py-2" id="program-department">
321
+ <option value="">Bölüm Seçin</option>
322
+ <option value="bilgisayar">Bilgisayar Mühendisliği (Lisans)</option>
323
+ <option value="elektrik">Elektrik-Elektronik Mühendisliği (Lisans)</option>
324
+ <option value="mimarlik">Mimarlık (Lisans)</option>
325
+ <option value="bilgisayar-onlisans">Bilgisayar Programcılığı (Önlisans)</option>
326
+ </select>
327
+ </div>
328
+ <div>
329
+ <label class="block text-gray-700 mb-1">Akademisyen</label>
330
+ <select class="w-full border rounded-lg px-3 py-2" id="program-academician">
331
+ <option value="">Akademisyen Seçin</option>
332
+ <option value="ahmet-yilmaz">Ahmet Yılmaz</option>
333
+ <option value="ayse-demir">Ayşe Demir</option>
334
+ <option value="mehmet-kaya">Mehmet Kaya</option>
335
+ </select>
336
+ </div>
337
+ <div>
338
+ <label class="block text-gray-700 mb-1">Dönem</label>
339
+ <select class="w-full border rounded-lg px-3 py-2" id="program-semester">
340
+ <option value="2023-2024-guz">2023-2024 Güz</option>
341
+ <option value="2023-2024-bahar">2023-2024 Bahar</option>
342
+ </select>
343
+ </div>
344
+ </div>
345
+ </div>
346
+
347
+ <div id="program-tables-container" class="hidden">
348
+ <h3 class="font-bold mb-4">Ders Programı Tabloları</h3>
349
+ <div class="space-y-8" id="class-tables">
350
+ <!-- Tables will be generated here -->
351
+ </div>
352
+ </div>
353
+ </div>
354
+
355
+ <!-- Sınavlar View -->
356
+ <div id="sinavlar-view" class="hidden">
357
+ <div class="flex justify-between items-center mb-6">
358
+ <h2 class="text-xl font-bold">Sınav Programları</h2>
359
+ <div class="flex space-x-4">
360
+ <select id="exam-select-semester" class="border rounded-lg px-3 py-2">
361
+ <option value="">Dönem Seçin</option>
362
+ <option value="2023-2024-guz">2023-2024 Güz</option>
363
+ <option value="2023-2024-bahar">2023-2024 Bahar</option>
364
+ </select>
365
+ <select id="exam-select-department" class="border rounded-lg px-3 py-2">
366
+ <option value="">Bölüm Seçin</option>
367
+ <option value="bilgisayar">Bilgisayar Mühendisliği</option>
368
+ <option value="elektrik">Elektrik-Elektronik Mühendisliği</option>
369
+ <option value="mimarlik">Mimarlık</option>
370
+ </select>
371
+ <button class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700">
372
+ <i class="fas fa-file-pdf mr-2"></i>PDF Oluştur
373
+ </button>
374
+ </div>
375
+ </div>
376
+
377
+ <div class="border rounded-lg overflow-hidden">
378
+ <table class="min-w-full">
379
+ <thead class="bg-gray-100">
380
+ <tr>
381
+ <th class="py-3 px-4 border">Bölüm</th>
382
+ <th class="py-3 px-4 border">Sınıf</th>
383
+ <th class="py-3 px-4 border">Ders Kodu</th>
384
+ <th class="py-3 px-4 border">Ders Adı</th>
385
+ <th class="py-3 px-4 border">Tarih</th>
386
+ <th class="py-3 px-4 border">Saat</th>
387
+ <th class="py-3 px-4 border">Derslik</th>
388
+ <th class="py-3 px-4 border">İşlem</th>
389
+ </tr>
390
+ </thead>
391
+ <tbody>
392
+ <tr>
393
+ <td class="py-2 px-4 border">Bilgisayar Mühendisliği</td>
394
+ <td class="py-2 px-4 border">1</td>
395
+ <td class="py-2 px-4 border">BIL101</td>
396
+ <td class="py-2 px-4 border">Programlamaya Giriş</td>
397
+ <td class="py-2 px-4 border">15.01.2024</td>
398
+ <td class="py-2 px-4 border">10:00-12:00</td>
399
+ <td class="py-2 px-4 border">A-101</td>
400
+ <td class="py-2 px-4 border">
401
+ <button class="text-blue-600 hover:text-blue-800 mr-2">
402
+ <i class="fas fa-edit"></i>
403
+ </button>
404
+ <button class="text-green-600 hover:text-green-800">
405
+ <i class="fas fa-file-pdf"></i>
406
+ </button>
407
+ </td>
408
+ </tr>
409
+ <tr>
410
+ <td class="py-2 px-4 border">Bilgisayar Mühendisliği</td>
411
+ <td class="py-2 px-4 border">1</td>
412
+ <td class="py-2 px-4 border">BIL102</td>
413
+ <td class="py-2 px-4 border">Veri Yapıları</td>
414
+ <td class="py-2 px-4 border">16.01.2024</td>
415
+ <td class="py-2 px-4 border">14:00-16:00</td>
416
+ <td class="py-2 px-4 border">A-102</td>
417
+ <td class="py-2 px-4 border">
418
+ <button class="text-blue-600 hover:text-blue-800 mr-2">
419
+ <i class="fas fa-edit"></i>
420
+ </button>
421
+ <button class="text-green-600 hover:text-green-800">
422
+ <i class="fas fa-file-pdf"></i>
423
+ </button>
424
+ </td>
425
+ </tr>
426
+ </tbody>
427
+ </table>
428
+ </div>
429
+ </div>
430
+
431
+ <!-- Yeni Sınav Programı Oluştur View -->
432
+ <div id="yeni-sinav-programi-olustur-view" class="hidden">
433
+ <h2 class="text-xl font-bold mb-6">Yeni Sınav Programı Oluştur</h2>
434
+
435
+ <div class="bg-gray-100 p-4 rounded-lg mb-6">
436
+ <h3 class="font-bold mb-3">Sınav Bilgileri</h3>
437
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-4">
438
+ <div>
439
+ <label class="block text-gray-700 mb-1">Bölüm</label>
440
+ <select class="w-full border rounded-lg px-3 py-2" id="exam-department">
441
+ <option value="">Bölüm Seçin</option>
442
+ <option value="bilgisayar">Bilgisayar Mühendisliği (Lisans)</option>
443
+ <option value="elektrik">Elektrik-Elektronik Mühendisliği (Lisans)</option>
444
+ <option value="mimarlik">Mimarlık (Lisans)</option>
445
+ <option value="bilgisayar-onlisans">Bilgisayar Programcılığı (Önlisans)</option>
446
+ </select>
447
+ </div>
448
+ <div>
449
+ <label class="block text-gray-700 mb-1">Dönem</label>
450
+ <select class="w-full border rounded-lg px-3 py-2" id="exam-semester">
451
+ <option value="2023-2024-guz">2023-2024 Güz</option>
452
+ <option value="2023-2024-bahar">2023-2024 Bahar</option>
453
+ </select>
454
+ </div>
455
+ <div>
456
+ <label class="block text-gray-700 mb-1">Sınav Türü</label>
457
+ <select class="w-full border rounded-lg px-3 py-2" id="exam-type">
458
+ <option value="vize">Vize</option>
459
+ <option value="final">Final</option>
460
+ <option value="butunleme">Bütünleme</option>
461
+ </select>
462
+ </div>
463
+ </div>
464
+ </div>
465
+
466
+ <div id="exam-tables-container" class="hidden">
467
+ <h3 class="font-bold mb-4">Sınav Programı Tabloları</h3>
468
+ <div class="space-y-8" id="exam-class-tables">
469
+ <!-- Tables will be generated here -->
470
+ </div>
471
+ </div>
472
+ </div>
473
+
474
+ <!-- Akademisyenler View -->
475
+ <div id="akademisyenler-view" class="hidden">
476
+ <div class="flex justify-between items-center mb-6">
477
+ <h2 class="text-xl font-bold">Akademisyenler</h2>
478
+ <div class="relative w-64">
479
+ <input type="text" placeholder="Akademisyen ara..." class="w-full border rounded-lg pl-10 pr-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
480
+ <i class="fas fa-search absolute left-3 top-3 text-gray-400"></i>
481
+ </div>
482
+ </div>
483
+
484
+ <div class="border rounded-lg overflow-hidden">
485
+ <table class="min-w-full">
486
+ <thead class="bg-gray-100">
487
+ <tr>
488
+ <th class="py-3 px-4 border">Ad Soyad</th>
489
+ <th class="py-3 px-4 border">Unvan</th>
490
+ <th class="py-3 px-4 border">Bölüm</th>
491
+ <th class="py-3 px-4 border">Verdiği Dersler</th>
492
+ <th class="py-3 px-4 border">İşlem</th>
493
+ </tr>
494
+ </thead>
495
+ <tbody>
496
+ <tr class="hover:bg-gray-50 cursor-pointer" data-academician="ahmet-yilmaz">
497
+ <td class="py-2 px-4 border">Ahmet Yılmaz</td>
498
+ <td class="py-2 px-4 border">Prof. Dr.</td>
499
+ <td class="py-2 px-4 border">Bilgisayar Mühendisliği</td>
500
+ <td class="py-2 px-4 border">3</td>
501
+ <td class="py-2 px-4 border">
502
+ <button class="text-blue-600 hover:text-blue-800">
503
+ <i class="fas fa-eye"></i> Detay
504
+ </button>
505
+ </td>
506
+ </tr>
507
+ <tr class="hover:bg-gray-50 cursor-pointer" data-academician="ayse-demir">
508
+ <td class="py-2 px-4 border">Ayşe Demir</td>
509
+ <td class="py-2 px-4 border">Doç. Dr.</td>
510
+ <td class="py-2 px-4 border">Elektrik-Elektronik Mühendisliği</td>
511
+ <td class="py-2 px-4 border">2</td>
512
+ <td class="py-2 px-4 border">
513
+ <button class="text-blue-600 hover:text-blue-800">
514
+ <i class="fas fa-eye"></i> Detay
515
+ </button>
516
+ </td>
517
+ </tr>
518
+ </tbody>
519
+ </table>
520
+ </div>
521
+
522
+ <!-- Academician Detail View -->
523
+ <div id="academician-detail-view" class="hidden mt-8 bg-gray-50 p-6 rounded-lg">
524
+ <div class="flex justify-between items-start mb-6">
525
+ <div>
526
+ <h3 class="text-xl font-bold" id="academician-name">Ahmet Yılmaz</h3>
527
+ <p class="text-gray-600" id="academician-title">Prof. Dr. - Bilgisayar Mühendisliği</p>
528
+ </div>
529
+ <button id="back-to-list" class="text-gray-600 hover:text-blue-600">
530
+ <i class="fas fa-arrow-left mr-2"></i>Listeye Dön
531
+ </button>
532
+ </div>
533
+
534
+ <h4 class="font-bold mb-4">Verdiği Dersler</h4>
535
+ <table class="min-w-full border">
536
+ <thead class="bg-gray-100">
537
+ <tr>
538
+ <th class="py-2 px-4 border">Ders Kodu</th>
539
+ <th class="py-2 px-4 border">Ders Adı</th>
540
+ <th class="py-2 px-4 border">Dönem</th>
541
+ <th class="py-2 px-4 border">Bölüm</th>
542
+ <th class="py-2 px-4 border">Kapasite</th>
543
+ </tr>
544
+ </thead>
545
+ <tbody id="academician-courses">
546
+ <!-- Will be populated dynamically -->
547
+ </tbody>
548
+ </table>
549
+ </div>
550
+ </div>
551
+
552
+ <!-- Akademisyen Ekle View -->
553
+ <div id="akademisyen-ekle-view" class="hidden">
554
+ <h2 class="text-xl font-bold mb-6">Yeni Akademisyen Ekle</h2>
555
+
556
+ <div class="flex mb-6 border-b">
557
+ <button class="px-4 py-2 font-medium border-b-2 border-blue-600 text-blue-600" data-tab="add-academician">Akademisyen Ekle</button>
558
+ <button class="px-4 py-2 font-medium text-gray-600 hover:text-blue-600" data-tab="add-course">Ders Ekle</button>
559
+ </div>
560
+
561
+ <div id="add-academician-form" class="bg-gray-50 p-6 rounded-lg">
562
+ <form class="grid grid-cols-1 md:grid-cols-2 gap-6">
563
+ <div>
564
+ <label class="block text-gray-700 mb-1">Ad</label>
565
+ <input type="text" class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
566
+ </div>
567
+ <div>
568
+ <label class="block text-gray-700 mb-1">Soyad</label>
569
+ <input type="text" class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
570
+ </div>
571
+ <div>
572
+ <label class="block text-gray-700 mb-1">Unvan</label>
573
+ <select class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
574
+ <option value="">Seçiniz</option>
575
+ <option value="prof">Prof. Dr.</option>
576
+ <option value="doc">Doç. Dr.</option>
577
+ <option value="dr">Dr. Öğr. Üyesi</option>
578
+ <option value="arastirma">Arş. Gör.</option>
579
+ </select>
580
+ </div>
581
+ <div>
582
+ <label class="block text-gray-700 mb-1">Bölüm</label>
583
+ <select class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
584
+ <option value="">Seçiniz</option>
585
+ <option value="bilgisayar">Bilgisayar Mühendisliği</option>
586
+ <option value="elektrik">Elektrik-Elektronik Mühendisliği</option>
587
+ <option value="mimarlik">Mimarlık</option>
588
+ </select>
589
+ </div>
590
+ <div class="md:col-span-2">
591
+ <button type="submit" class="bg-blue-600 text-white px-6 py-2 rounded-lg hover:bg-blue-700">Kaydet</button>
592
+ </div>
593
+ </form>
594
+ </div>
595
+
596
+ <div id="add-course-form" class="hidden bg-gray-50 p-6 rounded-lg">
597
+ <form class="grid grid-cols-1 md:grid-cols-2 gap-6">
598
+ <div>
599
+ <label class="block text-gray-700 mb-1">Ders Adı</label>
600
+ <input type="text" class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
601
+ </div>
602
+ <div>
603
+ <label class="block text-gray-700 mb-1">Ders Kodu</label>
604
+ <input type="text" class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
605
+ </div>
606
+ <div>
607
+ <label class="block text-gray-700 mb-1">Dönem</label>
608
+ <select class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
609
+ <option value="2023-2024-guz">2023-2024 Güz</option>
610
+ <option value="2023-2024-bahar">2023-2024 Bahar</option>
611
+ </select>
612
+ </div>
613
+ <div>
614
+ <label class="block text-gray-700 mb-1">Akademisyen</label>
615
+ <select class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
616
+ <option value="">Seçiniz</option>
617
+ <option value="ahmet-yilmaz">Ahmet Yılmaz</option>
618
+ <option value="ayse-demir">Ayşe Demir</option>
619
+ </select>
620
+ </div>
621
+ <div>
622
+ <label class="block text-gray-700 mb-1">Bölüm</label>
623
+ <select class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
624
+ <option value="">Seçiniz</option>
625
+ <option value="bilgisayar">Bilgisayar Mühendisliği</option>
626
+ <option value="elektrik">Elektrik-Elektronik Mühendisliği</option>
627
+ </select>
628
+ </div>
629
+ <div>
630
+ <label class="block text-gray-700 mb-1">Ders Saati</label>
631
+ <input type="text" class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="Örnek: 10:00-12:00">
632
+ </div>
633
+ <div>
634
+ <label class="block text-gray-700 mb-1">Kapasite</label>
635
+ <input type="number" class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
636
+ </div>
637
+ <div class="md:col-span-2">
638
+ <button type="submit" class="bg-blue-600 text-white px-6 py-2 rounded-lg hover:bg-blue-700">Kaydet</button>
639
+ </div>
640
+ </form>
641
+ </div>
642
+ </div>
643
+
644
+ <!-- Fakülte İşlemleri View -->
645
+ <div id="fakulte-islemleri-view" class="hidden">
646
+ <h2 class="text-xl font-bold mb-6">Fakülte İşlemleri</h2>
647
+
648
+ <div class="flex mb-6 border-b">
649
+ <button class="px-4 py-2 font-medium border-b-2 border-blue-600 text-blue-600" data-tab="campus">Yerleşke Ekle</button>
650
+ <button class="px-4 py-2 font-medium text-gray-600 hover:text-blue-600" data-tab="faculty">Fakülte Ekle</button>
651
+ <button class="px-4 py-2 font-medium text-gray-600 hover:text-blue-600" data-tab="classroom">Derslik Ekle</button>
652
+ </div>
653
+
654
+ <div id="campus-tab" class="bg-gray-50 p-6 rounded-lg">
655
+ <form class="grid grid-cols-1 md:grid-cols-2 gap-6">
656
+ <div>
657
+ <label class="block text-gray-700 mb-1">Yerleşke Adı</label>
658
+ <input type="text" class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
659
+ </div>
660
+ <div>
661
+ <label class="block text-gray-700 mb-1">Adres</label>
662
+ <textarea class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500" rows="3"></textarea>
663
+ </div>
664
+ <div class="md:col-span-2">
665
+ <button type="submit" class="bg-blue-600 text-white px-6 py-2 rounded-lg hover:bg-blue-700">Kaydet</button>
666
+ </div>
667
+ </form>
668
+
669
+ <div class="mt-8">
670
+ <h3 class="text-lg font-bold mb-4">Yerleşke Listesi</h3>
671
+ <table class="min-w-full border">
672
+ <thead class="bg-gray-100">
673
+ <tr>
674
+ <th class="py-2 px-4 border">Yerleşke Adı</th>
675
+ <th class="py-2 px-4 border">Adres</th>
676
+ <th class="py-2 px-4 border">Fakülte Sayısı</th>
677
+ <th class="py-2 px-4 border">İşlem</th>
678
+ </tr>
679
+ </thead>
680
+ <tbody>
681
+ <tr>
682
+ <td class="py-2 px-4 border">Merkez Yerleşke</td>
683
+ <td class="py-2 px-4 border">Üniversite Caddesi No:123 Merkez/İSTANBUL</td>
684
+ <td class="py-2 px-4 border">4</td>
685
+ <td class="py-2 px-4 border">
686
+ <button class="text-blue-600 hover:text-blue-800 mr-2">
687
+ <i class="fas fa-edit"></i>
688
+ </button>
689
+ <button class="text-red-600 hover:text-red-800">
690
+ <i class="fas fa-trash"></i>
691
+ </button>
692
+ </td>
693
+ </tr>
694
+ </tbody>
695
+ </table>
696
+ </div>
697
+ </div>
698
+
699
+ <div id="faculty-tab" class="hidden bg-gray-50 p-6 rounded-lg">
700
+ <form class="grid grid-cols-1 md:grid-cols-2 gap-6">
701
+ <div>
702
+ <label class="block text-gray-700 mb-1">Fakülte Adı</label>
703
+ <input type="text" class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
704
+ </div>
705
+ <div>
706
+ <label class="block text-gray-700 mb-1">Yerleşke</label>
707
+ <select class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
708
+ <option value="">Seçiniz</option>
709
+ <option value="merkez">Merkez Yerleşke</option>
710
+ </select>
711
+ </div>
712
+ <div class="md:col-span-2">
713
+ <label class="block text-gray-700 mb-1">Bölümler</label>
714
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-4">
715
+ <label class="flex items-center">
716
+ <input type="checkbox" class="mr-2">
717
+ <span>Bilgisayar Mühendisliği</span>
718
+ </label>
719
+ <label class="flex items-center">
720
+ <input type="checkbox" class="mr-2">
721
+ <span>Elektrik-Elektronik Mühendisliği</span>
722
+ </label>
723
+ <label class="flex items-center">
724
+ <input type="checkbox" class="mr-2">
725
+ <span>Mimarlık</span>
726
+ </label>
727
+ </div>
728
+ </div>
729
+ <div class="md:col-span-2">
730
+ <button type="submit" class="bg-blue-600 text-white px-6 py-2 rounded-lg hover:bg-blue-700">Kaydet</button>
731
+ </div>
732
+ </form>
733
+
734
+ <div class="mt-8">
735
+ <h3 class="text-lg font-bold mb-4">Fakülte Listesi</h3>
736
+ <table class="min-w-full border">
737
+ <thead class="bg-gray-100">
738
+ <tr>
739
+ <th class="py-2 px-4 border">Fakülte Adı</th>
740
+ <th class="py-2 px-4 border">Yerleşke</th>
741
+ <th class="py-2 px-4 border">Bölüm Sayısı</th>
742
+ <th class="py-2 px-4 border">İşlem</th>
743
+ </tr>
744
+ </thead>
745
+ <tbody>
746
+ <tr>
747
+ <td class="py-2 px-4 border">Mühendislik Fakültesi</td>
748
+ <td class="py-2 px-4 border">Merkez Yerleşke</td>
749
+ <td class="py-2 px-4 border">3</td>
750
+ <td class="py-2 px-4 border">
751
+ <button class="text-blue-600 hover:text-blue-800 mr-2">
752
+ <i class="fas fa-edit"></i>
753
+ </button>
754
+ <button class="text-red-600 hover:text-red-800">
755
+ <i class="fas fa-trash"></i>
756
+ </button>
757
+ </td>
758
+ </tr>
759
+ </tbody>
760
+ </table>
761
+ </div>
762
+ </div>
763
+
764
+ <div id="classroom-tab" class="hidden bg-gray-50 p-6 rounded-lg">
765
+ <form class="grid grid-cols-1 md:grid-cols-3 gap-6">
766
+ <div>
767
+ <label class="block text-gray-700 mb-1">Yerleşke</label>
768
+ <select class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
769
+ <option value="">Seçiniz</option>
770
+ <option value="merkez">Merkez Yerleşke</option>
771
+ </select>
772
+ </div>
773
+ <div>
774
+ <label class="block text-gray-700 mb-1">Derslik Kodu</label>
775
+ <input type="text" class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
776
+ </div>
777
+ <div>
778
+ <label class="block text-gray-700 mb-1">Kapasite</label>
779
+ <input type="number" class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
780
+ </div>
781
+ <div class="md:col-span-3">
782
+ <button type="submit" class="bg-blue-600 text-white px-6 py-2 rounded-lg hover:bg-blue-700">Kaydet</button>
783
+ </div>
784
+ </form>
785
+
786
+ <div class="mt-8">
787
+ <h3 class="text-lg font-bold mb-4">Derslik Listesi</h3>
788
+ <table class="min-w-full border">
789
+ <thead class="bg-gray-100">
790
+ <tr>
791
+ <th class="py-2 px-4 border">Derslik Kodu</th>
792
+ <th class="py-2 px-4 border">Yerleşke</th>
793
+ <th class="py-2 px-4 border">Kapasite</th>
794
+ <th class="py-2 px-4 border">Durum</th>
795
+ <th class="py-2 px-4 border">İşlem</th>
796
+ </tr>
797
+ </thead>
798
+ <tbody>
799
+ <tr>
800
+ <td class="py-2 px-4 border">A-101</td>
801
+ <td class="py-2 px-4 border">Merkez Yerleşke</td>
802
+ <td class="py-2 px-4 border">50</td>
803
+ <td class="py-2 px-4 border">
804
+ <span class="px-2 py-1 bg-green-100 text-green-800 rounded-full text-xs">Aktif</span>
805
+ </td>
806
+ <td class="py-2 px-4 border">
807
+ <button class="text-blue-600 hover:text-blue-800 mr-2">
808
+ <i class="fas fa-edit"></i>
809
+ </button>
810
+ <button class="text-red-600 hover:text-red-800">
811
+ <i class="fas fa-trash"></i>
812
+ </button>
813
+ </td>
814
+ </tr>
815
+ <tr>
816
+ <td class="py-2 px-4 border">A-102</td>
817
+ <td class="py-2 px-4 border">Merkez Yerleşke</td>
818
+ <td class="py-2 px-4 border">30</td>
819
+ <td class="py-2 px-4 border">
820
+ <span class="px-2 py-1 bg-green-100 text-green-800 rounded-full text-xs">Aktif</span>
821
+ </td>
822
+ <td class="py-2 px-4 border">
823
+ <button class="text-blue-600 hover:text-blue-800 mr-2">
824
+ <i class="fas fa-edit"></i>
825
+ </button>
826
+ <button class="text-red-600 hover:text-red-800">
827
+ <i class="fas fa-trash"></i>
828
+ </button>
829
+ </td>
830
+ </tr>
831
+ </tbody>
832
+ </table>
833
+ </div>
834
+ </div>
835
+ </div>
836
+
837
+ <!-- Kullanıcı İşlemleri View -->
838
+ <div id="kullanici-view" class="hidden">
839
+ <h2 class="text-xl font-bold mb-6">Kullanıcı İşlemleri</h2>
840
+
841
+ <div class="bg-gray-50 p-6 rounded-lg max-w-xl mx-auto">
842
+ <h3 class="text-lg font-bold mb-4">Şifre Değiştir</h3>
843
+ <form class="space-y-4">
844
+ <div>
845
+ <label class="block text-gray-700 mb-1">Mevcut Şifre</label>
846
+ <input type="password" class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
847
+ </div>
848
+ <div>
849
+ <label class="block text-gray-700 mb-1">Yeni Şifre</label>
850
+ <input type="password" class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
851
+ </div>
852
+ <div>
853
+ <label class="block text-gray-700 mb-1">Yeni Şifre (Tekrar)</label>
854
+ <input type="password" class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
855
+ </div>
856
+ <div>
857
+ <button type="submit" class="bg-blue-600 text-white px-6 py-2 rounded-lg hover:bg-blue-700">Şifreyi Değiştir</button>
858
+ </div>
859
+ </form>
860
+ </div>
861
+ </div>
862
+
863
+ <!-- Modal for Adding Course/Exam -->
864
+ <div id="add-schedule-modal" class="hidden fixed inset-0 bg-gray-900 bg-opacity-50 z-50 flex items-center justify-center">
865
+ <div class="bg-white rounded-lg shadow-xl w-full max-w-2xl">
866
+ <div class="p-4 border-b flex justify-between items-center">
867
+ <h3 class="text-lg font-bold">Ders Ekle</h3>
868
+ <button id="close-modal" class="text-gray-500 hover:text-gray-700">
869
+ <i class="fas fa-times"></i>
870
+ </button>
871
+ </div>
872
+ <div class="p-6">
873
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
874
+ <div>
875
+ <label class="block text-gray-700 mb-1">Ders Seçin</label>
876
+ <select id="course-select" class="w-full border rounded-lg px-3 py-2">
877
+ <option value="">Ders Seçin</option>
878
+ <option value="BIL101">BIL101 - Programlamaya Giriş</option>
879
+ <option value="BIL102">BIL102 - Veri Yapıları</option>
880
+ <option value="ELE101">ELE101 - Elektrik Devreleri</option>
881
+ </select>
882
+ </div>
883
+ <div>
884
+ <label class="block text-gray-700 mb-1">Derslik Seçin</label>
885
+ <select id="classroom-select" class="w-full border rounded-lg px-3 py-2">
886
+ <option value="">Derslik Seçin</option>
887
+ <option value="A-101">A-101 (50 kişi)</option>
888
+ <option value="A-102">A-102 (30 kişi)</option>
889
+ <option value="B-201">B-201 (40 kişi)</option>
890
+ </select>
891
+ </div>
892
+ <div id="duration-section">
893
+ <label class="block text-gray-700 mb-1">Süre (saat)</label>
894
+ <select id="duration-select" class="w-full border rounded-lg px-3 py-2">
895
+ <option value="1">1 saat</option>
896
+ <option value="2" selected>2 saat</option>
897
+ <option value="3">3 saat</option>
898
+ </select>
899
+ </div>
900
+ <div id="exam-time-section" class="hidden">
901
+ <label class="block text-gray-700 mb-1">Sınav Saati</label>
902
+ <select id="exam-time-select" class="w-full border rounded-lg px-3 py-2">
903
+ <option value="09:00-11:00">09:00-11:00</option>
904
+ <option value="11:00-13:00">11:00-13:00</option>
905
+ <option value="14:00-16:00">14:00-16:00</option>
906
+ <option value="16:00-18:00">16:00-18:00</option>
907
+ </select>
908
+ </div>
909
+ </div>
910
+ </div>
911
+ <div class="p-4 border-t flex justify-end space-x-3">
912
+ <button id="cancel-modal" class="px-4 py-2 border rounded-lg text-gray-700 hover:bg-gray-100">İptal</button>
913
+ <button id="save-modal" class="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700">Kaydet</button>
914
+ </div>
915
+ </div>
916
+ </div>
917
+ </div>
918
+ </div>
919
+ </div>
920
+
921
+ <script>
922
+ // DOM Elements
923
+ const loginScreen = document.getElementById('login-screen');
924
+ const mainLayout = document.getElementById('main-layout');
925
+ const loginForm = document.getElementById('login-form');
926
+ const logoutBtn = document.getElementById('logout-btn');
927
+ const currentUserSpan = document.getElementById('current-user');
928
+
929
+ // Sidebar elements
930
+ const sidebar = document.getElementById('sidebar');
931
+ const toggleSidebarBtn = document.getElementById('toggle-sidebar');
932
+ const mainContent = document.getElementById('main-content');
933
+
934
+ // Menu elements
935
+ const menuItems = {
936
+ 'ders-programi': {
937
+ menu: document.getElementById('menu-ders-programi'),
938
+ arrow: document.getElementById('arrow-ders-programi'),
939
+ submenu: document.getElementById('submenu-ders-programi'),
940
+ views: {
941
+ programlar: document.getElementById('programlar-view'),
942
+ 'yeni-program-ekle': document.getElementById('yeni-program-ekle-view')
943
+ }
944
+ },
945
+ 'sinav-programi': {
946
+ menu: document.getElementById('menu-sinav-programi'),
947
+ arrow: document.getElementById('arrow-sinav-programi'),
948
+ submenu: document.getElementById('submenu-sinav-programi'),
949
+ views: {
950
+ sinavlar: document.getElementById('sinavlar-view'),
951
+ 'yeni-sinav-programi-olustur': document.getElementById('yeni-sinav-programi-olustur-view')
952
+ }
953
+ },
954
+ 'akademisyen': {
955
+ menu: document.getElementById('menu-akademisyen'),
956
+ arrow: document.getElementById('arrow-akademisyen'),
957
+ submenu: document.getElementById('submenu-akademisyen'),
958
+ views: {
959
+ akademisyenler: document.getElementById('akademisyenler-view'),
960
+ 'akademisyen-ekle': document.getElementById('akademisyen-ekle-view')
961
+ }
962
+ },
963
+ 'fakulte': {
964
+ menu: document.getElementById('menu-fakulte'),
965
+ views: {
966
+ 'fakulte-islemleri': document.getElementById('fakulte-islemleri-view')
967
+ }
968
+ },
969
+ 'kullanici': {
970
+ menu: document.getElementById('menu-kullanici'),
971
+ views: {
972
+ 'kullanici': document.getElementById('kullanici-view')
973
+ }
974
+ }
975
+ };
976
+
977
+ // Content elements
978
+ const dashboardView = document.getElementById('dashboard-view');
979
+ const contentArea = document.getElementById('content-area');
980
+ const pageTitle = document.getElementById('page-title');
981
+
982
+ // Modal elements
983
+ const addScheduleModal = document.getElementById('add-schedule-modal');
984
+ const closeModalBtn = document.getElementById('close-modal');
985
+ const cancelModalBtn = document.getElementById('cancel-modal');
986
+ const saveModalBtn = document.getElementById('save-modal');
987
+ const examTimeSection = document.getElementById('exam-time-section');
988
+
989
+ // Academician details
990
+ const academicianDetailView = document.getElementById('academician-detail-view');
991
+ const backToListBtn = document.getElementById('back-to-list');
992
+
993
+ // Variables
994
+ let currentPage = 'dashboard';
995
+ let isSidebarCollapsed = false;
996
+ let currentSelectedCell = null;
997
+
998
+ // Sample data
999
+ const academicians = {
1000
+ 'ahmet-yilmaz': {
1001
+ name: 'Ahmet Yılmaz',
1002
+ title: 'Prof. Dr.',
1003
+ department: 'Bilgisayar Mühendisliği',
1004
+ courses: [
1005
+ { code: 'BIL101', name: 'Programlamaya Giriş', semester: '2023-2024 Güz', department: 'Bilgisayar Mühendisliği', capacity: 50 },
1006
+ { code: 'BIL201', name: 'Nesne Yönelimli Programlama', semester: '2023-2024 Bahar', department: 'Bilgisayar Mühendisliği', capacity: 45 },
1007
+ { code: 'BIL305', name: 'Veritabanı Sistemleri', semester: '2023-2024 Güz', department: 'Bilgisayar Mühendisliği', capacity: 40 }
1008
+ ]
1009
+ },
1010
+ 'ayse-demir': {
1011
+ name: 'Ayşe Demir',
1012
+ title: 'Doç. Dr.',
1013
+ department: 'Elektrik-Elektronik Mühendisliği',
1014
+ courses: [
1015
+ { code: 'ELE101', name: 'Elektrik Devreleri', semester: '2023-2024 Güz', department: 'Elektrik-Elektronik Mühendisliği', capacity: 60 },
1016
+ { code: 'ELE205', name: 'Sinyaller ve Sistemler', semester: '2023-2024 Bahar', department: 'Elektrik-Elektronik Mühendisliği', capacity: 55 }
1017
+ ]
1018
+ }
1019
+ };
1020
+
1021
+ // Initialize the app
1022
+ function init() {
1023
+ // Set up event listeners
1024
+ setupEventListeners();
1025
+
1026
+ // Hide login screen and show main layout if user is already logged in
1027
+ const loggedIn = localStorage.getItem('loggedIn');
1028
+ if (loggedIn === 'true') {
1029
+ loginScreen.classList.add('hidden');
1030
+ mainLayout.classList.remove('hidden');
1031
+ const username = localStorage.getItem('username') || 'Kullanıcı';
1032
+ currentUserSpan.textContent = username;
1033
+ }
1034
+ }
1035
+
1036
+ // Set up all event listeners
1037
+ function setupEventListeners() {
1038
+ // Login form
1039
+ loginForm.addEventListener('submit', handleLogin);
1040
+
1041
+ // Logout button
1042
+ logoutBtn.addEventListener('click', handleLogout);
1043
+
1044
+ // Toggle sidebar
1045
+ toggleSidebarBtn.addEventListener('click', toggleSidebar);
1046
+
1047
+ // Menu items
1048
+ Object.entries(menuItems).forEach(([menuKey, menuItem]) => {
1049
+ if (menuItem.submenu) {
1050
+ // Menu with submenu
1051
+ menuItem.menu.addEventListener('click', () => toggleSubmenu(menuKey));
1052
+
1053
+ // Submenu items
1054
+ const submenuItems = menuItem.submenu.querySelectorAll('[data-page]');
1055
+ submenuItems.forEach(item => {
1056
+ item.addEventListener('click', () => navigateToPage(item.dataset.page));
1057
+ });
1058
+ } else {
1059
+ // Menu without submenu
1060
+ menuItem.menu.addEventListener('click', () => navigateToPage(menuKey));
1061
+ }
1062
+ });
1063
+
1064
+ // Faculty tabs
1065
+ const facultyTabs = document.querySelectorAll('[data-tab="faculty"], [data-tab="campus"], [data-tab="classroom"]');
1066
+ facultyTabs.forEach(tab => {
1067
+ tab.addEventListener('click', () => {
1068
+ const tabId = tab.dataset.tab + '-tab';
1069
+ document.querySelectorAll('#fakulte-islemleri-view > div').forEach(content => {
1070
+ content.classList.add('hidden');
1071
+ });
1072
+ document.getElementById(tabId).classList.remove('hidden');
1073
+
1074
+ // Update active tab styling
1075
+ document.querySelectorAll('[data-tab]').forEach(t => {
1076
+ t.classList.remove('border-b-2', 'border-blue-600', 'text-blue-600');
1077
+ t.classList.add('text-gray-600', 'hover:text-blue-600');
1078
+ });
1079
+ tab.classList.remove('text-gray-600', 'hover:text-blue-600');
1080
+ tab.classList.add('border-b-2', 'border-blue-600', 'text-blue-600');
1081
+ });
1082
+ });
1083
+
1084
+ // Academician tabs
1085
+ const academicianTabs = document.querySelectorAll('[data-tab="add-academician"], [data-tab="add-course"]');
1086
+ academicianTabs.forEach(tab => {
1087
+ tab.addEventListener('click', () => {
1088
+ const tabId = tab.dataset.tab + '-form';
1089
+ document.querySelectorAll('#akademisyen-ekle-view > div').forEach(content => {
1090
+ if (content.id.includes('form')) {
1091
+ content.classList.add('hidden');
1092
+ }
1093
+ });
1094
+ document.getElementById(tabId).classList.remove('hidden');
1095
+
1096
+ // Update active tab styling
1097
+ document.querySelectorAll('[data-tab]').forEach(t => {
1098
+ t.classList.remove('border-b-2', 'border-blue-600', 'text-blue-600');
1099
+ t.classList.add('text-gray-600', 'hover:text-blue-600');
1100
+ });
1101
+ tab.classList.remove('text-gray-600', 'hover:text-blue-600');
1102
+ tab.classList.add('border-b-2', 'border-blue-600', 'text-blue-600');
1103
+ });
1104
+ });
1105
+
1106
+ // Modal buttons
1107
+ closeModalBtn.addEventListener('click', closeModal);
1108
+ cancelModalBtn.addEventListener('click', closeModal);
1109
+ saveModalBtn.addEventListener('click', saveSchedule);
1110
+
1111
+ // Academician details
1112
+ backToListBtn.addEventListener('click', () => {
1113
+ academicianDetailView.classList.add('hidden');
1114
+ document.getElementById('akademisyenler-view').querySelector('table').classList.remove('hidden');
1115
+ });
1116
+
1117
+ // Academician table rows
1118
+ const academicianRows = document.querySelectorAll('[data-academician]');
1119
+ academicianRows.forEach(row => {
1120
+ row.addEventListener('click', () => showAcademicianDetails(row.dataset.academician));
1121
+ });
1122
+
1123
+ // Program department select
1124
+ const programDepartmentSelect = document.getElementById('program-department');
1125
+ if (programDepartmentSelect) {
1126
+ programDepartmentSelect.addEventListener('change', generateClassTables);
1127
+ }
1128
+
1129
+ // Exam department select
1130
+ const examDepartmentSelect = document.getElementById('exam-department');
1131
+ if (examDepartmentSelect) {
1132
+ examDepartmentSelect.addEventListener('change', generateExamTables);
1133
+ }
1134
+ }
1135
+
1136
+ // Handle login
1137
+ function handleLogin(e) {
1138
+ e.preventDefault();
1139
+ const username = document.getElementById('username').value;
1140
+
1141
+ if (username) {
1142
+ localStorage.setItem('loggedIn', 'true');
1143
+ localStorage.setItem('username', username);
1144
+ loginScreen.classList.add('hidden');
1145
+ mainLayout.classList.remove('hidden');
1146
+ currentUserSpan.textContent = username;
1147
+ } else {
1148
+ alert('Lütfen geçerli bir kullanıcı adı giriniz.');
1149
+ }
1150
+ }
1151
+
1152
+ // Handle logout
1153
+ function handleLogout() {
1154
+ localStorage.removeItem('loggedIn');
1155
+ localStorage.removeItem('username');
1156
+ mainLayout.classList.add('hidden');
1157
+ loginScreen.classList.remove('hidden');
1158
+ document.getElementById('username').value = '';
1159
+ document.getElementById('password').value = '';
1160
+ }
1161
+
1162
+ // Toggle sidebar collapse/expand
1163
+ function toggleSidebar() {
1164
+ isSidebarCollapsed = !isSidebarCollapsed;
1165
+
1166
+ if (isSidebarCollapsed) {
1167
+ sidebar.classList.remove('sidebar-expanded');
1168
+ sidebar.classList.add('sidebar-collapsed');
1169
+ mainContent.classList.remove('content-expanded');
1170
+ mainContent.classList.add('content-collapsed');
1171
+
1172
+ // Hide menu texts
1173
+ document.querySelectorAll('.sidebar span').forEach(el => {
1174
+ el.classList.add('hidden');
1175
+ });
1176
+
1177
+ // Center icons
1178
+ document.querySelectorAll('.sidebar i').forEach(icon => {
1179
+ if (!icon.id.includes('arrow')) {
1180
+ icon.classList.remove('mr-3');
1181
+ icon.parentElement.classList.add('justify-center');
1182
+ }
1183
+ });
1184
+ } else {
1185
+ sidebar.classList.remove('sidebar-collapsed');
1186
+ sidebar.classList.add('sidebar-expanded');
1187
+ mainContent.classList.remove('content-collapsed');
1188
+ mainContent.classList.add('content-expanded');
1189
+
1190
+ // Show menu texts
1191
+ document.querySelectorAll('.sidebar span').forEach(el => {
1192
+ el.classList.remove('hidden');
1193
+ });
1194
+
1195
+ // Restore icon positions
1196
+ document.querySelectorAll('.sidebar i').forEach(icon => {
1197
+ if (!icon.id.includes('arrow')) {
1198
+ icon.classList.add('mr-3');
1199
+ icon.parentElement.classList.remove('justify-center');
1200
+ }
1201
+ });
1202
+ }
1203
+ }
1204
+
1205
+ // Toggle submenu
1206
+ function toggleSubmenu(menuKey) {
1207
+ const menuItem = menuItems[menuKey];
1208
+ menuItem.submenu.classList.toggle('hidden');
1209
+ menuItem.arrow.classList.toggle('rotate-180');
1210
+ }
1211
+
1212
+ // Navigate to page
1213
+ function navigateToPage(page) {
1214
+ // Hide all views
1215
+ document.querySelectorAll('#content-area > div').forEach(view => {
1216
+ view.classList.add('hidden');
1217
+ });
1218
+
1219
+ // Show the selected view
1220
+ let viewFound = false;
1221
+
1222
+ // Check if the page is a main menu item
1223
+ if (menuItems[page]) {
1224
+ dashboardView.classList.add('hidden');
1225
+
1226
+ // If it has subviews, show the first one by default
1227
+ if (menuItems[page].views) {
1228
+ const firstView = Object.keys(menuItems[page].views)[0];
1229
+ menuItems[page].views[firstView].classList.remove('hidden');
1230
+ viewFound = true;
1231
+ }
1232
+
1233
+ // Update page title
1234
+ const menuText = menuItems[page].menu.querySelector('span').textContent;
1235
+ pageTitle.textContent = menuText;
1236
+
1237
+ // Special cases for faculty and user
1238
+ if (page === 'fakulte') {
1239
+ document.getElementById('fakulte-islemleri-view').classList.remove('hidden');
1240
+ document.getElementById('campus-tab').classList.remove('hidden');
1241
+ viewFound = true;
1242
+ } else if (page === 'kullanici') {
1243
+ document.getElementById('kullanici-view').classList.remove('hidden');
1244
+ viewFound = true;
1245
+ }
1246
+ } else {
1247
+ // Check if the page is a submenu item
1248
+ for (const [menuKey, menuItem] of Object.entries(menuItems)) {
1249
+ if (menuItem.views && menuItem.views[page]) {
1250
+ menuItem.views[page].classList.remove('hidden');
1251
+ viewFound = true;
1252
+
1253
+ // Update page title with menu + submenu text
1254
+ const menuText = menuItems[menuKey].menu.querySelector('span').textContent;
1255
+ const submenuText = document.querySelector(`[data-page="${page}"]`).textContent;
1256
+ pageTitle.textContent = `${menuText} > ${submenuText}`;
1257
+
1258
+ break;
1259
+ }
1260
+ }
1261
+ }
1262
+
1263
+ // If no view was found, show dashboard
1264
+ if (!viewFound) {
1265
+ dashboardView.classList.remove('hidden');
1266
+ pageTitle.textContent = 'Ana Sayfa';
1267
+ }
1268
+
1269
+ currentPage = page;
1270
+ }
1271
+
1272
+ // Show academician details
1273
+ function showAcademicianDetails(academicianId) {
1274
+ const academician = academicians[academicianId];
1275
+ if (!academician) return;
1276
+
1277
+ // Hide table
1278
+ document.getElementById('akademisyenler-view').querySelector('table').classList.add('hidden');
1279
+
1280
+ // Set academician info
1281
+ document.getElementById('academician-name').textContent = academician.name;
1282
+ document.getElementById('academician-title').textContent = `${academician.title} - ${academician.department}`;
1283
+
1284
+ // Populate courses
1285
+ const coursesTbody = document.getElementById('academician-courses');
1286
+ coursesTbody.innerHTML = '';
1287
+
1288
+ academician.courses.forEach(course => {
1289
+ const row = document.createElement('tr');
1290
+ row.className = 'hover:bg-gray-50';
1291
+ row.innerHTML = `
1292
+ <td class="py-2 px-4 border">${course.code}</td>
1293
+ <td class="py-2 px-4 border">${course.name}</td>
1294
+ <td class="py-2 px-4 border">${course.semester}</td>
1295
+ <td class="py-2 px-4 border">${course.department}</td>
1296
+ <td class="py-2 px-4 border">${course.capacity}</td>
1297
+ `;
1298
+ coursesTbody.appendChild(row);
1299
+ });
1300
+
1301
+ // Show detail view
1302
+ academicianDetailView.classList.remove('hidden');
1303
+ }
1304
+
1305
+ // Generate class tables based on department selection
1306
+ function generateClassTables() {
1307
+ const departmentSelect = document.getElementById('program-department');
1308
+ const department = departmentSelect.value;
1309
+
1310
+ if (!department) {
1311
+ document.getElementById('program-tables-container').classList.add('hidden');
1312
+ return;
1313
+ }
1314
+
1315
+ const isGraduate = !department.includes('onlisans');
1316
+ const tablesContainer = document.getElementById('class-tables');
1317
+ tablesContainer.innerHTML = '';
1318
+
1319
+ // Create tables (4 for graduate, 2 for undergraduate)
1320
+ const tableCount = isGraduate ? 4 : 2;
1321
+
1322
+ for (let i = 1; i <= tableCount; i++) {
1323
+ const tableDiv = document.createElement('div');
1324
+ tableDiv.className = 'border rounded-lg p-4';
1325
+ tableDiv.innerHTML = `
1326
+ <h4 class="font-bold mb-3">${i}. Sınıf Ders Programı</h4>
1327
+ <div class="overflow-auto">
1328
+ <table class="w-full border">
1329
+ <thead>
1330
+ <tr>
1331
+ <th class="p-2 border w-24">Saat/Gün</th>
1332
+ <th class="p-2 border">Pazartesi</th>
1333
+ <th class="p-2 border">Salı</th>
1334
+ <th class="p-2 border">Çarşamba</th>
1335
+ <th class="p-2 border">Perşembe</th>
1336
+ <th class="p-2 border">Cuma</th>
1337
+ </tr>
1338
+ </thead>
1339
+ <tbody id="class-table-${i}">
1340
+ <!-- Rows will be generated here -->
1341
+ </tbody>
1342
+ </table>
1343
+ </div>
1344
+ <div class="flex justify-end mt-4 space-x-3">
1345
+ <button class="px-4 py-2 bg-gray-200 text-gray-800 rounded-lg hover:bg-gray-300 schedule-edit-btn">Düzenle</button>
1346
+ <button class="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 schedule-save-btn">Kaydet</button>
1347
+ </div>
1348
+ `;
1349
+ tablesContainer.appendChild(tableDiv);
1350
+
1351
+ // Generate time slots (9:00-22:00)
1352
+ const tableBody = document.getElementById(`class-table-${i}`);
1353
+ for (let hour = 9; hour <= 21; hour += 1) { // Every hour
1354
+ const time = `${hour.toString().padStart(2, '0')}:00-${(hour + 1).toString().padStart(2, '0')}:00`;
1355
+
1356
+ const row = document.createElement('tr');
1357
+ row.innerHTML = `<td class="p-2 border bg-gray-100 font-medium">${time}</td>`;
1358
+
1359
+ // Add a cell for each day (Monday to Friday)
1360
+ for (let day = 1; day <= 5; day++) {
1361
+ const cell = document.createElement('td');
1362
+ cell.className = 'p-2 border schedule-cell cell-hover';
1363
+ cell.dataset.day = day;
1364
+ cell.dataset.time = time;
1365
+ cell.dataset.classYear = i;
1366
+ cell.addEventListener('click', () => openScheduleModal(cell, 'course'));
1367
+ row.appendChild(cell);
1368
+ }
1369
+
1370
+ tableBody.appendChild(row);
1371
+ }
1372
+ }
1373
+
1374
+ // Show the tables container
1375
+ document.getElementById('program-tables-container').classList.remove('hidden');
1376
+ }
1377
+
1378
+ // Generate exam tables based on department selection
1379
+ function generateExamTables() {
1380
+ const departmentSelect = document.getElementById('exam-department');
1381
+ const department = departmentSelect.value;
1382
+
1383
+ if (!department) {
1384
+ document.getElementById('exam-tables-container').classList.add('hidden');
1385
+ return;
1386
+ }
1387
+
1388
+ const isGraduate = !department.includes('onlisans');
1389
+ const tablesContainer = document.getElementById('exam-class-tables');
1390
+ tablesContainer.innerHTML = '';
1391
+
1392
+ // Create tables (4 for graduate, 2 for undergraduate)
1393
+ const tableCount = isGraduate ? 4 : 2;
1394
+
1395
+ for (let i = 1; i <= tableCount; i++) {
1396
+ const tableDiv = document.createElement('div');
1397
+ tableDiv.className = 'border rounded-lg p-4';
1398
+ tableDiv.innerHTML = `
1399
+ <h4 class="font-bold mb-3">${i}. Sınıf Sınav Programı</h4>
1400
+ <div class="overflow-auto">
1401
+ <table class="w-full border">
1402
+ <thead>
1403
+ <tr>
1404
+ <th class="p-2 border w-24">Saat/Gün</th>
1405
+ <th class="p-2 border">Pazartesi</th>
1406
+ <th class="p-2 border">Salı</th>
1407
+ <th class="p-2 border">Çarşamba</th>
1408
+ <th class="p-2 border">Perşembe</th>
1409
+ <th class="p-2 border">Cuma</th>
1410
+ </tr>
1411
+ </thead>
1412
+ <tbody id="exam-table-${i}">
1413
+ <!-- Rows will be generated here -->
1414
+ </tbody>
1415
+ </table>
1416
+ </div>
1417
+ <div class="flex justify-end mt-4 space-x-3">
1418
+ <button class="px-4 py-2 bg-gray-200 text-gray-800 rounded-lg hover:bg-gray-300 exam-edit-btn">Düzenle</button>
1419
+ <button class="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 exam-save-btn">Kaydet</button>
1420
+ </div>
1421
+ `;
1422
+ tablesContainer.appendChild(tableDiv);
1423
+
1424
+ // Generate time slots (9:00-18:00)
1425
+ const tableBody = document.getElementById(`exam-table-${i}`);
1426
+ for (let hour = 9; hour <= 17; hour += 1) { // Every hour
1427
+ const time = `${hour.toString().padStart(2, '0')}:00-${(hour + 1).toString().padStart(2, '0')}:00`;
1428
+
1429
+ const row = document.createElement('tr');
1430
+ row.innerHTML = `<td class="p-2 border bg-gray-100 font-medium">${time}</td>`;
1431
+
1432
+ // Add a cell for each day (Monday to Friday)
1433
+ for (let day = 1; day <= 5; day++) {
1434
+ const cell = document.createElement('td');
1435
+ cell.className = 'p-2 border schedule-cell cell-hover';
1436
+ cell.dataset.day = day;
1437
+ cell.dataset.time = time;
1438
+ cell.dataset.classYear = i;
1439
+ cell.addEventListener('click', () => openScheduleModal(cell, 'exam'));
1440
+ row.appendChild(cell);
1441
+ }
1442
+
1443
+ tableBody.appendChild(row);
1444
+ }
1445
+ }
1446
+
1447
+ // Show the tables container
1448
+ document.getElementById('exam-tables-container').classList.remove('hidden');
1449
+ }
1450
+
1451
+ // Open schedule modal
1452
+ function openScheduleModal(cell, type) {
1453
+ if (cell.classList.contains('booked')) {
1454
+ return; // Don't allow editing booked cells
1455
+ }
1456
+
1457
+ currentSelectedCell = cell;
1458
+
1459
+ // Reset modal
1460
+ document.getElementById('course-select').value = '';
1461
+ document.getElementById('classroom-select').value = '';
1462
+
1463
+ // Configure modal based on type (course or exam)
1464
+ if (type === 'exam') {
1465
+ examTimeSection.classList.remove('hidden');
1466
+ document.getElementById('duration-section').classList.add('hidden');
1467
+ document.getElementById('add-schedule-modal').querySelector('h3').textContent = 'Sınav Ekle';
1468
+ } else {
1469
+ examTimeSection.classList.add('hidden');
1470
+ document.getElementById('duration-section').classList.remove('hidden');
1471
+ document.getElementById('add-schedule-modal').querySelector('h3').textContent = 'Ders Ekle';
1472
+ }
1473
+
1474
+ // Show modal
1475
+ addScheduleModal.classList.remove('hidden');
1476
+ }
1477
+
1478
+ // Close modal
1479
+ function closeModal() {
1480
+ addScheduleModal.classList.add('hidden');
1481
+ currentSelectedCell = null;
1482
+ }
1483
+
1484
+ // Save schedule/course
1485
+ function saveSchedule() {
1486
+ const courseSelect = document.getElementById('course-select');
1487
+ const classroomSelect = document.getElementById('classroom-select');
1488
+
1489
+ if (!courseSelect.value || !classroomSelect.value) {
1490
+ alert('Lütfen ders ve derslik seçiniz.');
1491
+ return;
1492
+ }
1493
+
1494
+ // Update the cell
1495
+ const courseText = courseSelect.options[courseSelect.selectedIndex].text.split(' - ')[1];
1496
+ const courseCode = courseSelect.options[courseSelect.selectedIndex].text.split(' - ')[0];
1497
+ const classroom = classroomSelect.value;
1498
+
1499
+ const duration = document.getElementById('duration-select').value;
1500
+ const examTime = document.getElementById('exam-time-select').value;
1501
+
1502
+ if (currentSelectedCell) {
1503
+ // Clear any previous selection
1504
+ currentSelectedCell.className = 'p-2 border schedule-cell booked';
1505
+ currentSelectedCell.innerHTML = `
1506
+ <div class="text-sm font-medium">${courseText}</div>
1507
+ <div class="text-xs text-gray-600">${courseCode} - ${classroom}</div>
1508
+ `;
1509
+
1510
+ // Mark cells as booked for multi-hour duration
1511
+ if (duration > 1 && !examTime) {
1512
+ const row = currentSelectedCell.parentElement;
1513
+ const cellIndex = Array.from(row.cells).indexOf(currentSelectedCell);
1514
+ const startTime = parseInt(currentSelectedCell.dataset.time.split(':')[0]);
1515
+
1516
+ for (let i = 1; i < duration; i++) {
1517
+ const nextCell = row.cells[cellIndex + (i * 5)]; // Assuming 5 days
1518
+ if (nextCell) {
1519
+ nextCell.className = 'p-2 border schedule-cell booked';
1520
+ nextCell.innerHTML = `
1521
+ <div class="text-sm font-medium">${courseText}</div>
1522
+ <div class="text-xs text-gray-600">${courseCode} - ${classroom}</div>
1523
+ `;
1524
+ }
1525
+ }
1526
+ }
1527
+
1528
+ if (examTime) {
1529
+ currentSelectedCell.innerHTML = `
1530
+ <div class="text-sm font-medium">${courseText} (Sınav)</div>
1531
+ <div class="text-xs text-gray-600">${courseCode} - ${classroom}</div>
1532
+ <div class="text-xs mt-1 font-medium">${examTime}</div>
1533
+ `;
1534
+ }
1535
+ }
1536
+
1537
+ closeModal();
1538
+ }
1539
+
1540
+ // Tab switching for programlar view
1541
+ const programTabs = document.querySelectorAll('[data-tab="academician-programs"], [data-tab="department-programs"]');
1542
+ programTabs.forEach(tab => {
1543
+ tab.addEventListener('click', () => {
1544
+ const tabId = tab.dataset.tab + '-tab';
1545
+ document.querySelectorAll('#programlar-view > div').forEach(content => {
1546
+ if (content.id && content.id.includes('-tab')) {
1547
+ content.classList.add('hidden');
1548
+ }
1549
+ });
1550
+ document.getElementById(tabId).classList.remove('hidden');
1551
+
1552
+ // Update active tab styling
1553
+ document.querySelectorAll('[data-tab]').forEach(t => {
1554
+ t.classList.remove('border-b-2', 'border-blue-600', 'text-blue-600');
1555
+ t.classList.add('text-gray-600', 'hover:text-blue-600');
1556
+ });
1557
+ tab.classList.remove('text-gray-600', 'hover:text-blue-600');
1558
+ tab.classList.add('border-b-2', 'border-blue-600', 'text-blue-600');
1559
+
1560
+ // Show/hide relevant filters
1561
+ if (tabId === 'academician-programs-tab') {
1562
+ document.getElementById('program-select-academician').classList.remove('hidden');
1563
+ document.getElementById('program-select-department').classList.add('hidden');
1564
+ document.getElementById('pdf-generate-btn').classList.remove('hidden');
1565
+ } else {
1566
+ document.getElementById('program-select-department').classList.remove('hidden');
1567
+ document.getElementById('program-select-academician').classList.add('hidden');
1568
+ document.getElementById('pdf-generate-btn').classList.remove('hidden');
1569
+ }
1570
+ });
1571
+ });
1572
+
1573
+ // Initialize the app
1574
+ init();
1575
+ </script>
1576
+ <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=Sudegk/sude" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
1577
+ </html>