From 950830571e21fd0ae49e9816e6027e18ce0d0985 Mon Sep 17 00:00:00 2001 From: Nikita Nek Dudnik Date: Tue, 5 May 2020 16:44:39 +0200 Subject: [PATCH] Add ugly log visualization --- plugins/circleci/src/api/index.ts | 1 + .../components/ActionOutput/ActionOutput.tsx | 14 +++++ .../src/components/ActionOutput/index.ts | 1 + .../components/PluginHeader/PluginHeader.tsx | 18 +++++++ .../src/components/PluginHeader/index.ts | 1 + .../DetailedViewPage/DetailedViewPage.tsx | 54 +++++++++++++------ .../src/pages/DetailedViewPage/index.ts | 1 + 7 files changed, 74 insertions(+), 16 deletions(-) create mode 100644 plugins/circleci/src/components/ActionOutput/ActionOutput.tsx create mode 100644 plugins/circleci/src/components/ActionOutput/index.ts create mode 100644 plugins/circleci/src/components/PluginHeader/PluginHeader.tsx create mode 100644 plugins/circleci/src/components/PluginHeader/index.ts create mode 100644 plugins/circleci/src/pages/DetailedViewPage/index.ts diff --git a/plugins/circleci/src/api/index.ts b/plugins/circleci/src/api/index.ts index 362657326e..7ce157057b 100644 --- a/plugins/circleci/src/api/index.ts +++ b/plugins/circleci/src/api/index.ts @@ -31,6 +31,7 @@ export const circleCIApiRef = new ApiRef({ }); export class CircleCIApi { + private token: string = ''; options: Partial; diff --git a/plugins/circleci/src/components/ActionOutput/ActionOutput.tsx b/plugins/circleci/src/components/ActionOutput/ActionOutput.tsx new file mode 100644 index 0000000000..79f8954a73 --- /dev/null +++ b/plugins/circleci/src/components/ActionOutput/ActionOutput.tsx @@ -0,0 +1,14 @@ +import React, { useEffect, useState, FC } from 'react'; + +export const ActionOutput: FC<{ url: string }> = ({ url }) => { + //@ts-ignore + const [messages, setMessages] = useState([]); + useEffect(() => { + fetch(url) + .then(res => res.json()) + .then((messages) => { + messages && setMessages(messages.map(({message}: {message: string}) => message)) + }); + }, [url]); + return
{messages}
; +}; diff --git a/plugins/circleci/src/components/ActionOutput/index.ts b/plugins/circleci/src/components/ActionOutput/index.ts new file mode 100644 index 0000000000..1e4fd5dfac --- /dev/null +++ b/plugins/circleci/src/components/ActionOutput/index.ts @@ -0,0 +1 @@ +export { ActionOutput } from './ActionOutput'; diff --git a/plugins/circleci/src/components/PluginHeader/PluginHeader.tsx b/plugins/circleci/src/components/PluginHeader/PluginHeader.tsx new file mode 100644 index 0000000000..f725a979a9 --- /dev/null +++ b/plugins/circleci/src/components/PluginHeader/PluginHeader.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { Link as RouterLink } from 'react-router-dom'; +import { ContentHeader, SupportButton } from '@backstage/core'; +import { Button } from '@material-ui/core'; +import { Settings as SettingsIcon } from '@material-ui/icons'; + +export const PluginHeader = () => ( + + + A description of your plugin goes here. + +); diff --git a/plugins/circleci/src/components/PluginHeader/index.ts b/plugins/circleci/src/components/PluginHeader/index.ts new file mode 100644 index 0000000000..e9231f1318 --- /dev/null +++ b/plugins/circleci/src/components/PluginHeader/index.ts @@ -0,0 +1 @@ +export * from './PluginHeader'; diff --git a/plugins/circleci/src/pages/DetailedViewPage/DetailedViewPage.tsx b/plugins/circleci/src/pages/DetailedViewPage/DetailedViewPage.tsx index e7441b979a..ce1b87b36a 100644 --- a/plugins/circleci/src/pages/DetailedViewPage/DetailedViewPage.tsx +++ b/plugins/circleci/src/pages/DetailedViewPage/DetailedViewPage.tsx @@ -2,20 +2,16 @@ import React, { FC } from 'react'; import { Content, InfoCard, useApi } from '@backstage/core'; import { Grid, List, ListItem } from '@material-ui/core'; import { PluginHeader } from 'components/PluginHeader'; -import { BuildWithSteps, BuildStep } from 'circleci-api'; +import { BuildWithSteps, BuildStepAction } from 'circleci-api'; import { circleCIApiRef } from 'api'; -// import { LazyLog } from 'react-lazylog'; import { useParams } from 'react-router-dom'; +import { ActionOutput } from '../../components/ActionOutput/ActionOutput'; export const DetailedViewPage: FC<{}> = () => { let { buildId = '' } = useParams(); - console.log(useParams()); - const [authed, setAuthed] = React.useState(false); - - //@ts-ignore - const [build, setBuild] = React.useState({}); + const [build, setBuild] = React.useState(null); const api = useApi(circleCIApiRef); React.useEffect(() => { @@ -33,19 +29,45 @@ export const DetailedViewPage: FC<{}> = () => { }; getBuildAsync(); }, [authed, buildId]); - return ( - - - - - {build.steps && build.steps.map(({name}: {name: string}) => ({name}))} - - + {!api.authed ? ( +
Not authenticated
+ ) : ( + + + + + -
+ )}
); }; + +const BuildsList: FC<{ build: BuildWithSteps | null }> = ({ build }) => ( + + {build && + build.steps && + build.steps.map( + ({ name, actions }: { name: string; actions: BuildStepAction[] }) => ( + + {name} +
+ +
+ ), + )} +
+); + +const ActionsList: FC<{ actions: BuildStepAction[] }> = ({ actions }) => ( + + {actions.map((action: BuildStepAction) => ( + + + + ))} + +); diff --git a/plugins/circleci/src/pages/DetailedViewPage/index.ts b/plugins/circleci/src/pages/DetailedViewPage/index.ts new file mode 100644 index 0000000000..578eec4e64 --- /dev/null +++ b/plugins/circleci/src/pages/DetailedViewPage/index.ts @@ -0,0 +1 @@ +export * from './DetailedViewPage';