diff --git a/extensions/ql-vscode/src/view/common/RawNumberValue.tsx b/extensions/ql-vscode/src/view/common/RawNumberValue.tsx
new file mode 100644
index 00000000000..0744ffa9c8a
--- /dev/null
+++ b/extensions/ql-vscode/src/view/common/RawNumberValue.tsx
@@ -0,0 +1,17 @@
+import * as React from "react";
+import { styled } from "styled-components";
+import { formatDecimal } from "../../common/number";
+
+const RightAlignedSpan = styled.span`
+ display: inline-block;
+ text-align: right;
+ width: 100%;
+`;
+
+type Props = {
+ value: number;
+};
+
+export const RawNumberValue = ({ value }: Props) => {
+ return {formatDecimal(value)};
+};
diff --git a/extensions/ql-vscode/src/view/results/RawTableValue.tsx b/extensions/ql-vscode/src/view/results/RawTableValue.tsx
index fb5155a0042..368131c26e1 100644
--- a/extensions/ql-vscode/src/view/results/RawTableValue.tsx
+++ b/extensions/ql-vscode/src/view/results/RawTableValue.tsx
@@ -2,6 +2,7 @@ import * as React from "react";
import { Location } from "./locations/Location";
import { CellValue } from "../../common/bqrs-cli-types";
+import { RawNumberValue } from "../common/RawNumberValue";
interface Props {
value: CellValue;
@@ -9,22 +10,26 @@ interface Props {
onSelected?: () => void;
}
-export default function RawTableValue(props: Props): JSX.Element {
- const rawValue = props.value;
- if (
- typeof rawValue === "string" ||
- typeof rawValue === "number" ||
- typeof rawValue === "boolean"
- ) {
- return ;
+export default function RawTableValue({
+ value,
+ databaseUri,
+ onSelected,
+}: Props): JSX.Element {
+ switch (typeof value) {
+ case "boolean":
+ return {value.toString()};
+ case "number":
+ return ;
+ case "string":
+ return ;
+ default:
+ return (
+
+ );
}
-
- return (
-
- );
}
diff --git a/extensions/ql-vscode/src/view/variant-analysis/RawResultCell.tsx b/extensions/ql-vscode/src/view/variant-analysis/RawResultCell.tsx
index 7d8cc77a691..557b78199d4 100644
--- a/extensions/ql-vscode/src/view/variant-analysis/RawResultCell.tsx
+++ b/extensions/ql-vscode/src/view/variant-analysis/RawResultCell.tsx
@@ -5,6 +5,7 @@ import { CellValue } from "../../common/bqrs-cli-types";
import { sendTelemetry } from "../common/telemetry";
import { convertNonPrintableChars } from "../../common/text-utils";
import { tryGetRemoteLocation } from "../../common/bqrs-utils";
+import { RawNumberValue } from "../common/RawNumberValue";
type CellProps = {
value: CellValue;
@@ -20,9 +21,11 @@ export const RawResultCell = ({
sourceLocationPrefix,
}: CellProps) => {
switch (typeof value) {
- case "string":
- case "number":
case "boolean":
+ return {value.toString()};
+ case "number":
+ return ;
+ case "string":
return {convertNonPrintableChars(value.toString())};
case "object": {
const url = tryGetRemoteLocation(
diff --git a/extensions/ql-vscode/src/view/variant-analysis/__tests__/AnalyzedRepoItemContent.spec.tsx b/extensions/ql-vscode/src/view/variant-analysis/__tests__/AnalyzedRepoItemContent.spec.tsx
index e880f24bdc6..9d5f7e92178 100644
--- a/extensions/ql-vscode/src/view/variant-analysis/__tests__/AnalyzedRepoItemContent.spec.tsx
+++ b/extensions/ql-vscode/src/view/variant-analysis/__tests__/AnalyzedRepoItemContent.spec.tsx
@@ -71,6 +71,12 @@ describe(AnalyzedRepoItemContent.name, () => {
{
kind: "i",
},
+ {
+ kind: "s",
+ },
+ {
+ kind: "b",
+ },
],
},
resultSet: {
@@ -81,9 +87,18 @@ describe(AnalyzedRepoItemContent.name, () => {
{
kind: "i",
},
+ {
+ kind: "s",
+ },
+ {
+ kind: "b",
+ },
],
},
- rows: [[60688]],
+ rows: [
+ [60688, "foo", true],
+ [5, "bar", false],
+ ],
},
fileLinkPrefix:
"https://github.com/octodemo/hello-world-1/blob/59a2a6c7d9dde7a6ecb77c2f7e8197d6925c143b",
@@ -92,7 +107,12 @@ describe(AnalyzedRepoItemContent.name, () => {
},
});
- expect(screen.getByText("60688")).toBeInTheDocument();
+ expect(screen.getByText("60,688")).toBeInTheDocument();
+ expect(screen.getByText("foo")).toBeInTheDocument();
+ expect(screen.getByText("true")).toBeInTheDocument();
+ expect(screen.getByText("5")).toBeInTheDocument();
+ expect(screen.getByText("bar")).toBeInTheDocument();
+ expect(screen.getByText("false")).toBeInTheDocument();
});
it("renders the failed state", () => {