You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
4.5 KiB
121 lines
4.5 KiB
7 years ago
|
var done = false;
|
||
|
|
||
|
function update() {
|
||
|
$.getJSON("/status", function(data) {
|
||
|
handleData(data);
|
||
|
}).always(function() {
|
||
|
if(!done){
|
||
|
window.setTimeout(update, 1000);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
$(function() {
|
||
|
$(".repo-progress").progress({
|
||
|
text: {
|
||
|
active : 'Migrated or failed {value} of {total} repositories',
|
||
|
success : '{total} repositories migrated or failed!'
|
||
|
},
|
||
|
total: $(".repo-progress").data("total"),
|
||
|
value: 0
|
||
|
});
|
||
|
});
|
||
|
|
||
|
function handleData(data) {
|
||
|
if(Object.keys(data.finished).length + Object.keys(data.failed).length === $(".repo-progress").progress('get total')) {
|
||
|
$(".repo-progress").progress('complete');
|
||
|
done = true;
|
||
|
} else {
|
||
|
$(".repo-progress").progress('set progress', Object.keys(data.finished).length + Object.keys(data.failed).length);
|
||
|
}
|
||
|
data.pending.forEach(function(repo) {
|
||
|
var content = contentFromRepo(repo);
|
||
|
if (!content.hasClass("pending")) {
|
||
|
content.html(renderPending().html());
|
||
|
content.addClass("pending");
|
||
|
}
|
||
|
});
|
||
|
forEach(data.failed, function (repo, errormsg) {
|
||
|
var content = contentFromRepo(repo);
|
||
|
if (!content.hasClass("failed")) {
|
||
|
content.html(renderFailed(errormsg).html());
|
||
|
content.addClass("failed");
|
||
|
}
|
||
|
});
|
||
|
forEach(data.running, function (repo, report) {
|
||
|
var content = handleNonPending(repo, report);
|
||
|
if (content.find(".comment-progress").progress('get total') !== report.total_comments) {
|
||
|
content.find(".comment-progress").progress('set total', report.total_comments)
|
||
|
}
|
||
|
if (content.find(".issue-progress").progress('get total') !== report.total_issues) {
|
||
|
content.find(".issue-progress").progress('set total', report.total_issues)
|
||
|
}
|
||
|
content.find(".comment-progress").progress('set progress', report.migrated_comments + report.failed_comments);
|
||
|
content.find(".issue-progress").progress('set progress', report.migrated_issues + report.failed_issues);
|
||
|
});
|
||
|
forEach(data.finished, function (repo, report) {
|
||
|
var content = handleNonPending(repo, report);
|
||
|
if (content.find(".comment-progress").progress('get total') !== report.total_comments) {
|
||
|
content.find(".comment-progress").progress('set total', report.total_comments)
|
||
|
}
|
||
|
if (content.find(".issue-progress").progress('get total') !== report.total_issues) {
|
||
|
content.find(".issue-progress").progress('set total', report.total_issues)
|
||
|
}
|
||
|
content.find(".comment-progress").progress('set progress', report.migrated_comments + report.failed_comments);
|
||
|
content.find(".issue-progress").progress('set progress', report.migrated_issues + report.failed_issues);
|
||
|
content.find(".issue-progress").progress('complete');
|
||
|
content.find(".comment-progress").progress('complete');
|
||
|
});
|
||
|
}
|
||
|
function forEach(object, callback) {
|
||
|
for(var prop in object) {
|
||
|
if(object.hasOwnProperty(prop)) {
|
||
|
callback(prop, object[prop]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function handleNonPending(repo, report) {
|
||
|
var content = contentFromRepo(repo);
|
||
|
if(!content.hasClass("non-pending")) {
|
||
|
content.html(renderNonPending().html());
|
||
|
content.find(".issue-progress").progress({
|
||
|
text: {
|
||
|
active : 'Migrated {value} of {total} issues',
|
||
|
success : '{total} issues migrated!'
|
||
|
},
|
||
|
total: report.total_issues,
|
||
|
value: report.migrated_issues + report.failed_issues,
|
||
|
});
|
||
|
content.find(".comment-progress").progress({
|
||
|
text: {
|
||
|
active : 'Migrated {value} of {total} comments',
|
||
|
success : '{total} comments migrated!'
|
||
|
},
|
||
|
total: report.total_comments+1,
|
||
|
value: report.migrated_comments + report.failed_comments,
|
||
|
});
|
||
|
content.addClass("non-pending");
|
||
|
}
|
||
|
content.find(".failed-issues").text(report.failed_issues);
|
||
|
content.find(".failed-comments").text(report.failed_comments);
|
||
|
return content
|
||
|
}
|
||
|
|
||
|
function contentFromRepo(repo) {
|
||
|
return $(".repo-content[data-repo='" + repo + "']")
|
||
|
}
|
||
|
|
||
|
function renderPending() {
|
||
|
return $("#content-pending").clone();
|
||
|
}
|
||
|
|
||
|
function renderFailed(errormsg) {
|
||
|
var failed = $("#content-failed").clone();
|
||
|
failed.find(".errormsg").text(errormsg);
|
||
|
return failed
|
||
|
}
|
||
|
function renderNonPending() {
|
||
|
return $("#content-nonpending").clone();
|
||
|
}
|
||
|
|
||
|
$(update());
|