Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
|
@@ -490,6 +490,10 @@ def load_session_history(selected_session=None):
|
|
| 490 |
margin-bottom: 8px;
|
| 491 |
font-size: 16px;
|
| 492 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 493 |
.card-prompt {
|
| 494 |
font-size: 0.9em;
|
| 495 |
color: #666;
|
|
@@ -498,26 +502,59 @@ def load_session_history(selected_session=None):
|
|
| 498 |
-webkit-box-orient: vertical;
|
| 499 |
overflow: hidden;
|
| 500 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 501 |
</style>
|
| 502 |
<div class="prompt-grid">
|
| 503 |
"""
|
| 504 |
|
| 505 |
for item in json_data:
|
| 506 |
name = html.escape(item.get('name', ''))
|
| 507 |
-
image_url = item.get('image_url', '')
|
| 508 |
prompt = html.escape(item.get('prompt', ''))
|
| 509 |
|
| 510 |
html_content += f"""
|
| 511 |
<div class="prompt-card" data-prompt="{prompt}" onclick="handleCardClick(this)">
|
| 512 |
<img src="{image_url}" class="card-image" alt="{name}">
|
| 513 |
<div class="card-name">{name}</div>
|
| 514 |
-
<div class="card-prompt">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 515 |
</div>
|
| 516 |
"""
|
| 517 |
|
| 518 |
html_content += """
|
| 519 |
</div>
|
| 520 |
<script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 521 |
function handleCardClick(card) {
|
| 522 |
console.log('Card clicked');
|
| 523 |
const prompt = card.getAttribute('data-prompt');
|
|
@@ -526,14 +563,12 @@ def load_session_history(selected_session=None):
|
|
| 526 |
console.log('Setting prompt:', prompt);
|
| 527 |
textarea.value = prompt;
|
| 528 |
|
| 529 |
-
// Send 버튼 클릭
|
| 530 |
const sendButton = document.querySelector('button:contains("Send")');
|
| 531 |
if (sendButton) {
|
| 532 |
console.log('Clicking Send button');
|
| 533 |
sendButton.click();
|
| 534 |
}
|
| 535 |
|
| 536 |
-
// 드로어 닫기
|
| 537 |
const drawer = document.querySelector('.session-drawer');
|
| 538 |
if (drawer) {
|
| 539 |
console.log('Closing drawer');
|
|
|
|
| 490 |
margin-bottom: 8px;
|
| 491 |
font-size: 16px;
|
| 492 |
}
|
| 493 |
+
.card-prompt-container {
|
| 494 |
+
position: relative;
|
| 495 |
+
padding-right: 60px;
|
| 496 |
+
}
|
| 497 |
.card-prompt {
|
| 498 |
font-size: 0.9em;
|
| 499 |
color: #666;
|
|
|
|
| 502 |
-webkit-box-orient: vertical;
|
| 503 |
overflow: hidden;
|
| 504 |
}
|
| 505 |
+
.copy-btn {
|
| 506 |
+
position: absolute;
|
| 507 |
+
right: 0;
|
| 508 |
+
top: 0;
|
| 509 |
+
padding: 4px 8px;
|
| 510 |
+
background: #f0f0f0;
|
| 511 |
+
border: 1px solid #ddd;
|
| 512 |
+
border-radius: 4px;
|
| 513 |
+
cursor: pointer;
|
| 514 |
+
font-size: 0.9em;
|
| 515 |
+
transition: all 0.2s ease;
|
| 516 |
+
}
|
| 517 |
+
.copy-btn:hover {
|
| 518 |
+
background: #e0e0e0;
|
| 519 |
+
}
|
| 520 |
+
.copy-btn:active {
|
| 521 |
+
background: #d0d0d0;
|
| 522 |
+
}
|
| 523 |
</style>
|
| 524 |
<div class="prompt-grid">
|
| 525 |
"""
|
| 526 |
|
| 527 |
for item in json_data:
|
| 528 |
name = html.escape(item.get('name', ''))
|
| 529 |
+
image_url = item.get('image_url', '')
|
| 530 |
prompt = html.escape(item.get('prompt', ''))
|
| 531 |
|
| 532 |
html_content += f"""
|
| 533 |
<div class="prompt-card" data-prompt="{prompt}" onclick="handleCardClick(this)">
|
| 534 |
<img src="{image_url}" class="card-image" alt="{name}">
|
| 535 |
<div class="card-name">{name}</div>
|
| 536 |
+
<div class="card-prompt-container">
|
| 537 |
+
<div class="card-prompt">{prompt}</div>
|
| 538 |
+
<button class="copy-btn" onclick="copyPrompt(this, `{prompt}`)" title="프롬프트 복사">
|
| 539 |
+
📋 복사
|
| 540 |
+
</button>
|
| 541 |
+
</div>
|
| 542 |
</div>
|
| 543 |
"""
|
| 544 |
|
| 545 |
html_content += """
|
| 546 |
</div>
|
| 547 |
<script>
|
| 548 |
+
function copyPrompt(btn, prompt) {
|
| 549 |
+
navigator.clipboard.writeText(prompt).then(() => {
|
| 550 |
+
btn.textContent = '✓ 복사됨';
|
| 551 |
+
setTimeout(() => {
|
| 552 |
+
btn.textContent = '📋 복사';
|
| 553 |
+
}, 2000);
|
| 554 |
+
});
|
| 555 |
+
event.stopPropagation();
|
| 556 |
+
}
|
| 557 |
+
|
| 558 |
function handleCardClick(card) {
|
| 559 |
console.log('Card clicked');
|
| 560 |
const prompt = card.getAttribute('data-prompt');
|
|
|
|
| 563 |
console.log('Setting prompt:', prompt);
|
| 564 |
textarea.value = prompt;
|
| 565 |
|
|
|
|
| 566 |
const sendButton = document.querySelector('button:contains("Send")');
|
| 567 |
if (sendButton) {
|
| 568 |
console.log('Clicking Send button');
|
| 569 |
sendButton.click();
|
| 570 |
}
|
| 571 |
|
|
|
|
| 572 |
const drawer = document.querySelector('.session-drawer');
|
| 573 |
if (drawer) {
|
| 574 |
console.log('Closing drawer');
|