From dc3fd67b02164f1cd6f01bc5f10cda68150a91f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cjxq=E2=80=9D?= <“2176548932@qq.com”> Date: Thu, 4 Jul 2024 14:56:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=90=88=E5=B9=B6=E5=86=B2?= =?UTF-8?q?=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/templates/userpage_get.html | 175 +++++++++++++------------------- 1 file changed, 71 insertions(+), 104 deletions(-) diff --git a/app/templates/userpage_get.html b/app/templates/userpage_get.html index 0488aea..e5c8d95 100644 --- a/app/templates/userpage_get.html +++ b/app/templates/userpage_get.html @@ -23,44 +23,34 @@ <title>EnglishPal Study Room for {{ username }}</title> <style> - .shaking { - animation: shakes 1600ms ease-in-out; - } + .shaking { + animation: shakes 1600ms ease-in-out; + } - @keyframes shakes { - 10%, 90% { - transform: translate3d(-1px, 0, 0); - } - 20%, 50% { - transform: translate3d(+2px, 0, 0); - } - 30%, 70% { - transform: translate3d(-4px, 0, 0); - } - 40%, 60% { - transform: translate3d(+4px, 0, 0); - } - 50% { - transform: translate3d(-4px, 0, 0); - } - } + @keyframes shakes { + 10%, 90% { transform: translate3d(-1px, 0, 0); } + 20%, 50% { transform: translate3d(+2px, 0, 0); } + 30%, 70% { transform: translate3d(-4px, 0, 0); } + 40%, 60% { transform: translate3d(+4px, 0, 0); } + 50% { transform: translate3d(-4px, 0, 0); } + } - .lead { - font-size: 22px; - font-family: Helvetica, sans-serif; - white-space: pre-wrap; - } + .lead{ + font-size: 22px; + font-family: Helvetica, sans-serif; + white-space: pre-wrap; + } - .arrow { - padding: 0; - font-size: 20px; - line-height: 21px; - display: inline-block; - } + .arrow { + padding: 0; + font-size: 20px; + line-height: 21px; + display: inline-block; + } - .arrow:hover { - cursor: pointer; - } + .arrow:hover { + cursor: pointer; + } </style> </head> @@ -69,83 +59,72 @@ <p><b>English Pal for <font id="username" color="red">{{ username }}</font></b> {% if username == admin_name %} - <a class="btn btn-secondary" href="/admin" role="button" onclick="stopRead()">管理</a> + <a class="btn btn-secondary" href="/admin" role="button" onclick="stopRead()">管理</a> {% endif %} <a id="quit" class="btn btn-secondary" href="/logout" role="button" onclick="stopRead()">退出</a> <a class="btn btn-secondary" href="/reset" role="button" onclick="stopRead()">重设密码</a> </p> {% for message in get_flashed_messages() %} - <div class="alert alert-warning alert-dismissible fade show" role="alert"> - {{ message }} - <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button> - </div> + <div class="alert alert-warning alert-dismissible fade show" role="alert"> + {{ message }} + <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button> + </div> {% endfor %} - <button class="arrow" id="load_next_article" onclick="load_next_article();Reader.stopRead()" - title="下一篇 Next Article">⇨ - </button> - <button class="arrow" id="load_pre_article" onclick="load_pre_article();Reader.stopRead()" style="display: none" - title="上一篇 Previous Article">⇦ - </button> + <button class="arrow" id="load_next_article" onclick="load_next_article();Reader.stopRead()" title="下一篇 Next Article">⇨</button> + <button class="arrow" id="load_pre_article" onclick="load_pre_article();Reader.stopRead()" style="display: none" title="上一篇 Previous Article">⇦</button> <p><b>阅读文章并回答问题</b></p> <div id="text-content"> <div id="found"> - <div class="alert alert-success" role="alert">According to your word list, your level is <span - class="text-decoration-underline" id="user_level">{{ today_article["user_level"] }}</span> and we - have chosen an article with a difficulty level of <span class="text-decoration-underline" - id="text_level">{{ today_article["text_level"] }}</span> - for you. - </div> - <p class="text-muted" id="date">Article added on: {{ today_article["date"] }}</p><br/> + <div class="alert alert-success" role="alert">According to your word list, your level is <span class="text-decoration-underline" id="user_level">{{ today_article["user_level"] }}</span> and we have chosen an article with a difficulty level of <span class="text-decoration-underline" id="text_level">{{ today_article["text_level"] }}</span> for you.</div> + <p class="text-muted" id="date">Article added on: {{ today_article["date"] }}</p><br/> <div class="p-3 mb-2 bg-light text-dark" style="margin: 0 0.5%;"><br/> - <p class="display-6" id="article_title">{{ today_article["article_title"] }}</p><br/> - <p class="lead"><font id="article">{{ today_article["article_body"] }}</font></p><br/> - <div> - <p><small class="text-muted" id="source">{{ today_article['source'] }}</small></p><br/> - </div> + <p class="display-6" id="article_title">{{ today_article["article_title"] }}</p><br/> + <p class="lead"><font id="article">{{ today_article["article_body"] }}</font></p><br/> + <div> + <p><small class="text-muted" id="source">{{ today_article['source'] }}</small></p><br/> + </div> - <p><b id="question">{{ today_article['question'] }}</b></p><br/> + <p><b id="question">{{ today_article['question'] }}</b></p><br/> <script type="text/javascript"> function toggle_visibility(id) { {# https://css-tricks.com/snippets/javascript/showhide-element/#} const e = document.getElementById(id); - if (e.style.display === 'block') + if(e.style.display === 'block') e.style.display = 'none'; else e.style.display = 'block'; } </script> <button onclick="toggle_visibility('answer');">ANSWER</button> - <div id="answer" style="display:none;">{{ today_article['answer'] }}</div> - <br/> + <div id="answer" style="display:none;">{{ today_article['answer'] }}</div><br/> </div> </div> <div class="alert alert-success" role="alert" id="not_found" style="display:none;"> - <p class="text-muted"><span class="badge bg-success">Notes:</span><br>No article is currently available for - you. You can try again a few times or mark new words in the passage to improve your level.</p> + <p class="text-muted"><span class="badge bg-success">Notes:</span><br>No article is currently available for you. You can try again a few times or mark new words in the passage to improve your level.</p> </div> <div class="alert alert-success" role="alert" id="read_all" style="display:none;"> <p class="text-muted"><span class="badge bg-success">Notes:</span><br>You've read all the articles.</p> </div> </div> - <input type="checkbox" id="highlightCheckbox" onclick="toggleHighlighting()"/>生词高亮 - <input type="checkbox" id="readCheckbox" onclick="onReadClick()"/>大声朗读 - <input type="checkbox" id="chooseCheckbox" onclick="onChooseClick()"/>划词入库 + <input type="checkbox" id="highlightCheckbox" onclick="toggleHighlighting()" />生词高亮 + <input type="checkbox" id="readCheckbox" onclick="onReadClick()" />大声朗读 + <input type="checkbox" id="chooseCheckbox" onclick="onChooseClick()" />划词入库 <div class="range"> <div class="field"> <div class="sliderValue"> <span id="rangeValue">1×</span> </div> - <input type="range" id="rangeComponent" min="0.5" max="2" value="1" step="0.25"/> + <input type="range" id="rangeComponent" min="0.5" max="2" value="1" step="0.25" /> </div> </div> <p><b>收集生词吧</b> (可以在正文中划词,也可以复制黏贴)</p> <form method="post" action="/{{ username }}/userpage"> <textarea name="content" id="selected-words" rows="10" cols="120"></textarea><br/> <button class="btn btn-primary btn-lg" type="submit" onclick="Reader.stopRead()">把生词加入我的生词库</button> - <button class="btn btn-primary btn-lg" type="reset" onclick="clearSelectedWords()">清除</button> + <button class="btn btn-primary btn-lg" type="reset" onclick="clearSelectedWords()">清除</button> </form> {% if session.get['thisWord'] %} <script type="text/javascript"> @@ -173,10 +152,9 @@ {% set freq = x[1] %} {% if session.get('thisWord') == x[0] and session.get('time') == 1 %} {% endif %} - <p id='p_{{ word }}' class="new-word"> - <a id="word_{{ word }}" class="btn btn-light" - href='http://youdao.com/w/eng/{{ word }}/#keyfrom=dict2.index' - role="button">{{ word }}</a> + <p id='p_{{ word }}' class="new-word" > + <a id="word_{{ word }}" class="btn btn-light" href='http://youdao.com/w/eng/{{ word }}/#keyfrom=dict2.index' + role="button">{{ word }}</a> ( <a id="freq_{{ word }}" title="{{ word }}">{{ freq }}</a> ) <a class="btn btn-success" onclick="familiar('{{ word }}')" role="button">熟悉</a> <a class="btn btn-warning" onclick="unfamiliar('{{ word }}')" role="button">不熟悉</a> @@ -188,6 +166,7 @@ <input id="selected-words2" type="hidden" value="{{ words }}"> {% endif %} </div> +<label id="selected-words3" type="hidden"></label> {{ yml['footer'] | safe }} {% if yml['js']['bottom'] %} {% for js in yml['js']['bottom'] %} @@ -244,78 +223,66 @@ } - function load_next_article() { - $("#load_next_article").prop("disabled", true) + function load_next_article(){ $.ajax({ url: '/get_next_article/{{username}}', dataType: 'json', - success: function (data) { + success: function(data) { // 更新页面内容 - if (data['today_article']) { + if(data['today_article']){ update(data['today_article']); check_pre(data['visited_articles']); check_next(data['result_of_generate_article']); } - }, complete: function (xhr, status) { - $("#load_next_article").prop("disabled", false) } }); } - - function load_pre_article() { + function load_pre_article(){ $.ajax({ url: '/get_pre_article/{{username}}', dataType: 'json', - success: function (data) { + success: function(data) { // 更新页面内容 - if (data['today_article']) { + if(data['today_article']){ update(data['today_article']); check_pre(data['visited_articles']); } } }); } - - function update(today_article) { + function update(today_article){ $('#user_level').html(today_article['user_level']); $('#text_level').html(today_article["text_level"]); - $('#date').html('Article added on: ' + today_article["date"]); + $('#date').html('Article added on: '+today_article["date"]); $('#article_title').html(today_article["article_title"]); $('#article').html(today_article["article_body"]); $('#source').html(today_article['source']); $('#question').html(today_article["question"]); $('#answer').html(today_article["answer"]); document.querySelector('#text_level').classList.add('mark'); // highlight text difficult level for 2 seconds - setTimeout(() => { - document.querySelector('#text_level').classList.remove('mark'); - }, 2000); + setTimeout(() => {document.querySelector('#text_level').classList.remove('mark');}, 2000); document.querySelector('#user_level').classList.add('mark'); // do the same thing for user difficulty level - setTimeout(() => { - document.querySelector('#user_level').classList.remove('mark'); - }, 2000); + setTimeout(() => {document.querySelector('#user_level').classList.remove('mark');}, 2000); } - - <!-- 检查是否存在上一篇或下一篇,不存在则对应按钮隐藏--> - function check_pre(visited_articles) { - if ((visited_articles == '') || (visited_articles['index'] <= 0)) { +<!-- 检查是否存在上一篇或下一篇,不存在则对应按钮隐藏--> + function check_pre(visited_articles){ + if((visited_articles=='')||(visited_articles['index']<=0)){ $('#load_pre_article').hide(); sessionStorage.setItem('pre_page_button', 'display') - } else { + }else{ $('#load_pre_article').show(); sessionStorage.setItem('pre_page_button', 'show') } } - - function check_next(result_of_generate_article) { - if (result_of_generate_article == "found") { - $('#found').show(); - $('#not_found').hide(); + function check_next(result_of_generate_article){ + if(result_of_generate_article == "found"){ + $('#found').show();$('#not_found').hide(); $('#read_all').hide(); - } else if (result_of_generate_article == "not found") { + }else if(result_of_generate_article == "not found"){ $('#found').hide(); $('#not_found').show(); $('#read_all').hide(); - } else { + }else{ $('#found').hide(); $('#not_found').hide(); $('#read_all').show(); @@ -325,7 +292,7 @@ </body> <style> mark { - color: #{{ yml['highlight']['color'] }}; + color: red; background-color: rgba(0, 0, 0, 0); } </style>