`);Seja Pesemurl = `/Search/`;history.foreach ((elem) => {prevsearch.find ('#prevSearch-options'). Appender (`
$ {elem}`);});} $ ('#Search-protype-opções'). Empty ();$ ('#Search-protype-Options'). Append (PrevSearch);deixe prevBooks = $ (false);[{Title: "Livros didáticos recentemente abertos", Livros: Anterior_Books}, {Title: "Livros Textignos recomendados", Livros: Recomendoud_Books}] .ForEach ((book_segment) => {if (Array.isarray (book_segment.books) && book_segment.books.length> 0 && nsegments <2) {nsegments+= 1;
$ {book_segment.title} `);Seja Pearchurl = "/Books/XXX/";book_segment.books.foreach ((elem) => {prevBooks.find ('#prevbooks-opções'+nsegments.toString ()). Append (`
$ {elem.title} $ {ordinal (elem.edition)} $ {elem.author}`); }); } $('#search-pretype-options').append(prevbooks); }); } function anon_pretype() { let prebooks = null; tente { prebooks = JSON.parse(localStorage.getItem('PRETYPE_BOOKS_ANON')); }catch(e) {} if ('previous_books' em prebooks && 'recommended_books' em prebooks) { previous_books = prebooks.previous_books; livros_recomendados = prebooks.recommended_books; if (typeof PREVBOOKS !== 'indefinido' && Array.isArray(PREVBOOKS)) { new_prevbooks = PREVBOOKS; previous_books.forEach(elem => { for (deixe i = 0; i < new_prevbooks.length; i++) { if (elem.id == new_prevbooks[i].id) { return; } } new_prevbooks.push(elem); }); novos_prevbooks = novos_prevbooks.slice(0,3); livros_anteriores = novos_livros_prev; } if (typeof RECBOOKS !== 'indefinido' && Array.isArray(RECBOOKS)) { new_recbooks = RECBOOKS; for (seja j = 0; j { adate = new Date(2000, 0, 1); bdate = new Date(2000, 0, 1); if ('viewed_at' em a) {adate = new Date(a.viewed_at);} if ('viewed_at' in b) {bdate = new Date(b.viewed_at);} // 100000000: em vez de apenas apagar as sugestões da semana anterior, // apenas as movemos para o atrás da fila acurweek = ((new Date()).getDate()-adate.getDate()>7)?0:100000000; >7)?0:100000000; aviews = 0; bviews = 0; if ('visualizações' em a) {aviews = acurweek+a.views;} if ('visualizações' em b) {bviews = bcurweek+b.views ;} return bviews - aviews }); novos_recbooks = novos_recbooks.slice(0,3); livros_recomendados = novos_recbooks; } localStorage.setItem('PRETYPE_BOOKS_ANON', JSON.stringify({ livros_anteriores: livros_anteriores, livros_recomendados: livros_recomendados })); build_popup(); } } var whiletyping_search_object = null; var whiletyping_search = { livros: [], currículo: [], tópicos: [] } var single_whiletyping_ajax_promise = null; var whiletyping_database_initial_burst = 0; //número de chamadas consecutivas, após 3 iniciamos as chamadas de 1 a cada 5 minutos function get_whiletyping_database() { //obtém o banco de dados do servidor. // 1. validando em relação a um valor de banco de dados local, confirmamos que a estrutura está funcionando e // reduzimos a quantidade de chamadas contínuas produzidas por erros para 1 a cada 5 minutos. 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. Faça uma chamada ajax para o servidor e obtenha o banco de dados de pesquisa let databaseUrl = `/search/whiletype_database/. `; ', dados:{csrfmiddlewaretoken: "z7fdlTI0lky0siFhW3cAdq5QvXRHG512dBxcV55CDUJZ3d1jHevtS9yhMFEm3kky"}, sucesso: função (dados) { // 3. verifique se os elementos do banco de dados existem e são matrizes if (('livros' em dados) && ('currículo' em dados ) && ('tópicos' em dados) && Array.isArray(data.books) && Array.isArray(data.curriculum) && Array.isArray(data.topics)) { localforage.setItem('whiletyping_last_success', (new Date( )).consiga tempo()); localforage.setItem('whiletyping_database', dados); resolver(dados); } }, erro: função (erro) {console.log(erro); resolver(nulo); }, completo: função (dados) { single_whiletyping_ajax_promise = null; } }) }); } retornar resp; } retornar Promise.resolve(nulo); }).catch(function(err) { console.log(err); return Promise.resolve(null); }); } function get_whiletyping_search_object() { // obtém os objetos fusíveis que serão responsáveis pela busca 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 || (nova data()) - (nova data(último_sucesso)) > 1000*60*60*24*30 || (nova data('2023-04-25T00:00:00')) - (nova data(último_sucesso)) > 0) { / / Nova atualização do banco de dados 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, / / localização: 0, limite: 0,2, // distância: 100, // useExtendedSearch: false, ignoreLocation: true, // ignoreFieldNorm: false, // fieldNormWeight: 1, chaves: [ "title" ] }; }; let topics_index={}; database.curriculum.forEach(c => curriculum_index[c.id]=c); 0;
Soluções
Livros didáticos
`);} function build_solutions () {if (array.isArray (solucion_search_result)) {const ViewAllHtml = UsersUbccred?`Ver tudo`: '';var solutions_section = $ (`Solutions $ {ViewAlhtml} `);Deixe questionário = "/questões/xxx/";deixe askurl = "/Ask/pergunta/xxx/";Solution_Search_Result.ForEach ((elem) => {let url = ('curso' em elem)? AskUrl: questionUrl; deixe soluções Solution_type = ('Curso' em Elem)? 'Ask': 'Pergunta';'Em elem)? (Elem.course ?? "") :( Elem.book ?? "")+""+(elem.chapter? "#WhiletyPing-Solutions '). Appender (`$ {elem.text} $ {legenda}`);});$ ('#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-protype-opções'). Append ($ ('#Search-Solution-Options'). html ());if (Array.ISArray (Textbook_Search_Result)) {var books_section = $ (`Livros didáticosVer tudo `);Seja Pearchurl = "/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 (primeiro_time = false) {if ($ ('#search-text'). val () == '') {build_pretype ();} else {Solution_and_TextBook_Search ();}} var pesquisa_text_out = true;var pesquisa_popup_out = true;const is_login = false;const user_hash = null;function pretype_setup () {$ ('#search-text'). focus (function () {$ ('#search-popup'). addclass ('show'); redese_popup (); pesquisa_text_out = false;});$ (janela) .Resize (function () {redementing_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-popp'). removeclass ('show');}});$ ('#Search-text'). ON ("KeyUp", atraso (() => {Built_Popup ();}, 200));build_popup (true);Deixe prevBookurl = `/search/pretype_books/`;Deixe pré -livros = nulo;tente {prebooks = json.parse (localStorage.getItem ('pretype_books _'+(is_login? user_hash: 'anon')));} catch (e) {} if (prebooks && 'anterior_books' em prebooks && 'recomendou_books' em pré -livros) {if (is_login) {anterior_books = prebooks.previous_books;recomendado_books = prebooks.recommended_books;if (prebooks.time && new date (). gettime ()-prebooks.time <1000*60*60*6) {build_popup ();retornar;}} else {anon_pretype ();retornar;}} $ .ajax ({url: prevBookurl, método: 'post', dados: {csrfmiddlewareToken: "z7fdlti0lky0sifhw3cadq5qvxrhg512dbxcv5ckky _) (scort _) (sclki) (sclky0sifhw3cadq5qvxrhg512dbxcv5ckky) (scort) (scrort) (sclky0sifhw3cadq5qvxrhg512dbxcv5ckky) (scort _) scrorfts9yrhmfM3sl )kringsl), que é a scringsflky (scort) scror. livros;{LocalStorage.SetItem ('pretype_books _'+user_hash, json.stringify ({anterior_books: anterior_books, recomendado_books: recomendado_books, tempo: new Date (). gettime ()});) {console.log (resposta);} $ (document) .ready (pretype_setup);$ (document) .ready (function () {$ ('#search-popup').`Pesquisa/AutoComplete_Search_View/`;soluções "). encontre (" a "). cada (function () {let is_selected = selectedId === $ (this) .data ('objid'); searchResults.push ({objectId: $ (this) .data ('Objid'), contentType: $ (this) .data ('contentType'), categoria: $ (this) .data ('categoria'), selecionado: is_selected});) .find ("a"). cada (function () {let is_selected = selectedId === $ (this) .data ('objid'); searchResults.push ({objectId: $ (this) .data ('objid'), ContentType: $ (this) .data (' contentType '), categoria: $ (this) .data (' categoria '), selecionado: is_selected});: 'Post', dados: {csrfmiddlewareToken: "z7fdlti0lky0sifhw3cadq5qvxrhg512dbxcv55cdujz3d1jhevts9yhmfem3kky, query: $ ('busearch. 'JSON', completo: função (dados) {window.Location.href = objecturl;}});});});