Rewrite unsilence.js as CommonJS

This commit is contained in:
Łukasz Mierzwa
2017-07-21 21:10:44 -07:00
parent a698a40577
commit c4f96b863c

View File

@@ -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;