Bhargav and github-actions[bot]
f59f43b1d4
fix: Issue ent 1609 patterns inspector ( #11648 )
...
<h2 style="color: rgb(191, 191, 191); font-family: -apple-system,
"system-ui", "Segoe UI", Roboto, sans-serif;
font-style: normal; font-variant-ligatures: normal; font-variant-caps:
normal; letter-spacing: normal; orphans: 2; text-align: start;
text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; white-space: normal; background-color:
rgb(25, 26, 27); text-decoration-thickness: initial;
text-decoration-style: initial; text-decoration-color:
initial;">Title</h2><p style="white-space: pre-wrap; margin-top: 0.1em;
margin-bottom: 0.2em; color: rgb(191, 191, 191); font-family:
-apple-system, "system-ui", "Segoe UI", Roboto,
sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures:
normal; font-variant-caps: normal; font-weight: 400; letter-spacing:
normal; orphans: 2; text-align: start; text-indent: 0px; text-transform:
none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;
background-color: rgb(25, 26, 27); text-decoration-thickness: initial;
text-decoration-style: initial; text-decoration-color: initial;"><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size: 0.9em;">feat: wildcard value
distribution popover for pattern inspector</code></p><h2 style="color:
rgb(191, 191, 191); font-family: -apple-system, "system-ui",
"Segoe UI", Roboto, sans-serif; font-style: normal;
font-variant-ligatures: normal; font-variant-caps: normal;
letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px;
text-transform: none; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; white-space: normal; background-color:
rgb(25, 26, 27); text-decoration-thickness: initial;
text-decoration-style: initial; text-decoration-color:
initial;">Summary</h2><ul style="padding-inline-start: 2em; color:
rgb(191, 191, 191); font-family: -apple-system, "system-ui",
"Segoe UI", Roboto, sans-serif; font-size: 13px; font-style:
normal; font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start;
text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; white-space: normal; background-color:
rgb(25, 26, 27); text-decoration-thickness: initial;
text-decoration-style: initial; text-decoration-color:
initial;"><li>Replaces inline Quasar<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">q-tooltip</code><span> </span>on wildcard chips with a
new<span> </span><code style="font-family: monospace; color: rgb(140,
140, 140); background-color: rgb(38, 38, 38); padding: 2px 4px;
border-radius: 3px; word-break: break-word; font-size:
0.9em;">WildcardValuePopover</code><span> </span>that shows a bar chart
distribution of sample values</li><li>Adds<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">useWildcardHover</code><span> </span>composable to manage hover
state with delayed hide (200ms) shared across<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">PatternCard</code>,<span> </span><code style="font-family:
monospace; color: rgb(140, 140, 140); background-color: rgb(38, 38, 38);
padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size:
0.9em;">PatternDetailsDialog</code>, and<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">PatternList</code></li><li>Adds<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">addWildcardValueToSearch</code><span> </span>action to filter by
individual wildcard values (include/exclude via<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">match_all</code>)</li><li>Hardens<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">tokenizeTemplate</code><span> </span>to handle multiple API
response shapes for wildcard value arrays (<code style="font-family:
monospace; color: rgb(140, 140, 140); background-color: rgb(38, 38, 38);
padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size:
0.9em;">sample_values</code>,<span> </span><code style="font-family:
monospace; color: rgb(140, 140, 140); background-color: rgb(38, 38, 38);
padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size:
0.9em;">sampleValues</code>,<span> </span><code style="font-family:
monospace; color: rgb(140, 140, 140); background-color: rgb(38, 38, 38);
padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size:
0.9em;">top_values</code>, etc.)</li><li>Adds unit test coverage
for<span> </span><code style="font-family: monospace; color: rgb(140,
140, 140); background-color: rgb(38, 38, 38); padding: 2px 4px;
border-radius: 3px; word-break: break-word; font-size:
0.9em;">WildcardValuePopover</code>,<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">useWildcardHover</code>,<span> </span><code style="font-family:
monospace; color: rgb(140, 140, 140); background-color: rgb(38, 38, 38);
padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size:
0.9em;">usePatternActions</code>, and<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">useTemplateTokenizer</code></li><li>Updates existing tests to
match new<span> </span><code style="font-family: monospace; color:
rgb(140, 140, 140); background-color: rgb(38, 38, 38); padding: 2px 4px;
border-radius: 3px; word-break: break-word; font-size:
0.9em;"><*></code><span> </span>wildcard template format and
hover-based interaction model</li></ul><h2 style="color: rgb(191, 191,
191); font-family: -apple-system, "system-ui", "Segoe
UI", Roboto, sans-serif; font-style: normal;
font-variant-ligatures: normal; font-variant-caps: normal;
letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px;
text-transform: none; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; white-space: normal; background-color:
rgb(25, 26, 27); text-decoration-thickness: initial;
text-decoration-style: initial; text-decoration-color: initial;">Files
changed</h2>
File | Change
-- | --
WildcardValuePopover.vue | New — popover with bar chart distribution,
auto-flip positioning
useWildcardHover.ts | New — shared hover state composable
PatternCard.vue | Replaced q-tooltip with hover → popover pattern
PatternDetailsDialog.vue | Same + wired filter-value emit
PatternList.vue | Hosts WildcardValuePopover outside virtual scroll
usePatternActions.ts | New addWildcardValueToSearch action
useTemplateTokenizer.ts | Multi-format wildcard value extraction
SearchResult.vue | Wires filter-value event to new action
*.spec.ts (6 files) | New + updated tests
<h2 style="color: rgb(191, 191, 191); font-family: -apple-system,
"system-ui", "Segoe UI", Roboto, sans-serif;
font-style: normal; font-variant-ligatures: normal; font-variant-caps:
normal; letter-spacing: normal; orphans: 2; text-align: start;
text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; white-space: normal; background-color:
rgb(25, 26, 27); text-decoration-thickness: initial;
text-decoration-style: initial; text-decoration-color: initial;">Test
plan</h2><ul class="contains-task-list" style="padding-inline-start:
2em; color: rgb(191, 191, 191); font-family: -apple-system,
"system-ui", "Segoe UI", Roboto, sans-serif;
font-size: 13px; font-style: normal; font-variant-ligatures: normal;
font-variant-caps: normal; font-weight: 400; letter-spacing: normal;
orphans: 2; text-align: start; text-indent: 0px; text-transform: none;
widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;
white-space: normal; background-color: rgb(25, 26, 27);
text-decoration-thickness: initial; text-decoration-style: initial;
text-decoration-color: initial;"><li class="task-list-item"><input
type="checkbox" disabled="" style="appearance: none; border-color:
rgb(42, 43, 44); border-style: solid; border-width: 1px; border-image:
none 100% / 1 / 0 stretch; position: relative; pointer-events: none;
vertical-align: middle; border-radius: 2px; width: 1em; height: 1em;
margin: 2px 4px 2px 2px;"><span> </span>Hover over a wildcard chip in
the pattern list → popover shows value distribution bars</li><li
class="task-list-item"><input type="checkbox" disabled=""
style="appearance: none; border-color: rgb(42, 43, 44); border-style:
solid; border-width: 1px; border-image: none 100% / 1 / 0 stretch;
position: relative; pointer-events: none; vertical-align: middle;
border-radius: 2px; width: 1em; height: 1em; margin: 2px 4px 2px
2px;"><span> </span>Hover over a wildcard chip in the pattern details
dialog → same popover</li><li class="task-list-item"><input
type="checkbox" disabled="" style="appearance: none; border-color:
rgb(42, 43, 44); border-style: solid; border-width: 1px; border-image:
none 100% / 1 / 0 stretch; position: relative; pointer-events: none;
vertical-align: middle; border-radius: 2px; width: 1em; height: 1em;
margin: 2px 4px 2px 2px;"><span> </span>Click "Include" / "Exclude" in
the popover (when wired) → adds<span> </span><code style="font-family:
monospace; color: rgb(140, 140, 140); background-color: rgb(38, 38, 38);
padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size:
0.9em;">match_all</code><span> </span>filter and switches to logs
view</li><li class="task-list-item"><input type="checkbox" disabled=""
style="appearance: none; border-color: rgb(42, 43, 44); border-style:
solid; border-width: 1px; border-image: none 100% / 1 / 0 stretch;
position: relative; pointer-events: none; vertical-align: middle;
border-radius: 2px; width: 1em; height: 1em; margin: 2px 4px 2px
2px;"><span> </span>Verify popover repositions upward when near bottom
of viewport</li><li class="task-list-item"><input type="checkbox"
disabled="" style="appearance: none; border-color: rgb(42, 43, 44);
border-style: solid; border-width: 1px; border-image: none 100% / 1 / 0
stretch; position: relative; pointer-events: none; vertical-align:
middle; border-radius: 2px; width: 1em; height: 1em; margin: 2px 4px 2px
2px;"><span> </span>Verify popover closes when mouse leaves chip and
doesn't enter popover</li><li class="task-list-item"><input
type="checkbox" disabled="" style="appearance: none; border-color:
rgb(42, 43, 44); border-style: solid; border-width: 1px; border-image:
none 100% / 1 / 0 stretch; position: relative; pointer-events: none;
vertical-align: middle; border-radius: 2px; width: 1em; height: 1em;
margin: 2px 4px 2px 2px;"><span> </span><code style="font-family:
monospace; color: rgb(140, 140, 140); background-color: rgb(38, 38, 38);
padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size:
0.9em;">npm run test:unit</code><span> </span>passes</li></ul>
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-08 06:23:04 +00:00