Skip to content

Commit 599145b

Browse files
author
Adam Tackett
committed
progress on eui data grid and query
Signed-off-by: Adam Tackett <[email protected]>
1 parent f059ffa commit 599145b

File tree

6 files changed

+222
-154
lines changed

6 files changed

+222
-154
lines changed

public/components/trace_analytics/components/common/shared_components/custom_datagrid.tsx

+10-5
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ interface RenderCustomDataGridParams {
8181
isTableDataLoading?: boolean;
8282
tracesTableMode?: string;
8383
setTracesTableMode?: (mode: string) => void;
84-
toggleAttributesButton?: React.ReactNode;
8584
}
8685

8786
export const RenderCustomDataGrid: React.FC<RenderCustomDataGridParams> = ({
@@ -99,11 +98,18 @@ export const RenderCustomDataGrid: React.FC<RenderCustomDataGridParams> = ({
9998
isTableDataLoading,
10099
tracesTableMode,
101100
setTracesTableMode,
102-
toggleAttributesButton
103101
}) => {
102+
103+
const defaultVisibleColumns = useMemo(() => {
104+
return columns
105+
.filter((col) => !col.id.includes('attributes') && !col.id.includes('instrumentation'))
106+
.map((col) => col.id);
107+
}, [columns]);
108+
104109
const [localVisibleColumns, setLocalVisibleColumns] = useState(
105-
visibleColumns ?? columns.map((col) => col.id)
110+
visibleColumns ?? defaultVisibleColumns
106111
);
112+
107113
const [isFullScreen, setIsFullScreen] = useState(fullScreen);
108114
const [isPopoverOpen, setIsPopoverOpen] = useState(false);
109115

@@ -180,9 +186,8 @@ export const RenderCustomDataGrid: React.FC<RenderCustomDataGridParams> = ({
180186
})}
181187
</EuiButtonEmpty>,
182188
...toolbarButtons,
183-
...(toggleAttributesButton ? [toggleAttributesButton] : [])
184189
],
185-
[isFullScreen, toolbarButtons, tracesTableMode, toggleAttributesButton]
190+
[isFullScreen, toolbarButtons, tracesTableMode]
186191
);
187192

