diff --git a/web/ui/react-app/src/pages/graph/DataTable.test.tsx b/web/ui/react-app/src/pages/graph/DataTable.test.tsx
index adb5d2a734..382653df24 100755
--- a/web/ui/react-app/src/pages/graph/DataTable.test.tsx
+++ b/web/ui/react-app/src/pages/graph/DataTable.test.tsx
@@ -103,8 +103,42 @@ describe('DataTable', () => {
});
it('renders a warning', () => {
- const alert = dataTable.find(Alert);
- expect(alert.render().text()).toEqual('Warning: Fetched 10001 metrics, only displaying first 10000.');
+ const alerts = dataTable.find(Alert);
+ expect(
+ alerts
+ .first()
+ .render()
+ .text()
+ ).toEqual('Warning: Fetched 10001 metrics, only displaying first 10000.');
+ });
+ });
+
+ describe('when resultType is vector and size is more than maximum limit of formatting', () => {
+ const dataTableProps: QueryResult = {
+ data: {
+ resultType: 'vector',
+ result: Array.from(Array(1001).keys()).map(i => {
+ return {
+ metric: {
+ __name__: `metric_name_${i}`,
+ label1: 'value_1',
+ labeln: 'value_n',
+ },
+ value: [1572098246.599, `${i}`],
+ };
+ }),
+ },
+ };
+ const dataTable = shallow();
+
+ it('renders a warning', () => {
+ const alerts = dataTable.find(Alert);
+ expect(
+ alerts
+ .first()
+ .render()
+ .text()
+ ).toEqual('Notice: Showing more than 1000 series, turning off label formatting for performance reasons.');
});
});
diff --git a/web/ui/react-app/src/pages/graph/DataTable.tsx b/web/ui/react-app/src/pages/graph/DataTable.tsx
index 27b10222c2..a6e728e9a2 100644
--- a/web/ui/react-app/src/pages/graph/DataTable.tsx
+++ b/web/ui/react-app/src/pages/graph/DataTable.tsx
@@ -56,8 +56,10 @@ const DataTable: FC = ({ data }) => {
return Empty query result;
}
+ const maxFormattableSize = 1000;
let rows: ReactNode[] = [];
let limited = false;
+ const doFormat = data.result.length <= maxFormattableSize;
switch (data.resultType) {
case 'vector':
rows = (limitSeries(data.result) as InstantSample[]).map(
@@ -65,7 +67,7 @@ const DataTable: FC = ({ data }) => {
return (
|
-
+
|
{s.value[1]} |
@@ -84,7 +86,7 @@ const DataTable: FC = ({ data }) => {
return (
|
-
+
|
{valueText} |
@@ -119,6 +121,12 @@ const DataTable: FC = ({ data }) => {
Warning: Fetched {data.result.length} metrics, only displaying first {rows.length}.
)}
+ {!doFormat && (
+
+ Notice: Showing more than {maxFormattableSize} series, turning off label formatting for
+ performance reasons.
+
+ )}