A `va_parmap` entry that cannot be used was dropped in silence, in both
places it can fail: at parse time (no `-` separator, a missing side, or a
column that is not a plain SAS name) and at apply time (the mapped column is
not in the table being opened). Either way the parameter is skipped, which
degrades to "no filter" - a typo in the report's URL then looks exactly like
a working filter over the whole table.
Both are now reported in terms the report author can act on:
- a warning banner in the editor (VA mode) naming the parameter, the column
and the table, and pointing at the `va_parmap` entries in the URL
- console.warn for each distinct problem, so it is findable from the report's
console too
The parser returns `{ map, problems }` rather than a bare Map, VaFilterService
gains `unresolvedMappings()` for the entries the loaded table cannot satisfy,
and the editor merges both sets for the banner (logging once per distinct set
rather than once per VA message).
The banner is covered by two e2e cases, one asserting its painted box inside
the viewport (VA hides the app header, so it has to stand on its own) and one
covering a parse-time failure before any VA message arrives. The alert markup
keeps the message inside the alert's text flow so it wraps, instead of being
laid out beside a title and pushed off the right edge.
42 lines
756 B
SCSS
42 lines
756 B
SCSS
.va-filter-controls {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
flex-wrap: wrap;
|
|
|
|
.va-toggle {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.35rem;
|
|
margin: 0;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.va-pending-text {
|
|
font-style: italic;
|
|
color: #8a5200;
|
|
}
|
|
}
|
|
|
|
.va-loading-text {
|
|
font-style: italic;
|
|
color: #0072a3;
|
|
}
|
|
|
|
.va-disabled-text {
|
|
font-style: italic;
|
|
opacity: 0.7;
|
|
}
|
|
|
|
/* VA embed: `va_parmap` diagnostic banner. Clarity's alert lays `.alert-title`
|
|
and `.alert-text` out on one row, which pushes a long message off the right
|
|
edge; this keeps the whole message in the flow and wraps it. */
|
|
.va-parmap-warning {
|
|
width: 100%;
|
|
|
|
.alert-text {
|
|
white-space: normal;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
}
|