From 0ebdda5056067fa69bc9b4203bf1bee9bf19c7bc Mon Sep 17 00:00:00 2001 From: hina ntki Date: Sat, 17 Aug 2024 01:38:15 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=AF=E3=82=A4=E3=82=BA=E3=81=AE=E3=83=A9?= =?UTF-8?q?=E3=83=B3=E3=83=80=E3=83=A0=E6=8A=BD=E9=81=B8=E3=81=AB=E3=81=99?= =?UTF-8?q?=E3=81=B9=E3=81=A6=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/app.py | 16 ++++++++++------ web/templates/index.html | 9 +++++---- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/web/app.py b/web/app.py index 4d29c60..e512666 100644 --- a/web/app.py +++ b/web/app.py @@ -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 diff --git a/web/templates/index.html b/web/templates/index.html index 0b920f4..9804da4 100644 --- a/web/templates/index.html +++ b/web/templates/index.html @@ -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',