Files
server/opt/psa/admin/htdocs/modules/panel-migrator/scripts/progress.js
2026-01-07 20:52:11 +01:00

67 lines
2.9 KiB
JavaScript

// Copyright 1999-2017. Plesk International GmbH. All Rights Reserved.
function updateSessionStatus(session_id, sessionStatusInfo)
{
var blockNotStarted = sessionElement(session_id, 'block-not-started');
var blockInProgress = sessionElement(session_id, 'block-in-progress');
var blockAllMigrated = sessionElement(session_id, 'block-all-migrated');
var blockMigrated = sessionElement(session_id, 'block-migrated');
var allBlocks = [blockNotStarted, blockInProgress, blockAllMigrated, blockMigrated];
if (!sessionStatusInfo.started) {
showOnly(allBlocks, blockNotStarted);
} else if (sessionStatusInfo.queueSubscriptions > 0) {
showOnly(allBlocks, blockInProgress);
var progressPercentage = Math.round(
100 * sessionStatusInfo.queueFinishedSubscriptions / sessionStatusInfo.queueSubscriptions
);
sessionElement(session_id, 'progress-bar').setStyle(
{'width': progressPercentage + "%"}
);
sessionElement(session_id, 'text-in-progress').update(
formatMessage(
MESSAGE_SUBSCRIPTIONS_IN_PROGRESS,
sessionStatusInfo.queueFinishedSubscriptions,
sessionStatusInfo.queueSubscriptions
)
);
} else if (sessionStatusInfo.totalSourceSubscriptions == sessionStatusInfo.totalMigratedSubscriptions) {
showOnly(allBlocks, blockAllMigrated);
sessionElement(session_id, 'text-all-migrated').update(
formatMessage(MESSAGE_ALL_SUBSCRIPTIONS_MIGRATED, sessionStatusInfo.totalSourceSubscriptions)
);
} else {
showOnly(allBlocks, blockMigrated);
sessionElement(session_id, 'text-migrated').update(
formatMessage(MESSAGE_SUBSCRIPTIONS_MIGRATED, sessionStatusInfo.totalMigratedSubscriptions)
);
}
}
function periodicUpdateSessionStatus(session_id)
{
new Ajax.Request(URL_GET_SESSION_STATUS + '/session/' + session_id, {
onSuccess: function(response) {
var sessionStatusInfo = response.responseText.evalJSON();
updateSessionStatus(session_id, sessionStatusInfo);
if (sessionStatusInfo.queueSubscriptions > 0) {
// continue polling status for session in progress, don't poll status for all the others as
// it is unlikely that they will be started, and it could take much time to poll status
// of all sessions
setTimeout(function () {
periodicUpdateSessionStatus(session_id)
}, SESSION_PROGRESS_UPDATE_INTERVAL);
}
},
onFailure: function() {
setTimeout(function () {
periodicUpdateSessionStatus(session_id)
}, SESSION_PROGRESS_UPDATE_INTERVAL);
}
});
}
function sessionElement(session_id, element_id)
{
return $(element_id + "-" + session_id);
}