@ -5,6 +5,8 @@
 
			
		
	
		
		
			
				
					
					    < meta  name = "viewport" 
    < meta  name = "viewport" 
 
			
		
	
		
		
			
				
					
					          content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=3.0, user-scalable=yes"/>
          content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=3.0, user-scalable=yes"/>
 
			
		
	
		
		
			
				
					
					    < meta  name = "format-detection"  content = "telephone=no" / > 
    < meta  name = "format-detection"  content = "telephone=no" / > 
 
			
		
	
		
		
			
				
					
					    < link  href = "https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css"  rel = "stylesheet" > 
 
			
		
	
		
		
			
				
					
					    < script  src = "https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js" > < / script > 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    {{ yml['header'] | safe }}
    {{ yml['header'] | safe }}
 
			
		
	
		
		
			
				
					
					    {% if yml['css']['item'] %}
    {% if yml['css']['item'] %}
 
			
		
	
	
		
		
			
				
					
						
					 
					@ -26,12 +28,40 @@
 
			
		
	
		
		
			
				
					
					        }
        }
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					        @keyframes shakes {
        @keyframes shakes {
 
			
		
	
		
		
			
				
					
					            10%, 90% { transform: translate3d(-1px, 0, 0); }
            10%, 90% {
 
			
				
				
			
		
	
		
		
			
				
					
					            20%, 50% { transform: translate3d(+2px, 0, 0); }
                transform: translate3d(-1px, 0, 0);
 
			
				
				
			
		
	
		
		
			
				
					
					            30%, 70% { transform: translate3d(-4px, 0, 0); }
            }
 
			
				
				
			
		
	
		
		
			
				
					
					            40%, 60% { transform: translate3d(+4px, 0, 0); }
            20%, 50% {
 
			
				
				
			
		
	
		
		
			
				
					
					            50% { transform: translate3d(-4px, 0, 0); }
                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;
 
			
		
	
		
		
			
				
					
					        }
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					        .arrow {
 
			
		
	
		
		
			
				
					
					            padding: 0;
 
			
		
	
		
		
			
				
					
					            font-size: 20px;
 
			
		
	
		
		
			
				
					
					            line-height: 21px;
 
			
		
	
		
		
			
				
					
					            display: inline-block;
 
			
		
	
		
		
			
				
					
					        }
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					        .arrow:hover {
 
			
		
	
		
		
			
				
					
					            cursor: pointer;
 
			
		
	
		
		
			
				
					
					        }
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    < / style > 
    < / style > 
 
			
		
	
		
		
			
				
					
					< / head > < / head >  
			
		
	
		
		
			
				
					
					< body > < body >  
			
		
	
	
		
		
			
				
					
						
					 
					@ -39,53 +69,70 @@
 
			
		
	
		
		
			
				
					
					    < p > < b > English Pal for < font  id = "username"  color = "red" > {{ username }}< / font > < / b > 
    < p > < b > English Pal for < font  id = "username"  color = "red" > {{ username }}< / font > < / b > 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					        {% if username ==  admin_name %}
        {% 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 %}
        {% endif %}
 
			
		
	
		
		
			
				
					
					        < a  id = "quit"  class = "btn btn-secondary"  href = "/logout"  role = "button"  onclick = "stopRead()" > 退出< / a > 
        < 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 > 
        < a  class = "btn btn-secondary"  href = "/reset"  role = "button"  onclick = "stopRead()" > 重设密码< / a > 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    < / p > 
    < / p > 
 
			
		
	
		
		
			
				
					
					{#    {% for message in flashed_messages %}#} {# 根据user_service.userpage,取消了参数flashed_messages, 
    {% for message in get_flashed_messages() %}
 
			
				
				
			
		
	
		
		
			
				
					
					{#        < div  class = "alert alert-warning"  role = "alert" > Congratulations! {{ message }}< / div > #}
        < div  class = "alert alert-warning alert-dismissible fade show"  role = "alert" > 
 
			
				
				
			
		
	
		
		
			
				
					
					{#    {% endfor %}#}
            {{ message }}
 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					            < button  type = "button"  class = "btn-close"  data-bs-dismiss = "alert"  aria-label = "Close" > < / button > 
 
			
		
	
		
		
			
				
					
					        < / div > 
 
			
		
	
		
		
			
				
					
					    {% endfor %}
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					        < button  class = "btn btn-success"  id = "load_next_article"  onclick = "load_next_article()" >  下一篇 Next Article < / button > 
    < button  class = "arrow"  id = "load_next_article"  onclick = "load_next_article();Reader.stopRead()" 
 
			
				
				
			
		
	
		
		
			
				
					
					        < button  class = "btn btn-success"  id = "load_pre_article"  onclick = "load_pre_article()"  >  上一篇 Previous Article < / button > 
            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 > 
    < p > < b > 阅读文章并回答问题< / b > < / p > 
 
			
		
	
		
		
			
				
					
					    < div  id = "text-content" > 
    < div  id = "text-content" > 
 
			
		
	
		
		
			
				
					
					        < div  id = "found" > 
        < div  id = "found" > 
 
			
		
	
		
		
			
				
					
					            < div  class = "alert alert-success"  role = "alert" > According to your word list, your level is < span  class = "badge bg-success"  id = "user-level" > {{ today_article["user_level"] }}< / span >   and we have chosen an article with a difficulty level of < span  class = "badge bg-success"  id = "text_level" > {{ today_article["text_level"] }}< / span >  for you.< / div > 
            < div  class = "alert alert-success"  role = "alert" > According to your word list, your level is < span 
 
			
				
				
			
		
	
		
		
			
				
					
					                < p  class = "text-muted"  id = "date" > Article added on: {{ today_article["date"] }}< / p > < br / > 
                    class="text-decoration-underline" id="user_level">{{ today_article["user_level"] }}< / span >  and we
 
			
				
				
			
		
	
		
		
			
				
					
					            < div  class = "p-3 mb-2 bg-light text-dark" > < br / > 
                have chosen an article with a difficulty level of < span  class = "text-decoration-underline" 
 
			
				
				
			
		
	
		
		
			
				
					
					            < p  class = "display-5"  id = "article_title" > {{ today_article["article_title"] }}< / p > < br / > 
                                                                        id="text_level">{{ today_article["text_level"] }}< / span > 
 
			
				
				
			
		
	
		
		
			
				
					
					            < p  class = "lead" > < font  id = "article"  size = 2 > {{ today_article["article_body"] }}< / font > < / p > < br / > 
                for you.
 
			
				
				
			
		
	
		
		
			
				
					
					            < 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  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 > < b  id = "question" > {{ today_article['question'] }}< / b > < / p > < br / > 
 
			
		
	
		
		
			
				
					
					                < script  type = "text/javascript" > 
                < script  type = "text/javascript" > 
 
			
		
	
		
		
			
				
					
					                    function toggle_visibility(id) { {# https://css-tricks.com/snippets/javascript/showhide-element/#}
                    function toggle_visibility(id) { {# https://css-tricks.com/snippets/javascript/showhide-element/#}
 
			
		
	
		
		
			
				
					
					                        const e = document.getElementById(id);
                        const e = document.getElementById(id);
 
			
		
	
		
		
			
				
					
					                        if(e.style.display === 'block')
                        if  (e.style.display === 'block')
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					                            e.style.display = 'none';
                            e.style.display = 'none';
 
			
		
	
		
		
			
				
					
					                        else
                        else
 
			
		
	
		
		
			
				
					
					                            e.style.display = 'block';
                            e.style.display = 'block';
 
			
		
	
		
		
			
				
					
					                    }
                    }
 
			
		
	
		
		
			
				
					
					                < / script > 
                < / script > 
 
			
		
	
		
		
			
				
					
					                < button  onclick = "toggle_visibility('answer');" > ANSWER< / button > 
                < 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 > 
        < / div > 
 
			
		
	
		
		
			
				
					
					        < div  class = "alert alert-success"  role = "alert"  id = "not_found"  style = "display:none;" > 
        < 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 > 
 
			
		
	
		
		
			
				
					
					        < div  class = "alert alert-success"  role = "alert"  id = "read_all"  style = "display:none;" > 
        < 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 > 
            < p  class = "text-muted" > < span  class = "badge bg-success" > Notes:< / span > < br > You've read all the articles.< / p > 
 
			
		
	
		
		
			
				
					
					        < / div > 
        < / div > 
 
			
		
	
		
		
			
				
					
					    < / div > 
    < / div > 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    < input  type = "checkbox"  = "toggleHighlighting()"  checked  / > 生词高亮
    < input  type = "checkbox"  id= "highlightCheckbox"   onclick= "toggleHighlighting()" / > 生词高亮
 
			
				
				
			
		
	
		
		
			
				
					
					    < input  type = "checkbox"  = "onReadClick()"  checked  / > 大声朗读
    < input  type = "checkbox"  id= "readCheckbox"   onclick= "onReadClick()" / > 大声朗读
 
			
				
				
			
		
	
		
		
			
				
					
					    < input  type = "checkbox"  = "onChooseClick()"  checked  / > 划词入库
    < input  type = "checkbox"  id= "chooseCheckbox"   onclick= "onChooseClick()" / > 划词入库
 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					    < div  class = "range" > 
    < div  class = "range" > 
 
			
		
	
		
		
			
				
					
					        < div  class = "field" > 
        < div  class = "field" > 
 
			
		
	
		
		
			
				
					
					            < div  class = "sliderValue" > 
            < div  class = "sliderValue" > 
 
			
		
	
	
		
		
			
				
					
						
					 
					@ -97,8 +144,8 @@
 
			
		
	
		
		
			
				
					
					    < p > < b > 收集生词吧< / b >  (可以在正文中划词,也可以复制黏贴)< / p > 
    < p > < b > 收集生词吧< / b >  (可以在正文中划词,也可以复制黏贴)< / p > 
 
			
		
	
		
		
			
				
					
					    < form  method = "post"  action = "/{{ username }}/userpage" > 
    < form  method = "post"  action = "/{{ username }}/userpage" > 
 
			
		
	
		
		
			
				
					
					        < textarea  name = "content"  id = "selected-words"  rows = "10"  cols = "120" > < / textarea > < br / > 
        < textarea  name = "content"  id = "selected-words"  rows = "10"  cols = "120" > < / textarea > < br / > 
 
			
		
	
		
		
			
				
					
					        < input type = "submit"  value = "把生词加入我的生词库" /  > 
        < button class = "btn btn-primary btn-lg"  type = "submit"  onclick = "Reader.stopRead()" > 把生词加入我的生词库< / button  > 
 
			
				
				
			
		
	
		
		
			
				
					
					        < input type = "reset"  value = "清除" /  > 
        < button class = "btn btn-primary btn-lg"  type = "reset"  onclick = "clearSelectedWords()" > 清除< / button  > 
 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					    < / form > 
    < / form > 
 
			
		
	
		
		
			
				
					
					    {% if session.get['thisWord'] %}
    {% if session.get['thisWord'] %}
 
			
		
	
		
		
			
				
					
					        < script  type = "text/javascript" > 
        < script  type = "text/javascript" > 
 
			
		
	
	
		
		
			
				
					
						
					 
					@ -113,7 +160,7 @@
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    {% if d_len > 0 %}
    {% if d_len > 0 %}
 
			
		
	
		
		
			
				
					
					        < p > 
        < p > 
 
			
		
	
		
		
			
				
					
					            < b > 我的生词簿< / b >   
            < b > 我的生词簿< / b > 
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					            < label  for = "move_dynamiclly" > 
            < label  for = "move_dynamiclly" > 
 
			
		
	
		
		
			
				
					
					                < input  type = "checkbox"  name = "move_dynamiclly"  id = "move_dynamiclly"  checked > 
                < input  type = "checkbox"  name = "move_dynamiclly"  id = "move_dynamiclly"  checked > 
 
			
		
	
		
		
			
				
					
					                允许动态调整顺序
                允许动态调整顺序
 
			
		
	
	
		
		
			
				
					
						
					 
					@ -126,9 +173,10 @@
 
			
		
	
		
		
			
				
					
					                {% set freq = x[1] %}
                {% set freq = x[1] %}
 
			
		
	
		
		
			
				
					
					                {% if session.get('thisWord') == x[0] and session.get('time') == 1 %}
                {% if session.get('thisWord') == x[0] and session.get('time') == 1 %}
 
			
		
	
		
		
			
				
					
					                {% endif %}
                {% endif %}
 
			
		
	
		
		
			
				
					
					                < p  id = 'p_{{ word }}'  class = "new-word"  > 
                < 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' 
                    < a  id = "word_{{ word }}"  class = "btn btn-light" 
 
			
				
				
			
		
	
		
		
			
				
					
					                    role="button">{{ word }}< / a > 
                       href='http://youdao.com/w/eng/{{ word }}/#keyfrom=dict2.index'
 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					                       role="button">{{ word }}< / a > 
 
			
		
	
		
		
			
				
					
					                    ( < a  id = "freq_{{ word }}"  title = "{{ word }}" > {{ freq }}< / a >  )
                    ( < a  id = "freq_{{ word }}"  title = "{{ word }}" > {{ freq }}< / a >  )
 
			
		
	
		
		
			
				
					
					                    < a  class = "btn btn-success"  onclick = "familiar('{{ word }}')"  role = "button" > 熟悉< / a > 
                    < a  class = "btn btn-success"  onclick = "familiar('{{ word }}')"  role = "button" > 熟悉< / a > 
 
			
		
	
		
		
			
				
					
					                    < a  class = "btn btn-warning"  onclick = "unfamiliar('{{ word }}')"  role = "button" > 不熟悉< / a > 
                    < a  class = "btn btn-warning"  onclick = "unfamiliar('{{ word }}')"  role = "button" > 不熟悉< / a > 
 
			
		
	
	
		
		
			
				
					
						
					 
					@ -147,60 +195,127 @@
 
			
		
	
		
		
			
				
					
					    {% endfor %}
    {% endfor %}
 
			
		
	
		
		
			
				
					
					{% endif %}
{% endif %}
 
			
		
	
		
		
			
				
					
					< script  type = "text/javascript" > < script  type = "text/javascript" >  
			
		
	
		
		
			
				
					
					    function load_next_article(){
    window.onload = function () { // 页面加载时执行
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					        const settings = {
 
			
		
	
		
		
			
				
					
					            // initialize settings from localStorage
 
			
		
	
		
		
			
				
					
					            highlightChecked: localStorage.getItem('highlightChecked') !== 'false', // localStorage stores strings, default to true. same below
 
			
		
	
		
		
			
				
					
					            readChecked: localStorage.getItem('readChecked') !== 'false',
 
			
		
	
		
		
			
				
					
					            chooseChecked: localStorage.getItem('chooseChecked') !== 'false',
 
			
		
	
		
		
			
				
					
					            rangeValue: localStorage.getItem('rangeValue') || '1',
 
			
		
	
		
		
			
				
					
					            selectedWords: localStorage.getItem('selectedWords') || ''
 
			
		
	
		
		
			
				
					
					        };
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					        const elements = {
 
			
		
	
		
		
			
				
					
					            highlightCheckbox: document.querySelector('#highlightCheckbox'),
 
			
		
	
		
		
			
				
					
					            readCheckbox: document.querySelector('#readCheckbox'),
 
			
		
	
		
		
			
				
					
					            chooseCheckbox: document.querySelector('#chooseCheckbox'),
 
			
		
	
		
		
			
				
					
					            rangeComponent: document.querySelector('#rangeComponent'),
 
			
		
	
		
		
			
				
					
					            rangeValueDisplay: document.querySelector('#rangeValue'),
 
			
		
	
		
		
			
				
					
					            selectedWordsInput: document.querySelector('#selected-words')
 
			
		
	
		
		
			
				
					
					        };
 
			
		
	
		
		
			
				
					
					        // 应用设置到页面元素
 
			
		
	
		
		
			
				
					
					        elements.highlightCheckbox.checked = settings.highlightChecked;
 
			
		
	
		
		
			
				
					
					        elements.readCheckbox.checked = settings.readChecked;
 
			
		
	
		
		
			
				
					
					        elements.chooseCheckbox.checked = settings.chooseChecked;
 
			
		
	
		
		
			
				
					
					        elements.rangeComponent.value = settings.rangeValue;
 
			
		
	
		
		
			
				
					
					        elements.rangeValueDisplay.textContent = `${settings.rangeValue}x`;
 
			
		
	
		
		
			
				
					
					        elements.selectedWordsInput.value = settings.selectedWords;
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					        // 刷新页面或进入页面时判断,若不是首篇文章,则上一篇按钮可见
 
			
		
	
		
		
			
				
					
					        if (sessionStorage.getItem('pre_page_button') !== 'display' & &  sessionStorage.getItem('pre_page_button')) {
 
			
		
	
		
		
			
				
					
					            $('#load_pre_article').show();
 
			
		
	
		
		
			
				
					
					        }
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					        // 事件监听器
 
			
		
	
		
		
			
				
					
					        elements.selectedWordsInput.addEventListener('input', () => {
 
			
		
	
		
		
			
				
					
					            localStorage.setItem('selectedWords', elements.selectedWordsInput.value);
 
			
		
	
		
		
			
				
					
					        });
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					        elements.rangeComponent.addEventListener('input', () => {
 
			
		
	
		
		
			
				
					
					            const rangeValue = elements.rangeComponent.value;
 
			
		
	
		
		
			
				
					
					            elements.rangeValueDisplay.textContent = `${rangeValue}x`;
 
			
		
	
		
		
			
				
					
					            localStorage.setItem('rangeValue', rangeValue);
 
			
		
	
		
		
			
				
					
					        });
 
			
		
	
		
		
			
				
					
					    };
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    function clearSelectedWords() {
 
			
		
	
		
		
			
				
					
					        localStorage.removeItem('selectedWords');
 
			
		
	
		
		
			
				
					
					        document.querySelector('#selected-words').value = '';
 
			
		
	
		
		
			
				
					
					    }
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    function load_next_article() {
 
			
		
	
		
		
			
				
					
					        $("#load_next_article").prop("disabled", true)
 
			
		
	
		
		
			
				
					
					        $.ajax({
        $.ajax({
 
			
		
	
		
		
			
				
					
					            url: '/get_next_article/{{username}}',
            url: '/get_next_article/{{username}}',
 
			
		
	
		
		
			
				
					
					            dataType: 'json',
            dataType: 'json',
 
			
		
	
		
		
			
				
					
					            success: function(data) {
            success: function  (data) {
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					                // 更新页面内容
                // 更新页面内容
 
			
		
	
		
		
			
				
					
					                if(data['today_article']){
                if  (data['today_article'])  {
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					                    update(data['today_article']);
                    update(data['today_article']);
 
			
		
	
		
		
			
				
					
					                    check_pre(data['visited_articles']);
                    check_pre(data['visited_articles']);
 
			
		
	
		
		
			
				
					
					                    check_next(data['result_of_generate_article']);
                    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({
        $.ajax({
 
			
		
	
		
		
			
				
					
					            url: '/get_pre_article/{{username}}',
            url: '/get_pre_article/{{username}}',
 
			
		
	
		
		
			
				
					
					            dataType: 'json',
            dataType: 'json',
 
			
		
	
		
		
			
				
					
					            success: function(data) {
            success: function  (data) {
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					                // 更新页面内容
                // 更新页面内容
 
			
		
	
		
		
			
				
					
					                if(data['today_article']){
                if  (data['today_article'])  {
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					                    update(data['today_article']);
                    update(data['today_article']);
 
			
		
	
		
		
			
				
					
					                    check_pre(data['visited_articles']);
                    check_pre(data['visited_articles']);
 
			
		
	
		
		
			
				
					
					                }
                }
 
			
		
	
		
		
			
				
					
					            }
            }
 
			
		
	
		
		
			
				
					
					        });
        });
 
			
		
	
		
		
			
				
					
					    }
    }
 
			
		
	
		
		
			
				
					
					    function update(today_article){
 
			
				
				
			
		
	
		
		
			
				
					
					        $('#user-level').html(today_article['user_level']);
    function update(today_article) {
 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					        $('#user_level').html(today_article['user_level']);
 
			
		
	
		
		
			
				
					
					        $('#text_level').html(today_article["text_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_title').html(today_article["article_title"]);
 
			
		
	
		
		
			
				
					
					        $('#article').html(today_article["article_body"]);
        $('#article').html(today_article["article_body"]);
 
			
		
	
		
		
			
				
					
					        $('#source').html(today_article['source']);
        $('#source').html(today_article['source']);
 
			
		
	
		
		
			
				
					
					        $('#question').html(today_article["question"]);
        $('#question').html(today_article["question"]);
 
			
		
	
		
		
			
				
					
					        $('#answer').html(today_article["answer"]);
        $('#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);
 
			
		
	
		
		
			
				
					
					        document.querySelector('#user_level').classList.add('mark'); // do the same thing for user difficulty level
 
			
		
	
		
		
			
				
					
					        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();
            $('#load_pre_article').hide();
 
			
		
	
		
		
			
				
					
					        }else{
            sessionStorage.setItem('pre_page_button', 'display')
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					        } else {
 
			
		
	
		
		
			
				
					
					            $('#load_pre_article').show();
            $('#load_pre_article').show();
 
			
		
	
		
		
			
				
					
					            sessionStorage.setItem('pre_page_button', 'show')
 
			
		
	
		
		
			
				
					
					        }
        }
 
			
		
	
		
		
			
				
					
					    }
    }
 
			
		
	
		
		
			
				
					
					    function check_next(result_of_generate_article){
 
			
				
				
			
		
	
		
		
			
				
					
					        if(result_of_generate_article == "found"){
    function check_next(result_of_generate_article) {
 
			
				
				
			
		
	
		
		
			
				
					
					            $('#found').show();$('#not_found').hide();
        if (result_of_generate_article == "found") {
 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					            $('#found').show();
 
			
		
	
		
		
			
				
					
					            $('#not_found').hide();
 
			
		
	
		
		
			
				
					
					            $('#read_all').hide();
            $('#read_all').hide();
 
			
		
	
		
		
			
				
					
					        }else if(result_of_generate_article == "not found"){
        }  else if  (result_of_generate_article == "not found")  {
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					            $('#found').hide();
            $('#found').hide();
 
			
		
	
		
		
			
				
					
					            $('#not_found').show();
            $('#not_found').show();
 
			
		
	
		
		
			
				
					
					            $('#read_all').hide();
            $('#read_all').hide();
 
			
		
	
		
		
			
				
					
					        }else{
        }  else  {
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					            $('#found').hide();
            $('#found').hide();
 
			
		
	
		
		
			
				
					
					            $('#not_found').hide();
            $('#not_found').hide();
 
			
		
	
		
		
			
				
					
					            $('#read_all').show();
            $('#read_all').show();