188193
const gridStyle = useMemo(

public/components/trace_analytics/components/traces/trace_table_helpers.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ import { TraceAnalyticsMode, TraceQueryMode } from '../../../../../common/types/
2121
import { appendModeToTraceViewUri, nanoToMilliSec } from '../common/helper_functions';
2222

2323
export const fetchDynamicColumns = (columnItems: string[]) => {
24-
return columnItems
24+
const safeColumnItems = Array.isArray(columnItems) ? columnItems : [];
25+
26+
return safeColumnItems
2527
.filter((col) => col.includes('attributes') || col.includes('instrumentation'))
2628
.map((col) => ({
2729
className: 'attributes-column',
@@ -52,7 +54,6 @@ export const fetchDynamicColumns = (columnItems: string[]) => {
5254
};
5355

5456
export const getTableColumns = (
55-
showAttributes: boolean,
5657
columnItems: string[],
5758
mode: TraceAnalyticsMode,
5859
tracesTableMode: TraceQueryMode,
@@ -188,7 +189,7 @@ export const getTableColumns = (
188189
render: renderDateField,
189190
className: 'span-group-column',
190191
},
191-
...(showAttributes ? fetchDynamicColumns(columnItems) : []),
192+
...fetchDynamicColumns(columnItems),
192193
] as Array<EuiTableFieldDataColumnType<any>>;
193194
}
194195

public/components/trace_analytics/components/traces/traces_content.tsx

+102-22
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,73 @@ export function TracesContent(props: TracesProps) {
7474
const [includeMetrics, setIncludeMetrics] = useState(false);
7575
const isNavGroupEnabled = coreRefs?.chrome?.navGroup.getNavGroupEnabled();
7676

77+
//ADAM TESITNG DELETE console.log
78+
const defaultSortField = props.tracesTableMode === 'traces' ? 'last_updated' : 'endTime';
79+
const [sortingColumns, setSortingColumns] = useState<{ id: string; direction: "desc" | "asc" }[]>([{ id: defaultSortField, direction: "desc"}]);
80+
/** Sorting state */
81+
//const [sortingColumns, setSortingColumns] = useState<{ id: string; direction: "desc" | "asc" }[]>([]);
82+
83+
const [pageIndex, setPageIndex] = useState(0);
84+
const [pageSize, setPageSize] = useState(10);
85+
86+
const onSort = (sortColumns: { id: string; direction: "desc" | "asc" }[]) => {
87+
console.log("THE SORTING ADAM", sortColumns);//ADAM DELETE
88+
89+
if (!sortColumns || sortColumns.length === 0) {
90+
setSortingColumns([]);
91+
refresh(undefined, query, pageIndex, pageSize);
92+
return;
93+
}
94+
95+
const sortField = sortColumns[0]?.id;
96+
const sortDirection = sortColumns[0]?.direction;
97+
98+
if (!sortField || !sortDirection) {
99+
console.error("Invalid sorting column:", sortColumns);
100+
return;
101+
}
102+
103+
setSortingColumns(sortColumns);
104+
refresh(
105+
{ field: sortField, direction: sortDirection },
106+
query,
107+
pageIndex,
108+
pageSize
109+
);
110+
};
111+
112+
const [totalHits, setTotalHits] = useState(0);
113+
114+
const pagination = {
115+
pageIndex,
116+
pageSize,
117+
pageSizeOptions: [5, 10, 15],
118+
totalItemCount: totalHits,
119+
onChangePage: (newPage) => {
120+
setPageIndex(newPage);
121+
refresh(
122+
sortingColumns.length > 0
123+
? { field: sortingColumns[0].id, direction: sortingColumns[0].direction }
124+
: undefined,
125+
query,
126+
newPage,
127+
pageSize
128+
);
129+
},
130+
onChangeItemsPerPage: (newSize) => {
131+
setPageSize(newSize);
132+
setPageIndex(0);
133+
refresh(
134+
sortingColumns.length > 0
135+
? { field: sortingColumns[0].id, direction: sortingColumns[0].direction }
136+
: undefined,
137+
query,
138+
0,
139+
newSize
140+
);
141+
},
142+
};
143+
77144
useEffect(() => {
78145
chrome.setBreadcrumbs([
79146
...(isNavGroupEnabled ? [] : [props.parentBreadcrumb]),
@@ -141,7 +208,12 @@ export function TracesContent(props: TracesProps) {
141208
setFilters(newFilters);
142209
};
143210

144-
const refresh = async (sort?: PropertySort, overrideQuery?: string) => {
211+
const refresh = async (
212+
sort?: PropertySort,
213+
overrideQuery?: string,
214+
newPageIndex: number = pageIndex,
215+
newPageSize: number = pageSize
216+
) => {
145217
const filterQuery = overrideQuery ?? query;
146218
const DSL = filtersToDsl(
147219
mode,
@@ -164,6 +236,7 @@ export function TracesContent(props: TracesProps) {
164236

165237
setIsTraceTableLoading(true);
166238

239+
//console.log("THE SORTING ADAM",sort?.field, sort?.direction);//ADAM DELETE
167240
if (mode === 'custom_data_prepper') {
168241
// Remove serviceName filter from service map query
169242
const serviceMapDSL = cloneDeep(DSL);
@@ -174,28 +247,31 @@ export function TracesContent(props: TracesProps) {
174247
const tracesRequest =
175248
tracesTableMode !== 'traces'
176249
? handleCustomIndicesTracesRequest(
177-
http,
178-
DSL,
179-
tableItems,
180-
setTableItems,
181-
setColumns,
182-
mode,
183-
props.dataSourceMDSId[0].id,
184-
sort,
185-
tracesTableMode,
186-
isUnderOneHour
187-
)
250+
http,
251+
DSL,
252+
tableItems,
253+
setTableItems,
254+
setColumns,
255+
mode,
256+
newPageIndex,
257+
newPageSize,
258+
setTotalHits,
259+
props.dataSourceMDSId[0]?.id,
260+
sort,
261+
tracesTableMode,
262+
isUnderOneHour
263+
)
188264
: handleTracesRequest(
189-
http,
190-
DSL,
191-
timeFilterDSL,
192-
tableItems,
193-
setTableItems,
194-
mode,
195-
props.dataSourceMDSId[0].id,
196-
sort,
197-
isUnderOneHour
198-
);
265+
http,
266+
DSL,
267+
timeFilterDSL,
268+
tableItems,
269+
setTableItems,
270+
mode,
271+
props.dataSourceMDSId[0].id,
272+
sort,
273+
isUnderOneHour
274+
);
199275

200276
tracesRequest.finally(() => setIsTraceTableLoading(false));
201277

@@ -272,6 +348,7 @@ export function TracesContent(props: TracesProps) {
272348
<TracesCustomIndicesTable
273349
columnItems={columns}
274350
items={tableItems}
351+
totalHits={totalHits}
275352
refresh={refresh}
276353
mode={mode}
277354
loading={isTraceTableLoading}
@@ -281,6 +358,9 @@ export function TracesContent(props: TracesProps) {
281358
dataPrepperIndicesExist={dataPrepperIndicesExist}
282359
tracesTableMode={tracesTableMode}
283360
setTracesTableMode={setTracesTableMode}
361+
sorting={sortingColumns}
362+
pagination={pagination}
363+
onSort={onSort}
284364
/>
285365
) : (
286366
<TracesTable

0 commit comments

Comments
 (0)