haproxy-wi/app/static/js/backup.js

449 lines
12 KiB
JavaScript

$( function() {
$("#backup_tabs").tabs();
$('#add-backup-button').click(function() {
addBackupDialog.dialog('open');
});
let backup_tabel_title = $( "#backup-add-table-overview" ).attr('title');
let addBackupDialog = $( "#backup-add-table" ).dialog({
autoOpen: false,
resizable: false,
height: "auto",
width: 600,
modal: true,
title: backup_tabel_title,
show: {
effect: "fade",
duration: 200
},
hide: {
effect: "fade",
duration: 200
},
buttons: {
"Add": function () {
addBackup(this);
},
Cancel: function () {
$(this).dialog("close");
clearTips();
}
}
});
$('#add-backup-s3-button').click(function() {
addS3BackupDialog.dialog('open');
});
let s3_backup_tabel_title = $( "#s3-backup-add-table-overview" ).attr('title');
let addS3BackupDialog = $( "#s3-backup-add-table" ).dialog({
autoOpen: false,
resizable: false,
height: "auto",
width: 600,
modal: true,
title: s3_backup_tabel_title,
show: {
effect: "fade",
duration: 200
},
hide: {
effect: "fade",
duration: 200
},
buttons: {
"Add": function () {
addS3Backup(this);
},
Cancel: function () {
$(this).dialog("close");
clearTips();
}
}
});
$('#add-git-button').click(function() {
addGitDialog.dialog('open');
});
let git_tabel_title = $( "#git-add-table-overview" ).attr('title');
let addGitDialog = $( "#git-add-table" ).dialog({
autoOpen: false,
resizable: false,
height: "auto",
width: 600,
modal: true,
title: git_tabel_title,
show: {
effect: "fade",
duration: 200
},
hide: {
effect: "fade",
duration: 200
},
buttons: {
"Add": function () {
addGit(this);
},
Cancel: function () {
$(this).dialog("close");
clearTips();
}
}
});
$('#git-init').click(function() {
if ($('#git-init').is(':checked')) {
$('.git-init-params').show();
} else {
$('.git-init-params').hide();
}
});
$( "#ajax-backup-table input" ).change(function() {
let id = $(this).attr('id').split('-');
updateBackup(id[2])
});
$( "#ajax-backup-table select" ).on('selectmenuchange',function() {
let id = $(this).attr('id').split('-');
updateBackup(id[2])
});
$("#backup_tabs ul li").click(function() {
$('.menu li ul li').each(function () {
$(this).find('a').css('border-left', '0px solid var(--right-menu-blue-rolor)');
$(this).find('a').css('padding-left', '20px')
$(this).children(".backup").css('padding-left', '30px');
$(this).children(".backup").css('border-left', '4px solid var(--right-menu-blue-rolor)');
});
});
});
function loadBackup() {
$.ajax({
url: "/server/backup",
success: function (data) {
data = data.replace(/\s+/g, ' ');
if (data.indexOf('danger') != '-1' || data.indexOf('unique') != '-1' || data.indexOf('error:') != '-1') {
toastr.error(data);
} else {
$('#backup').html(data);
$.getScript('/static/js/backup.js');
$("select").selectmenu();
$.getScript(awesome);
}
}
});
}
function addBackup(dialog_id) {
let valid = true;
toastr.clear();
let allFields = $([]).add($('#backup-server')).add($('#rserver')).add($('#rpath')).add($('#backup-time')).add($('#backup-credentials'));
allFields.removeClass("ui-state-error");
valid = valid && checkLength($('#backup-server'), "backup server ", 1);
valid = valid && checkLength($('#rserver'), "remote server", 1);
valid = valid && checkLength($('#rpath'), "remote path", 1);
valid = valid && checkLength($('#backup-time'), "backup time", 1);
valid = valid && checkLength($('#backup-credentials'), "backup credentials", 1);
if (valid) {
let jsonData = {
"server_id": $('#backup-server').val(),
"rserver": $('#rserver').val(),
"rpath": $('#rpath').val(),
"type": $('#backup-type').val(),
"time": $('#backup-time').val(),
"cred_id": $('#backup-credentials').val(),
"description": $('#backup-description').val()
}
$.ajax({
url: "/server/backup",
data: JSON.stringify(jsonData),
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
if (data.status === 'failed') {
toastr.error(data.error);
} else {
common_ajax_action_after_success(dialog_id, 'newbackup', 'ajax-backup-table', data.data);
$("select").selectmenu();
}
}
});
}
}
function addS3Backup(dialog_id) {
let valid = true;
toastr.clear();
let allFields = $([]).add($('#s3-backup-server')).add($('#s3_server')).add($('#s3_bucket')).add($('#s3_secret_key')).add($('#s3_access_key'))
allFields.removeClass("ui-state-error");
valid = valid && checkLength($('#s3-backup-server'), "backup server ", 1);
valid = valid && checkLength($('#s3_server'), "S3 server", 1);
valid = valid && checkLength($('#s3_bucket'), "S3 bucket", 1);
valid = valid && checkLength($('#s3_secret_key'), "S3 secret key", 1);
valid = valid && checkLength($('#s3_access_key'), "S3 access key", 1);
if (valid) {
let json_data = {
"s3_server": $('#s3_server').val(),
"server_id": $('#s3-backup-server').val(),
"bucket": $('#s3_bucket').val(),
"secret_key": $('#s3_secret_key').val(),
"access_key": $('#s3_access_key').val(),
"time": $('#s3-backup-time').val(),
"description": $('#s3-backup-description').val(),
}
$.ajax({
url: "/server/backup/s3",
data: JSON.stringify(json_data),
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
if (data.status === 'failed') {
toastr.error(data);
} else {
common_ajax_action_after_success(dialog_id, 'newbackup', 'ajax-backup-s3-table', data.data);
$("select").selectmenu();
}
}
});
}
}
function addGit(dialog_id) {
toastr.clear();
let valid = true;
let server_div = $('#git-server');
let service_div = $('#git-service');
let branch_div = $('#git-branch');
let time_div = $('#git-time');
let cred_div = $('#git-credentials');
let git_init = 0;
if ($('#git-init').is(':checked')) {
git_init = '1';
}
let allFields = $([]).add(server_div).add(service_div).add(time_div).add(cred_div).add(branch_div);
allFields.removeClass("ui-state-error");
valid = valid && checkLength(server_div, "Server ", 1);
valid = valid && checkLength(service_div, "Service", 1);
valid = valid && checkLength(cred_div, "Credentials", 1);
valid = valid && checkLength(branch_div, "Branch name", 1);
if (valid) {
let jsonData = {
"server_id": server_div.val(),
"service_id": service_div.val(),
"init": git_init,
"repo": $('#git-repo').val(),
"branch": branch_div.val(),
"time": time_div.val(),
"cred_id": cred_div.val(),
"desc": $('#git-description').text(),
}
$.ajax({
url: "/server/backup/git",
data: JSON.stringify(jsonData),
contentType: "application/json; charset=utf-8",
type: "POST",
success: function (data) {
if (data.status === 'failed') {
toastr.error(data.error);
} else {
common_ajax_action_after_success(dialog_id, 'newgit', 'ajax-git-table', data.data);
$("select").selectmenu();
}
}
});
}
}
function confirmDeleteBackup(id) {
$("#dialog-confirm").dialog({
resizable: false,
height: "auto",
width: 400,
modal: true,
title: delete_word + " " + $('#backup-server-' + id).val() + "?",
buttons: [{
text: delete_word,
click: function () {
$(this).dialog("close");
removeBackup(id);
}
}, {
text: cancel_word,
click: function () {
$(this).dialog("close");
}
}]
});
}
function confirmDeleteS3Backup(id) {
$("#dialog-confirm").dialog({
resizable: false,
height: "auto",
width: 400,
modal: true,
title: delete_word + " " + $('#backup-s3-server-' + id).val() + "?",
buttons: [{
text: delete_word,
click: function () {
$(this).dialog("close");
removeS3Backup(id);
}
}, {
text: cancel_word,
click: function () {
$(this).dialog("close");
}
}]
});
}
function confirmDeleteGit(id) {
$("#dialog-confirm").dialog({
resizable: false,
height: "auto",
width: 400,
modal: true,
title: delete_word + " " + $('#git-server-' + id).text() + "?",
buttons: [{
text: delete_word,
click: function () {
$(this).dialog("close");
removeGit(id);
}
}, {
text: cancel_word,
click: function () {
$(this).dialog("close");
}
}]
});
}
function cloneBackup(id) {
$( "#add-backup-button" ).trigger( "click" );
$('#rserver').val($('#backup-rserver-'+id).val())
$('#rpath').val($('#backup-rpath-'+id).val())
$('#backup-type').val($('#backup-type-'+id+' option:selected').val()).change()
$('#backup-type').selectmenu("refresh");
$('#backup-time').val($('#backup-time-'+id+' option:selected').val()).change()
$('#backup-time').selectmenu("refresh");
$('#backup-credentials').val($('#backup-credentials-'+id+' option:selected').val()).change()
$('#backup-credentials').selectmenu("refresh");
}
function cloneS3Backup(id) {
$( "#add-backup-s3-button" ).trigger( "click" );
$('#s3_server').val($('#s3-server-'+id).text())
$('#s3_bucket').val($('#bucket-'+id).text())
$('#s3-backup-description').val($('#s3-backup-description--'+id).text())
$('#s3-backup-server').val($('#backup-s3-server-'+id).text()).change();
$('#s3-backup-server').selectmenu("refresh");
$('#s3-backup-time').val($('#s3-backup-time-'+id).text()).change();
$('#s3-backup-time').selectmenu("refresh");
}
function removeBackup(id) {
$("#backup-table-" + id).css("background-color", "#f2dede");
let jsonData = {
"cred_id": $('#backup-credentials-' + id).val(),
"server_id": $('#backup-server-id-' + id).val(),
}
$.ajax({
url: api_prefix + "/server/backup/fs/" + id,
data: JSON.stringify(jsonData),
type: "DELETE",
contentType: "application/json; charset=utf-8",
statusCode: {
204: function (xhr) {
$("#backup-table-" + id).remove();
},
404: function (xhr) {
$("#backup-table-" + id).remove();
}
},
success: function (data) {
if (data) {
if (data.status === "failed") {
toastr.error(data);
}
}
}
});
}
function removeS3Backup(id) {
$("#backup-table-s3-" + id).css("background-color", "#f2dede");
let jsonData = {
"bucket": $('#bucket-' + id).text(),
"server_id": $('#backup-s3-server-' + id).text(),
}
$.ajax({
url: api_prefix + "/server/backup/s3/" + id,
data: JSON.stringify(jsonData),
type: "DELETE",
contentType: "application/json; charset=utf-8",
statusCode: {
204: function (xhr) {
$("#s3-backup-table-" + id).remove();
},
404: function (xhr) {
$("#s3-backup-table-" + id).remove();
}
},
success: function (data) {
if (data) {
if (data.status === "failed") {
toastr.error(data);
}
}
}
});
}
function removeGit(id) {
$("#git-table-" + id).css("background-color", "#f2dede");
let jsonData = {
"cred_id": $('#git-credentials-id-' + id).text(),
"server_id": $('#git-server-id-' + id).text(),
"service_id": $('#git-service-id-' + id).text(),
}
$.ajax({
url: api_prefix + "/server/backup/git/" + id,
data: JSON.stringify(jsonData),
contentType: "application/json; charset=utf-8",
type: "DELETE",
statusCode: {
204: function (xhr) {
$("#git-table-" + id).remove();
},
404: function (xhr) {
$("#git-table-" + id).remove();
}
},
success: function (data) {
if (data) {
if (data.status === "failed") {
toastr.error(data);
}
}
}
});
}
function updateBackup(id) {
toastr.clear();
if ($("#backup-type-" + id + " option:selected").val() === "-------" || $('#backup-rserver-' + id).val() === '' || $('#backup-rpath-' + id).val() === '') {
toastr.error('All fields must be completed');
} else {
let jsonData = {
"server_id": $('#backup-server-id-' + id).val(),
"rserver": $('#backup-rserver-' + id).val(),
"rpath": $('#backup-rpath-' + id).val(),
"type": $('#backup-type-' + id).val(),
"time": $('#backup-time-' + id).val(),
"cred_id": $('#backup-credentials-' + id).val(),
"description": $('#backup-description-' + id).val()
}
$.ajax({
url: api_prefix + "/server/backup/fs/" + id,
data: JSON.stringify(jsonData),
type: "PUT",
contentType: "application/json; charset=utf-8",
success: function (data) {
if (data.status === 'failed') {
toastr.error(data.error);
} else {
toastr.clear();
$("#backup-table-" + id).addClass("update", 1000);
setTimeout(function () {
$("#backup-table-" + id).removeClass("update");
}, 2500);
}
}
});
}
}