mirror of
https://github.com/meilisearch/MeiliSearch
synced 2024-12-26 22:50:07 +01:00
103 lines
3.4 KiB
JavaScript
103 lines
3.4 KiB
JavaScript
$(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 = `<progress class="progress" title="${progress}%" value="${progress}" max="100"></progress>`;
|
|
} else {
|
|
html = `<progress class="progress" max="100"></progress>`;
|
|
}
|
|
|
|
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))
|
|
});
|