Files
mudknight-comfyui-mudknight…/web/character_editor.html
T

255 lines
10 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Character Editor</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h1>Preset Editor</h1>
<div class="status" id="status"></div>
<!-- Tab Navigation -->
<div class="tabs">
<button class="tab-button active" onclick="switchTab('characters')">
Characters
</button>
<button class="tab-button" onclick="switchTab('models')">
Models
</button>
<button class="tab-button" onclick="switchTab('styles')">
Styles
</button>
</div>
<!-- Characters Tab -->
<div class="tab-content active" id="charactersTab">
<div class="controls">
<div class="search-box">
<input type="text" id="searchInput"
placeholder="Search characters...">
</div>
<button onclick="showAddModal('character')">
Add Character
</button>
</div>
<div class="content-with-sidebar">
<div class="sidebar">
<div class="sidebar-header">Categories</div>
<div class="category-list" id="categoryList">
<div class="category-item active" data-category="all">
<span class="category-name">All Characters</span>
<span class="category-count" id="countAll">0</span>
</div>
</div>
</div>
<div class="main-content">
<div class="character-grid" id="characterGrid"></div>
<div class="empty-state" id="emptyState" style="display: none;">
<p>No characters found</p>
<button onclick="showAddModal('character')">
Add Your First Character
</button>
</div>
</div>
</div>
</div>
<!-- Models Tab -->
<div class="tab-content" id="modelsTab">
<div class="controls">
<div class="search-box">
<input type="text" id="modelSearchInput"
placeholder="Search models...">
</div>
<button onclick="showAddModal('model')">Add Model</button>
</div>
<div class="preset-grid" id="modelGrid"></div>
<div class="empty-state" id="modelEmptyState"
style="display: none;">
<p>No models found</p>
<button onclick="showAddModal('model')">
Add Your First Model
</button>
</div>
</div>
<!-- Styles Tab -->
<div class="tab-content" id="stylesTab">
<div class="controls">
<div class="search-box">
<input type="text" id="styleSearchInput"
placeholder="Search styles...">
</div>
<button onclick="showAddModal('style')">Add Style</button>
</div>
<div class="character-grid" id="styleGrid"></div>
<div class="empty-state" id="styleEmptyState"
style="display: none;">
<p>No styles found</p>
<button onclick="showAddModal('style')">
Add Your First Style
</button>
</div>
</div>
</div>
<div class="modal" id="addModal">
<div class="modal-content">
<div class="modal-header">
<span id="addModalTitle">Add New Item</span>
</div>
<div class="field-group">
<label id="addModalLabel">Name</label>
<input type="text" id="newItemName" placeholder="e.g., example">
</div>
<div class="modal-actions">
<button onclick="hideAddModal()">Cancel</button>
<button class="save" onclick="addItem()">Add</button>
</div>
</div>
</div>
<div class="modal" id="editModal">
<div class="modal-content">
<div class="modal-header">
<span id="editCharName"></span>
<button class="delete" onclick="deleteCurrentCharacter()">
Delete
</button>
</div>
<div class="field-group">
<label>Character Image</label>
<div style="display: flex; gap: 10px; align-items: center;">
<input type="file" id="editImage" accept="image/*"
style="flex: 1;">
<button onclick="removeImage()" class="delete"
style="padding: 8px 12px;">
Remove
</button>
</div>
<div id="imagePreview"
style="margin-top: 10px; display: none;">
<img id="previewImg"
style="max-width: 200px; border-radius: 4px;">
</div>
</div>
<div class="field-group">
<label>Character</label>
<textarea id="editCharacter"></textarea>
</div>
<div class="field-group">
<label>Top</label>
<input type="text" id="editTop">
</div>
<div class="field-group">
<label>Bottom</label>
<input type="text" id="editBottom">
</div>
<div class="field-group">
<label>Negative</label>
<input type="text" id="editNeg">
</div>
<div class="field-group">
<label>Categories (comma-separated)</label>
<input type="text" id="editCategories"
placeholder="e.g., idolmaster, blue archive, genshin impact">
</div>
<div class="modal-actions">
<button onclick="hideEditModal()">Cancel</button>
<button class="save" onclick="saveCharacter()">
Save Changes
</button>
</div>
</div>
</div>
<!-- Model Edit Modal -->
<div class="modal" id="modelEditModal">
<div class="modal-content">
<div class="modal-header">
<span id="editModelName"></span>
<button class="delete" onclick="deleteCurrentItem('model')">
Delete
</button>
</div>
<div class="field-group">
<label>Quality Positive</label>
<textarea id="editModelQualityPos"></textarea>
</div>
<div class="field-group">
<label>Quality Negative</label>
<textarea id="editModelQualityNeg"></textarea>
</div>
<div class="field-group">
<label>Embeddings Positive</label>
<input type="text" id="editModelEmbedPos">
</div>
<div class="field-group">
<label>Embeddings Negative</label>
<input type="text" id="editModelEmbedNeg">
</div>
<div class="modal-actions">
<button onclick="hideEditModal('model')">Cancel</button>
<button class="save" onclick="saveItem('model')">
Save Changes
</button>
</div>
</div>
</div>
<!-- Style Edit Modal -->
<div class="modal" id="styleEditModal">
<div class="modal-content">
<div class="modal-header">
<span id="editStyleName"></span>
<button class="delete" onclick="deleteCurrentItem('style')">
Delete
</button>
</div>
<div class="field-group">
<label>Style Image</label>
<div style="display: flex; gap: 10px; align-items: center;">
<input type="file" id="editStyleImage" accept="image/*"
style="flex: 1;">
<button onclick="removeImage('style')" class="delete"
style="padding: 8px 12px;">
Remove
</button>
</div>
<div id="styleImagePreview"
style="margin-top: 10px; display: none;">
<img id="stylePreviewImg"
style="max-width: 200px; border-radius: 4px;">
</div>
</div>
<div class="field-group">
<label>Positive Tags</label>
<textarea id="editStylePos"></textarea>
</div>
<div class="field-group">
<label>Negative Tags</label>
<textarea id="editStyleNeg"></textarea>
</div>
<div class="modal-actions">
<button onclick="hideEditModal('style')">Cancel</button>
<button class="save" onclick="saveItem('style')">
Save Changes
</button>
</div>
</div>
</div>
<script src="script.js"></script>
</body>
</html>