Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AdHocVariable: Edit injected filters #1062

Merged
merged 35 commits into from
Mar 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
4ac21e6
Show baseFilters with a source as readonly in the UI
mdvictor Feb 24, 2025
94e6f3f
export type
mdvictor Feb 24, 2025
e3d64b7
fix
mdvictor Feb 24, 2025
471483f
AdHocVariable: Edit injected filters
mdvictor Feb 26, 2025
afc4ebb
fix test
mdvictor Feb 26, 2025
30ae260
Merge branch 'main' into mdvictor/allow-injected-filters-edit
mdvictor Feb 27, 2025
5bcd480
refactor
mdvictor Feb 27, 2025
6f3650a
fix
mdvictor Feb 27, 2025
a522cbc
refactor
mdvictor Feb 27, 2025
b9837f4
refactors + tests
mdvictor Feb 28, 2025
cf36da9
refactor
mdvictor Feb 28, 2025
5d05177
wip
mdvictor Mar 3, 2025
016e2d6
wip
mdvictor Mar 4, 2025
50462d9
move original vals and op logic back in _updateFilter
mdvictor Mar 4, 2025
450df7a
wip
mdvictor Mar 4, 2025
4e853b3
refactor
mdvictor Mar 5, 2025
6293fff
filter out scope filters from suggestions if they have been injected
mdvictor Mar 10, 2025
45dc998
temporary fix, will refactor after scopes refactor prs get merged
mdvictor Mar 10, 2025
7db2a10
AdhocVariable: Inject scopes in baseFilters
mdvictor Mar 11, 2025
6e25e08
refactor
mdvictor Mar 11, 2025
62bc0e5
Merge branch 'main' into mdvictor/allow-injected-filters-edit
mdvictor Mar 11, 2025
75441a6
refactor
mdvictor Mar 11, 2025
e968b0e
Merge branch 'mdvictor/scopes-adhoc-inject' into mdvictor/allow-injec…
mdvictor Mar 11, 2025
829f623
fix
mdvictor Mar 11, 2025
daa4fa5
maintain edited scope injected filters acroos dashboards
mdvictor Mar 12, 2025
3fb3462
refactor + tests
mdvictor Mar 13, 2025
89a3b1d
refactor
mdvictor Mar 13, 2025
a10f3ff
refactor
mdvictor Mar 13, 2025
602a829
refactor
mdvictor Mar 13, 2025
76f2a21
fix key binding issues with combobox
mdvictor Mar 18, 2025
c90b5aa
explain url sync format for injected filters
mdvictor Mar 18, 2025
58fd11d
fix
mdvictor Mar 19, 2025
89877d2
Merge branch 'main' into mdvictor/allow-injected-filters-edit
mdvictor Mar 19, 2025
5029451
fix
mdvictor Mar 19, 2025
c931e8f
keybinding to restore filter
mdvictor Mar 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@ export function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }:
const handleChangeViewMode = useCallback(
(event?: React.MouseEvent, shouldFocusOnPillWrapperOverride?: boolean) => {
event?.stopPropagation();
if (readOnly || filter.origin) {
if (readOnly) {
return;
}

setShouldFocusOnPillWrapper(shouldFocusOnPillWrapperOverride ?? !viewMode);
setViewMode(!viewMode);
},
[readOnly, viewMode, filter.origin]
[readOnly, viewMode]
);

useEffect(() => {
Expand Down Expand Up @@ -115,14 +115,34 @@ export function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }:
/>
) : null}

{filter.origin && (
{filter.origin && !filter.originalValue && (
<IconButton
name="info-circle"
size="md"
className={styles.pillIcon}
tooltip={`This is a ${filter.origin} injected filter`}
/>
)}

{filter.origin && filter.originalValue && (
<IconButton
onClick={(e) => {
e.stopPropagation();
model.restoreOriginalFilter(filter);
}}
onKeyDownCapture={(e) => {
if (e.key === 'Enter') {
e.preventDefault();
e.stopPropagation();
model.restoreOriginalFilter(filter);
}
}}
name="history"
size="md"
className={styles.pillIcon}
tooltip={`Restore filter to its original value`}
/>
)}
</div>
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ export const AdHocCombobox = forwardRef(function AdHocCombobox(
valueLabels.push(item.label ?? item.value!);
values.push(item.value!);
});

model._updateFilter(filter!, { valueLabels, values, value: values[0] });
setFilterMultiValues([]);
}
Expand Down Expand Up @@ -288,6 +289,10 @@ export const AdHocCombobox = forwardRef(function AdHocCombobox(
return;
}
}
if (filter?.origin) {
return;
}

setInputType('operator');
return;
}
Expand Down Expand Up @@ -518,22 +523,36 @@ export const AdHocCombobox = forwardRef(function AdHocCombobox(
{filter?.key && filter?.operator && filterInputType !== 'operator' ? (
<div
id={operatorIdentifier}
className={cx(styles.basePill, styles.operatorPill, operatorIdentifier)}
role="button"
className={cx(
styles.basePill,
!filter.origin && styles.operatorPill,
filter.origin && styles.keyPill,
operatorIdentifier
)}
aria-label="Edit filter operator"
tabIndex={0}
tabIndex={filter.origin ? -1 : 0}
onClick={(event) => {
if (filter.origin) {
handleChangeViewMode?.();
return;
}

event.stopPropagation();
setInputValue('');
switchInputType('operator', setInputType, undefined, refs.domReference.current);
}}
onKeyDown={(event) => {
if (filter.origin) {
return;
}

handleShiftTabInput(event, hasMultiValueOperator);
if (event.key === 'Enter') {
setInputValue('');
switchInputType('operator', setInputType, undefined, refs.domReference.current);
}
}}
{...(!filter.origin && { role: 'button' })}
>
{filter.operator}
</div>
Expand Down
Loading