mirror of
https://github.com/prymitive/karma
synced 2026-05-13 03:56:59 +00:00
Rewrite unsilence.js as CommonJS
This commit is contained in:
@@ -1,92 +1,86 @@
|
||||
/* globals Unsee */
|
||||
|
||||
/* exported Unsilence */
|
||||
var Unsilence = (function() {
|
||||
const $ = require("jquery");
|
||||
|
||||
var selectors = {
|
||||
button: "button.silence-delete"
|
||||
};
|
||||
var selectors = {
|
||||
button: "button.silence-delete"
|
||||
};
|
||||
|
||||
var unsilenceButtonByID = function(alertmanagerURI, silenceID) {
|
||||
var amSelector = "[data-alertmanager-uri='" + alertmanagerURI + "']";
|
||||
var silenceSelector = "[data-silence-id='" + silenceID + "']";
|
||||
return $(selectors.button + amSelector + silenceSelector);
|
||||
};
|
||||
function unsilenceButtonByID(alertmanagerURI, silenceID) {
|
||||
var amSelector = "[data-alertmanager-uri='" + alertmanagerURI + "']";
|
||||
var silenceSelector = "[data-silence-id='" + silenceID + "']";
|
||||
return $(selectors.button + amSelector + silenceSelector);
|
||||
}
|
||||
|
||||
var markInProgress = function(alertmanagerURI, silenceID) {
|
||||
var elem = unsilenceButtonByID(alertmanagerURI, silenceID);
|
||||
elem.attr("title", "Silence is being deleted from Alertmanager");
|
||||
function markInProgress(alertmanagerURI, silenceID) {
|
||||
var elem = unsilenceButtonByID(alertmanagerURI, silenceID);
|
||||
elem.attr("title", "Silence is being deleted from Alertmanager");
|
||||
elem.tooltip("fixTitle");
|
||||
elem.find(".fa").removeClass("fa-times").addClass("fa-refresh fa-spin");
|
||||
}
|
||||
|
||||
function markFailed(alertmanagerURI, silenceID, xhr) {
|
||||
var err = Unsee.ParseAJAXError(xhr, "Failed to delete this silence from Alertmanager");
|
||||
var elem = unsilenceButtonByID(alertmanagerURI, silenceID);
|
||||
elem.attr("title", err);
|
||||
elem.tooltip("fixTitle");
|
||||
elem.find(".fa").removeClass("fa-times fa-refresh fa-spin").addClass("fa-exclamation-circle text-danger");
|
||||
|
||||
// Disable button, wait 5s and reset button to the original state
|
||||
elem.data("disabled", "true");
|
||||
setTimeout(function() {
|
||||
elem.find(".fa").removeClass("fa-exclamation-circle text-danger").addClass("fa-times");
|
||||
elem.removeData("disabled");
|
||||
elem.attr("title", "Delete this silence");
|
||||
elem.tooltip("fixTitle");
|
||||
elem.find(".fa").removeClass("fa-times").addClass("fa-refresh fa-spin");
|
||||
};
|
||||
}, 5000);
|
||||
}
|
||||
|
||||
var markFailed = function(alertmanagerURI, silenceID, xhr) {
|
||||
var err = Unsee.ParseAJAXError(xhr, "Failed to delete this silence from Alertmanager");
|
||||
var elem = unsilenceButtonByID(alertmanagerURI, silenceID);
|
||||
elem.attr("title", err);
|
||||
elem.tooltip("fixTitle");
|
||||
elem.find(".fa").removeClass("fa-times fa-refresh fa-spin").addClass("fa-exclamation-circle text-danger");
|
||||
function markSuccess(alertmanagerURI, silenceID) {
|
||||
var elem = unsilenceButtonByID(alertmanagerURI, silenceID);
|
||||
elem.attr("title", "Silence deleted from Alertmanager");
|
||||
elem.tooltip("fixTitle");
|
||||
elem.find(".fa").removeClass("fa-times fa-refresh fa-spin").addClass("fa-check-circle text-success");
|
||||
// disable button so it's no longer clickable
|
||||
elem.data("disabled", "true");
|
||||
}
|
||||
|
||||
// Disable button, wait 5s and reset button to the original state
|
||||
elem.data("disabled", "true");
|
||||
setTimeout(function() {
|
||||
elem.find(".fa").removeClass("fa-exclamation-circle text-danger").addClass("fa-times");
|
||||
elem.removeData("disabled");
|
||||
elem.attr("title", "Delete this silence");
|
||||
elem.tooltip("fixTitle");
|
||||
}, 5000);
|
||||
};
|
||||
function deleteSilence(alertmanagerURI, silenceID) {
|
||||
$.ajax({
|
||||
type: "DELETE",
|
||||
url: alertmanagerURI + "/api/v1/silence/" + silenceID,
|
||||
error: function(xhr) {
|
||||
markFailed(alertmanagerURI, silenceID, xhr);
|
||||
},
|
||||
success: function() {
|
||||
markSuccess(alertmanagerURI, silenceID);
|
||||
},
|
||||
dataType: "json"
|
||||
});
|
||||
}
|
||||
|
||||
var markSuccess = function(alertmanagerURI, silenceID) {
|
||||
var elem = unsilenceButtonByID(alertmanagerURI, silenceID);
|
||||
elem.attr("title", "Silence deleted from Alertmanager");
|
||||
elem.tooltip("fixTitle");
|
||||
elem.find(".fa").removeClass("fa-times fa-refresh fa-spin").addClass("fa-check-circle text-success");
|
||||
// disable button so it's no longer clickable
|
||||
elem.data("disabled", "true");
|
||||
};
|
||||
function init() {
|
||||
$("body").on("click", selectors.button, function(event) {
|
||||
var elem = $(event.currentTarget);
|
||||
|
||||
var deleteSilence = function(alertmanagerURI, silenceID) {
|
||||
$.ajax({
|
||||
type: "DELETE",
|
||||
url: alertmanagerURI + "/api/v1/silence/" + silenceID,
|
||||
error: function(xhr) {
|
||||
markFailed(alertmanagerURI, silenceID, xhr);
|
||||
},
|
||||
success: function() {
|
||||
markSuccess(alertmanagerURI, silenceID);
|
||||
},
|
||||
dataType: "json"
|
||||
});
|
||||
};
|
||||
if (elem.data("disabled")) {
|
||||
// if we marked button as disabled then skip all actions
|
||||
// we use data attr to keep tooplips working on disabled buttons
|
||||
// setting attr(disabled) via jquery disables bootstrap tooltips
|
||||
return false;
|
||||
}
|
||||
|
||||
var setupUnsilenceEvents = function() {
|
||||
$("body").on("click", selectors.button, function(event) {
|
||||
var elem = $(event.currentTarget);
|
||||
// hide tooltip for button that triggers this action
|
||||
elem.tooltip("hide");
|
||||
|
||||
if (elem.data("disabled")) {
|
||||
// if we marked button as disabled then skip all actions
|
||||
// we use data attr to keep tooplips working on disabled buttons
|
||||
// setting attr(disabled) via jquery disables bootstrap tooltips
|
||||
return false;
|
||||
}
|
||||
var amURI = elem.data("alertmanager-uri");
|
||||
var silenceID = elem.data("silence-id");
|
||||
|
||||
// hide tooltip for button that triggers this action
|
||||
elem.tooltip("hide");
|
||||
// change icon to indicate progress
|
||||
markInProgress(amURI, silenceID);
|
||||
|
||||
var amURI = elem.data("alertmanager-uri");
|
||||
var silenceID = elem.data("silence-id");
|
||||
// send DELETE request to Alertmanager
|
||||
deleteSilence(amURI, silenceID);
|
||||
});
|
||||
}
|
||||
|
||||
// change icon to indicate progress
|
||||
markInProgress(amURI, silenceID);
|
||||
|
||||
// send DELETE request to Alertmanager
|
||||
deleteSilence(amURI, silenceID);
|
||||
});
|
||||
};
|
||||
|
||||
return {
|
||||
Init: setupUnsilenceEvents
|
||||
};
|
||||
|
||||
})();
|
||||
exports.init = init;
|
||||
|
||||
Reference in New Issue
Block a user