+
+
diff --git a/portal-ui/src/screens/Console/Logs/LogSearch/LogsSearchMain.tsx b/portal-ui/src/screens/Console/Logs/LogSearch/LogsSearchMain.tsx
index c66f902c9..42fe92688 100644
--- a/portal-ui/src/screens/Console/Logs/LogSearch/LogsSearchMain.tsx
+++ b/portal-ui/src/screens/Console/Logs/LogSearch/LogsSearchMain.tsx
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
-import React, { Fragment, useState, useEffect, useCallback } from "react";
+import React, { Fragment, useCallback, useEffect, useState } from "react";
import { connect } from "react-redux";
import get from "lodash/get";
import { Theme } from "@mui/material/styles";
@@ -40,6 +40,8 @@ import FilterInputWrapper from "../../Common/FormComponents/FilterInputWrapper/F
import LogSearchFullModal from "./LogSearchFullModal";
import { LogSearchColumnLabels } from "./utils";
import DateRangeSelector from "../../Common/FormComponents/DateRangeSelector/DateRangeSelector";
+import PageHeader from "../../Common/PageHeader/PageHeader";
+import BackLink from "../../../../common/BackLink";
interface ILogSearchProps {
classes: any;
@@ -285,187 +287,199 @@ const LogsSearchMain = ({
onClose={closeViewExtraInformation}
/>
)}
-
-
-
+
+
+
+
+
-
-
+
-
-
- Enable your preferred options to get filtered records.
-
- You can use '*' to match any character, '.' to signify a single
- character or '\' to scape an special character (E.g. mybucket-*)
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ Enable your preferred options to get filtered records.
+
+ You can use '*' to match any character, '.' to signify a
+ single character or '\' to scape an special character (E.g.
+ mybucket-*)
+
+
+
+
+ (
+
+
+ {element.response_status_code} (
+ {element.response_status})
+
+
+ ),
+ renderFullObject: true,
+ },
+ {
+ label: LogSearchColumnLabels.request_content_length,
+ elementKey: "request_content_length",
+ renderFunction: niceBytes,
+ },
+ {
+ label: LogSearchColumnLabels.response_content_length,
+ elementKey: "response_content_length",
+ renderFunction: niceBytes,
+ },
+ {
+ label: LogSearchColumnLabels.time_to_response_ns,
+ elementKey: "time_to_response_ns",
+ renderFunction: nsToSeconds,
+ contentTextAlign: "right",
+ },
+ ]}
+ isLoading={loading}
+ records={records}
+ entityName="Logs"
+ customEmptyMessage={"There is no information with this criteria"}
+ idField="request_id"
+ columnsSelector
+ columnsShown={columnsShown}
+ onColumnChange={selectColumn}
+ customPaperHeight={
+ filterOpen ? classes.tableFOpen : classes.tableFClosed
+ }
+ sortConfig={{
+ currentSort: "time",
+ currentDirection: sortOrder,
+ triggerSort: sortChange,
+ }}
+ infiniteScrollConfig={{
+ recordsCount: 1000000,
+ loadMoreRecords: loadMoreRecords,
+ }}
+ itemActions={[
+ {
+ type: "view",
+ onClick: openExtraInformation,
+ },
+ ]}
+ textSelectable
+ />
+
diff --git a/portal-ui/src/screens/Console/Logs/LogsMain.tsx b/portal-ui/src/screens/Console/Logs/LogsMain.tsx
deleted file mode 100644
index 888f81dd4..000000000
--- a/portal-ui/src/screens/Console/Logs/LogsMain.tsx
+++ /dev/null
@@ -1,102 +0,0 @@
-// This file is part of MinIO Console Server
-// Copyright (c) 2021 MinIO, Inc.
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-import React, { Fragment, useState } from "react";
-import { connect } from "react-redux";
-import PageHeader from "../Common/PageHeader/PageHeader";
-import { Grid, List, ListItem, ListItemText } from "@mui/material";
-import { Theme } from "@mui/material/styles";
-import createStyles from "@mui/styles/createStyles";
-import withStyles from "@mui/styles/withStyles";
-import { containerForHeader } from "../Common/FormComponents/common/styleLibrary";
-import ErrorLogs from "./ErrorLogs/ErrorLogs";
-import LogsSearchMain from "./LogSearch/LogsSearchMain";
-import { AppState } from "../../../store";
-
-interface ILogsMainProps {
- classes: any;
- features: string[] | null;
-}
-
-const styles = (theme: Theme) =>
- createStyles({
- headerLabel: {
- fontSize: 22,
- fontWeight: 600,
- color: "#000",
- marginTop: 4,
- },
- ...containerForHeader(theme.spacing(4)),
- });
-
-const LogsMain = ({ classes, features }: ILogsMainProps) => {
- const [currentTab, setCurrentTab] = useState(0);
-
- const logSearchEnabled = features && features.includes("log-search");
-
- return (
-
-
-
-
-
- {
- setCurrentTab(0);
- }}
- >
-
-
- {
- setCurrentTab(1);
- }}
- >
-
-
-
-
-
- {currentTab === 0 && (
-
-
-
- );
-};
-
-const mapState = (state: AppState) => ({
- advancedMode: state.tenants.createTenant.advancedModeOn,
- enableTLS: state.tenants.createTenant.fields.security.enableTLS,
- tenantName: state.tenants.createTenant.fields.nameTenant.tenantName,
- selectedStorageClass:
- state.tenants.createTenant.fields.nameTenant.selectedStorageClass,
- customImage: state.tenants.createTenant.fields.configure.customImage,
- imageName: state.tenants.createTenant.fields.configure.imageName,
- namespace: state.tenants.createTenant.fields.nameTenant.namespace,
- volumeSize: state.tenants.createTenant.fields.tenantSize.volumeSize,
- sizeFactor: state.tenants.createTenant.fields.tenantSize.sizeFactor,
-});
-
-const connector = connect(mapState, {});
-
-export default withStyles(styles)(connector(Preview));
diff --git a/portal-ui/src/screens/Console/Tenants/ListTenants/ListTenants.tsx b/portal-ui/src/screens/Console/Tenants/ListTenants/ListTenants.tsx
index 1ee2d3346..8345b0306 100644
--- a/portal-ui/src/screens/Console/Tenants/ListTenants/ListTenants.tsx
+++ b/portal-ui/src/screens/Console/Tenants/ListTenants/ListTenants.tsx
@@ -19,7 +19,7 @@ import { connect } from "react-redux";
import Grid from "@mui/material/Grid";
import TextField from "@mui/material/TextField";
import InputAdornment from "@mui/material/InputAdornment";
-import { Box, Button, IconButton, LinearProgress } from "@mui/material";
+import { Box, Button, LinearProgress } from "@mui/material";
import { Theme } from "@mui/material/styles";
import createStyles from "@mui/styles/createStyles";
import withStyles from "@mui/styles/withStyles";
diff --git a/portal-ui/src/screens/Console/Tenants/TenantDetails/ReplicationSetup.tsx b/portal-ui/src/screens/Console/Tenants/TenantDetails/ReplicationSetup.tsx
deleted file mode 100644
index 2d839ef36..000000000
--- a/portal-ui/src/screens/Console/Tenants/TenantDetails/ReplicationSetup.tsx
+++ /dev/null
@@ -1,219 +0,0 @@
-// This file is part of MinIO Console Server
-// Copyright (c) 2021 MinIO, Inc.
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-import React, { useState } from "react";
-import { Theme } from "@mui/material/styles";
-import createStyles from "@mui/styles/createStyles";
-import withStyles from "@mui/styles/withStyles";
-import { modalBasic } from "../../Common/FormComponents/common/styleLibrary";
-import Grid from "@mui/material/Grid";
-import InputBoxWrapper from "../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
-import SelectWrapper from "../../Common/FormComponents/SelectWrapper/SelectWrapper";
-import { Button, LinearProgress, SelectChangeEvent } from "@mui/material";
-import ModalWrapper from "../../Common/ModalWrapper/ModalWrapper";
-import Tab from "@mui/material/Tab";
-import Tabs from "@mui/material/Tabs";
-
-interface IReplicationProps {
- classes: any;
- open: boolean;
- closeModalAndRefresh: (refreshList: boolean) => void;
-}
-
-interface IDropDownElements {
- label: string;
- value: string;
-}
-
-const styles = (theme: Theme) =>
- createStyles({
- buttonContainer: {
- textAlign: "right",
- },
- multiContainer: {
- display: "flex",
- alignItems: "center" as const,
- justifyContent: "flex-start" as const,
- },
- sizeFactorContainer: {
- marginLeft: 8,
- },
- ...modalBasic,
- });
-
-const ReplicationSetup = ({
- classes,
- open,
- closeModalAndRefresh,
-}: IReplicationProps) => {
- const [addSending, setAddSending] = useState(false);
- const [selectedTab, setSelectedTab] = useState(0);
- const [sourceBucket, setSourceBucket] = useState("");
- const [clusterSelected, setClusterSelected] = useState("");
- const [destinationBucket, setDestinationBucket] = useState("");
- const [address, setAddress] = useState("");
- const [bucket, setBucket] = useState("");
- const [accessKey, setAccessKey] = useState("");
- const [secretKey, setSecretKey] = useState("");
-
- const clustersList: IDropDownElements[] = [];
- const sourceBuckets: IDropDownElements[] = [];
- const destinationBuckets: IDropDownElements[] = [];
-
- return (
- {
- closeModalAndRefresh(false);
- }}
- >
-
-
- );
-};
-
-export default withStyles(styles)(ReplicationSetup);
diff --git a/portal-ui/src/screens/Console/Account/types.tsx b/portal-ui/src/screens/Console/Tools/Tools.tsx
similarity index 61%
rename from portal-ui/src/screens/Console/Account/types.tsx
rename to portal-ui/src/screens/Console/Tools/Tools.tsx
index dfb1f210f..ee2b2e030 100644
--- a/portal-ui/src/screens/Console/Account/types.tsx
+++ b/portal-ui/src/screens/Console/Tools/Tools.tsx
@@ -14,7 +14,21 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
-export interface ServiceAccountsList {
- service_accounts: string[];
- total: number;
-}
+import React from "react";
+import { Route, Router, Switch } from "react-router-dom";
+import history from "../../../history";
+import NotFoundPage from "../../NotFoundPage";
+import ToolsList from "./ToolsPanel/ToolsList";
+
+const Tools = () => {
+ return (
+
+
+
+
+
+
+ );
+};
+
+export default Tools;
diff --git a/portal-ui/src/screens/Console/Tools/ToolsPanel/ToolsList.tsx b/portal-ui/src/screens/Console/Tools/ToolsPanel/ToolsList.tsx
new file mode 100644
index 000000000..50eb01edd
--- /dev/null
+++ b/portal-ui/src/screens/Console/Tools/ToolsPanel/ToolsList.tsx
@@ -0,0 +1,100 @@
+// This file is part of MinIO Console Server
+// Copyright (c) 2021 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+import React, { Fragment } from "react";
+import { Theme } from "@mui/material/styles";
+import createStyles from "@mui/styles/createStyles";
+import withStyles from "@mui/styles/withStyles";
+import Grid from "@mui/material/Grid";
+
+import { configurationElements } from "../utils";
+import {
+ actionsTray,
+ containerForHeader,
+ searchField,
+} from "../../Common/FormComponents/common/styleLibrary";
+import PageHeader from "../../Common/PageHeader/PageHeader";
+import SettingsCard from "../../Common/SettingsCard/SettingsCard";
+
+interface IConfigurationOptions {
+ classes: any;
+}
+
+const styles = (theme: Theme) =>
+ createStyles({
+ strongText: {
+ fontWeight: 700,
+ },
+ keyName: {
+ marginLeft: 5,
+ },
+ iconText: {
+ lineHeight: "24px",
+ },
+ customConfigurationPage: {
+ height: "calc(100vh - 324px)",
+ scrollbarWidth: "none" as const,
+ "&::-webkit-scrollbar": {
+ display: "none",
+ },
+ },
+ settingsOptionsContainer: {
+ display: "flex" as const,
+ flexDirection: "row" as const,
+ justifyContent: "flex-start" as const,
+ flexWrap: "wrap" as const,
+ border: "#E5E5E5 1px solid",
+ borderRadius: 2,
+ padding: 5,
+ backgroundColor: "#fff",
+ },
+ configurationLink: {
+ border: "#E5E5E5 1px solid",
+ borderRadius: 2,
+ padding: 20,
+ width: 190,
+ height: 80,
+ margin: 15,
+ },
+ ...searchField,
+ ...actionsTray,
+ ...containerForHeader(theme.spacing(4)),
+ });
+
+const ToolsList = ({ classes }: IConfigurationOptions) => {
+ return (
+
+
+
+
+
+