";
+ // create an empty entry if this group is new
+ if (!outputByGroup[serviceStatus.group]) {
+ outputByGroup[serviceStatus.group] = "";
+ }
+ outputByGroup[serviceStatus.group] += output;
+ }
+ let output = "";
+ for (let group in outputByGroup) {
+ // Services that don't have a group should be skipped and left for last
+ if (group === 'undefined') {
+ continue
+ }
+ let key = group.replace(/[^a-zA-Z0-9]/g, '');
+ let existingGroupContentSelector = $("#service-group-" + key + "-content");
+ let isCurrentlyHidden = existingGroupContentSelector.length && existingGroupContentSelector[0].style.display === 'none';
+ let groupStatus = "✓";
+ if (outputByGroup[group].includes("badge badge-danger")) {
+ groupStatus = "~";
+ }
+ output += ""
+ + "