hcornet 506716e703
Some checks failed
Deployment Verification / deploy-and-test (push) Failing after 29s
first sync
2025-03-04 07:59:21 +01:00

372 lines
12 KiB
JavaScript

$('#form_new_module').submit(function () {
post_request_api('/manage/modules/add', $('form#form_new_module').serializeArray(), function() {
$('#submit_new_module').text('Saving..')
.attr("disabled", true)
.removeClass('bt-outline-success')
.addClass('btn-success', 'text-dark');
})
.done((data) => {
notify_auto_api(data);
})
.always(() => {
$('#submit_new_module')
.attr("disabled", false)
.addClass('bt-outline-success')
.removeClass('btn-success', 'text-dark');
});
return false;
});
function add_module() {
url = 'modules/add/modal' + case_param();
$('#modal_add_module_content').load(url, function (response, status, xhr) {
if (status !== "success") {
ajax_notify_error(xhr, url);
return false;
}
$('#submit_new_module').on("click", function () {
post_request_api('modules/add', JSON.stringify($('#form_new_module').serializeObject()), true)
.done((data) => {
if(notify_auto_api(data)) {
refresh_modules(true);
refresh_modules_hooks(true);
$('#modal_add_module').modal('hide');
} else {
$('#alert_mod_add').text(data.message);
if (data.data) {
$('#details_list').empty();
for(var i in data.data)
{
var output='<li>'+data.data[i]+'</li>';
$('#details_list').append(output);
}
$('#alert_mod_details').show();
}
$('#alert_mod_add').show();
$('#submit_new_module').text("Retry");
}
})
.fail((error) => {
data = error.responseJSON;
$('#submit_new_module').text('Save');
$('#alert_mod_add').text(data.message);
if (data.data && data.data.length > 0) {
$('#details_list').empty();
for(var i in data.data)
{
var output='<li>'+data.data[i]+'</li>';
$('#details_list').append(output);
}
$('#alert_mod_details').show();
}
$('#alert_mod_add').show();
$('#submit_new_module').text("Retry");
});
return false;
})
});
$('#modal_add_module').modal({ show: true });
}
$('#modules_table').dataTable( {
"ajax": {
"url": "modules/list" + case_param(),
"contentType": "application/json",
"type": "GET",
"data": function ( d ) {
if (d.status == 'success') {
return JSON.stringify( d.data );
} else {
return [];
}
}
},
"order": [[ 1, "asc" ]],
"autoWidth": false,
"columns": [
{ 'data': 'id'},
{ 'data': 'module_human_name'},
{ 'data': 'has_pipeline',
"render": function (data, type, row, meta) {
if (type === 'display') { data = sanitizeHTML(data);}
return data;
} },
{ 'data': 'module_version',
"render": function (data, type, row, meta) {
if (type === 'display') { data = sanitizeHTML(data);}
return data;
} },
{ 'data': 'interface_version',
"render": function (data, type, row, meta) {
if (type === 'display') { data = sanitizeHTML(data);}
return data;
} },
{ 'data': 'date_added',
"render": function (data, type, row, meta) {
if (type === 'display') { data = sanitizeHTML(data);}
return data;
} },
{ 'data': 'name',
"render": function (data, type, row, meta) {
if (type === 'display') { data = sanitizeHTML(data);}
return data;
} },
{ 'data': 'is_active'},
],
"columnDefs": [
{
"render": function ( data, type, row ) {
data = sanitizeHTML(data);
return '<a href="#" onclick="module_detail(\'' + row['id'] + '\');">' + data +'</a>';
},
"targets": [0, 1]
},
{
"render": function ( data, type, row ) {
if (data == true) {
data = '<i class="fas fa-check text-success"></i>';
} else {
data = '<i class="fas fa-times text-warning"></i>';
}
if (row['configured'] == false) {
return data + ' <i class="fas fa-exclamation-triangle text-warning" data-toggle="tooltip" data-placement="top" title="Module was disabled because mandatory settings are not set. Please configure to activate."></i>'
} else { return data; }
},
"targets": [7]
}
]
}
);
function refresh_modules(silent) {
$('#modules_table').DataTable().ajax.reload();
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
if (silent === undefined || silent !== true) {
notify_success("Modules refreshed");
}
}
$('#hooks_table').dataTable( {
"ajax": {
"url": "modules/hooks/list" + case_param(),
"contentType": "application/json",
"type": "GET",
"data": function ( d ) {
if (d.status == 'success') {
return JSON.stringify( d.data );
} else {
return [];
}
}
},
"order": [[ 1, "asc" ]],
"autoWidth": false,
"columns": [
{ 'data': 'id'},
{ 'data': 'module_name',
"render": function (data, type, row, meta) {
if (type === 'display') { data = sanitizeHTML(data);}
return data;
} },
{ 'data': 'hook_name',
"render": function (data, type, row, meta) {
if (type === 'display') { data = sanitizeHTML(data);}
return data;
} },
{ 'data': 'hook_description',
"render": function (data, type, row, meta) {
if (type === 'display') { data = sanitizeHTML(data);}
return data;
} },
{ 'data': 'is_manual_hook',
"render": function (data, type, row, meta) {
if (data == false) {
data = "<i class='fas fa-check text-success'></i>";
} else {
data = "<i class='fas fa-times text-muted'></i>";
}
return data;
}
},
{ 'data': 'is_active',
"render": function (data, type, row, meta) {
if (data == true) {
data = "<i class='fas fa-check text-success'></i>";
} else {
data = "<i class='fas fa-times text-muted'></i>";
}
return data;
}
}
]
}
);
function refresh_modules_hooks(silent) {
$('#hooks_table').DataTable().ajax.reload();
if (silent === undefined || silent !== true) {
notify_success("Hooks refreshed");
}
}
function export_mod_config(module_id) {
get_request_api('/manage/modules/export-config/' + module_id)
.done((data) => {
if(notify_auto_api(data, true)) {
download_file(data.data.module_name + "_configuration_export.json", "text/json",
JSON.stringify(data.data.module_configuration, null, 4));
}
});
}
function import_mod_config(module_id){
var file = $("#input_configuration_file").get(0).files[0];
var reader = new FileReader();
reader.onload = function (e) {
fileData = e.target.result
var data = new Object();
data['csrf_token'] = $('#csrf_token').val();
data['module_configuration'] = fileData;
post_request_api('/manage/modules/import-config/'+ module_id, JSON.stringify(data), true)
.done((data) => {
if(notify_auto_api(data, true)) {
module_detail(module_id);
$('#modal_input_config').modal('hide');
swal("Got news for you", data.message, "success");
} else {
swal("Got bad news for you", data.data, "error");
}
});
};
reader.readAsText(file)
return false;
}
/* Update the param of a module */
function update_param(module_id, param_name) {
url = 'modules/get-parameter/' + decodeURIComponent(escape(window.btoa(param_name))) + case_param();
$('#modal_update_param_content').load(url, function (response, status, xhr) {
if (status !== "success") {
ajax_notify_error(xhr, url);
return false;
}
$('#submit_save_parameter').on("click", function () {
var data = Object();
if ($('#editor_detail').length != 0) {
editor = ace.edit("editor_detail");
data['parameter_value'] = editor.getSession().getValue();
data['csrf_token'] = $('#csrf_token').val();
} else {
data = $('#form_update_param').serializeObject();
if ($('#parameter_value').attr('type') == "checkbox") {
data['parameter_value'] = $('#parameter_value').prop('checked');
}
}
post_request_api('modules/set-parameter/' + decodeURIComponent(escape(window.btoa(param_name))), JSON.stringify(data))
.done((data) => {
if(notify_auto_api(data)) {
module_detail(module_id);
refresh_modules(true);
$('#modal_update_param').modal('hide');
}
})
return false;
})
});
$('#modal_update_param').modal({ show: true });
}
/* Fetch the details of an module and allow modification */
function module_detail(module_id) {
url = 'modules/update/' + module_id + '/modal' + case_param();
$('#modal_add_module_content').load(url, function (response, status, xhr) {
if (status !== "success") {
ajax_notify_error(xhr, url);
return false;
}
$('#submit_new_module').on("click", function () {
post_request_api('modules/update/' + module_id, $('#form_new_module').serializeArray())
.done((data) => {
if(notify_auto_api(data)) {
module_detail(module_id);
$('#modal_update_param').modal('hide');
}
});
return false;
})
});
$('#modal_add_module').modal({ show: true });
}
function remove_module(id) {
swal({
title: "Are you sure?",
text: "Please note this will only remove the reference of the module in Iris. The module will stay installed on the server.",
icon: "warning",
buttons: true,
dangerMode: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes, remove it!'
})
.then((willDelete) => {
if (willDelete) {
post_request_api('/manage/modules/remove/' + id)
.done((data) => {
if(notify_auto_api(data)) {
refresh_modules(true);
refresh_modules_hooks(true);
$('#modal_add_module').modal('hide');
}
});
} else {
swal("Pfew, that was close");
}
});
}
function enable_module(module_id) {
post_request_api('modules/enable/' + module_id)
.done((data) => {
if(notify_auto_api(data)) {
refresh_modules(true);
refresh_modules_hooks(true);
module_detail(module_id);
}
});
}
function disable_module(module_id) {
post_request_api('modules/disable/' + module_id)
.done((data) => {
if(notify_auto_api(data)) {
refresh_modules(true);
refresh_modules_hooks(true);
module_detail(module_id);
}
});
}