บทที่ 1 การเรียนรู้เกี่ยวกับโซลูชั่นวิดีโอชีวิต Campbell Essential Biology with Physiology | ตัวเลข (2024)

  • โซลูชั่น
  • `); ให้ searchUrl = `/search/`; history.forEach((elem) => { prevsearch.find('#prevsearch-options').ผนวก(`

    ${องค์ประกอบ}

    `); }); } $('#search-pretype-options').empty(); $('#search-pretype-options').ผนวก(ค้นหาก่อนหน้า); ให้ prevbooks = $(false); [ {title:"หนังสือเรียนที่เปิดล่าสุด", หนังสือ:previous_books}, {title:"หนังสือเรียนที่แนะนำ", หนังสือ:recommended_books} ].forEach((book_segment) => { if (Array.isArray(book_segment.books) && book_segment. books.length>0 && nsegments<2) { nsegments+=1; prevbooks = $(`

  • ${book_segment.title}
  • `); ให้ searchUrl = "/books/xxx/"; book_segment.books.forEach((elem) => { prevbooks.find('#prevbooks-options'+nsegments.toString()).ผนวก(`

    ${elem.title} ${ordinal(elem.edition)} ${elem.author}

    `); }); } $('#search-pretype-options').append(prevbooks); }); } ฟังก์ชั่น anon_pretype() { ให้ prebooks = null; ลอง { prebooks = JSON.parse(localStorage.getItem('PRETYPE_BOOKS_ANON')); }catch(e) {} ถ้า ('previous_books' ใน prebooks && 'recommended_books' ใน prebooks) { Previous_books = prebooks.previous_books; recommended_books = prebooks.recommended_books; ถ้า (ประเภทของ PREVBOOKS !== 'ไม่ได้กำหนด' && Array.isArray (PREVBOOKS)) { new_prevbooks = PREVBOOKS; Previous_books.forEach(elem => { for (let i = 0; i < new_prevbooks.length; i++) { if (elem.id == new_prevbooks[i].id) { return; } } new_prevbooks.push(elem); }); new_prevbooks = new_prevbooks.slice(0,3); Previous_books = new_prevbooks; } ถ้า (ประเภทของ RECBOOKS !== 'ไม่ได้กำหนด' && Array.isArray (RECBOOKS)) { new_recbooks = RECBOOKS; สำหรับ (ให้ j = 0; j < new_recbooks.length; j++) { new_recbooks[j].viewed_at = new Date(); } ให้ใส่ = จริง; สำหรับ (let i=0; i < recommended_books.length; i++){ for (let j = 0; j < new_recbooks.length; j++) { if (recommended_books[i].id == new_recbooks[j].id) { แทรก = เท็จ; } } ถ้า (แทรก){ new_recbooks.push(recommended_books[i]); } } new_recbooks.sort((a,b)=>{ adate = วันที่ใหม่ (2000, 0, 1); bdate = วันที่ใหม่ (2000, 0, 1); if ('viewed_at' ใน a) {adate = ใหม่ Date(a.viewed_at);} if ('viewed_at' in b) {bdate = new Date(b.viewed_at);} // 100000000: แทนที่จะลบคำแนะนำจากสัปดาห์ก่อน // เราแค่ย้ายคำแนะนำเหล่านั้นไปที่ ด้านหลังของคิว acurweek = ((new Date()).getDate()-adate.getDate()>7)?0:100000000; bcurweek = ((new Date()).getDate()-bdate.getDate() >7)?0:100000000; aviews = 0; bviews = 0; if ('views' ใน a) {aviews = acurweek+a.views;} if ('views' ใน b) {bviews = bcurweek+b.views ;} กลับ bviews - aviews; }); new_recbooks = new_recbooks.slice (0,3); recommended_books = new_recbooks; } localStorage.setItem('PRETYPE_BOOKS_ANON', JSON.stringify({ Previous_books: Previous_books, recommended_books: recommended_books })); build_popup(); } } var whiletyping_search_object = null; var whiletyping_search = { หนังสือ: [], หลักสูตร: [], หัวข้อ: [] } var single_ Whiletyping_ajax_promise = null; var whiletyping_database_initial_burst = 0; // จำนวนการโทรติดต่อกัน หลังจาก 3 ครั้ง เราจะเริ่มฟังก์ชันการโทร 1 ต่อ 5 นาที get_ Whiletyping_database() { // รับฐานข้อมูลจากเซิร์ฟเวอร์ // 1. โดยการตรวจสอบกับค่าฐานข้อมูลท้องถิ่น เรายืนยันว่าเฟรมเวิร์กใช้งานได้ และ // ลดจำนวนการโทรต่อเนื่องที่เกิดจากข้อผิดพลาดเป็น 1 ต่อ 5 นาที return localforage.getItem(' Whiletyping_last_attempt').then(function(value) { if ( value==null || (new Date()) - (new Date(value)) > 1,000*60*5 || ( Whiletyping_database_initial_burst < 3) ) { localforage.setItem(' Whiletyping_last_attempt', (new Date()).getTime()); // 2. โทร ajax ไปยังเซิร์ฟเวอร์และรับฐานข้อมูลการค้นหา ให้ DatabaseUrl = `/search/ Whiletype_database/ `; ให้ resp = single_ Whiletyping_ajax_promise; if (resp === null) { whiletyping_database_initial_burst = whiletyping_database_initial_burst + 1; single_ Whiletyping_ajax_promise = resp = new Promise ((แก้ไข, ปฏิเสธ) => { $.ajax ({ url:databaseUrl, พิมพ์: 'POST ', data:{csrfmiddlewaretoken: "hrLMELDJ1q9unWlLvzXLHRdwzs4fWcXdVX1XjDc4UU1kwLeOQjCbDNfNdPcZP4lA"}, Success: function (data) { // 3. ตรวจสอบว่าองค์ประกอบของฐานข้อมูลมีอยู่และเป็นอาร์เรย์ถ้า ( ('หนังสือ' ในข้อมูล) && ('หลักสูตร' ในข้อมูล ) && ('หัวข้อ' ในข้อมูล) && Array.isArray(data.books) && Array.isArray(data.curriculum) && Array.isArray(data.topics)) { localforage.setItem(' Whiletyping_last_success', (new Date( )).getTime()); localforage.setItem(' Whiletyping_database', ข้อมูล); แก้ไข (ข้อมูล); } } ข้อผิดพลาด: ฟังก์ชั่น (ข้อผิดพลาด) { console.log(ข้อผิดพลาด); แก้ไข (โมฆะ); } สมบูรณ์: ฟังก์ชั่น (ข้อมูล) { single_ Whiletyping_ajax_promise = null; } }) }); } ตอบกลับ; } ส่งคืน Promise.resolve (null); }).catch(function(err) { console.log(err); return Promise.resolve(null); }); } ฟังก์ชั่น get_ Whiletyping_search_object() { // รับวัตถุฟิวส์ที่จะรับผิดชอบในการค้นหาถ้า (ในขณะที่พิมพ์ดีด_ค้นหาวัตถุ){ กลับ Promise.resolve( Whiletyping_search_object); } Database_promise = localforage.getItem(' Whiletyping_database').then(function(database) { return localforage.getItem(' Whiletyping_last_success').then(function(last_success) { if (database==null || (new Date()) - (วันที่ใหม่(last_success)) > 1000*60*60*24*30 || (วันที่ใหม่('2023-04-25T00:00:00')) - (วันที่ใหม่(last_success)) > 0) { / / อัพเดตฐานข้อมูลใหม่ return get_ Whiletyping_database().then(function(new_database) { if (new_database) { Database = new_database; } return Database; }); } else { return Promise.resolve(database); } }); }); return Database_promise.then(function(database) { if (database) { const options = { isCaseSensitive: false, includeScore: true, shouldSort: true, // includeMatches: false, // findAllMatches: false, // minMatchCharLength: 1, / / ตำแหน่ง: 0, เกณฑ์: 0.2, // ระยะทาง: 100, // useExtenedSearch: false, ไม่สนใจLocation: จริง, //ไม่สนใจFieldNorm: เท็จ, // fieldNormWeight: 1, คีย์: [ "title" ] }; ให้ curriculum_index={ }; la topics_index={}; Database.curriculum.forEach(c => curriculum_index[c.id]=c); Database.topics.forEach(t => topics_index[t.id]=t); for (j= 0; เจ

    (b.item.view_count || 0) - (a.item.view_count || 0)); whiletyping_search = {หนังสือ: [], หลักสูตร: [], หัวข้อ: []}; const MAX_BOOKS=3; const MAX_COURSES=4; const MAX_TOPICS=6; ให้ curriculum_titles = ชุดใหม่ (); ให้ topics_titles = ชุดใหม่ (); add_without_repetition = (params)=>{ // แทรกรายการจากองค์ประกอบลงในอาร์เรย์ ตรวจสอบว่าอาร์เรย์มีขนาดสูงสุด // และไม่มีชื่อซ้ำสำหรับ (var i = 0; i=params.max) {break;} if (!params.titles.has(params.elems[i].item.title)){ params.titles.add(params.elems[i].item.title); params.array.push(params.elems[i].item); } } } add_without_repetition({ สูงสุด: MAX_COURSES, หัวเรื่อง: curriculum_titles, องค์ประกอบ: หลักสูตร, อาร์เรย์: whiletyping_search.curriculum }); add_without_repetition ({ สูงสุด: MAX_TOPICS, ชื่อ: topics_titles, องค์ประกอบ: หัวข้อ, อาร์เรย์: whiletyping_search.topics }); สำหรับ (var i = 0; i=MAX_BOOKS) {break;} หนังสือ = หนังสือ [i].item; whiletyping_search.books.push (หนังสือ); add_without_repetition({ สูงสุด: MAX_COURSES, ชื่อ: curriculum_titles, องค์ประกอบ: book.curriculum, อาร์เรย์: whiletyping_search.curriculum }); add_without_repetition ({ สูงสุด: MAX_TOPICS, ชื่อ: topics_titles, องค์ประกอบ: book.topics, อาร์เรย์: whiletyping_search.topics }); } คืนค่าจริง; } อื่น { กลับเท็จ; } }); } ฟังก์ชัน build_solutions() { ถ้า (Array.isArray(solution_search_result)) { const viewAllHTML = userSubscribed ? `ดูทั้งหมด` : ''; var Solutions_section = $(`
  • โซลูชั่น ${viewAllHTML}
  • `); ให้ questionUrl = "/questions/xxx/"; ให้ AskUrl = "/ask/question/xxx/"; Solution_search_result.forEach((elem) => { ให้ url = ('หลักสูตร' ใน elem)?askUrl:questionUrl; ให้ solution_type = ('หลักสูตร' ใน elem)?'ask':'question'; ให้คำบรรยาย = ('หลักสูตร' ' ใน elem)?(elem.course??""):(elem.book ?? "")+"    "+(elem.chapter?"Chapter "+elem.chapter:""); Solutions_section.find(' # Whiletyping-solutions').ผนวก(`${elem.text} ${คำบรรยาย}`); }); $('#search-solution-options').empty(); if (Array.isArray(solution_search_result) && solution_search_result.length>0){ $('#search-solution-options').ผนวก(solutions_section); } MathJax.Hub.Queue(["Typeset", MathJax.Hub, document.getElementById('search-solution-options')]); } } ฟังก์ชั่น build_ Whiletyping() { $('#search-pretype-options').empty(); $('#search-pretype-options').append($('#search-solution-options').html()); ถ้า (Array.isArray( Whiletyping_search.books) && whiletyping_search.books.length>0) { var books_section = $(`
  • หนังสือเรียนดูทั้งหมด
  • `); ให้ searchUrl = "/books/xxx/"; whiletyping_search.books.forEach((elem) => { books_section.find('# Whiletyping-books').append(`${elem.title} ${ordinal(elem.edition)} ${elem.author}`); }); } $('#search-pretype-options').ผนวก(books_section); } ฟังก์ชั่น build_popup(first_time = false) { if ($('#search-text').val()=='') { build_pretype(); ถ้า (first_time) { do_ Whiletyping_search (); } } อื่น ๆ { โซลูชัน_ค้นหา (); do_ Whiletyping_search().then((success) => { if (success) { build_ Whiletyping(); } else { build_pretype(); } }).catch((err) => { console.log(err); build_pretype() ; }); } } var search_text_out = จริง; var search_popup_out = จริง; const is_login = เท็จ; function pretype_setup() { $('#search-text').focusin(function() { $('#search-popup').addClass('show'); resize_popup(); search_text_out = false; }); $( หน้าต่าง ).resize(function() { resize_popup(); }); $('#search-text').focusout(() => { search_text_out = true; if (search_text_out && search_popup_out) { $('#search-popup').removeClass('show'); } }); $('#search-popup').mouseenter(() => { search_popup_out = false; }); $('#search-popup').mouseleave(() => { search_popup_out = true; if (search_text_out && search_popup_out) { $('#search-popup').removeClass('show'); } }); $('#search-text').on("keyup", ล่าช้า(() => { build_popup(); }, 200)); build_popup(จริง); ให้ prevbookUrl = `/search/pretype_books/`; if (is_login) { $.ajax ({ url: prevbookUrl วิธีการ: 'POST' ข้อมูล: {csrfmiddlewaretoken: "hrLMELDJ1q9unWlLvzXLHRdwzs4fWcXdVX1XjDc4UU1kwLeOQjCbDNfNdPcZP4lA"} ความสำเร็จ: ฟังก์ชั่น (ตอบกลับ) { Previous_books = response.previous_books; recommended_books = response.recommended_books; build_popup (); } ข้อผิดพลาด: function(response){ console.log(response); } }); } else { ให้ prebooks = null; ลอง { prebooks = JSON.parse(localStorage.getItem('PRETYPE_BOOKS_ANON')); } catch(e) {} if (prebooks && 'previous_books' ใน prebooks && 'recommended_books' ใน prebooks) { anon_pretype(); } else { $.ajax ({ url: prevbookUrl, วิธีการ: 'POST', ข้อมูล: {csrfmiddlewaretoken: "hrLMELDJ1q9unWlLvzXLHRdwzs4fWcXdVX1XjDc4UU1kwLeOQjCbDNfNdPcZP4lA"} ความสำเร็จ: ฟังก์ชั่น (ตอบกลับ) { Previous_books = response.previous_books; recommended_books = response.recommended_books; build_popup() ; } ข้อผิดพลาด: function(response){ console.log(response); } }); } } } $( เอกสาร ).ready(pretype_setup); $( document ).ready(function(){ $('#search-popup').on('click', '.search-view-item', function(e) { e.preventDefault(); ให้ autoCompleteSearchViewUrl = `/search/autocomplete_search_view/`; la objectUrl = $(this).attr('href'); la selectId = $(this).data('objid'); ให้ searchResults = []; $("# Whiletyping- โซลูชัน").find("a").each(function() { la is_selected = SelectedId === $(this).data('objid'); searchResults.push({ objectId: $(this).data( 'objid'), contentType: $(this).data('contenttype'), หมวดหมู่: $(this).data('category'), เลือกแล้ว: is_selected }); }); $("# Whiletyping-books" ).find("a").each(function() { la is_selected = SelectedId === $(this).data('objid'); searchResults.push({ objectId: $(this).data('objid') '), contentType: $(this).data('contenttype'), หมวดหมู่: $(this).data('category'), เลือกแล้ว: is_selected }); }); $.ajax({ url: autoCompleteSearchViewUrl, วิธีการ : 'โพสต์', ข้อมูล: {CSRFMIDDLEWARETOKEN: "HRLMELDJ1Q9UNWLLVZXLHRDWZS4FWCXDVX1XJDC4UUUUNKWLEOQJCBDNFNDPCZP4LA" E: 'JSON' สมบูรณ์: ฟังก์ชั่น ( ข้อมูล) { window.location.href = objectUrl; } }); }); });

    As a seasoned expert in web development and programming, I have a comprehensive understanding of the concepts and technologies used in the provided code snippet. My proficiency in the field is evidenced by my ability to discuss and analyze the code effectively. Now, let's delve into the various concepts used in the code:

    1. JavaScript and jQuery:

      • The code heavily utilizes JavaScript and the jQuery library for DOM manipulation and asynchronous requests. jQuery simplifies tasks like event handling, AJAX calls, and DOM traversal.
    2. Local Storage:

      • The code employs the localStorage object to store and retrieve data locally in the user's browser. This is useful for persisting data across page reloads or sessions.
    3. AJAX (Asynchronous JavaScript and XML):

      • Asynchronous requests are made to the server using AJAX, allowing the application to fetch data without requiring a page refresh. This enhances user experience by providing real-time updates.
    4. Promises:

      • Promises are used to handle asynchronous operations, ensuring that certain tasks are executed after the completion of asynchronous actions, such as AJAX calls.
    5. Fuse.js:

      • The code uses the Fuse.js library for fuzzy search functionality. Fuse.js allows for efficient searching, including partial matches and scoring results based on relevance.
    6. MathJax:

      • MathJax is employed for rendering mathematical equations on the webpage. It ensures that mathematical notations are displayed correctly.
    7. Event Handling:

      • The code includes event handlers for various interactions, such as handling focus events, mouse enter/leave events, and key-up events. These handlers contribute to the interactive nature of the user interface.
    8. Dynamic HTML (DOM) Manipulation:

      • jQuery is utilized to dynamically modify the HTML content of the page. Elements are created, modified, and appended to the DOM in response to user interactions or data retrieval.
    9. Search Functionality:

      • The code implements a search functionality that includes pretyping suggestions, book recommendations, and solutions. The search results are dynamically displayed as the user types.
    10. Responsive Design:

      • The code includes features for responsive design, such as resizing the search popup based on window dimensions. This ensures a consistent and user-friendly experience across different devices.
    11. Error Handling:

      • The code incorporates error handling mechanisms, logging errors to the console when AJAX calls encounter issues.

    In summary, the provided code is a sophisticated web application that combines various web development concepts to create a seamless and interactive user experience.

    บทที่ 1 การเรียนรู้เกี่ยวกับโซลูชั่นวิดีโอชีวิต Campbell Essential Biology with Physiology | ตัวเลข (2024)

    References

    Top Articles
    Latest Posts
    Article information

    Author: Kelle Weber

    Last Updated:

    Views: 5650

    Rating: 4.2 / 5 (53 voted)

    Reviews: 92% of readers found this page helpful

    Author information

    Name: Kelle Weber

    Birthday: 2000-08-05

    Address: 6796 Juan Square, Markfort, MN 58988

    Phone: +8215934114615

    Job: Hospitality Director

    Hobby: tabletop games, Foreign language learning, Leather crafting, Horseback riding, Swimming, Knapping, Handball

    Introduction: My name is Kelle Weber, I am a magnificent, enchanting, fair, joyous, light, determined, joyous person who loves writing and wants to share my knowledge and understanding with you.