samples/consul-ui/js/utils.js in consul-templaterb-1.18.5 vs samples/consul-ui/js/utils.js in consul-templaterb-1.19.0
- old
+ new
@@ -1,455 +1,483 @@
function buildServiceStatus(service) {
- var serviceStatus = {};
+ var serviceStatus = {};
+ for (var key in service['instances']) {
+ var instance = service['instances'][key];
+ var state = nodeState(instance.checks);
- for (var key in service['instances']) {
- var instance = service['instances'][key];
- var state = nodeState(instance.checks);
-
- serviceStatus[state] = (serviceStatus[state] || 0) + 1;
- serviceStatus['total'] = (serviceStatus['total'] || 0) + 1;
- }
-
- return serviceStatus;
+ serviceStatus[state] = (serviceStatus[state] || 0) + 1;
+ serviceStatus['total'] = (serviceStatus['total'] || 0) + 1;
+ }
+ service["status"] = serviceStatus
+ return serviceStatus;
}
-function debounce(func, wait) {
- var timeout;
- return function() {
- var context = this, args = arguments;
- var later = function() {
- timeout = null;
- func.apply(context, args);
- };
- clearTimeout(timeout);
- timeout = setTimeout(later, wait);
- };
+var timeouts = {};
+
+function debounce(name, func, wait) {
+ return function() {
+ var context = this,
+ args = arguments;
+ var later = function () {
+ timeouts[name] = null;
+ func.apply(context, args);
+ };
+ if (timeouts[name] != null) {
+ //console.log("Clearing timeout", name);
+ clearTimeout(timeouts[name]);
+ }
+ timeouts[name] = setTimeout(later, wait);
+ };
};
function padDateUnit(x) {
- return x > 9 ? x : '0' + x;
+ return x > 9 ? x : '0' + x;
}
function formatDate(date) {
- return padDateUnit(date.getMonth()+1) + "/" + padDateUnit(date.getDate()) + " " + padDateUnit(date.getHours()) + ':' + padDateUnit(date.getMinutes()) + ':' + padDateUnit(date.getSeconds());
+ return padDateUnit(date.getMonth() + 1) + "/" + padDateUnit(date.getDate()) + " " + padDateUnit(date.getHours()) + ':' + padDateUnit(date.getMinutes()) + ':' + padDateUnit(date.getSeconds());
}
function indexOfTimelineEvent(e) {
- if (e == null) {
- return 'k/0000000000/0000/0000';
- }
- return 'k/' + e.idx.toString().padStart(10, '0') + '/' + e.service + '/' + e.instance;
+ if (e == null) {
+ return 'k/0000000000/0000/0000';
+ }
+ return 'k/' + e.idx.toString().padStart(10, '0') + '/' + e.service + '/' + e.instance;
}
function nodeState(checks) {
- status='passing';
- for (var checkKey in checks) {
- switch(checks[checkKey]['status']) {
- case 'passing': break;
- case 'warning': status='warning'; break;
- case 'critical': return 'critical'; break;
+ status = 'passing';
+ for (var checkKey in checks) {
+ switch (checks[checkKey]['status']) {
+ case 'passing':
+ break;
+ case 'warning':
+ status = 'warning';
+ break;
+ case 'critical':
+ return 'critical';
+ break;
+ }
}
- }
- return status;
+ return status;
}
supported_protocols = ['https', 'http', 'sftp', 'ftp', 'ssh', 'telnet']
function serviceTitleGenerator(instance) {
- var protocol = null;
- for (i in supported_protocols) {
- var protoc = supported_protocols[i]
- if (instance.tags.includes(protoc)) {
- protocol = protoc + '://';
- break;
+ var protocol = null;
+ for (i in supported_protocols) {
+ var protoc = supported_protocols[i]
+ if (instance.tags.includes(protoc)) {
+ protocol = protoc + '://';
+ break;
+ }
}
- }
- var htmlTitle = document.createElement('h5');
- htmlTitle.setAttribute('title', 'Node Name: ' + instance.name +
- '\nAddress: ' + instance.addr +
- '\nService ID: ' + instance.id +
- '\nService Port: ' + instance.port);
+ var htmlTitle = document.createElement('h5');
+ htmlTitle.setAttribute('title', 'Node Name: ' + instance.name +
+ '\nAddress: ' + instance.addr +
+ '\nService ID: ' + instance.id +
+ '\nService Port: ' + instance.port);
- htmlTitle.setAttribute('class', 'instance-name');
- var instanceLink = document.createElement('a');
- var appendPort = "";
- if (instance.port > 0) {
- appendPort = ':' + instance.port;
- }
- if (protocol != null) {
- instanceLink.setAttribute('href', protocol + instance.addr + appendPort);
- instanceLink.setAttribute('target', '_blank');
- }
+ htmlTitle.setAttribute('class', 'instance-name');
+ var instanceLink = document.createElement('a');
+ var appendPort = "";
+ if (instance.port > 0) {
+ appendPort = ':' + instance.port;
+ }
+ if (protocol != null) {
+ instanceLink.setAttribute('href', protocol + instance.addr + appendPort);
+ instanceLink.setAttribute('target', '_blank');
+ }
- instanceLink.appendChild(document.createTextNode(instance.name + appendPort));
- htmlTitle.appendChild(instanceLink);
- htmlTitle.appendChild(document.createTextNode(' '));
- htmlTitle.appendChild(document.createTextNode(instance.addr));
+ instanceLink.appendChild(document.createTextNode(instance.name + appendPort));
+ htmlTitle.appendChild(instanceLink);
+ htmlTitle.appendChild(document.createTextNode(' '));
+ htmlTitle.appendChild(document.createTextNode(instance.addr));
- return htmlTitle;
+ return htmlTitle;
}
function nodeNameGenator(nodename, nodeaddr) {
- var protocol = 'ssh://'
+ var protocol = 'ssh://'
- var htmlTitle = document.createElement('h5');
+ var htmlTitle = document.createElement('h5');
- var instanceLink = document.createElement('a');
- instanceLink.setAttribute('class', 'instance-name');
- if (protocol != null) {
- instanceLink.setAttribute('href', protocol + nodeaddr);
- instanceLink.setAttribute('target', '_blank');
- }
- instanceLink.appendChild(document.createTextNode(nodename));
- htmlTitle.appendChild(instanceLink);
+ var instanceLink = document.createElement('a');
+ instanceLink.setAttribute('class', 'instance-name');
+ if (protocol != null) {
+ instanceLink.setAttribute('href', protocol + nodeaddr);
+ instanceLink.setAttribute('target', '_blank');
+ }
+ instanceLink.appendChild(document.createTextNode(nodename));
+ htmlTitle.appendChild(instanceLink);
- return htmlTitle;
+ return htmlTitle;
}
function nodeAddressGenator(nodeaddr) {
- var htmlAddress = document.createElement('h5');
- htmlAddress.className = 'instance-addr lookup';
- htmlAddress.appendChild(document.createTextNode(nodeaddr));
- return htmlAddress;
+ var htmlAddress = document.createElement('h5');
+ htmlAddress.className = 'instance-addr lookup';
+ htmlAddress.appendChild(document.createTextNode(nodeaddr));
+ return htmlAddress;
}
function nodeMetaGenerator(nodeMetaTags) {
- var metaTags = document.createElement('div');
- metaTags.setAttribute('title', 'Node Meta')
- metaTags.className = 'node-meta';
- for (var tagKey in nodeMetaTags) {
- if(!nodeMetaTags[tagKey]) {
- continue;
+ var metaTags = document.createElement('div');
+ metaTags.setAttribute('title', 'Node Meta')
+ metaTags.className = 'node-meta';
+ for (var tagKey in nodeMetaTags) {
+ if (!nodeMetaTags[tagKey]) {
+ continue;
+ }
+ var metaTag = document.createElement('span');
+ metaTag.setAttribute('class', 'badge badge-primary mx-1 lookup');
+ metaTag.appendChild(document.createTextNode(tagKey + ':' + nodeMetaTags[tagKey]));
+ metaTags.appendChild(metaTag);
}
- var metaTag = document.createElement('span');
- metaTag.setAttribute('class', 'badge badge-primary mx-1 lookup');
- metaTag.appendChild(document.createTextNode(tagKey + ':' + nodeMetaTags[tagKey]));
- metaTags.appendChild(metaTag);
- }
- return metaTags;
+ return metaTags;
}
function tagsGenerator(instanceTags) {
- var tags = document.createElement('div');
+ var tags = document.createElement('div');
- tags.className = 'instance-tags';
- tags.setAttribute('title', 'Tags of Service');
- for (var tagKey in instanceTags) {
- var tag = document.createElement('span');
- tag.setAttribute('class', 'badge badge-secondary mx-1 lookup');
- tag.appendChild(document.createTextNode(instanceTags[tagKey]));
- tags.appendChild(tag);
- }
- return tags;
+ tags.className = 'instance-tags';
+ tags.setAttribute('title', 'Tags of Service');
+ for (var tagKey in instanceTags) {
+ var tag = document.createElement('span');
+ tag.setAttribute('class', 'badge badge-secondary mx-1 lookup');
+ tag.appendChild(document.createTextNode(instanceTags[tagKey]));
+ tags.appendChild(tag);
+ }
+ return tags;
}
function connectGenerator(instance) {
- var connectItem = document.createElement('div');
- var connectValue = instance['connect']
- if (connectValue != null && connectValue["Proxy"]) {
- connectItem.setAttribute('class', 'connect-enabled');
- var badge = document.createElement("span");
- badge.setAttribute("class", "badge badge-primary");
- badge.appendChild(document.createTextNode("Consul Connect Enabled"));
- connectItem.appendChild(badge);
- var content = document.createElement("pre");
- content.setAttribute("class", "connect-data");
- var code = document.createElement("code");
- code.setAttribute("class", "connect-source");
- code.appendChild(document.createTextNode(JSON.stringify(connectValue)));
- content.appendChild(code);
- connectItem.appendChild(content);
- return connectItem;
- } else {
- connectItem.setAttribute('class', 'connect-disabled');
- }
- return connectItem
+ var connectItem = document.createElement('div');
+ var connectValue = instance['connect']
+ if (connectValue != null && connectValue["Proxy"]) {
+ connectItem.setAttribute('class', 'connect-enabled');
+ var badge = document.createElement("span");
+ badge.setAttribute("class", "badge badge-primary");
+ badge.appendChild(document.createTextNode("Consul Connect Enabled"));
+ connectItem.appendChild(badge);
+ var content = document.createElement("pre");
+ content.setAttribute("class", "connect-data");
+ var code = document.createElement("code");
+ code.setAttribute("class", "connect-source");
+ code.appendChild(document.createTextNode(JSON.stringify(connectValue)));
+ content.appendChild(code);
+ connectItem.appendChild(content);
+ return connectItem;
+ } else {
+ connectItem.setAttribute('class', 'connect-disabled');
+ }
+ return connectItem
}
function serviceMetaGenerator(instanceMeta) {
- var top = document.createElement('div');
- top.className = 'instance-meta';
- if (instanceMeta) {
- var container = document.createElement('dl');
- top.appendChild(container);
- container.className = 'row';
- for (var meta in instanceMeta) {
- var metaH = document.createElement('dt');
- metaH.className = 'col-sm-4 lookup';
- metaH.appendChild(document.createTextNode(meta));
- container.appendChild(metaH);
- var metaVH = document.createElement('dd');
- metaVH.className = 'col-sm-8 lookup';
- metaVH.appendChild(document.createTextNode(instanceMeta[meta]));
- container.appendChild(metaVH);
+ var top = document.createElement('div');
+ top.className = 'instance-meta';
+ if (instanceMeta) {
+ var container = document.createElement('dl');
+ top.appendChild(container);
+ container.className = 'row';
+ for (var meta in instanceMeta) {
+ var metaH = document.createElement('dt');
+ metaH.className = 'col-sm-4 lookup';
+ metaH.appendChild(document.createTextNode(meta));
+ container.appendChild(metaH);
+ var metaVH = document.createElement('dd');
+ metaVH.className = 'col-sm-8 lookup';
+ metaVH.appendChild(document.createTextNode(instanceMeta[meta]));
+ container.appendChild(metaVH);
+ }
}
- }
- return top;
+ return top;
}
function weightsGenerator(instanceWeights, instanceStatus) {
- var weights = document.createElement('div');
- if (instanceWeights != null) {
- weights.setAttribute('class', 'weights weight-passing badge badge-' + toCSSClass(instanceStatus));
- weights.appendChild(document.createTextNode("Weights: "));
- {
- var passing = document.createElement("span");
- passing.setAttribute("class", "weight-passing badge badge-success");
- passing.appendChild(document.createTextNode(instanceWeights['Passing']));
- passing.setAttribute('title', "DNS Weight when in warning state")
- weights.appendChild(passing);
+ var weights = document.createElement('div');
+ if (instanceWeights != null) {
+ weights.setAttribute('class', 'weights weight-passing badge badge-' + toCSSClass(instanceStatus));
+ weights.appendChild(document.createTextNode("Weights: ")); {
+ var passing = document.createElement("span");
+ passing.setAttribute("class", "weight-passing badge badge-success");
+ passing.appendChild(document.createTextNode(instanceWeights['Passing']));
+ passing.setAttribute('title', "DNS Weight when in warning state")
+ weights.appendChild(passing);
+ }
+ weights.appendChild(document.createTextNode(' ')); {
+ var warning = document.createElement("span");
+ warning.setAttribute("class", "weight-warning badge badge-warning");
+ warning.setAttribute('title', "DNS Weight when in warning state")
+ warning.appendChild(document.createTextNode(instanceWeights['Warning']));
+ weights.appendChild(warning);
+ }
+ return weights;
+ } else {
+ weights.setAttribute('class', 'weights-absent');
}
- weights.appendChild(document.createTextNode(' '));
- {
- var warning = document.createElement("span");
- warning.setAttribute("class", "weight-warning badge badge-warning");
- warning.setAttribute('title', "DNS Weight when in warning state")
- warning.appendChild(document.createTextNode(instanceWeights['Warning']));
- weights.appendChild(warning);
- }
- return weights;
- } else {
- weights.setAttribute('class', 'weights-absent');
- }
- return weights
+ return weights
}
function toCSSClass(state) {
- switch(state) {
- case 'passing': return 'success';
- case 'critical': return 'danger';
- }
- return state;
+ switch (state) {
+ case 'passing':
+ return 'success';
+ case 'critical':
+ return 'danger';
+ }
+ return state;
}
function servicesGenerator(instanceServices) {
- var services = document.createElement('div');
- services.className = 'instance-services';
- services.appendChild(document.createTextNode("Services: "));
- services.appendChild(document.createElement('br'));
- for (var serviceKey in instanceServices) {
- var service = document.createElement('a');
- var serviceName = instanceServices[serviceKey]['Service']['Service'];
- var servicePort = instanceServices[serviceKey]['Service']['Port'];
- service.setAttribute('class', 'btn btn-sm m-1 lookup');
- service.setAttribute('target', '_blank');
- nodeAddr = instanceServices[serviceKey]['Service']['Address'];
- service.setAttribute('href', 'http://' + nodeAddr + ':' + servicePort);
- service.classList.add('btn-outline-'+toCSSClass(nodeState(instanceServices[serviceKey]['Checks'])))
- service.appendChild(document.createTextNode(serviceName + ':' + servicePort));
- services.appendChild(service);
- }
- return services;
+ var services = document.createElement('div');
+ services.className = 'instance-services';
+ services.appendChild(document.createTextNode("Services: "));
+ services.appendChild(document.createElement('br'));
+ for (var serviceKey in instanceServices) {
+ var service = document.createElement('a');
+ var serviceName = instanceServices[serviceKey]['Service']['Service'];
+ var servicePort = instanceServices[serviceKey]['Service']['Port'];
+ service.setAttribute('class', 'btn btn-sm m-1 lookup');
+ service.setAttribute('target', '_blank');
+ nodeAddr = instanceServices[serviceKey]['Service']['Address'];
+ service.setAttribute('href', 'http://' + nodeAddr + ':' + servicePort);
+ service.classList.add('btn-outline-' + toCSSClass(nodeState(instanceServices[serviceKey]['Checks'])))
+ service.appendChild(document.createTextNode(serviceName + ':' + servicePort));
+ services.appendChild(service);
+ }
+ return services;
}
function checksStatusGenerator(instance, prefix) {
- var instanceChecks = instance.checks;
- var checks = document.createElement('div');
- checks.className = 'checks';
- checks.setAttribute('title', 'Checks of Node/Service')
+ var instanceChecks = instance.checks;
+ var checks = document.createElement('div');
+ checks.className = 'checks';
+ checks.setAttribute('title', 'Checks of Node/Service')
- for (var checkKey in instanceChecks) {
- var checkInstance = instanceChecks[checkKey];
- var checkId = prefix + '::' + checkInstance.checkid;
- var btn = 'btn-' + toCSSClass(instanceChecks[checkKey]['status'])
- var check = document.createElement('div');
+ for (var checkKey in instanceChecks) {
+ var checkInstance = instanceChecks[checkKey];
+ var checkId = prefix + '::' + checkInstance.checkid;
+ var btn = 'btn-' + toCSSClass(instanceChecks[checkKey]['status'])
+ var check = document.createElement('div');
- var btnCheck = document.createElement('button');
- btnCheck.setAttribute('class','btn ' + btn + ' btn-sm m-1');
- btnCheck.setAttribute('type', 'button');
- btnCheck.setAttribute('data-toggle', 'collapse');
- btnCheck.setAttribute('data-target', '#' + checkId);
- btnCheck.setAttribute('aria-expanded', 'false');
- btnCheck.setAttribute('title', checkInstance.checkid);
+ var btnCheck = document.createElement('button');
+ btnCheck.setAttribute('class', 'btn ' + btn + ' btn-sm m-1');
+ btnCheck.setAttribute('type', 'button');
+ btnCheck.setAttribute('data-toggle', 'collapse');
+ btnCheck.setAttribute('data-target', '#' + checkId);
+ btnCheck.setAttribute('aria-expanded', 'false');
+ btnCheck.setAttribute('title', checkInstance.checkid);
- btnCheck.appendChild(document.createTextNode(instanceChecks[checkKey]['name']));
+ btnCheck.appendChild(document.createTextNode(instanceChecks[checkKey]['name']));
- check.appendChild(btnCheck);
+ check.appendChild(btnCheck);
- var collapseCheck = document.createElement('div');
- collapseCheck.setAttribute('class', 'collapse')
- collapseCheck.setAttribute('id', checkId)
+ var collapseCheck = document.createElement('div');
+ collapseCheck.setAttribute('class', 'collapse')
+ collapseCheck.setAttribute('id', checkId)
- var cardCheck = document.createElement('div');
- cardCheck.setAttribute('class', 'card card-body p-3 m-1 mb-2');
+ var cardCheck = document.createElement('div');
+ cardCheck.setAttribute('class', 'card card-body p-3 m-1 mb-2');
- var notes = document.createElement('table');
- notes.setAttribute('class', 'table table-hover mb-0');
+ var notes = document.createElement('table');
+ notes.setAttribute('class', 'table table-hover mb-0');
- var dataToDisplay = ['notes', 'output'];
- for (var index in dataToDisplay) {
- var tr = document.createElement('tr');
- var td1 = document.createElement('td');
- var td2 = document.createElement('td');
- var fieldName = dataToDisplay[index].replace(/\b\w/g, l => l.toUpperCase());
- td1.appendChild(document.createTextNode(fieldName + ': '));
- var target = td2
- if (index != 1) {
- target = document.createElement('div');
- target.setAttribute("class", "check-notes")
- } else {
- // Notes are rendered as plain text
- target = document.createElement('pre');
- target.setAttribute("class", "check-output")
- }
- target.appendChild(document.createTextNode(instanceChecks[checkKey][dataToDisplay[index]]));
- td2.appendChild(target)
- tr.appendChild(td1);
- tr.appendChild(td2);
- notes.appendChild(tr);
+ var dataToDisplay = ['notes', 'output'];
+ for (var index in dataToDisplay) {
+ var tr = document.createElement('tr');
+ var td1 = document.createElement('td');
+ var td2 = document.createElement('td');
+ var fieldName = dataToDisplay[index].replace(/\b\w/g, l => l.toUpperCase());
+ td1.appendChild(document.createTextNode(fieldName + ': '));
+ var target = td2
+ if (index != 1) {
+ target = document.createElement('div');
+ target.setAttribute("class", "check-notes")
+ } else {
+ // Notes are rendered as plain text
+ target = document.createElement('pre');
+ target.setAttribute("class", "check-output")
+ }
+ target.appendChild(document.createTextNode(instanceChecks[checkKey][dataToDisplay[index]]));
+ td2.appendChild(target)
+ tr.appendChild(td1);
+ tr.appendChild(td2);
+ notes.appendChild(tr);
+ }
+
+ cardCheck.appendChild(notes);
+ collapseCheck.appendChild(cardCheck);
+ check.appendChild(collapseCheck);
+ checks.appendChild(check)
}
- cardCheck.appendChild(notes);
- collapseCheck.appendChild(cardCheck);
- check.appendChild(collapseCheck);
- checks.appendChild(check)
- }
-
- return checks;
+ return checks;
}
function resizeAll() {
- resizeWrapper('service-wrapper', 'service-list');
- resizeWrapper('instances-wrapper', 'instances-list');
+ resizeWrapper('service-wrapper', 'service-list');
+ resizeWrapper('instances-wrapper', 'instances-list');
}
function resizeInstances() {
- resizeWrapper('instances-wrapper', 'instances-list');
+ resizeWrapper('instances-wrapper', 'instances-list');
}
function resizeData() {
- resizeWrapper('keys-wrapper', 'keys-list');
- resizeWrapper('data-wrapper', 'kv-data');
+ resizeWrapper('keys-wrapper', 'keys-list');
+ resizeWrapper('data-wrapper', 'kv-data');
}
function resizeWrapper(wrapperId, wrapped) {
- var size = $(window).height() - $('#' + wrapperId).offset()["top"] - 20;
- $('#' + wrapperId).css("height", size);
+ var size = $(window).height() - $('#' + wrapperId).offset()["top"] - 20;
+ $('#' + wrapperId).css("height", size);
}
function createBadge(classes, data) {
- var badge = document.createElement('span');
- badge.setAttribute('class', 'badge mx-1');
- classesArray = classes.split(' ');
- for (var i = 0; i < classesArray.length; i++) {
- badge.classList.add(classesArray[i]);
- }
+ var badge = document.createElement('span');
+ badge.setAttribute('class', 'badge mx-1');
+ classesArray = classes.split(' ');
+ for (var i = 0; i < classesArray.length; i++) {
+ badge.classList.add(classesArray[i]);
+ }
- badge.appendChild(document.createTextNode(data));
- return badge;
+ badge.appendChild(document.createTextNode(data));
+ return badge;
}
function serviceMatcher(service, regex, showProxiesInList) {
- if(service.getElementsByClassName('service-name')[0].innerHTML.match(regex)) {
- if(!showProxiesInList && service.classList.contains('kind-connect-proxy')){
- return false;
+ if (service.getElementsByClassName('service-name')[0].innerHTML.match(regex)) {
+ if (!showProxiesInList && service.classList.contains('kind-connect-proxy')) {
+ return false;
+ }
+ return true;
}
- return true;
- }
- var tags = service.getElementsByClassName('service-tags')[0].getElementsByClassName('badge');
+ var tags = service.getElementsByClassName('service-tags')[0].getElementsByClassName('badge');
- for (var i=0; i < tags.length; i++) {
- if(tags[i].innerHTML.match(regex)) {
- return true;
+ for (var i = 0; i < tags.length; i++) {
+ if (tags[i].innerHTML.match(regex)) {
+ return true;
+ }
}
- }
- var sstatus = service.getAttribute('status')
- if(sstatus && sstatus.match(regex)) {
- return true;
- }
-
- return false;
+ var sstatus = service.getAttribute('status')
+ if (sstatus && sstatus.match(regex)) {
+ return true;
+ }
+
+ return false;
}
function keyMatcher(service, regex) {
- if(service.getElementsByClassName('key-name')[0].innerHTML.match(regex)) {
- return true;
- }
+ if (service.getElementsByClassName('key-name')[0].innerHTML.match(regex)) {
+ return true;
+ }
}
function hasMatches(instance, regex) {
- var toLookup = instance.getElementsByClassName('lookup');
- for (var i = 0 ; i < toLookup.length; i++) {
- if(toLookup[i].innerHTML.match(regex)) {
- return true;
+ var toLookup = instance.getElementsByClassName('lookup');
+ for (var i = 0; i < toLookup.length; i++) {
+ if (toLookup[i].innerHTML.match(regex)) {
+ return true;
+ }
}
- }
- return false;
+ return false;
}
function instanceMatcher(instance, regex) {
- if(instance.getElementsByClassName('instance-name')[0].innerHTML.match(regex)) {
- return true;
- }
+ if (instance.getElementsByClassName('instance-name')[0].innerHTML.match(regex)) {
+ return true;
+ }
- return hasMatches(instance, regex);
+ return hasMatches(instance, regex);
}
function nodeMatcher(instance, regex) {
instanceMatcher(instance, regex);
- if(instance.getElementsByClassName('instance-name')[0].innerHTML.match(regex)) {
- return true;
+ if (instance.getElementsByClassName('instance-name')[0].innerHTML.match(regex)) {
+ return true;
}
return hasMatches(instance, regex);
}
function getTagsNode(node) {
- tags = new Set([]);
- for (service in node['Service']) {
- for (tag in node['Service'][service]['Service']['Tags']) {
- tags.add(node['Service'][service]['Service']['Tags'][tag]);
+ tags = new Set([]);
+ for (service in node['Service']) {
+ for (tag in node['Service'][service]['Service']['Tags']) {
+ tags.add(node['Service'][service]['Service']['Tags'][tag]);
+ }
}
- }
- return Array.from(tags);
+ return Array.from(tags);
}
function getChecksNode(node) {
- checks = [];
- for (service in node['Service']) {
- for (check in node['Service'][service]['Checks']) {
- checks.push(node['Service'][service]['Checks'][check]);
+ checks = [];
+ for (service in node['Service']) {
+ for (check in node['Service'][service]['Checks']) {
+ checks.push(node['Service'][service]['Checks'][check]);
+ }
}
- }
- return checks;
+ return checks;
}
function getGeneralNodeStatus(nodeService) {
- status='passing';
- for (var serviceKey in nodeService) {
- switch(nodeState(nodeService[serviceKey]['Checks'])) {
- case 'passing': break;
- case 'warning': status='warning'; break;
- case 'critical': return 'critical'; break;
+ status = 'passing';
+
+ for (var serviceKey in nodeService) {
+ if (nodeService[serviceKey] != null && "Checks" in nodeService[serviceKey]) {
+ switch (nodeState(nodeService[serviceKey]['Checks'])) {
+ case 'passing':
+ break;
+ case 'warning':
+ status = 'warning';
+ break;
+ case 'critical':
+ return 'critical';
+ break;
+ }
+ }
}
- }
- return status;
+ return status;
}
function updateStatusItem(statuses) {
- states = ['passing', 'warning', 'critical', 'total']
- for (state in states) {
- document.getElementById('service-status-' + states[state]).innerHTML = (statuses[states[state]] || 0);
- }
+ states = ['passing', 'warning', 'critical', 'total']
+ for (state in states) {
+ document.getElementById('service-status-' + states[state]).innerHTML = (statuses[states[state]] || 0);
+ }
}
function updateFilterDisplay(filterStatus) {
- $('.progress-status').each(function() {
- var status = $(this).attr('status');
- if (filterStatus == null || filterStatus == status) {
- $(this).removeClass('progress-deactivated');
+ $('.progress-status').each(function () {
+ var status = $(this).attr('status');
+ if (filterStatus == null || filterStatus == status) {
+ $(this).removeClass('progress-deactivated');
+ } else {
+ $(this).addClass('progress-deactivated');
+ }
+ })
+ $('.service-status').each(function () {
+ var status = $(this).attr('status');
+ if (filterStatus == null || filterStatus == status) {
+ $(this).removeClass('status-deactivated');
+ } else {
+ $(this).addClass('status-deactivated');
+ }
+ })
+
+}
+
+function updateURL(arg, value) {
+ var newUrl = new URL(location.href);
+ if (value == "" || value == null) {
+ newUrl.searchParams.delete(arg);
} else {
- $(this).addClass('progress-deactivated');
+ newUrl.searchParams.set(arg, value);
}
- })
- $('.service-status').each(function() {
- var status = $(this).attr('status');
- if (filterStatus == null || filterStatus == status) {
- $(this).removeClass('status-deactivated');
- } else {
- $(this).addClass('status-deactivated');
- }
- })
-}
+ window.history.pushState({}, "", newUrl);
+}
\ No newline at end of file