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 { VisualizationDetail } from "@link-stack/leafcutter-ui";
|
2023-02-13 13:46:56 +00:00
|
|
|
|
2023-06-28 09:09:45 +00:00
|
|
|
const getVisualization = async (visualizationID: string) => {
|
2023-02-13 13:46:56 +00:00
|
|
|
const node = `https://${process.env.OPENSEARCH_USERNAME}:${process.env.OPENSEARCH_PASSWORD}@${process.env.OPENSEARCH_URL}`;
|
|
|
|
|
const client = new Client({
|
|
|
|
|
node,
|
|
|
|
|
ssl: {
|
|
|
|
|
rejectUnauthorized: false,
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const rawResponse = await client.search({
|
|
|
|
|
index: ".kibana_1",
|
|
|
|
|
size: 200,
|
|
|
|
|
});
|
|
|
|
|
const response = rawResponse.body;
|
|
|
|
|
|
|
|
|
|
const hits = response.hits.hits.filter(
|
2023-08-25 07:11:33 +00:00
|
|
|
(hit: any) => hit._id.split(":")[1] === visualizationID[0],
|
2023-02-13 13:46:56 +00:00
|
|
|
);
|
|
|
|
|
const hit = hits[0];
|
2023-05-25 12:37:14 +00:00
|
|
|
const visualization = {
|
2025-01-15 14:15:02 +01:00
|
|
|
id: hit?._id.split(":")[1],
|
|
|
|
|
title: hit?._source?.visualization.title,
|
|
|
|
|
description: hit?._source?.visualization.description,
|
2023-02-13 13:46:56 +00:00
|
|
|
url: `/app/visualize?security_tenant=global#/edit/${
|
|
|
|
|
hit._id.split(":")[1]
|
|
|
|
|
}?embed=true`,
|
|
|
|
|
};
|
|
|
|
|
|
2023-06-28 09:09:45 +00:00
|
|
|
return visualization;
|
2023-07-11 13:48:05 +00:00
|
|
|
};
|
2023-06-28 09:09:45 +00:00
|
|
|
|
|
|
|
|
type PageProps = {
|
2024-11-25 09:31:25 +01:00
|
|
|
params: Promise<{
|
2023-06-28 09:09:45 +00:00
|
|
|
visualizationID: string;
|
2024-11-25 09:31:25 +01:00
|
|
|
}>;
|
2023-07-11 13:48:05 +00:00
|
|
|
};
|
2023-06-28 09:09:45 +00:00
|
|
|
|
2024-11-25 09:31:25 +01:00
|
|
|
export default async function Page({ params }: PageProps) {
|
|
|
|
|
const { visualizationID } = await params;
|
2023-06-28 09:09:45 +00:00
|
|
|
const visualization = await getVisualization(visualizationID);
|
|
|
|
|
|
2023-07-11 13:48:05 +00:00
|
|
|
return <VisualizationDetail {...visualization} editing={false} />;
|
2023-06-28 09:09:45 +00:00
|
|
|
}
|