diff --git a/package.json b/package.json index 79731389..83ad4b4a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fabric-portal", - "version": "1.6.4", + "version": "1.6.5", "private": true, "dependencies": { "@fortawesome/fontawesome-svg-core": "^1.2.32", diff --git a/src/components/Resource/ToolLinks.jsx b/src/components/Resource/ToolLinks.jsx new file mode 100644 index 00000000..09d60639 --- /dev/null +++ b/src/components/Resource/ToolLinks.jsx @@ -0,0 +1,57 @@ +import InfrastructureMetrics from '../../imgs/toolLinks/InfrastructureMetrics.png'; +import PublicMetrics from '../../imgs/toolLinks/PublicMetrics.png'; +import OpticalData from '../../imgs/toolLinks/OpticalData.png'; +import Parser from 'html-react-parser'; + +const ToolLinks = ()=> { + const toolsData = [ + { + "title": "Public Metrics", + "image": PublicMetrics, + "content": "This site contains basic metrics concerning FABRIC network. These metrics are available to anyone. Anyone is allowed anonymous access to Grafana.", + "link": "https://public-metrics.fabric-testbed.net/grafana/" + }, + { + "title": "Infrastructure Metrics", + "image": InfrastructureMetrics, + "content": "This site contains enhanced metrics concerning FABRIC site usage and availability. These metrics are available to any FABRIC user. Logon is available as an anonymous Grafana user to anyone with a FABRIC account.", + "link": "https://infrastructure-metrics.fabric-testbed.net/grafana/" + }, + { + "title": "Optical Data", + "image": OpticalData, + "content": "This is a space where ESnet shares public Grafana dashboards of targeted data sets. It complements the data found at the my.es.net portal. The data comes primarily from ESnet's Stardust system and provides a flexible way to show interesting views of the data.", + "link": "https://public.stardust.es.net/dashboards/f/fdhq1z6q5smwwb/?orgId=2" + } + ] + return ( +
+ { + toolsData.map((tool, index) => +
+

+ {tool.title} +

+
+
+ {`tool-link-${tool.title}`}/ +
+
+

{Parser(tool.content)}

+ + + +
+
+
+ ) + } +
+ ) +} + +export default ToolLinks; diff --git a/src/imgs/toolLinks/InfrastructureMetrics.png b/src/imgs/toolLinks/InfrastructureMetrics.png new file mode 100644 index 00000000..c6bffef6 Binary files /dev/null and b/src/imgs/toolLinks/InfrastructureMetrics.png differ diff --git a/src/imgs/toolLinks/OpticalData.png b/src/imgs/toolLinks/OpticalData.png new file mode 100644 index 00000000..5a088bd9 Binary files /dev/null and b/src/imgs/toolLinks/OpticalData.png differ diff --git a/src/imgs/toolLinks/PublicMetrics.png b/src/imgs/toolLinks/PublicMetrics.png new file mode 100644 index 00000000..f01346a1 Binary files /dev/null and b/src/imgs/toolLinks/PublicMetrics.png differ diff --git a/src/pages/ProjectForm.jsx b/src/pages/ProjectForm.jsx index 595dd592..033bdd78 100644 --- a/src/pages/ProjectForm.jsx +++ b/src/pages/ProjectForm.jsx @@ -19,6 +19,7 @@ import checkGlobalRoles from "../utils/checkGlobalRoles"; import SpinnerFullPage from "../components/common/SpinnerFullPage"; import Slices from "../components/Experiment/Slices"; import moment from 'moment'; +import utcToLocalTimeParser from "../utils/utcToLocalTimeParser.js"; import { getProjectById, getProjectTags, @@ -665,7 +666,7 @@ class ProjectForm extends Form { >
- This project is going to expire in a month. + This project is going to expire in a month on {utcToLocalTimeParser(data.expired)}. { canUpdate ? Please submit a ticket to renew the project. : Please contact your project owner to request project renewal. diff --git a/src/pages/Resources.jsx b/src/pages/Resources.jsx index c58c6628..9e83ab1b 100644 --- a/src/pages/Resources.jsx +++ b/src/pages/Resources.jsx @@ -5,7 +5,9 @@ import DetailTable from "../components/Resource/DetailTable"; import Pagination from "../components/common/Pagination"; import SearchBox from "../components/common/SearchBox"; import SummaryTable from "../components/Resource/SummaryTable"; +import ToolLinks from "../components/Resource/ToolLinks.jsx"; import withRouter from "../components/common/withRouter.jsx"; +import Tabs from "../components/common/Tabs"; import { sitesNameMapping } from "../data/sites"; import sitesParser from "../services/parser/sitesParser"; import { getResources } from "../services/resourceService.js"; @@ -137,46 +139,53 @@ class Resources extends Component { return (

Resources

-
- -
-
-
- + +
+
+ +
+
+
+ +
+
+ +
+
+
+
+ +

Showing resource availability of {totalCount} sites.

+ + +
+
-
- +
+
-
-
-
- -

Showing resource availability of {totalCount} sites.

- - -
-
+
); } diff --git a/src/services/portalData.json b/src/services/portalData.json index 0e543339..df075019 100644 --- a/src/services/portalData.json +++ b/src/services/portalData.json @@ -1,5 +1,5 @@ { - "version": "1.6.4", + "version": "1.6.5", "defaultFacility": "FABRIC", "facilityOptions": ["FABRIC"], "keyLimit": 10, diff --git a/src/styles/App.scss b/src/styles/App.scss index 0c76ce07..ea1af47d 100644 --- a/src/styles/App.scss +++ b/src/styles/App.scss @@ -1165,4 +1165,13 @@ ul, .resource-detail-table td { padding: 0.5rem 0.75rem !important; +} + +.tool-link-block img { + width: 100%; + border-radius: 2%; +} + +.tool-link-block p { + line-height: 200%; } \ No newline at end of file