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}`}/]({tool.image})
+
+
+
+
+ )
+ }
+
+ )
+}
+
+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