クイズのランダム抽選にすべてを追加

This commit is contained in:
hina ntki 2024-08-17 01:38:15 +09:00
parent fd6967f25d
commit 0ebdda5056
2 changed files with 15 additions and 10 deletions

View File

@ -169,12 +169,16 @@ def random_quiz_route():
data = request.json
keyword = data.get('keyword')
db = get_db()
quiz_master_data = db.query(QuizMaster).filter(
(QuizMaster.keyword1 == keyword) |
(QuizMaster.keyword2 == keyword) |
(QuizMaster.keyword3 == keyword)
).all()
if keyword: # 特定のキーワードが指定された場合
quiz_master_data = db.query(QuizMaster).filter(
(QuizMaster.keyword1 == keyword) |
(QuizMaster.keyword2 == keyword) |
(QuizMaster.keyword3 == keyword)
).all()
else: # "すべて"が選択された場合、全クイズからランダムに選択
quiz_master_data = db.query(QuizMaster).all()
if not quiz_master_data:
return jsonify({'error': '指定されたキーワードでクイズマスターが見つかりません'}), 404

View File

@ -98,6 +98,7 @@
const response = await fetch('/unique_keywords');
const keywords = await response.json();
keywords.sort(); // ここでキーワードを五十音順にソート
keywords.unshift('すべて'); // すべてを選択できるように先頭に追加
const keywordList = document.getElementById('uniqueKeywordsList');
keywordList.innerHTML = '';
keywords.forEach(keyword => {
@ -113,11 +114,11 @@
async function drawRandomQuiz(event) {
event.preventDefault();
const keyword = document.getElementById('uniqueKeywordsList').value;
if (!keyword) {
document.getElementById('message').innerText = 'キーワードを選択してください';
return;
let keyword = document.getElementById('uniqueKeywordsList').value;
if (keyword === "すべて") {
keyword = null; // すべてを選択した場合、サーバーにnullを送信
}
try {
const response = await fetch('/random_quiz', {
method: 'POST',