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(); }); } 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"); }); });