Spaces:
Running
Running
updateHistoryList(); | |
loadFromUserStorage(); | |
setInterval(() => { | |
saveToUserStorage(); | |
}, 60000); | |
// 入力フォームの内容を保存する | |
document.querySelectorAll('input, textarea').forEach(input => { | |
input.addEventListener('input', saveToUserStorage); | |
}); | |
// Ctrl+Enterでプロンプト生成を実行する | |
document.addEventListener('keydown', function (event) { | |
if (event.ctrlKey && event.key === 'Enter') { | |
event.preventDefault(); // デフォルトの動作を防ぐ | |
generatePrompt(); // プロンプト生成関数を呼び出す | |
} | |
}); | |
// サイドバーの切り替え機能を修正 | |
document.getElementById('sidebarToggle').addEventListener('click', function () { | |
const sidebarContainer = document.getElementById('sidebar-container'); | |
const content = document.getElementById('content'); | |
const isActive = sidebarContainer.classList.toggle('active'); | |
if (isActive) { | |
// サイドバーを開く | |
sidebarContainer.style.width = '250px'; | |
content.style.marginLeft = '250px'; | |
} else { | |
// サイドバーを閉じる | |
sidebarContainer.style.width = '0'; | |
content.style.marginLeft = '0'; | |
} | |
}); | |
// サイドバーのリサイズ機能を修正 | |
function initSidebarResize() { | |
const sidebarContainer = document.getElementById('sidebar-container'); | |
const content = document.getElementById('content'); | |
const resizer = document.getElementById('sidebar-resizer'); | |
let isResizing = false; | |
resizer.addEventListener('mousedown', (e) => { | |
isResizing = true; | |
document.addEventListener('mousemove', resize); | |
document.addEventListener('mouseup', stopResize); | |
}); | |
function resize(e) { | |
if (!isResizing) return; | |
const newWidth = e.clientX; | |
const minWidth = 250; | |
const maxWidth = 500; | |
const sidebarWidth = Math.min(Math.max(minWidth, newWidth), maxWidth); | |
sidebarContainer.style.width = `${sidebarWidth}px`; | |
content.style.marginLeft = `${sidebarWidth}px`; | |
sidebarContainer.classList.add('active'); // サイドバーを開いた状態にする | |
} | |
function stopResize() { | |
isResizing = false; | |
document.removeEventListener('mousemove', resize); | |
document.removeEventListener('mouseup', stopResize); | |
} | |
} | |
// localStorageをクリアする機能を追加 | |
function initClearStorageButton() { | |
const clearStorageButton = document.getElementById('clearStorageButton'); | |
clearStorageButton.addEventListener('click', () => { | |
const userInput = prompt('全てのデータを削除します。よろしければ「YES」と入力してください。'); | |
if (userInput === 'YES') { | |
localStorage.clear(); | |
alert('全てのデータが削除されました。ページを再読み込みします。'); | |
location.reload(); | |
} else { | |
alert('削除がキャンセルされました。'); | |
} | |
}); | |
} | |
function resizeMain() { | |
if (window.innerWidth >= 768) { | |
document.querySelector("main").style.height = `calc(100vh - ${document.querySelector("main").offsetTop}px)` | |
} | |
} | |
// DOMContentLoadedイベントリスナーを更新 | |
document.addEventListener('DOMContentLoaded', function () { | |
resizeMain(); | |
initSidebarResize(); | |
initClearStorageButton(); | |
updateModelList(); // 新しい関数を呼び出し | |
}); | |
window.addEventListener("resize", resizeMain); | |
async function updateModelList() { | |
try { | |
const models = await getModelList(); | |
const endpointSelect = document.getElementById('endpointSelect'); | |
const currentOptions = Array.from(endpointSelect.options).map(option => option.value); | |
models.forEach(model => { | |
const modelPath = `models/${model.name.split('/').pop()}`; | |
if (!currentOptions.includes(modelPath)) { | |
const option = document.createElement('option'); | |
option.value = modelPath; | |
option.textContent = model.name.split('/').pop(); | |
endpointSelect.appendChild(option); | |
} | |
}); | |
} catch (error) { | |
console.error('モデルリストの更新中にエラーが発生しました:', error); | |
} | |
} | |