From c6b8facc78192a4a24554371e8ed719a9b0f75a8 Mon Sep 17 00:00:00 2001 From: freshavocado7 Date: Thu, 27 Jun 2024 11:42:51 +0200 Subject: [PATCH] feat: Improve app information component - Remove distinction between backend and frontend version - Add "Contribute on Github" link - Rename component from SoftwareVersion to AppInfo for clearer intent and purpose --- frontend/package-lock.json | 9 +++++ frontend/package.json | 1 + frontend/src/components/AppInfo.jsx | 35 ++++++++++++++++++ frontend/src/components/InstanceView.jsx | 4 +-- frontend/src/components/SoftwareVersion.jsx | 39 --------------------- frontend/src/views/HomeView.jsx | 6 ++-- frontend/src/views/TemplateView.jsx | 4 +-- 7 files changed, 52 insertions(+), 46 deletions(-) create mode 100644 frontend/src/components/AppInfo.jsx delete mode 100644 frontend/src/components/SoftwareVersion.jsx diff --git a/frontend/package-lock.json b/frontend/package-lock.json index f3f0d70..380544c 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,6 +8,7 @@ "name": "frontend", "version": "0.0.0", "dependencies": { + "@icons-pack/react-simple-icons": "^10.0.0", "lucide-react": "^0.439.0", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -2531,6 +2532,14 @@ "deprecated": "Use @eslint/object-schema instead", "dev": true }, + "node_modules/@icons-pack/react-simple-icons": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@icons-pack/react-simple-icons/-/react-simple-icons-10.0.0.tgz", + "integrity": "sha512-oU0PVDx9sbNQjRxJN555dsHbRApYN+aBq/O9+wo3JgNkEfvBMgAEtsSGtXWWXQsLAxJcYiFOCzBWege/Xj/JFQ==", + "peerDependencies": { + "react": "^16.13 || ^17 || ^18" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", diff --git a/frontend/package.json b/frontend/package.json index 1609fed..7f9e643 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,6 +13,7 @@ "format": "prettier --write ./**/*.{js,jsx,ts,tsx,css,md,json} --config ./.prettierrc.json" }, "dependencies": { + "@icons-pack/react-simple-icons": "^10.0.0", "lucide-react": "^0.439.0", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/frontend/src/components/AppInfo.jsx b/frontend/src/components/AppInfo.jsx new file mode 100644 index 0000000..0004e08 --- /dev/null +++ b/frontend/src/components/AppInfo.jsx @@ -0,0 +1,35 @@ +// Copyright DB InfraGO AG and contributors +// SPDX-License-Identifier: Apache-2.0 + +import { useState, useEffect } from 'react'; +import { ROUTE_PREFIX } from '../APIConfig'; +import { SiGithub } from '@icons-pack/react-simple-icons'; + +export const AppInfo = () => { + const [currentVersion, setCurrentVersion] = useState(null); + + useEffect(() => { + fetch(`${ROUTE_PREFIX}/static/version.json`) + .then((response) => response.json()) + .then((data) => setCurrentVersion(data.git)) + .catch((error) => { + console.error(error); + setCurrentVersion({ version: 'Fetch failed' }); + }); + }, []); + + return ( +
+ {currentVersion &&

Version: {currentVersion.version}

} + + Contribute on GitHub +
+ +
+
+
+ ); +}; diff --git a/frontend/src/components/InstanceView.jsx b/frontend/src/components/InstanceView.jsx index 425a65b..7c291d3 100644 --- a/frontend/src/components/InstanceView.jsx +++ b/frontend/src/components/InstanceView.jsx @@ -5,7 +5,7 @@ import { useEffect, useRef, useState } from 'react'; import { SVGDisplay } from './SVGDisplay'; import { Spinner } from './Spinner'; import { Printer } from 'lucide-react'; -import { SoftwareVersion } from './SoftwareVersion'; +import { AppInfo } from './AppInfo'; export const InstanceView = ({ templateName, objectID, endpoint }) => { const [details, setDetails] = useState([]); @@ -112,7 +112,7 @@ export const InstanceView = ({ templateName, objectID, endpoint }) => { })}
- +
); diff --git a/frontend/src/components/SoftwareVersion.jsx b/frontend/src/components/SoftwareVersion.jsx deleted file mode 100644 index 8b9e0e0..0000000 --- a/frontend/src/components/SoftwareVersion.jsx +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright DB InfraGO AG and contributors -// SPDX-License-Identifier: Apache-2.0 - -import { useState, useEffect } from 'react'; -import { API_BASE_URL, ROUTE_PREFIX } from '../APIConfig'; - -export const SoftwareVersion = () => { - const [frontendVersion, setFrontendVersion] = useState(null); - const [backendVersion, setBackendVersion] = useState(null); - - useEffect(() => { - fetch(`${ROUTE_PREFIX}/static/version.json`) - .then((response) => response.json()) - .then((data) => setFrontendVersion(data.git)) - .catch((error) => { - console.error(error); - setFrontendVersion({ version: 'Fetch failed' }); - }); - }, []); - - useEffect(() => { - fetch(`${API_BASE_URL}/metadata`) - .then((response) => response.json()) - .then((data) => setBackendVersion(data.version)) - .catch((error) => { - console.error(error); - setBackendVersion('Fetch failed'); - }); - }, []); - - return ( -
- {frontendVersion && ( -

Frontend Version: {frontendVersion.version}

- )} - {backendVersion &&

Backend Version: {backendVersion}

} -
- ); -}; diff --git a/frontend/src/views/HomeView.jsx b/frontend/src/views/HomeView.jsx index 31a2977..981d224 100644 --- a/frontend/src/views/HomeView.jsx +++ b/frontend/src/views/HomeView.jsx @@ -4,7 +4,7 @@ import React, { useState, useEffect } from 'react'; import { WiredTemplatesList } from '../components/WiredTemplatesList'; import { API_BASE_URL } from '../APIConfig'; -import { SoftwareVersion } from '../components/SoftwareVersion'; +import { AppInfo } from '../components/AppInfo'; import { ModelDiff } from '../components/ModelDiff'; export const HomeView = () => { @@ -127,8 +127,8 @@ export const HomeView = () => {
-
- +
+
); diff --git a/frontend/src/views/TemplateView.jsx b/frontend/src/views/TemplateView.jsx index 2025049..6d85716 100644 --- a/frontend/src/views/TemplateView.jsx +++ b/frontend/src/views/TemplateView.jsx @@ -15,7 +15,7 @@ import { useMediaQuery } from "react-responsive"; import { Header } from "../components/Header"; import { InstanceView } from "../components/InstanceView"; import { TemplateDetails } from "../components/TemplateDetails"; -import { SoftwareVersion } from "../components/SoftwareVersion"; +import { AppInfo } from "../components/AppInfo"; export const TemplateView = ({ endpoint }) => { let { templateName, objectID } = useParams(); @@ -108,7 +108,7 @@ export const TemplateView = ({ endpoint }) => {
- +
);