link-stack/apps/leafcutter/app/(main)/preview/[...visualizationID]/page.tsx

88 lines
2.2 KiB
TypeScript
Raw Normal View History

2023-02-13 13:46:56 +00:00
/* eslint-disable no-underscore-dangle */
// import { Client } from "@opensearch-project/opensearch";
2024-06-05 08:52:41 +02:00
import { Preview } from "@link-stack/leafcutter-ui";
2023-02-13 13:46:56 +00:00
// import { createVisualization } from "lib/opensearch";
2023-06-28 10:52:23 +00:00
export default function Page() {
2023-08-25 07:11:33 +00:00
return <Preview visualization={undefined} visualizationType={""} data={[]} />;
2023-02-13 13:46:56 +00:00
}
2023-05-25 12:37:14 +00:00
/*
2023-02-13 13:46:56 +00:00
export const getServerSideProps: GetServerSideProps = async (
context: GetServerSidePropsContext
) => {
2023-05-25 12:37:14 +00:00
2023-02-13 13:46:56 +00:00
const {
visualizationID,
searchQuery,
visualizationType = "table",
} = context.query;
const node = `https://${process.env.OPENSEARCH_USERNAME}:${process.env.OPENSEARCH_PASSWORD}@${process.env.OPENSEARCH_URL}`;
const client = new Client({
node,
ssl: {
rejectUnauthorized: false,
},
});
res.props.visualizationType = visualizationType as string;
if (visualizationType !== "rawData") {
await createVisualization({
id: visualizationID as string,
query: await JSON.parse(decodeURI(searchQuery as string)),
kind: visualizationType as string,
});
const rawResponse = await client.search({
index: ".kibana_1",
size: 200,
});
const response = rawResponse.body;
const hits = response.hits.hits.filter(
(hit) => hit._id.split(":")[1] === visualizationID[0]
);
const hit = hits[0];
res.props.visualization = {
id: hit._id.split(":")[1],
title: hit._source.visualization.title,
description: hit._source.visualization.description,
url: `/app/visualize?security_tenant=global#/edit/${
hit._id.split(":")[1]
}?embed=true`,
};
}
const rawQuery = await JSON.parse(decodeURI(searchQuery as string));
const query = {
bool: {
should: [],
must_not: [],
},
};
if (rawQuery.impactedTechnology.values.length > 0) {
rawQuery.impactedTechnology.values.forEach((value) => {
query.bool.should.push({
match: { technology: value },
});
});
}
const dataResponse = await client.search({
index: "demo_data",
size: 200,
body: { query },
});
res.props.data = dataResponse.body.hits.hits.map((hit) => ({
id: hit._id,
...hit._source,
}));
2025-01-22 17:50:38 +01:00
2023-05-25 12:37:14 +00:00
2023-02-13 13:46:56 +00:00
return res;
};
2023-05-25 12:37:14 +00:00
*/