|
44 | 44 | <nav class="navbar navbar-expand-lg"> |
45 | 45 | <div class="container-fluid"> |
46 | 46 | <span class="navbar-brand">Stable Diffusion 模型管理器</span> |
| 47 | + <div class="form-check form-switch me-3"> |
| 48 | + <input class="form-check-input" type="checkbox" role="switch" id="nsfwToggle"> |
| 49 | + <label class="form-check-label" for="nsfwToggle">显示 NSFW</label> |
| 50 | + </div> |
47 | 51 | <button class="btn btn-outline ms-auto" id="darkModeToggle"> |
48 | 52 | <i class="bi bi-sun-fill" id="lightIcon"></i> |
49 | 53 | <i class="bi bi-moon-stars-fill d-none" id="darkIcon"></i> |
|
148 | 152 | type: new Set() |
149 | 153 | }; |
150 | 154 |
|
| 155 | + // NSFW 显示状态 |
| 156 | + let showNSFW = false; |
| 157 | + const nsfwToggle = document.getElementById('nsfwToggle'); |
| 158 | + |
| 159 | + // 监听 NSFW 开关 |
| 160 | + nsfwToggle.addEventListener('change', (e) => { |
| 161 | + showNSFW = e.target.checked; |
| 162 | + displayModels(allModels); // 重新显示模型列表 |
| 163 | + }); |
| 164 | + |
151 | 165 | // 检查系统暗黑模式 |
152 | 166 | function updateDarkModeUI(isDark) { |
153 | 167 | document.documentElement.setAttribute('data-bs-theme', isDark ? 'dark' : 'light'); |
|
276 | 290 |
|
277 | 291 | // 显示模型列表 |
278 | 292 | function displayModels(models) { |
| 293 | + // 根据 NSFW 开关过滤模型 |
| 294 | + const filteredModels = showNSFW ? models : models.filter(model => !model.nsfw && model.nsfwLevel < 3); |
| 295 | + |
279 | 296 | // 按类型分组模型 |
280 | | - const modelsByType = models.reduce((acc, model) => { |
| 297 | + const modelsByType = filteredModels.reduce((acc, model) => { |
281 | 298 | const type = model.type || '未知'; |
282 | 299 | if (!acc[type]) { |
283 | 300 | acc[type] = []; |
|
349 | 366 | <div class="card h-100"> |
350 | 367 | ${imageHtml} |
351 | 368 | <div class="card-body"> |
352 | | - <h5 class="card-title">${model.name}</h5> |
| 369 | + <div class="d-flex justify-content-between align-items-start mb-2"> |
| 370 | + <h5 class="card-title mb-0">${model.name}</h5> |
| 371 | + ${model.nsfw ? '<span class="badge text-bg-danger">NSFW</span>' : ''} |
| 372 | + </div> |
353 | 373 | <p class="card-text"> |
354 | 374 | <small class="d-block">类型: ${model.type}</small> |
355 | 375 | <small class="d-block">基础模型: ${model.baseModel || '未知'}</small> |
356 | 376 | </p> |
357 | | - ${model.url ? `<a href="${model.url}" class="btn btn-primary btn-sm" target="_blank">查看详情</a>` : ''} |
| 377 | + ${model.url ? `<a href="${model.url}" class="btn btn-outline-primary btn-sm" target="_blank">查看详情</a>` : ''} |
358 | 378 | </div> |
359 | 379 | </div> |
360 | 380 | `; |
@@ -501,6 +521,11 @@ <h5 class="card-title">${model.name}</h5> |
501 | 521 | ); |
502 | 522 | } |
503 | 523 |
|
| 524 | + // 应用 NSFW 过滤 |
| 525 | + if (!showNSFW) { |
| 526 | + filteredModels = filteredModels.filter(model => !model.nsfw && model.nsfwLevel < 3); |
| 527 | + } |
| 528 | + |
504 | 529 | displayModels(filteredModels); |
505 | 530 | } |
506 | 531 |
|
|
0 commit comments