Second frontend, written in Next.JS + Typescript.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.3 KiB

4 years ago
4 years ago
4 years ago
  1. import React from "react";
  2. import { parse } from "url";
  3. import { GetServerSideProps } from "next";
  4. import Head from "next/head";
  5. import { LogHeader, listLogs, LogFilter, logFilterFromQueryString } from "../../lib/rpdata/logs";
  6. import gqlSsrClient from "../../lib/client/graphql-ssr";
  7. import { LogListContextProvider } from "../../hooks/LogListContext";
  8. import { LogFilterChoiceContextProvider } from "../../hooks/LogFilterChoiceContext";
  9. import LogList from "../../components/logs/LogList";
  10. import LogFilterSelector from "../../components/logs/LogFilterSelector";
  11. interface LogsPageProps {
  12. headers: LogHeader[]
  13. filter: LogFilter
  14. };
  15. export default function LogsPage(props: LogsPageProps) {
  16. return (
  17. <LogListContextProvider initialFilter={props.filter} initialHeader={props.headers}>
  18. <Head>
  19. <title>Logs - Aite RP</title>
  20. </Head>
  21. <LogFilterChoiceContextProvider>
  22. <LogFilterSelector />
  23. </LogFilterChoiceContextProvider>
  24. <LogList />
  25. </LogListContextProvider>
  26. );
  27. }
  28. export const getServerSideProps: GetServerSideProps = async (ctx) => {
  29. const u = parse(ctx.req.url);
  30. const filter = logFilterFromQueryString(u.search || "");
  31. const headers = await listLogs(gqlSsrClient, filter)
  32. return {
  33. props: {
  34. filter,
  35. headers,
  36. },
  37. };
  38. }
  39. export const experimental = {
  40. trailingSlash: true
  41. }