SOLVED: The company has given you the following facts and forecasts i. Trading will start on 01 March 2024 when TS 8,000,000 cash will be introduced. ii. Business premises costing TZS 22,000,000 (including rates of 31 March 2024) will be paid for at t (2024)

  • Solutions
  • `); 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: "NyptN1auoBjHBRU9hBFzdkPklijkaiBrmJQlnX7jCOPqLv3jsnxj8GESS4iXk8IR"}, 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: "NyptN1auoBjHBRU9hBFzdkPklijkaiBrmJQlnX7jCOPqLv3jsnxj8GESS4iXk8IR"}, 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: "NyptN1auoBjHBRU9hBFzdkPklijkaiBrmJQlnX7jCOPqLv3jsnxj8GESS4iXk8IR"}, 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: "NyptN1auoBjHBRU9hBFzdkPklijkaiBrmJQlnX7jCOPqLv3jsnxj8GESS4iXk8IR", query: $('#search-text').val(), searchObjects: JSON.stringify(searchResults) }, dataType: 'json', complete: function(data){ window.location.href = objectUrl; } }); }); });

    I am an expert in web development, particularly in the context of dynamic content generation and user interface design. My knowledge is based on a solid understanding of JavaScript, AJAX, and front-end technologies. I have practical experience in building interactive and responsive web applications, and I am well-versed in using libraries such as jQuery.

    Now, let's break down the concepts used in the provided article:

    1. AJAX (Asynchronous JavaScript and XML):

      • AJAX is a technique used in web development to create asynchronous, dynamic interactions between a web page and the server. It allows for the retrieval and updating of content without requiring a full page refresh.
    2. localStorage:

      • localStorage is a web storage API that allows data to be stored in the browser with no expiration time. It persists even when the browser is closed and reopened, making it suitable for storing information such as user preferences or previous search data.
    3. jQuery:

      • jQuery is a fast, small, and feature-rich JavaScript library. It simplifies tasks like HTML document traversal and manipulation, event handling, and animation. In the provided code, jQuery is used for DOM manipulation and AJAX requests.
    4. Promises:

      • Promises are a JavaScript feature that represents the eventual completion or failure of an asynchronous operation and its resulting value. They are used to handle asynchronous operations more cleanly than traditional callback patterns.
    5. Fuse.js:

      • Fuse.js is a lightweight fuzzy-search library for JavaScript. It allows for efficient searching and ranking of items based on user input, making it suitable for implementing search functionalities.
    6. MathJax:

      • MathJax is a JavaScript display engine that produces high-quality mathematical typesetting in web pages. It is commonly used to render mathematical equations and expressions.
    7. Event Handling:

      • The code includes event handling for various user interactions, such as focusing on the search text input, resizing the popup, and handling mouse enter and leave events on the search popup.
    8. Web Storage:

      • The code utilizes localStorage for storing and retrieving data related to previously opened textbooks and recommended textbooks. This data is used to provide relevant suggestions to the user.
    9. Web Development Best Practices:

      • The code adheres to best practices in web development, such as using AJAX to fetch data asynchronously, optimizing user interactions with event handling, and utilizing external libraries like jQuery for efficient DOM manipulation.

    Overall, the provided code snippet showcases a sophisticated implementation of web development techniques and libraries to create a dynamic and responsive search interface with features like autocomplete and suggestions based on user input.

    SOLVED: The company has given you the following facts and forecasts
i. Trading will start on 01 March 2024 when TS 8,000,000 cash will be introduced.
ii. Business premises costing TZS 22,000,000 (including rates of 31 March 2024) will be 
paid for at t (2024)
    Top Articles
    Latest Posts
    Article information

    Author: Moshe Kshlerin

    Last Updated:

    Views: 5534

    Rating: 4.7 / 5 (57 voted)

    Reviews: 80% of readers found this page helpful

    Author information

    Name: Moshe Kshlerin

    Birthday: 1994-01-25

    Address: Suite 609 315 Lupita Unions, Ronnieburgh, MI 62697

    Phone: +2424755286529

    Job: District Education Designer

    Hobby: Yoga, Gunsmithing, Singing, 3D printing, Nordic skating, Soapmaking, Juggling

    Introduction: My name is Moshe Kshlerin, I am a gleaming, attractive, outstanding, pleasant, delightful, outstanding, famous person who loves writing and wants to share my knowledge and understanding with you.