Newer
Older
function flash_alert(message, category) {
var htmlString = '<div class="alert alert-' + category + ' alert-dismissible" role="alert">'
htmlString += '<button type="button" class="close" data-dismiss="alert" aria-label="Close">'
htmlString += '<span aria-hidden="true">×</span></button>' + message + '</div>'
$(htmlString).prependTo("#mainContent").hide().slideDown();
}
function remove_alerts() {
$(".alert").slideUp("normal", function() {
$(this).remove();
});
}
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
function update_progress_bar(value) {
// Assume that there is only one progress bar
$(".progress-bar")
.css("width", value + "%")
.attr("aria-valuenow", value)
.text(value + "%");
}
// Send a request to the server every 500 ms
// until the job is done
function check_job_status(status_url, $modal) {
// cache shall be set to false for this to work in IE!
$.ajax({
dataType: "json",
url: status_url,
cache: false,
success: function(data, status, request) {
switch (data.status) {
case "unknown":
$modal.modal('hide');
flash_alert("Unknown job id", "danger");
break;
case "finished":
$modal.modal('hide');
switch (data.func_name) {
case "generate_items_excel_file":
window.location.href = $SCRIPT_ROOT + "/static/files/" + data.result;
break;
}
break;
case "failed":
$modal.modal('hide');
flash_alert(data.message, "danger");
break;
case "started":
if( data.progress !== null ) {
update_progress_bar(data.progress);
}
default:
// queued/started/deferred
setTimeout(function() {
check_job_status(status_url, $modal);
}, 500);
}
}
});
}
// Function to dynamically update a select field
function update_selectfield(field_id, data, selected_value) {
var $field = $(field_id);
$field.empty();
$.map(data, function(option, index) {
if( option == "None" ) {
var text = "";
} else {
var text = option;
}
$field.append($("<option></option>").attr("value", option).text(text));
});
$field.val(selected_value);
}
// Function to populate dynamically the stack_member field
// in the create and edit item forms
function update_stack_member() {
// Retrieve free stack members
var host_id = $("#host_id").val();
$.getJSON(
$SCRIPT_ROOT + "/inventory/_retrieve_free_stack_members/" + host_id,
{
ics_id: $("#ics_id").val()
},
function(json) {
update_selectfield("#stack_member", json.data.stack_members, json.data.selected_member);
$("#stack_member").prop("disabled", json.data.disabled);
}
);
}
$(document).ready(function() {
// When an invalid input was submitted, the server
// adds the "is-invalid" class to form fields to display
// them in red with an error message
// When starting to type again, we want to remove the error
// message to not confuse the user
$('input[type="text"]').keyup(function(event) {
$(this).removeClass("is-invalid");
});
});