$(window).on('load', function () { let wsProtcol = "ws"; if (window.location.protocol === 'https') { wsProtcol = 'wss'; } let url = wsProtcol + '://' + window.location.hostname + ':' + window.location.port + '/updates/ws'; var socket = new WebSocket(url); socket.onmessage = function (event) { let status = JSON.parse(event.data); if (status.type == 'Pending') { const elem = document.createElement('li'); elem.classList.add("document"); elem.setAttribute("id", 'update-' + status.update_id); const ol = document.createElement('ol'); const field = document.createElement('li'); field.classList.add("field"); const attributeUpdateId = document.createElement('div'); attributeUpdateId.classList.add("attribute"); attributeUpdateId.innerHTML = "update id"; const contentUpdateId = document.createElement('div'); contentUpdateId.classList.add("updateId"); contentUpdateId.classList.add("content"); contentUpdateId.innerHTML = status.update_id; field.appendChild(attributeUpdateId); field.appendChild(contentUpdateId); const attributeUpdateStatus = document.createElement('div'); attributeUpdateStatus.classList.add("attribute"); attributeUpdateStatus.innerHTML = "update status"; const contentUpdateStatus = document.createElement('div'); contentUpdateStatus.classList.add("updateStatus"); contentUpdateStatus.classList.add("content"); contentUpdateStatus.innerHTML = 'pending'; field.appendChild(attributeUpdateStatus); field.appendChild(contentUpdateStatus); ol.appendChild(field); elem.appendChild(ol); prependChild(results, elem); } if (status.type == "Progressing") { const id = 'update-' + status.update_id; const content = $(`#${id} .updateStatus.content`); let html; let { type, step, total_steps, current, total } = status.meta; if (type === 'DocumentsAddition') { // If the total is null or undefined then the progress results is infinity. let progress = Math.round(current / total * 100); // We must divide the progress by the total number of indexing steps. progress = progress / total_steps; // And mark the previous steps as processed. progress = progress + (step * 100 / total_steps); // Generate the appropriate html bulma progress bar. html = ``; } else { html = ``; } content.html(html); } if (status.type == "Processed") { const id = 'update-' + status.update_id; const content = $(`#${id} .updateStatus.content`); content.html('processed ' + JSON.stringify(status.meta)); } if (status.type == "Aborted") { const id = 'update-' + status.update_id; const content = $(`#${id} .updateStatus.content`); content.html('aborted ' + JSON.stringify(status.meta)); } } }); function prependChild(parent, newFirstChild) { parent.insertBefore(newFirstChild, parent.firstChild) } // Make the number of document a little bit prettier $('#docs-count').text(function(index, text) { return parseInt(text).toLocaleString() }); // Make the database a little bit easier to read $('#db-size').text(function(index, text) { return filesize(parseInt(text)) });