@@ -86,6 +86,23 @@ const mainScript = `
8686 }
8787 });
8888 }
89+
90+ function resetFilterRuleBasedSegments(){
91+ $("tr.ruleBasedItem").removeClass("filterDisplayNone");
92+ $("#filterRuleBasedSegmentNameInput").val("");
93+ }
94+
95+ function filterRuleBasedSegments(){
96+ $("tr.ruleBasedItem").removeClass("filterDisplayNone");
97+ var filter = $("#filterRuleBasedSegmentNameInput").val();
98+ $("tr.ruleBasedItem").each(function() {
99+ $this = $(this);
100+ var ruleBasedName = $this.find("span.ruleBasedItemName").html();
101+ if (ruleBasedName.indexOf(filter.trim()) == -1) {
102+ $this.addClass("filterDisplayNone");
103+ }
104+ });
105+ }
89106
90107 $(function () {
91108 $('[data-toggle="tooltip"]').tooltip()
@@ -255,6 +272,42 @@ const mainScript = `
255272 }
256273 };
257274
275+ function formatRuleBasedSegment(ruleBasedSegment) {
276+ var excludedSegments = Array.isArray(ruleBasedSegment.excludedSegments)
277+ ? ruleBasedSegment.excludedSegments
278+ : [];
279+
280+ var excludedSegmentsHtml = excludedSegments.length
281+ ? excludedSegments.map(function(seg, i) {
282+ var segName = seg && seg.name ? seg.name : 'Unnamed';
283+ var segType = seg && seg.type ? seg.type : 'Unknown';
284+ var separator = i < excludedSegments.length - 1 ? ', ' : '';
285+ return '<span>' + segName + ' (' + segType + ')</span>' + separator;
286+ }).join('')
287+ : '—';
288+
289+ return (
290+ '<tr class="ruleBasedItem">' +
291+ '<td><span class="ruleBasedItemName">' + ruleBasedSegment.name + '</span></td>' +
292+ (ruleBasedSegment.active
293+ ? '<td class="">ACTIVE</td>'
294+ : '<td class="danger">ARCHIVED</td>') +
295+ '<td>' + (ruleBasedSegment.excludedKeys || '') + '</td>' +
296+ '<td>' + excludedSegmentsHtml + '</td>' +
297+ '<td>' + (ruleBasedSegment.cn || '') + '</td>' +
298+ '</tr>\n'
299+ );
300+ }
301+
302+ function updateRuleBasedSegments(ruleBasedSegments) {
303+ ruleBasedSegments.sort((a, b) => parseFloat(b.changeNumber) - parseFloat(a.changeNumber));
304+ const formatted = ruleBasedSegments.map(formatRuleBasedSegment).join('\n');
305+ if (document.getElementById('filterRuleBasedSegmentNameInput').value.length == 0) {
306+ $('#rule_based_segment_rows tbody').empty();
307+ $('#rule_based_segment_rows tbody').append(formatted);
308+ }
309+ };
310+
258311 function formatFlagSet(flagSet) {
259312 return (
260313 '<tr class="flagSetItem">' +
@@ -443,6 +496,7 @@ const mainScript = `
443496 updateFeatureFlags(stats.featureFlags);
444497 updateSegments(stats.segments);
445498 updateLargeSegments(stats.largesegments);
499+ updateRuleBasedSegments(stats.rulebasedsegments)
446500 updateLogEntries(stats.loggedMessages);
447501 updateFlagSets(stats.flagSets)
448502
0 commit comments