mirror of
https://github.com/prymitive/karma
synced 2026-05-07 03:26:52 +00:00
81 lines
2.7 KiB
JavaScript
81 lines
2.7 KiB
JavaScript
"use strict";
|
|
|
|
const $ = require("jquery");
|
|
|
|
const alerts = require("./alerts");
|
|
const autocomplete = require("./autocomplete");
|
|
const filters = require("./filters");
|
|
const summary = require("./summary");
|
|
const templates = require("./templates");
|
|
const unsee = require("./unsee");
|
|
|
|
// when user click on any alert label modal popup with a list of possible
|
|
// filter will show, this function is used to setup that modal
|
|
function setupModal() {
|
|
$("#labelModal").on("show.bs.modal", function(event) {
|
|
unsee.pause();
|
|
var modal = $(this);
|
|
var label = $(event.relatedTarget);
|
|
var labelKey = label.data("label-key");
|
|
var labelVal = label.data("label-val");
|
|
var attrs = alerts.getLabelAttrs(labelKey, labelVal);
|
|
var counter = summary.getCount(labelKey, labelVal);
|
|
modal.find(".modal-title").html(
|
|
templates.renderTemplate("modalTitle", {
|
|
attrs: attrs,
|
|
counter: counter
|
|
})
|
|
);
|
|
var hints = autocomplete.generateHints(labelKey, labelVal);
|
|
modal.find(".modal-body").html(
|
|
templates.renderTemplate("modalBody", {hints: hints})
|
|
);
|
|
$(".modal-table").on("click", ".modal-button-filter", function(elem) {
|
|
var filter = $(elem.target).data("filter-append-value");
|
|
$("#labelModal").modal("hide");
|
|
filters.addFilter(filter);
|
|
});
|
|
});
|
|
$("#labelModal").on("hidden.bs.modal", function() {
|
|
var modal = $(this);
|
|
modal.find(".modal-title").children().remove();
|
|
modal.find(".modal-body").children().remove();
|
|
unsee.resume();
|
|
});
|
|
}
|
|
|
|
// each alert group have a link generated for it, but we hide it until
|
|
// user hovers over that group so it doesn"t trash the UI
|
|
function setupGroupLinkHover(elem) {
|
|
$(elem).on("mouseenter", function() {
|
|
$(this).find(".alert-group-link > a").finish().animate({
|
|
opacity: 100
|
|
}, 200);
|
|
});
|
|
$(elem).on("mouseleave", function() {
|
|
$(this).find(".alert-group-link > a").finish().animate({
|
|
opacity: 0
|
|
}, 200);
|
|
});
|
|
}
|
|
|
|
// find all elements inside alert group panel that will use tooltips
|
|
// and setup those
|
|
function setupGroupTooltips(groupElem) {
|
|
$.each(groupElem.find("[data-toggle=tooltip]"), function(i, elem) {
|
|
$(elem).tooltip({
|
|
animation: false, // slows down tooltip removal
|
|
delay: {
|
|
show: 500,
|
|
hide: 0
|
|
},
|
|
title: $(elem).attr("title") || $(elem).data("ts-title"),
|
|
trigger: "hover"
|
|
});
|
|
});
|
|
}
|
|
|
|
exports.setupModal = setupModal;
|
|
exports.setupGroupTooltips = setupGroupTooltips;
|
|
exports.setupGroupLinkHover = setupGroupLinkHover;
|