SOLVED:Explain what is meant by liquidity risk, event risk and… | Numerade (2024)

`); let searchUrl = `/search/`; history.forEach((elem) => { prevsearch.find('#prevsearch-options').append(`

${elem}

`); }); } $('#search-pretype-options').empty(); $('#search-pretype-options').append(prevsearch); let prevbooks = $(false); [ {title:"Recently Opened Textbooks", books:previous_books}, {title:"Recommended Textbooks", books:recommended_books} ].forEach((book_segment) => { if (Array.isArray(book_segment.books) && book_segment.books.length>0 && nsegments<2) { nsegments+=1; prevbooks = $(`

  • ${book_segment.title}
  • `); let searchUrl = "/books/xxx/"; book_segment.books.forEach((elem) => { prevbooks.find('#prevbooks-options'+nsegments.toString()).append(`

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

    `); }); } $('#search-pretype-options').append(prevbooks); }); } function anon_pretype() { let prebooks = null; try { prebooks = JSON.parse(localStorage.getItem('PRETYPE_BOOKS_ANON')); }catch(e) {} if ('previous_books' in prebooks && 'recommended_books' in prebooks) { previous_books = prebooks.previous_books; recommended_books = prebooks.recommended_books; if (typeof PREVBOOKS !== 'undefined' && 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; } if (typeof RECBOOKS !== 'undefined' && Array.isArray(RECBOOKS)) { new_recbooks = RECBOOKS; for (let j = 0; j < new_recbooks.length; j++) { new_recbooks[j].viewed_at = new Date(); } let insert = true; for (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) { insert = false; } } if (insert){ new_recbooks.push(recommended_books[i]); } } new_recbooks.sort((a,b)=>{ adate = new Date(2000, 0, 1); bdate = new Date(2000, 0, 1); if ('viewed_at' in a) {adate = new Date(a.viewed_at);} if ('viewed_at' in b) {bdate = new Date(b.viewed_at);} // 100000000: instead of just erasing the suggestions from previous week, // we just move them to the back of the queue acurweek = ((new Date()).getDate()-adate.getDate()>7)?0:100000000; bcurweek = ((new Date()).getDate()-bdate.getDate()>7)?0:100000000; aviews = 0; bviews = 0; if ('views' in a) {aviews = acurweek+a.views;} if ('views' in b) {bviews = bcurweek+b.views;} return 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 = { books: [], curriculum: [], topics: [] } var single_whiletyping_ajax_promise = null; var whiletyping_database_initial_burst = 0; //number of consecutive calls, after 3 we start the 1 per 5 min calls function get_whiletyping_database() { //gets the database from the server. // 1. by validating against a local database value we confirm that the framework is working and // reduce the ammount of continuous calls produced by errors to 1 per 5 minutes. return localforage.getItem('whiletyping_last_attempt').then(function(value) { if ( value==null || (new Date()) - (new Date(value)) > 1000*60*5 || (whiletyping_database_initial_burst < 3) ) { localforage.setItem('whiletyping_last_attempt', (new Date()).getTime()); // 2. Make an ajax call to the server and get the search database. let databaseUrl = `/search/whiletype_database/`; let resp = single_whiletyping_ajax_promise; if (resp === null) { whiletyping_database_initial_burst = whiletyping_database_initial_burst + 1; single_whiletyping_ajax_promise = resp = new Promise((resolve, reject) => { $.ajax({ url: databaseUrl, type: 'POST', data:{csrfmiddlewaretoken: "UqTkuHxHLzNlNMyRGY7xYuyezhuFZADdv8fvynNxDKJyk2rbK2pQDy21tSIpce6b"}, success: function (data) { // 3. verify that the elements of the database exist and are arrays if ( ('books' in data) && ('curriculum' in data) && ('topics' in data) && Array.isArray(data.books) && Array.isArray(data.curriculum) && Array.isArray(data.topics)) { localforage.setItem('whiletyping_last_success', (new Date()).getTime()); localforage.setItem('whiletyping_database', data); resolve(data); } }, error: function (error) { console.log(error); resolve(null); }, complete: function (data) { single_whiletyping_ajax_promise = null; } }) }); } return resp; } return Promise.resolve(null); }).catch(function(err) { console.log(err); return Promise.resolve(null); }); } function get_whiletyping_search_object() { // gets the fuse objects that will be in charge of the search if (whiletyping_search_object){ return 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()) - (new Date(last_success)) > 1000*60*60*24*30 || (new Date('2023-04-25T00:00:00')) - (new Date(last_success)) > 0) { // New database update 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, // location: 0, threshold: 0.2, // distance: 100, // useExtendedSearch: false, ignoreLocation: true, // ignoreFieldNorm: false, // fieldNormWeight: 1, keys: [ "title" ] }; let curriculum_index={}; let topics_index={}; database.curriculum.forEach(c => curriculum_index[c.id]=c); database.topics.forEach(t => topics_index[t.id]=t); for (j=0; j

    (b.item.view_count || 0) - (a.item.view_count || 0)); whiletyping_search = {books: [], curriculum: [], topics: []}; const MAX_BOOKS=3; const MAX_COURSES=4; const MAX_TOPICS=6; let curriculum_titles = new Set(); let topics_titles = new Set(); add_without_repetition = (params)=>{ // insert items from elems into array checking that array is max size // and no title duplicates for (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: MAX_COURSES, titles: curriculum_titles, elems: curriculum, array: whiletyping_search.curriculum }); add_without_repetition({ max: MAX_TOPICS, titles: topics_titles, elems: topics, array: whiletyping_search.topics }); for (var i = 0; i=MAX_BOOKS) {break;} book = books[i].item; whiletyping_search.books.push(book); add_without_repetition({ max: MAX_COURSES, titles: curriculum_titles, elems: book.curriculum, array: whiletyping_search.curriculum }); add_without_repetition({ max: MAX_TOPICS, titles: topics_titles, elems: book.topics, array: whiletyping_search.topics }); } return true; } else { return false; } }); } function build_solutions() { if (Array.isArray(solution_search_result)) { const viewAllHTML = userSubscribed ? `View All` : ''; var solutions_section = $(`
  • Solutions ${viewAllHTML}
  • `); let questionUrl = "/questions/xxx/"; let askUrl = "/ask/question/xxx/"; solution_search_result.forEach((elem) => { let url = ('course' in elem)?askUrl:questionUrl; let solution_type = ('course' in elem)?'ask':'question'; let subtitle = ('course' in elem)?(elem.course??""):(elem.book ?? "")+"    "+(elem.chapter?"Chapter "+elem.chapter:""); solutions_section.find('#whiletyping-solutions').append(` ${elem.text} ${subtitle} `); }); $('#search-solution-options').empty(); if (Array.isArray(solution_search_result) && solution_search_result.length>0){ $('#search-solution-options').append(solutions_section); } MathJax.Hub.Queue(["Typeset", MathJax.Hub, document.getElementById('search-solution-options')]); } } function build_whiletyping() { $('#search-pretype-options').empty(); $('#search-pretype-options').append($('#search-solution-options').html()); if (Array.isArray(whiletyping_search.books) && whiletyping_search.books.length>0) { var books_section = $(`
  • Textbooks View All
  • `); let searchUrl = "/books/xxx/"; whiletyping_search.books.forEach((elem) => { books_section.find('#whiletyping-books').append(` ${elem.title} ${ordinal(elem.edition)} ${elem.author} `); }); } $('#search-pretype-options').append(books_section); } function build_popup(first_time = false) { if ($('#search-text').val()=='') { build_pretype(); if (first_time) { do_whiletyping_search(); } } else { solution_search(); do_whiletyping_search().then((success) => { if (success) { build_whiletyping(); } else { build_pretype(); } }).catch((err) => { console.log(err); build_pretype(); }); } } var search_text_out = true; var search_popup_out = true; const is_login = false; function pretype_setup() { $('#search-text').focusin(function() { $('#search-popup').addClass('show'); resize_popup(); search_text_out = false; }); $( window ).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", delay(() => { build_popup(); }, 200)); build_popup(true); let prevbookUrl = `/search/pretype_books/`; if (is_login) { $.ajax({ url: prevbookUrl, method: 'POST', data:{csrfmiddlewaretoken: "UqTkuHxHLzNlNMyRGY7xYuyezhuFZADdv8fvynNxDKJyk2rbK2pQDy21tSIpce6b"}, success: function(response){ previous_books = response.previous_books; recommended_books = response.recommended_books; build_popup(); }, error: function(response){ console.log(response); } }); } else { let prebooks = null; try { prebooks = JSON.parse(localStorage.getItem('PRETYPE_BOOKS_ANON')); }catch(e) {} if (prebooks && 'previous_books' in prebooks && 'recommended_books' in prebooks) { anon_pretype(); } else { $.ajax({ url: prevbookUrl, method: 'POST', data:{csrfmiddlewaretoken: "UqTkuHxHLzNlNMyRGY7xYuyezhuFZADdv8fvynNxDKJyk2rbK2pQDy21tSIpce6b"}, success: function(response){ previous_books = response.previous_books; recommended_books = response.recommended_books; build_popup(); }, error: function(response){ console.log(response); } }); } } } $( document ).ready(pretype_setup); $( document ).ready(function(){ $('#search-popup').on('click', '.search-view-item', function(e) { e.preventDefault(); let autoCompleteSearchViewUrl = `/search/autocomplete_search_view/`; let objectUrl = $(this).attr('href'); let selectedId = $(this).data('objid'); let searchResults = []; $("#whiletyping-solutions").find("a").each(function() { let is_selected = selectedId === $(this).data('objid'); searchResults.push({ objectId: $(this).data('objid'), contentType: $(this).data('contenttype'), category: $(this).data('category'), selected: is_selected }); }); $("#whiletyping-books").find("a").each(function() { let is_selected = selectedId === $(this).data('objid'); searchResults.push({ objectId: $(this).data('objid'), contentType: $(this).data('contenttype'), category: $(this).data('category'), selected: is_selected }); }); $.ajax({ url: autoCompleteSearchViewUrl, method: 'POST', data:{ csrfmiddlewaretoken: "UqTkuHxHLzNlNMyRGY7xYuyezhuFZADdv8fvynNxDKJyk2rbK2pQDy21tSIpce6b", query: $('#search-text').val(), searchObjects: JSON.stringify(searchResults) }, dataType: 'json', complete: function(data){ window.location.href = objectUrl; } }); }); });

    As an expert in web development and JavaScript programming, I understand the code snippet you provided, which appears to be a part of a web application written in JavaScript using jQuery. The code involves handling user input for a search functionality, making AJAX calls to the server, and dynamically updating the search results based on user interactions.

    Here is an overview of the concepts used in the provided code:

    1. HTML/CSS Structure:

      • The code involves the creation and manipulation of HTML elements, likely forming the structure of a search bar and search results popup.
      • CSS classes such as show are used to control the visibility of the search popup.
    2. AJAX Requests:

      • The code makes extensive use of AJAX (Asynchronous JavaScript and XML) requests using jQuery's $.ajax function.
      • The requests are made to various server endpoints (/search/, /books/xxx/, /search/whiletype_database/, etc.) to fetch data dynamically.
    3. Local Storage:

      • The code utilizes the browser's local storage to store and retrieve data. For example, it stores information about previously opened textbooks and recommended textbooks for anonymous users.
    4. Promises:

      • Promises are used to handle asynchronous operations, such as fetching data from the server and updating the local storage.
      • Functions like get_whiletyping_database() return promises to ensure the proper sequence of operations.
    5. Event Handling:

      • Events like focusin, resize, mouseenter, mouseleave, and keyup are used to trigger various actions in response to user interactions.
      • The code also uses event delegation to handle click events on elements within the search popup.
    6. Dynamic Content Update:

      • The search results and other information are dynamically updated on the webpage without requiring a full page reload.
      • jQuery functions like append and html are used to add content to specific HTML elements.
    7. Fuse.js Search:

      • The code uses Fuse.js, a lightweight fuzzy-search library, to perform searches on various types of data, such as books, curriculum, and topics.
      • Fuse.js allows for flexible and efficient searching, as seen in the get_whiletyping_search_object() function.
    8. MathJax Integration:

      • MathJax.Hub.Queue(["Typeset", MathJax.Hub, document.getElementById('search-solution-options')]) is used to typeset mathematical equations on the page.
    9. Functionality Segmentation:

      • The code is organized into functions that handle specific aspects of the application, such as building solutions, while typing search, and populating search results.
    10. Error Handling:

      • Basic error handling is implemented, and console logging is used to capture and log errors to the browser console.

    In summary, the provided code showcases a sophisticated web application that involves dynamic content loading, user interaction handling, and integration with external libraries for efficient searching. If you have specific questions or need clarification on any part of the code, feel free to ask.

    SOLVED:Explain what is meant by liquidity risk, event risk and… | Numerade (2024)
    Top Articles
    Latest Posts
    Article information

    Author: Nicola Considine CPA

    Last Updated:

    Views: 5983

    Rating: 4.9 / 5 (49 voted)

    Reviews: 88% of readers found this page helpful

    Author information

    Name: Nicola Considine CPA

    Birthday: 1993-02-26

    Address: 3809 Clinton Inlet, East Aleisha, UT 46318-2392

    Phone: +2681424145499

    Job: Government Technician

    Hobby: Calligraphy, Lego building, Worldbuilding, Shooting, Bird watching, Shopping, Cooking

    Introduction: My name is Nicola Considine CPA, I am a determined, witty, powerful, brainy, open, smiling, proud person who loves writing and wants to share my knowledge and understanding with you.