Minor UI improvements
Summary: Addresses feedback from: https://github.com/facebook/flipper/issues/2076 - fix filtering non-string columns - fix overflow in filter dropdown - hide app column on all devices - show pid column on android, to simplify filtering per app Reviewed By: passy Differential Revision: D27188458 fbshipit-source-id: b6180fb5a8d0a47e50dd5dc3533da3ff1b0a1a2e
This commit is contained in:
committed by
Facebook GitHub Bot
parent
c648c58825
commit
8f90deda55
@@ -79,7 +79,7 @@ export function FilterIcon({
|
|||||||
filters?.map((filter, index) => (
|
filters?.map((filter, index) => (
|
||||||
<Menu.Item key={index}>
|
<Menu.Item key={index}>
|
||||||
<Layout.Right center>
|
<Layout.Right center>
|
||||||
<Checkbox
|
<FilterCheckbox
|
||||||
checked={filter.enabled}
|
checked={filter.enabled}
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
@@ -91,7 +91,7 @@ export function FilterIcon({
|
|||||||
});
|
});
|
||||||
}}>
|
}}>
|
||||||
{filter.label}
|
{filter.label}
|
||||||
</Checkbox>
|
</FilterCheckbox>
|
||||||
{!filter.predefined && (
|
{!filter.predefined && (
|
||||||
<MinusCircleOutlined
|
<MinusCircleOutlined
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
@@ -185,3 +185,9 @@ export const FilterButton = styled.div<{isActive?: boolean}>(({isActive}) => ({
|
|||||||
backgroundColor: theme.backgroundWash,
|
backgroundColor: theme.backgroundWash,
|
||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
const FilterCheckbox = styled(Checkbox)({
|
||||||
|
maxWidth: 600,
|
||||||
|
overflow: 'hidden',
|
||||||
|
textOverflow: 'ellipsis',
|
||||||
|
});
|
||||||
|
|||||||
@@ -323,13 +323,13 @@ function addColumnFilter<T>(
|
|||||||
disableOthers: boolean = false,
|
disableOthers: boolean = false,
|
||||||
): void {
|
): void {
|
||||||
const column = columns.find((c) => c.key === columnId)!;
|
const column = columns.find((c) => c.key === columnId)!;
|
||||||
const filterValue = value.toLowerCase();
|
const filterValue = String(value).toLowerCase();
|
||||||
const existing = column.filters!.find((c) => c.value === filterValue);
|
const existing = column.filters!.find((c) => c.value === filterValue);
|
||||||
if (existing) {
|
if (existing) {
|
||||||
existing.enabled = true;
|
existing.enabled = true;
|
||||||
} else {
|
} else {
|
||||||
column.filters!.push({
|
column.filters!.push({
|
||||||
label: value,
|
label: String(value),
|
||||||
value: filterValue,
|
value: filterValue,
|
||||||
enabled: true,
|
enabled: true,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -34,7 +34,10 @@ export type ExtendedLogEntry = DeviceLogEntry & {
|
|||||||
count: number;
|
count: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
const columns: DataTableColumn<ExtendedLogEntry>[] = [
|
function createColumnConfig(
|
||||||
|
os: 'iOS' | 'Android' | 'Metro',
|
||||||
|
): DataTableColumn<ExtendedLogEntry>[] {
|
||||||
|
return [
|
||||||
{
|
{
|
||||||
key: 'type',
|
key: 'type',
|
||||||
title: '',
|
title: '',
|
||||||
@@ -71,7 +74,7 @@ const columns: DataTableColumn<ExtendedLogEntry>[] = [
|
|||||||
key: 'pid',
|
key: 'pid',
|
||||||
title: 'PID',
|
title: 'PID',
|
||||||
width: 60,
|
width: 60,
|
||||||
visible: false,
|
visible: os === 'Android',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'tid',
|
key: 'tid',
|
||||||
@@ -96,7 +99,8 @@ const columns: DataTableColumn<ExtendedLogEntry>[] = [
|
|||||||
wrap: true,
|
wrap: true,
|
||||||
formatters: [DataFormatter.prettyPrintJson, DataFormatter.linkify],
|
formatters: [DataFormatter.prettyPrintJson, DataFormatter.linkify],
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
}
|
||||||
|
|
||||||
function getRowStyle(entry: DeviceLogEntry): CSSProperties | undefined {
|
function getRowStyle(entry: DeviceLogEntry): CSSProperties | undefined {
|
||||||
return (logTypes[entry.type]?.style as any) ?? baseRowStyle;
|
return (logTypes[entry.type]?.style as any) ?? baseRowStyle;
|
||||||
@@ -198,7 +202,10 @@ export function devicePlugin(client: DevicePluginClient) {
|
|||||||
// start listening to the logs
|
// start listening to the logs
|
||||||
resumePause();
|
resumePause();
|
||||||
|
|
||||||
|
const columns = createColumnConfig(client.device.os as any);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
columns,
|
||||||
isConnected: client.device.isConnected,
|
isConnected: client.device.isConnected,
|
||||||
isPaused,
|
isPaused,
|
||||||
tableManagerRef,
|
tableManagerRef,
|
||||||
@@ -214,7 +221,7 @@ export function Component() {
|
|||||||
return (
|
return (
|
||||||
<DataTable<ExtendedLogEntry>
|
<DataTable<ExtendedLogEntry>
|
||||||
dataSource={plugin.rows}
|
dataSource={plugin.rows}
|
||||||
columns={columns}
|
columns={plugin.columns}
|
||||||
autoScroll
|
autoScroll
|
||||||
onRowStyle={getRowStyle}
|
onRowStyle={getRowStyle}
|
||||||
extraActions={
|
extraActions={
|
||||||
|
|||||||
Reference in New Issue
Block a user