diff --git a/assets/static/templates.js b/assets/static/templates.js index ecfdb633b..88dc03d3f 100644 --- a/assets/static/templates.js +++ b/assets/static/templates.js @@ -1,77 +1,71 @@ -/* globals _ */ // underscore.js +const $ = require("jquery"); +const _ = require("underscore"); -/* exported Templates */ -var Templates = (function() { +var templates = {}, + config = { + // popover with the list of most common labels + breakdown: "#breakdown", + breakdownContent: "#breakdown-content", - var templates = {}, - config = { - // popover with the list of most common labels - breakdown: "#breakdown", - breakdownContent: "#breakdown-content", + // reload message if backend version bump is detected + reloadNeeded: "#reload-needed", - // reload message if backend version bump is detected - reloadNeeded: "#reload-needed", + // errors + fatalError: "#fatal-error", + internalError: "#internal-error", + updateError: "#update-error", + instanceError: "#instance-error", + configError: "#configuration-error", - // errors - fatalError: "#fatal-error", - internalError: "#internal-error", - updateError: "#update-error", - instanceError: "#instance-error", - configError: "#configuration-error", + // modal popup with label filters + modalTitle: "#modal-title", + modalBody: "#modal-body", - // modal popup with label filters - modalTitle: "#modal-title", - modalBody: "#modal-body", + // modal popup with silence form + silenceForm: "#silence-form", + silenceFormValidationError: "#silence-form-validation-error", + silenceFormResults: "#silence-form-results", + silenceFormSuccess: "#silence-form-success", + silenceFormError: "#silence-form-error", + silenceFormFatal: "#silence-form-fatal", + silenceFormLoading: "#silence-form-loading", - // modal popup with silence form - silenceForm: "#silence-form", - silenceFormValidationError: "#silence-form-validation-error", - silenceFormResults: "#silence-form-results", - silenceFormSuccess: "#silence-form-success", - silenceFormError: "#silence-form-error", - silenceFormFatal: "#silence-form-fatal", - silenceFormLoading: "#silence-form-loading", + // label button + buttonLabel: "#label-button-filter", - // label button - buttonLabel: "#label-button-filter", - - // alert group - alertGroup: "#alert-group", - alertGroupTitle: "#alert-group-title", - alertGroupAnnotations: "#alert-group-annotations", - alertGroupLabels: "#alert-group-labels", - alertGroupElements: "#alert-group-elements", - alertGroupSilence: "#alert-group-silence", - alertGroupLabelMap: "#alert-group-label-map" - }; - - var init = function() { - $.each(config, function(name, selector) { - try { - templates[name] = _.template($(selector).html()); - } catch (err) { - console.error("Failed to parse template " + name + " " + selector); - console.error(err); - } - }); + // alert group + alertGroup: "#alert-group", + alertGroupTitle: "#alert-group-title", + alertGroupAnnotations: "#alert-group-annotations", + alertGroupLabels: "#alert-group-labels", + alertGroupElements: "#alert-group-elements", + alertGroupSilence: "#alert-group-silence", + alertGroupLabelMap: "#alert-group-label-map" }; - var renderTemplate = function(name, context) { - var t = templates[name]; - if (t === undefined) { - console.error("Unknown template " + name); - return "

Internal error: unknown template " + name + "

"; - } +var init = function() { + $.each(config, function(name, selector) { try { - return t(context); + templates[name] = _.template($(selector).html()); } catch (err) { - return "
Failed to render template " + name + "

" + err + "

"; + console.error("Failed to parse template " + name + " " + selector); + console.error(err); } - }; + }); +}; - return { - Init: init, - Render: renderTemplate - }; +var renderTemplate = function(name, context) { + var t = templates[name]; + if (t === undefined) { + console.error("Unknown template " + name); + return "

Internal error: unknown template " + name + "

"; + } + try { + return t(context); + } catch (err) { + return "
Failed to render template " + name + "

" + err + "

"; + } +}; -})(); +exports.init = init; +exports.renderTemplate = renderTemplate;