`); 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: "LYYU7duXWyyEvYKyp8PomYp2GGwjuoHkHdpPOzGrutjJflqbT48ZiPRXAPsDiI07"}, 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
Solutions
Textbooks
`); } 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.typesetPromise([document.getElementById('search-solution-options')]); } } function build_textbooks() { $('#search-pretype-options').empty(); $('#search-pretype-options').append($('#search-solution-options').html()); if (Array.isArray(textbook_search_result)) { var books_section = $(` Textbooks View All `); let searchUrl = "/books/xxx/"; textbook_search_result.forEach((elem) => { books_section.find('#whiletyping-books').append(` ${elem.title} ${ordinal(elem.edition)} ${elem.author} `); }); } if (Array.isArray(textbook_search_result) && textbook_search_result.length>0){ $('#search-pretype-options').append(books_section); } } function build_popup(first_time = false) { if ($('#search-text').val()=='') { build_pretype(); } else { solution_and_textbook_search(); } } var search_text_out = true; var search_popup_out = true; const is_login = false; const user_hash = null; 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/`; let prebooks = null; try { prebooks = JSON.parse(localStorage.getItem('PRETYPE_BOOKS_'+(is_login?user_hash:'ANON'))); }catch(e) {} if (prebooks && 'previous_books' in prebooks && 'recommended_books' in prebooks) { if (is_login) { previous_books = prebooks.previous_books; recommended_books = prebooks.recommended_books; if (prebooks.time && new Date().getTime()-prebooks.time<1000*60*60*6) { build_popup(); return; } } else { anon_pretype(); return; } } $.ajax({ url: prevbookUrl, method: 'POST', data:{csrfmiddlewaretoken: "LYYU7duXWyyEvYKyp8PomYp2GGwjuoHkHdpPOzGrutjJflqbT48ZiPRXAPsDiI07"}, success: function(response){ previous_books = response.previous_books; recommended_books = response.recommended_books; if (is_login) { localStorage.setItem('PRETYPE_BOOKS_'+user_hash, JSON.stringify({ previous_books: previous_books, recommended_books: recommended_books, time: new Date().getTime() })); } 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: "LYYU7duXWyyEvYKyp8PomYp2GGwjuoHkHdpPOzGrutjJflqbT48ZiPRXAPsDiI07", query: $('#search-text').val(), searchObjects: JSON.stringify(searchResults) }, dataType: 'json', complete: function(data){ window.location.href = objectUrl; } }); }); });
FAQs
A cistern is normally filled in 8 hrs, but it takes 2 hours longer to fill because of a leak in its bottom. If the cistern is full, the leak will empty it in.
Can a cistern be filled by one tap in 4 hours and another tap in 6 hours? ›
Correct option is A. 12 hours.
A cistern can be filled by a tap in 4 hours and emptied by an outlet pipe in 6 hours. How long will it take to fill the cistern if both the tap and the pipe are opened together? A cistern can be filled by one tap in 8 hours, and by another in 4 hours.
How many litres does a cistern hold? ›
How many litres of water does the Encore cistern hold compared to a conventional cistern? The Encore cistern holds 18 litres of water compared to conventional cisterns that hold between 4.5 and 6 litres.
How much time will the leak take to empty the full cistern? ›
Time taken to fill the cistern without leak = 9 hours. II. Time taken to fill the cistern in presence of leak = 10 hours. Leak will empty the full cistern in 90 hours.
Can a cistern be filled by an inlet in 6 hours? ›
6) A cistern can be filled by an inlet in 6 hours and can be emptied by an outlet in 8 hours. If the inlet and outlet are opened together, in what time the cistern can be filled? ∴ The whole tank will be filled in 24 hours.
Why is my cistern taking so long to fill? ›
Check if the toilet cistern is in need of replacing as well. Cleaning the fill valve – If you can see gunk and mineral buildup in the valve it needs cleaning as that can cause the problem that the toilet tank won't fill with water. Turn off the water supply and take off the tank lid.
Can two pipes fill a tank in 8 and 6 hours? ›
Expert-Verified Answer
The time taken by the first pipe to fill the tank = 6 hours. The time taken by the second pipe to fill the tank = 8 hours. The time taken by the third pipe to empty the tank = 12 hours. So, the answer will be 4.8 hours.
Is a cistern normally filled in 5 hours? ›
A cistern is normally filled in 5 hours. However, it takes 6 hours when there is leak in its bottom. If the cistern is full, in what time shall the leak empty it? a)6 hb)5 hc)30 hd)15 hCorrect answer is option 'C'.
Can two taps separately fill a cistern in 6 and 7 minutes? ›
As both pipes have filled alternatively, now is the turn of pipe A to fill th cistern. Therefore, Total time taken to fill the Cistern 6 + 3/7 min. Hence, our answer is 6 3/7 min.
How do you calculate the capacity of a cistern? ›
If your cistern is rectangular in shape, rather than square or circular, you can determine its capacity by the following procedure. Multiply the length by the width by the depth (all in feet) to get the number of cubic feet of storage. Then multiply this figure by 7.5 to get the number of gallons of storage capacity.
Well a toilet that is constantly leaking clean water from the cistern into the pan can waste around 200 to 400 litres of water a day (2.5 – 5 bath tubs a day) and could add around £300 a year to your water bill if left unfixed.
How much water should be in a cistern? ›
Ideally, the water level in your toilet tank should sit one to two inches below the toilet's fill valve and/or overflow tube. Some toilets even have a marker on the inside of the tank to indicate where the waterline should be.
Can a cistern be filled by a pipe in 10 hours? ›
Detailed solution: Let the hours taken by the leak to empty a full tank be x. ∴ Leak will empty a full tank in 60 hours.
Is a cistern normally filled with water in 10 hours? ›
A cistern normally takes 10 hours to be filled by a tap but because of one open outlet pipe, it takes 5 hours more. In how many hours will the outlet pipe will empty a full cistern? Therefore the leak will empty the full cistern in 30 hrs.
How long should a cistern take to fill? ›
Depending on your water pressure, a tank usually refills in about three minutes. If it's slow to fill or it's not filling at all, try the shut-off first. Make sure the water shut-off is completely open for maximum water flow. If it's not completely open, that may account for your slow-fill issues.
What causes a toilet to take a long time to fill? ›
If your toilet is slow to fill, it might be due to one of four reasons: a clogged vent, a clogged drain, faulty plumbing, or a blocked pipe. 1. A clogged vent. If your vent is clogged, the air won't be able to escape from the tank, and the water will take longer to fill up.
Why is the water in my cistern slow? ›
The most common reason for a toilet being slow to fill is due to a partially open water supply valve. Check to make sure the valve is open and letting water flow freely into the tank when it needs to fill. If it's closed or only partially open, open it fully to allow plenty of water to flow.
Why does my toilet tank slowly continue to fill? ›
You Have a Water Supply Valve Problem
When the valve is broken or closed, it doesn't consistently deliver water at the right speed or volume. The water valve is also in control of a water line that's susceptible to clogs. As a result, this, too, can impact how fast or slow your toilet tank is filling.