Skip to content

Commit 6c7bfe6

Browse files
bexsoftBenjamin Perez
andauthored
Improved Tiers page (#894)
Added relevant instructions for tiers name & returned correct errors from MinIO Co-authored-by: Benjamin Perez <benjamin@bexsoft.net>
1 parent 419fa59 commit 6c7bfe6

File tree

11 files changed

+69
-26
lines changed

11 files changed

+69
-26
lines changed

portal-ui/build/asset-manifest.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
{
22
"files": {
33
"main.css": "/static/css/main.8cfac526.chunk.css",
4-
"main.js": "/static/js/main.cd39de89.chunk.js",
5-
"main.js.map": "/static/js/main.cd39de89.chunk.js.map",
4+
"main.js": "/static/js/main.c2e8f74d.chunk.js",
5+
"main.js.map": "/static/js/main.c2e8f74d.chunk.js.map",
66
"runtime-main.js": "/static/js/runtime-main.43a31377.js",
77
"runtime-main.js.map": "/static/js/runtime-main.43a31377.js.map",
88
"static/css/2.c5a51b70.chunk.css": "/static/css/2.c5a51b70.chunk.css",
9-
"static/js/2.58cdc602.chunk.js": "/static/js/2.58cdc602.chunk.js",
10-
"static/js/2.58cdc602.chunk.js.map": "/static/js/2.58cdc602.chunk.js.map",
9+
"static/js/2.c512ce9d.chunk.js": "/static/js/2.c512ce9d.chunk.js",
10+
"static/js/2.c512ce9d.chunk.js.map": "/static/js/2.c512ce9d.chunk.js.map",
1111
"index.html": "/index.html",
1212
"static/css/2.c5a51b70.chunk.css.map": "/static/css/2.c5a51b70.chunk.css.map",
1313
"static/css/main.8cfac526.chunk.css.map": "/static/css/main.8cfac526.chunk.css.map",
14-
"static/js/2.58cdc602.chunk.js.LICENSE.txt": "/static/js/2.58cdc602.chunk.js.LICENSE.txt",
14+
"static/js/2.c512ce9d.chunk.js.LICENSE.txt": "/static/js/2.c512ce9d.chunk.js.LICENSE.txt",
1515
"static/media/minio_console_logo.0837460e.svg": "/static/media/minio_console_logo.0837460e.svg",
1616
"static/media/minio_operator_logo.1312b7c9.svg": "/static/media/minio_operator_logo.1312b7c9.svg"
1717
},
1818
"entrypoints": [
1919
"static/js/runtime-main.43a31377.js",
2020
"static/css/2.c5a51b70.chunk.css",
21-
"static/js/2.58cdc602.chunk.js",
21+
"static/js/2.c512ce9d.chunk.js",
2222
"static/css/main.8cfac526.chunk.css",
23-
"static/js/main.cd39de89.chunk.js"
23+
"static/js/main.c2e8f74d.chunk.js"
2424
]
2525
}

portal-ui/build/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="MinIO Console"/><link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;500;700;900&display=swap" rel="stylesheet"/><link href="/styles/root-styles.css" rel="stylesheet"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/><link rel="manifest" href="/manifest.json"/><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#3a4e54"/><title>MinIO Console</title><link href="/static/css/2.c5a51b70.chunk.css" rel="stylesheet"><link href="/static/css/main.8cfac526.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"><div id="loader-block"><svg class="loader-svg-container" viewBox="22 22 44 44"><circle class="loader-style MuiCircularProgress-circle MuiCircularProgress-circleIndeterminate" cx="44" cy="44" r="20.2" fill="none" stroke-width="3.6"></circle></svg></div></div><script>!function(e){function r(r){for(var n,l,i=r[0],a=r[1],p=r[2],c=0,s=[];c<i.length;c++)l=i[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(f&&f(r);s.length;)s.shift()();return u.push.apply(u,p||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var a=t[i];0!==o[a]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={1:0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var i=this["webpackJsonpportal-ui"]=this["webpackJsonpportal-ui"]||[],a=i.push.bind(i);i.push=r,i=i.slice();for(var p=0;p<i.length;p++)r(i[p]);var f=a;t()}([])</script><script src="/static/js/2.58cdc602.chunk.js"></script><script src="/static/js/main.cd39de89.chunk.js"></script></body></html>
1+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="MinIO Console"/><link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;500;700;900&display=swap" rel="stylesheet"/><link href="/styles/root-styles.css" rel="stylesheet"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/><link rel="manifest" href="/manifest.json"/><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#3a4e54"/><title>MinIO Console</title><link href="/static/css/2.c5a51b70.chunk.css" rel="stylesheet"><link href="/static/css/main.8cfac526.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"><div id="loader-block"><svg class="loader-svg-container" viewBox="22 22 44 44"><circle class="loader-style MuiCircularProgress-circle MuiCircularProgress-circleIndeterminate" cx="44" cy="44" r="20.2" fill="none" stroke-width="3.6"></circle></svg></div></div><script>!function(e){function r(r){for(var n,l,i=r[0],a=r[1],p=r[2],c=0,s=[];c<i.length;c++)l=i[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(f&&f(r);s.length;)s.shift()();return u.push.apply(u,p||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var a=t[i];0!==o[a]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={1:0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var i=this["webpackJsonpportal-ui"]=this["webpackJsonpportal-ui"]||[],a=i.push.bind(i);i.push=r,i=i.slice();for(var p=0;p<i.length;p++)r(i[p]);var f=a;t()}([])</script><script src="/static/js/2.c512ce9d.chunk.js"></script><script src="/static/js/main.c2e8f74d.chunk.js"></script></body></html>

portal-ui/build/static/js/2.58cdc602.chunk.js renamed to portal-ui/build/static/js/2.c512ce9d.chunk.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

portal-ui/build/static/js/2.58cdc602.chunk.js.map renamed to portal-ui/build/static/js/2.c512ce9d.chunk.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

portal-ui/build/static/js/main.c2e8f74d.chunk.js

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

portal-ui/build/static/js/main.c2e8f74d.chunk.js.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

portal-ui/build/static/js/main.cd39de89.chunk.js

Lines changed: 0 additions & 2 deletions
This file was deleted.

portal-ui/build/static/js/main.cd39de89.chunk.js.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

portal-ui/src/screens/Console/Configurations/TiersConfiguration/AddTierConfiguration.tsx

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
// You should have received a copy of the GNU Affero General Public License
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

17-
import React, { Fragment, useEffect, useState } from "react";
17+
import React, { Fragment, useEffect, useState, useCallback } from "react";
1818
import { connect } from "react-redux";
1919
import Grid from "@material-ui/core/Grid";
2020
import { createStyles, Theme, withStyles } from "@material-ui/core/styles";
@@ -88,6 +88,22 @@ const AddTierConfiguration = ({
8888

8989
// Validations
9090
const [isFormValid, setIsFormValid] = useState<boolean>(true);
91+
const [nameInputError, setNameInputError] = useState<string>("");
92+
93+
// Extra validation functions
94+
95+
const validName = useCallback(() => {
96+
const patternAgainst = /^[A-Z0-9-_]+$/; // Only allow uppercase, numbers, dashes and underscores
97+
if (patternAgainst.test(name)) {
98+
setNameInputError("");
99+
return true;
100+
}
101+
102+
setNameInputError(
103+
"Please verify that string is uppercase only and contains valid characters (numbers, dashes & underscores)."
104+
);
105+
return false;
106+
}, [name]);
91107

92108
//Effects
93109

@@ -177,11 +193,7 @@ const AddTierConfiguration = ({
177193
if (type === "") {
178194
valid = false;
179195
}
180-
181-
if (type === "") {
182-
valid = false;
183-
}
184-
if (name === "") {
196+
if (name === "" || !validName()) {
185197
valid = false;
186198
}
187199
if (endpoint === "") {
@@ -236,6 +248,7 @@ const AddTierConfiguration = ({
236248
secretKey,
237249
storageClass,
238250
type,
251+
validName,
239252
]);
240253

241254
useEffect(() => {
@@ -264,6 +277,11 @@ const AddTierConfiguration = ({
264277
setSaving(true);
265278
};
266279

280+
// Input actions
281+
const updateTierName = (e: React.ChangeEvent<HTMLInputElement>) => {
282+
setName(e.target.value.toUpperCase());
283+
};
284+
267285
return (
268286
<Fragment>
269287
<form noValidate onSubmit={submitForm}>
@@ -278,11 +296,10 @@ const AddTierConfiguration = ({
278296
id="name"
279297
name="name"
280298
label="Name"
281-
placeholder="Enter Name"
299+
placeholder="Enter Name (Eg. REMOTE-TIER)"
282300
value={name}
283-
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
284-
setName(e.target.value);
285-
}}
301+
onChange={updateTierName}
302+
error={nameInputError}
286303
/>
287304
<InputBoxWrapper
288305
id="endpoint"

0 commit comments

Comments
 (0)