Merge branch 'main' of https://git.innov.energy/Innovenergy/git_trunk
This commit is contained in:
commit
ca85fc17e5
|
@ -0,0 +1,136 @@
|
||||||
|
{
|
||||||
|
"Information": {
|
||||||
|
"defaultMessage": "Information"
|
||||||
|
},
|
||||||
|
"addNewChild": {
|
||||||
|
"defaultMessage": "Neues Kind hinzufügen"
|
||||||
|
},
|
||||||
|
"addNewDialogButton": {
|
||||||
|
"defaultMessage": "Neue Dialogschaltfläche hinzufügen"
|
||||||
|
},
|
||||||
|
"addUser": {
|
||||||
|
"defaultMessage": "Nutzer erstellen"
|
||||||
|
},
|
||||||
|
"alarms": {
|
||||||
|
"defaultMessage": "Alarme"
|
||||||
|
},
|
||||||
|
"applyChanges": {
|
||||||
|
"defaultMessage": "Änderungen speichern"
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"defaultMessage": "Land"
|
||||||
|
},
|
||||||
|
"createNewFolder": {
|
||||||
|
"defaultMessage": "Neuen Ordner erstellen"
|
||||||
|
},
|
||||||
|
"createNewUser": {
|
||||||
|
"defaultMessage": "Neuen Nutzer erstellen"
|
||||||
|
},
|
||||||
|
"customerName": {
|
||||||
|
"defaultMessage": "Kundenname"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"defaultMessage": "Email"
|
||||||
|
},
|
||||||
|
"english": {
|
||||||
|
"defaultMessage": "Englisch"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
},
|
||||||
|
"folder": {
|
||||||
|
"defaultMessage": "Ordner"
|
||||||
|
},
|
||||||
|
"german": {
|
||||||
|
"defaultMessage": "Deutsch"
|
||||||
|
},
|
||||||
|
"groupTabs": {
|
||||||
|
"defaultMessage": "Gruppen"
|
||||||
|
},
|
||||||
|
"groupTree": {
|
||||||
|
"defaultMessage": "Gruppenbaum"
|
||||||
|
},
|
||||||
|
"information": {
|
||||||
|
"defaultMessage": "Information"
|
||||||
|
},
|
||||||
|
"inheritedAccess": {
|
||||||
|
"defaultMessage": "Vererbter Zugriff von"
|
||||||
|
},
|
||||||
|
"installation": {
|
||||||
|
"defaultMessage": "Installation"
|
||||||
|
},
|
||||||
|
"installationTabs": {
|
||||||
|
"defaultMessage": "Installationen"
|
||||||
|
},
|
||||||
|
"installations": {
|
||||||
|
"defaultMessage": "Installationen"
|
||||||
|
},
|
||||||
|
"lastWeek": {
|
||||||
|
"defaultMessage": "Letzte Woche"
|
||||||
|
},
|
||||||
|
"location": {
|
||||||
|
"defaultMessage": "Standort"
|
||||||
|
},
|
||||||
|
"log": {
|
||||||
|
"defaultMessage": "Logbuch"
|
||||||
|
},
|
||||||
|
"logout": {
|
||||||
|
"defaultMessage": "Abmelden"
|
||||||
|
},
|
||||||
|
"makeASelection": {
|
||||||
|
"defaultMessage": "Bitte wählen Sie links eine Auswahl"
|
||||||
|
},
|
||||||
|
"manageAccess": {
|
||||||
|
"defaultMessage": "Zugriff verwalten"
|
||||||
|
},
|
||||||
|
"move": {
|
||||||
|
"defaultMessage": "Verschieben"
|
||||||
|
},
|
||||||
|
"moveTo": {
|
||||||
|
"defaultMessage": "Verschieben zu"
|
||||||
|
},
|
||||||
|
"moveTree": {
|
||||||
|
"defaultMessage": "Baum verschieben"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"defaultMessage": "Name"
|
||||||
|
},
|
||||||
|
"navigationTabs": {
|
||||||
|
"defaultMessage": "Navigation"
|
||||||
|
},
|
||||||
|
"orderNumbers": {
|
||||||
|
"defaultMessage": "Bestellnummer"
|
||||||
|
},
|
||||||
|
"region": {
|
||||||
|
"defaultMessage": "Region"
|
||||||
|
},
|
||||||
|
"requiredLocation": {
|
||||||
|
"defaultMessage": "Standort ist erforderlich"
|
||||||
|
},
|
||||||
|
"requiredName": {
|
||||||
|
"defaultMessage": "Name ist erforderlich"
|
||||||
|
},
|
||||||
|
"requiredRegion": {
|
||||||
|
"defaultMessage": "Region ist erforderlich"
|
||||||
|
},
|
||||||
|
"search": {
|
||||||
|
"defaultMessage": "Suche"
|
||||||
|
},
|
||||||
|
"submit": {
|
||||||
|
"defaultMessage": "Senden"
|
||||||
|
},
|
||||||
|
"updateFolderErrorMessage": {
|
||||||
|
"defaultMessage": "Fehler, Ordner kann nicht aktualisiert werden"
|
||||||
|
},
|
||||||
|
"updatedSuccessfully": {
|
||||||
|
"defaultMessage": "Erfolgreich aktualisiert"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"defaultMessage": "Nutzer"
|
||||||
|
},
|
||||||
|
"userTabs": {
|
||||||
|
"defaultMessage": "Nutzer"
|
||||||
|
},
|
||||||
|
"users": {
|
||||||
|
"defaultMessage": "Nutzer"
|
||||||
|
}
|
||||||
|
}
|
|
@ -27,7 +27,7 @@
|
||||||
"defaultMessage": "Create new user"
|
"defaultMessage": "Create new user"
|
||||||
},
|
},
|
||||||
"customerName": {
|
"customerName": {
|
||||||
"defaultMessage": "Customer name"
|
"defaultMessage": "Customer"
|
||||||
},
|
},
|
||||||
"email": {
|
"email": {
|
||||||
"defaultMessage": "Email"
|
"defaultMessage": "Email"
|
||||||
|
@ -35,8 +35,7 @@
|
||||||
"english": {
|
"english": {
|
||||||
"defaultMessage": "English"
|
"defaultMessage": "English"
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {},
|
||||||
},
|
|
||||||
"folder": {
|
"folder": {
|
||||||
"defaultMessage": "Folder"
|
"defaultMessage": "Folder"
|
||||||
},
|
},
|
||||||
|
|
|
@ -0,0 +1,136 @@
|
||||||
|
{
|
||||||
|
"Information": {
|
||||||
|
"defaultMessage": "Informations"
|
||||||
|
},
|
||||||
|
"addNewChild": {
|
||||||
|
"defaultMessage": "Ajouter un nouvel enfant"
|
||||||
|
},
|
||||||
|
"addNewDialogButton": {
|
||||||
|
"defaultMessage": "Ajouter un nouveau bouton de dialogue"
|
||||||
|
},
|
||||||
|
"addUser": {
|
||||||
|
"defaultMessage": "Créer un utilisateur"
|
||||||
|
},
|
||||||
|
"alarms": {
|
||||||
|
"defaultMessage": "Alarmes"
|
||||||
|
},
|
||||||
|
"applyChanges": {
|
||||||
|
"defaultMessage": "Appliquer les modifications"
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"defaultMessage": "Pays"
|
||||||
|
},
|
||||||
|
"createNewFolder": {
|
||||||
|
"defaultMessage": "Créer un nouveau dossier"
|
||||||
|
},
|
||||||
|
"createNewUser": {
|
||||||
|
"defaultMessage": "Créer un nouvel utilisateur"
|
||||||
|
},
|
||||||
|
"customerName": {
|
||||||
|
"defaultMessage": "Nom du client"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"defaultMessage": "E-mail"
|
||||||
|
},
|
||||||
|
"english": {
|
||||||
|
"defaultMessage": "Anglais"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
},
|
||||||
|
"folder": {
|
||||||
|
"defaultMessage": "Dossier"
|
||||||
|
},
|
||||||
|
"german": {
|
||||||
|
"defaultMessage": "Allemand"
|
||||||
|
},
|
||||||
|
"groupTabs": {
|
||||||
|
"defaultMessage": "Onglets de groupe"
|
||||||
|
},
|
||||||
|
"groupTree": {
|
||||||
|
"defaultMessage": "Arbre de groupe"
|
||||||
|
},
|
||||||
|
"information": {
|
||||||
|
"defaultMessage": "Informations"
|
||||||
|
},
|
||||||
|
"inheritedAccess": {
|
||||||
|
"defaultMessage": "Accès hérité de"
|
||||||
|
},
|
||||||
|
"installation": {
|
||||||
|
"defaultMessage": "Installation"
|
||||||
|
},
|
||||||
|
"installationTabs": {
|
||||||
|
"defaultMessage": "Onglets d'installation"
|
||||||
|
},
|
||||||
|
"installations": {
|
||||||
|
"defaultMessage": "Installations"
|
||||||
|
},
|
||||||
|
"lastWeek": {
|
||||||
|
"defaultMessage": "La semaine dernière"
|
||||||
|
},
|
||||||
|
"location": {
|
||||||
|
"defaultMessage": "Localisation"
|
||||||
|
},
|
||||||
|
"log": {
|
||||||
|
"defaultMessage": "Journal"
|
||||||
|
},
|
||||||
|
"logout": {
|
||||||
|
"defaultMessage": "Déconnexion"
|
||||||
|
},
|
||||||
|
"makeASelection": {
|
||||||
|
"defaultMessage": "Veuillez faire une sélection à gauche"
|
||||||
|
},
|
||||||
|
"manageAccess": {
|
||||||
|
"defaultMessage": "Gérer l'accès"
|
||||||
|
},
|
||||||
|
"move": {
|
||||||
|
"defaultMessage": "Déplacer"
|
||||||
|
},
|
||||||
|
"moveTo": {
|
||||||
|
"defaultMessage": "Déplacer à"
|
||||||
|
},
|
||||||
|
"moveTree": {
|
||||||
|
"defaultMessage": "Déplacer l'arbre"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"defaultMessage": "Nom"
|
||||||
|
},
|
||||||
|
"navigationTabs": {
|
||||||
|
"defaultMessage": "Onglets de navigation"
|
||||||
|
},
|
||||||
|
"orderNumbers": {
|
||||||
|
"defaultMessage": "Numéro de commande"
|
||||||
|
},
|
||||||
|
"region": {
|
||||||
|
"defaultMessage": "Région"
|
||||||
|
},
|
||||||
|
"requiredLocation": {
|
||||||
|
"defaultMessage": "L'emplacement est requis"
|
||||||
|
},
|
||||||
|
"requiredName": {
|
||||||
|
"defaultMessage": "Le nom est obligatoire"
|
||||||
|
},
|
||||||
|
"requiredRegion": {
|
||||||
|
"defaultMessage": "La région est obligatoire"
|
||||||
|
},
|
||||||
|
"search": {
|
||||||
|
"defaultMessage": "Recherche"
|
||||||
|
},
|
||||||
|
"submit": {
|
||||||
|
"defaultMessage": "Soumettre"
|
||||||
|
},
|
||||||
|
"updateFolderErrorMessage": {
|
||||||
|
"defaultMessage": "Une erreur s'est produite, impossible de mettre à jour le dossier."
|
||||||
|
},
|
||||||
|
"updatedSuccessfully": {
|
||||||
|
"defaultMessage": "Mise à jour réussie"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"defaultMessage": "Utilisateur"
|
||||||
|
},
|
||||||
|
"userTabs": {
|
||||||
|
"defaultMessage": "Onglets utilisateurs"
|
||||||
|
},
|
||||||
|
"users": {
|
||||||
|
"defaultMessage": "Utilisateurs"
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,7 +9,6 @@
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-s3": "^3.316.0",
|
"@aws-sdk/client-s3": "^3.316.0",
|
||||||
"@emotion/react": "^11.10.5",
|
|
||||||
"@emotion/styled": "^11.10.5",
|
"@emotion/styled": "^11.10.5",
|
||||||
"@minoru/react-dnd-treeview": "^3.4.1",
|
"@minoru/react-dnd-treeview": "^3.4.1",
|
||||||
"@mui/icons-material": "^5.11.0",
|
"@mui/icons-material": "^5.11.0",
|
||||||
|
@ -3541,6 +3540,7 @@
|
||||||
"version": "11.10.5",
|
"version": "11.10.5",
|
||||||
"resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz",
|
"resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz",
|
||||||
"integrity": "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==",
|
"integrity": "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.18.3",
|
"@babel/runtime": "^7.18.3",
|
||||||
"@emotion/babel-plugin": "^11.10.5",
|
"@emotion/babel-plugin": "^11.10.5",
|
||||||
|
@ -27667,6 +27667,7 @@
|
||||||
"version": "11.10.5",
|
"version": "11.10.5",
|
||||||
"resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz",
|
"resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz",
|
||||||
"integrity": "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==",
|
"integrity": "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==",
|
||||||
|
"peer": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.18.3",
|
"@babel/runtime": "^7.18.3",
|
||||||
"@emotion/babel-plugin": "^11.10.5",
|
"@emotion/babel-plugin": "^11.10.5",
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-s3": "^3.316.0",
|
"@aws-sdk/client-s3": "^3.316.0",
|
||||||
"@emotion/react": "^11.10.5",
|
|
||||||
"@emotion/styled": "^11.10.5",
|
"@emotion/styled": "^11.10.5",
|
||||||
"@minoru/react-dnd-treeview": "^3.4.1",
|
"@minoru/react-dnd-treeview": "^3.4.1",
|
||||||
"@mui/icons-material": "^5.11.0",
|
"@mui/icons-material": "^5.11.0",
|
||||||
|
|
|
@ -47,13 +47,15 @@ const App = () => {
|
||||||
<Container maxWidth="xl" sx={{ marginTop: 2, height: "100vh" }}>
|
<Container maxWidth="xl" sx={{ marginTop: 2, height: "100vh" }}>
|
||||||
<Grid container maxHeight="20vh">
|
<Grid container maxHeight="20vh">
|
||||||
<Grid item xs={3} container justifyContent="flex-start">
|
<Grid item xs={3} container justifyContent="flex-start">
|
||||||
<img
|
<img src={innovenergyLogo} alt="innovenergy logo" height="100" />
|
||||||
src={innovenergyLogo}
|
|
||||||
alt="innovenergy logo"
|
|
||||||
height="100"
|
|
||||||
/>
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={9} container justifyContent="flex-end" style={{ height: 30 }}>
|
<Grid
|
||||||
|
item
|
||||||
|
xs={9}
|
||||||
|
container
|
||||||
|
justifyContent="flex-end"
|
||||||
|
style={{ height: 30 }}
|
||||||
|
>
|
||||||
<LanguageSelect language={language} setLanguage={setLanguage} />
|
<LanguageSelect language={language} setLanguage={setLanguage} />
|
||||||
<LogoutButton removeToken={removeToken} />
|
<LogoutButton removeToken={removeToken} />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
|
@ -7,7 +7,10 @@ import { I_Folder } from "../../util/types";
|
||||||
import { GroupContext } from "../Context/GroupContextProvider";
|
import { GroupContext } from "../Context/GroupContextProvider";
|
||||||
import InnovenergySnackbar from "../InnovenergySnackbar";
|
import InnovenergySnackbar from "../InnovenergySnackbar";
|
||||||
import InnovenergyButton from "../Layout/InnovenergyButton";
|
import InnovenergyButton from "../Layout/InnovenergyButton";
|
||||||
import InnovenergyTextfield from "../Layout/InnovenergyTextfield";
|
import InnovenergyTextfield, {
|
||||||
|
I_InnovenergyTextfieldProps,
|
||||||
|
IePropertyGrid,
|
||||||
|
} from "../Layout/InnovenergyTextfield";
|
||||||
import { UserContext } from "../Context/UserContextProvider";
|
import { UserContext } from "../Context/UserContextProvider";
|
||||||
|
|
||||||
interface I_CustomerFormProps {
|
interface I_CustomerFormProps {
|
||||||
|
@ -54,33 +57,39 @@ const FolderForm = (props: I_CustomerFormProps) => {
|
||||||
});
|
});
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
|
|
||||||
|
const rows: I_InnovenergyTextfieldProps[] = [
|
||||||
|
{
|
||||||
|
id: "folder-name-textfield",
|
||||||
|
disabled: readOnly,
|
||||||
|
label: intl.formatMessage({
|
||||||
|
id: "name",
|
||||||
|
defaultMessage: "Name",
|
||||||
|
}),
|
||||||
|
name: "name",
|
||||||
|
value: formik.values.name,
|
||||||
|
handleChange: formik.handleChange,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "folder-information-textfield",
|
||||||
|
disabled: readOnly,
|
||||||
|
label: intl.formatMessage({
|
||||||
|
id: "information",
|
||||||
|
defaultMessage: "Information",
|
||||||
|
}),
|
||||||
|
name: "information",
|
||||||
|
value: formik.values.information,
|
||||||
|
handleChange: formik.handleChange,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<form onSubmit={formik.handleSubmit}>
|
<form onSubmit={formik.handleSubmit}>
|
||||||
<InnovenergyTextfield
|
<IePropertyGrid rows={rows} />
|
||||||
id="folder-name-textfield"
|
|
||||||
disabled={readOnly}
|
|
||||||
label={intl.formatMessage({
|
|
||||||
id: "name",
|
|
||||||
defaultMessage: "Name",
|
|
||||||
})}
|
|
||||||
name="name"
|
|
||||||
value={formik.values.name}
|
|
||||||
handleChange={formik.handleChange}
|
|
||||||
/>
|
|
||||||
<InnovenergyTextfield
|
|
||||||
id="folder-information-textfield"
|
|
||||||
disabled={readOnly}
|
|
||||||
label={intl.formatMessage({
|
|
||||||
id: "information",
|
|
||||||
defaultMessage: "Information",
|
|
||||||
})}
|
|
||||||
name="information"
|
|
||||||
value={formik.values.information}
|
|
||||||
handleChange={formik.handleChange}
|
|
||||||
/>
|
|
||||||
<Grid container justifyContent="flex-end" sx={{ pt: 1 }}>
|
<Grid container justifyContent="flex-end" sx={{ pt: 1 }}>
|
||||||
{loading && <CircularProgress sx={{color: theme.palette.secondary.main}} />}
|
{loading && (
|
||||||
|
<CircularProgress sx={{ color: theme.palette.secondary.main }} />
|
||||||
|
)}
|
||||||
{!readOnly &&
|
{!readOnly &&
|
||||||
additionalButtons &&
|
additionalButtons &&
|
||||||
additionalButtons.map((button) => button)}
|
additionalButtons.map((button) => button)}
|
||||||
|
|
|
@ -7,7 +7,10 @@ import { I_Installation } from "../../util/types";
|
||||||
import { InstallationsContext } from "../Context/InstallationsContextProvider";
|
import { InstallationsContext } from "../Context/InstallationsContextProvider";
|
||||||
import MoveDialog from "../Groups/Tree/MoveDialog";
|
import MoveDialog from "../Groups/Tree/MoveDialog";
|
||||||
import InnovenergyButton from "../Layout/InnovenergyButton";
|
import InnovenergyButton from "../Layout/InnovenergyButton";
|
||||||
import InnovenergyTextfield from "../Layout/InnovenergyTextfield";
|
import InnovenergyTextfield, {
|
||||||
|
I_InnovenergyTextfieldProps,
|
||||||
|
IePropertyGrid,
|
||||||
|
} from "../Layout/InnovenergyTextfield";
|
||||||
import { UserContext } from "../Context/UserContextProvider";
|
import { UserContext } from "../Context/UserContextProvider";
|
||||||
import * as Yup from "yup";
|
import * as Yup from "yup";
|
||||||
|
|
||||||
|
@ -74,79 +77,80 @@ const InstallationForm = (props: I_InstallationFormProps) => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const rows: I_InnovenergyTextfieldProps[] = [
|
||||||
|
{
|
||||||
|
disabled: readOnly,
|
||||||
|
id: "installation-name-textfield",
|
||||||
|
label: intl.formatMessage({
|
||||||
|
id: "customerName",
|
||||||
|
defaultMessage: "Customer name",
|
||||||
|
}),
|
||||||
|
name: "name",
|
||||||
|
value: formik.values.name,
|
||||||
|
handleChange: formik.handleChange,
|
||||||
|
helperText:
|
||||||
|
formik.errors.name && formik.touched.name ? formik.errors.name : "",
|
||||||
|
error: !!formik.errors.name && formik.touched.name,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
disabled: readOnly,
|
||||||
|
id: "installation-region-textfield",
|
||||||
|
label: intl.formatMessage({
|
||||||
|
id: "region",
|
||||||
|
defaultMessage: "Region",
|
||||||
|
}),
|
||||||
|
name: "region",
|
||||||
|
value: formik.values.region,
|
||||||
|
handleChange: formik.handleChange,
|
||||||
|
helperText:
|
||||||
|
formik.errors.region && formik.touched.region
|
||||||
|
? formik.errors.region
|
||||||
|
: "",
|
||||||
|
error: !!formik.errors.region && formik.touched.region,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
disabled: readOnly,
|
||||||
|
id: "installation-location-textfield",
|
||||||
|
label: intl.formatMessage({
|
||||||
|
id: "location",
|
||||||
|
defaultMessage: "Location",
|
||||||
|
}),
|
||||||
|
name: "location",
|
||||||
|
value: formik.values.location,
|
||||||
|
handleChange: formik.handleChange,
|
||||||
|
helperText:
|
||||||
|
formik.errors.location && formik.touched.location
|
||||||
|
? formik.errors.location
|
||||||
|
: "",
|
||||||
|
error: !!formik.errors.location && formik.touched.location,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
disabled: readOnly,
|
||||||
|
id: "installation-country-textfield",
|
||||||
|
label: intl.formatMessage({
|
||||||
|
id: "country",
|
||||||
|
defaultMessage: "Country",
|
||||||
|
}),
|
||||||
|
name: "country",
|
||||||
|
value: formik.values.country,
|
||||||
|
handleChange: formik.handleChange,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
disabled: readOnly,
|
||||||
|
id: "installation-orderNumbers-textfield",
|
||||||
|
label: intl.formatMessage({
|
||||||
|
id: "orderNumbers",
|
||||||
|
defaultMessage: "Order number",
|
||||||
|
}),
|
||||||
|
name: "orderNumbers",
|
||||||
|
value: formik.values.orderNumbers,
|
||||||
|
handleChange: formik.handleChange,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<form onSubmit={formik.handleSubmit}>
|
<form onSubmit={formik.handleSubmit}>
|
||||||
<InnovenergyTextfield
|
<IePropertyGrid rows={rows} />
|
||||||
disabled={readOnly}
|
|
||||||
id="installation-name-textfield"
|
|
||||||
label={intl.formatMessage({
|
|
||||||
id: "customerName",
|
|
||||||
defaultMessage: "Customer name",
|
|
||||||
})}
|
|
||||||
name="name"
|
|
||||||
value={formik.values.name}
|
|
||||||
handleChange={formik.handleChange}
|
|
||||||
helperText={
|
|
||||||
formik.errors.name && formik.touched.name ? formik.errors.name : ""
|
|
||||||
}
|
|
||||||
error={!!formik.errors.name && formik.touched.name}
|
|
||||||
/>
|
|
||||||
<InnovenergyTextfield
|
|
||||||
disabled={readOnly}
|
|
||||||
id="installation-region-textfield"
|
|
||||||
label={intl.formatMessage({
|
|
||||||
id: "region",
|
|
||||||
defaultMessage: "Region",
|
|
||||||
})}
|
|
||||||
name="region"
|
|
||||||
value={formik.values.region}
|
|
||||||
handleChange={formik.handleChange}
|
|
||||||
helperText={
|
|
||||||
formik.errors.region && formik.touched.region
|
|
||||||
? formik.errors.region
|
|
||||||
: ""
|
|
||||||
}
|
|
||||||
error={!!formik.errors.region && formik.touched.region}
|
|
||||||
/>
|
|
||||||
<InnovenergyTextfield
|
|
||||||
disabled={readOnly}
|
|
||||||
id="installation-location-textfield"
|
|
||||||
label={intl.formatMessage({
|
|
||||||
id: "location",
|
|
||||||
defaultMessage: "Location",
|
|
||||||
})}
|
|
||||||
name="location"
|
|
||||||
value={formik.values.location}
|
|
||||||
handleChange={formik.handleChange}
|
|
||||||
helperText={
|
|
||||||
formik.errors.location && formik.touched.location
|
|
||||||
? formik.errors.location
|
|
||||||
: ""
|
|
||||||
}
|
|
||||||
error={!!formik.errors.location && formik.touched.location}
|
|
||||||
/>
|
|
||||||
<InnovenergyTextfield
|
|
||||||
disabled={readOnly}
|
|
||||||
id="installation-country-textfield"
|
|
||||||
label={intl.formatMessage({
|
|
||||||
id: "country",
|
|
||||||
defaultMessage: "Country",
|
|
||||||
})}
|
|
||||||
name="country"
|
|
||||||
value={formik.values.country}
|
|
||||||
handleChange={formik.handleChange}
|
|
||||||
/>
|
|
||||||
<InnovenergyTextfield
|
|
||||||
disabled={readOnly}
|
|
||||||
id="installation-orderNumbers-textfield"
|
|
||||||
label={intl.formatMessage({
|
|
||||||
id: "orderNumbers",
|
|
||||||
defaultMessage: "Order number",
|
|
||||||
})}
|
|
||||||
name="orderNumbers"
|
|
||||||
value={formik.values.orderNumbers}
|
|
||||||
handleChange={formik.handleChange}
|
|
||||||
/>
|
|
||||||
<Grid container justifyContent="flex-end" sx={{ pt: 1 }}>
|
<Grid container justifyContent="flex-end" sx={{ pt: 1 }}>
|
||||||
{hasMoveButton && !readOnly && <MoveDialog values={values} />}
|
{hasMoveButton && !readOnly && <MoveDialog values={values} />}
|
||||||
{!readOnly && (
|
{!readOnly && (
|
||||||
|
|
|
@ -75,11 +75,12 @@ const InstallationList = (props: InstallationListProps) => {
|
||||||
overflow: "auto",
|
overflow: "auto",
|
||||||
py: 0,
|
py: 0,
|
||||||
mt: 1,
|
mt: 1,
|
||||||
|
borderRadius: 1.5,
|
||||||
height:
|
height:
|
||||||
routeMatch?.pattern.path ===
|
routeMatch?.pattern.path ===
|
||||||
routes.installations + routes.list + routes.log + ":id"
|
routes.installations + routes.list + routes.log + ":id"
|
||||||
? "130px"
|
? "130px"
|
||||||
: "500px",
|
: "367px",
|
||||||
}}
|
}}
|
||||||
component="nav"
|
component="nav"
|
||||||
aria-labelledby="nested-list-subheader"
|
aria-labelledby="nested-list-subheader"
|
||||||
|
|
|
@ -5,6 +5,7 @@ import routes from "../../routes.json";
|
||||||
import useRouteMatch from "../../hooks/useRouteMatch";
|
import useRouteMatch from "../../hooks/useRouteMatch";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import InnovenergyTab from "../Layout/InnovenergyTab";
|
import InnovenergyTab from "../Layout/InnovenergyTab";
|
||||||
|
import InnovenergyTabBorder from "../Layout/InnovenergyTab";
|
||||||
import InnovenergyTabs from "components/Layout/InnovenergyTabs";
|
import InnovenergyTabs from "components/Layout/InnovenergyTabs";
|
||||||
import { useTheme } from "@mui/material";
|
import { useTheme } from "@mui/material";
|
||||||
import { red } from "@mui/material/colors";
|
import { red } from "@mui/material/colors";
|
||||||
|
@ -23,23 +24,22 @@ const InstallationTabs = () => {
|
||||||
|
|
||||||
if (id) {
|
if (id) {
|
||||||
return (
|
return (
|
||||||
<Box sx={{ width: "100%", }}>
|
<Box sx={{ width: "100%" }}>
|
||||||
<Box sx={{}}>
|
<Box sx={{}}>
|
||||||
<InnovenergyTabs
|
<InnovenergyTabs
|
||||||
|
|
||||||
id="installation-tabs"
|
id="installation-tabs"
|
||||||
value={routeMatch?.pattern?.path ?? routes.installation + ":id"}
|
value={routeMatch?.pattern?.path ?? routes.installation + ":id"}
|
||||||
>
|
>
|
||||||
|
|
||||||
<InnovenergyTab
|
<InnovenergyTab
|
||||||
sx={{
|
sx={{
|
||||||
"&.Mui-selected": {
|
"&.Mui-selected": {
|
||||||
color: colors.black,
|
color: colors.black,
|
||||||
backgroundColor: theme.palette.primary.dark,
|
backgroundColor: theme.palette.primary.dark,
|
||||||
borderColor: theme.palette.text.disabled,
|
borderColor: theme.palette.text.disabled,
|
||||||
borderBottom: 0,
|
borderBottom: 0,
|
||||||
mb:-1/8,
|
mb: -1 / 8,
|
||||||
}}}
|
},
|
||||||
|
}}
|
||||||
id={"installation-tab-installation"}
|
id={"installation-tab-installation"}
|
||||||
label={intl.formatMessage({
|
label={intl.formatMessage({
|
||||||
id: "installation",
|
id: "installation",
|
||||||
|
@ -52,18 +52,16 @@ const InstallationTabs = () => {
|
||||||
to={routes.installation + id}
|
to={routes.installation + id}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<InnovenergyTab
|
<InnovenergyTab
|
||||||
sx={{
|
sx={{
|
||||||
"&.Mui-selected": {
|
"&.Mui-selected": {
|
||||||
color: colors.black,
|
color: colors.black,
|
||||||
backgroundColor: "white",
|
backgroundColor: "white",
|
||||||
borderColor: theme.palette.text.disabled,
|
borderColor: theme.palette.text.disabled,
|
||||||
borderBottom: 0,
|
borderBottom: 0,
|
||||||
mb:-1/8,
|
mb: -1 / 8,
|
||||||
}}}
|
},
|
||||||
|
}}
|
||||||
id={"installation-tab-liveView"}
|
id={"installation-tab-liveView"}
|
||||||
label={intl.formatMessage({
|
label={intl.formatMessage({
|
||||||
id: "liveView",
|
id: "liveView",
|
||||||
|
@ -79,11 +77,12 @@ const InstallationTabs = () => {
|
||||||
sx={{
|
sx={{
|
||||||
"&.Mui-selected": {
|
"&.Mui-selected": {
|
||||||
color: colors.black,
|
color: colors.black,
|
||||||
backgroundColor: theme.palette.primary.main,
|
backgroundColor: theme.palette.primary.main,
|
||||||
borderColor: theme.palette.text.disabled,
|
borderColor: theme.palette.text.disabled,
|
||||||
borderBottom: 0,
|
borderBottom: 0,
|
||||||
mb:-1/8,
|
mb: -1 / 8,
|
||||||
}}}
|
},
|
||||||
|
}}
|
||||||
id={"installation-tab-log"}
|
id={"installation-tab-log"}
|
||||||
label={intl.formatMessage({
|
label={intl.formatMessage({
|
||||||
id: "log",
|
id: "log",
|
||||||
|
|
|
@ -2,7 +2,6 @@ import { styled, SxProps, Tab, Tabs, Theme, useTheme } from "@mui/material";
|
||||||
import { TabProps } from "@mui/material/Tab/Tab";
|
import { TabProps } from "@mui/material/Tab/Tab";
|
||||||
import { colors } from "index";
|
import { colors } from "index";
|
||||||
|
|
||||||
|
|
||||||
const InnovenergyTab = (props: any) => {
|
const InnovenergyTab = (props: any) => {
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
return (
|
return (
|
||||||
|
@ -36,4 +35,38 @@ const InnovenergyTab = (props: any) => {
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const InnovenergyTabBorder = (props: any) => {
|
||||||
|
const theme = useTheme();
|
||||||
|
return (
|
||||||
|
<Tab
|
||||||
|
{...props}
|
||||||
|
disableRipple
|
||||||
|
sx={{
|
||||||
|
textTransform: "none",
|
||||||
|
...props.sx,
|
||||||
|
bottom: 0,
|
||||||
|
fontWeight: theme.typography.fontWeightRegular,
|
||||||
|
fontSize: theme.typography.pxToRem(14),
|
||||||
|
marginRight: theme.spacing(1),
|
||||||
|
background: "0 0",
|
||||||
|
border: "2px solid",
|
||||||
|
borderColor: "#c0c6d0",
|
||||||
|
bgcolor: theme.palette.primary.light,
|
||||||
|
borderTopLeftRadius: "0.3rem",
|
||||||
|
borderTopRightRadius: "0.3rem",
|
||||||
|
padding: ".5rem 1rem",
|
||||||
|
textDecoration: "none",
|
||||||
|
transition: `color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out`,
|
||||||
|
"&.Mui-selected": {
|
||||||
|
color: colors.black,
|
||||||
|
borderColor: theme.palette.text.disabled,
|
||||||
|
marginTop: "1px",
|
||||||
|
bottom: -1,
|
||||||
|
...(props.sx ? props.sx["&.Mui-selected"] : {}),
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
export default InnovenergyTab;
|
export default InnovenergyTab;
|
||||||
|
|
|
@ -9,9 +9,8 @@ interface AntTabsProps {
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const InnovenergyTabs = (props: AntTabsProps) => {
|
const InnovenergyTabs = (props: AntTabsProps) => {
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
return (
|
return (
|
||||||
<Tabs
|
<Tabs
|
||||||
{...props}
|
{...props}
|
||||||
|
@ -31,7 +30,7 @@ const InnovenergyTabs = (props: AntTabsProps) => {
|
||||||
"& .MuiTabs-indicator": {
|
"& .MuiTabs-indicator": {
|
||||||
display: "flex",
|
display: "flex",
|
||||||
justifyContent: "center",
|
justifyContent: "center",
|
||||||
backgroundColor: "transparent",
|
backgroundColor: "red",
|
||||||
},
|
},
|
||||||
"&.MuiTabs-root": {
|
"&.MuiTabs-root": {
|
||||||
width: "100%",
|
width: "100%",
|
||||||
|
|
|
@ -1,6 +1,18 @@
|
||||||
import { Grid, InputLabel, TextField, useTheme } from "@mui/material";
|
import {
|
||||||
|
Grid,
|
||||||
|
InputLabel,
|
||||||
|
Paper,
|
||||||
|
Table,
|
||||||
|
TableBody,
|
||||||
|
TableCell,
|
||||||
|
TableContainer,
|
||||||
|
TableHead,
|
||||||
|
TableRow,
|
||||||
|
TextField,
|
||||||
|
useTheme,
|
||||||
|
} from "@mui/material";
|
||||||
|
|
||||||
interface I_InnovenergyTextfieldProps {
|
export interface I_InnovenergyTextfieldProps {
|
||||||
id: string;
|
id: string;
|
||||||
label: string;
|
label: string;
|
||||||
value: string;
|
value: string;
|
||||||
|
@ -13,17 +25,81 @@ interface I_InnovenergyTextfieldProps {
|
||||||
error?: boolean;
|
error?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const IePropertyGrid = (props: {
|
||||||
|
rows: I_InnovenergyTextfieldProps[];
|
||||||
|
}) => {
|
||||||
|
const theme = useTheme();
|
||||||
|
|
||||||
|
const findLongestLength = () => {
|
||||||
|
return (
|
||||||
|
11 *
|
||||||
|
props.rows.reduce(
|
||||||
|
(acc, curr) => (acc > curr.label.length ? acc : curr.label.length),
|
||||||
|
0
|
||||||
|
)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div style={{ display: "flex", flexDirection: "row" }}>
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: "column",
|
||||||
|
justifyContent: "space-around",
|
||||||
|
marginRight: "20px",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{props.rows.map((prop) => (
|
||||||
|
<InputLabel>{prop.label}</InputLabel>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
{props.rows.map((element) => {
|
||||||
|
return (
|
||||||
|
<TextField
|
||||||
|
color="secondary"
|
||||||
|
id={element.id}
|
||||||
|
variant="outlined"
|
||||||
|
name={element.name}
|
||||||
|
type={element.type}
|
||||||
|
fullWidth
|
||||||
|
sx={{
|
||||||
|
input: {
|
||||||
|
bgcolor: "white",
|
||||||
|
border: 0.5,
|
||||||
|
borderRadius: 1,
|
||||||
|
height: 15,
|
||||||
|
},
|
||||||
|
my: 0.5,
|
||||||
|
borderColor: "red",
|
||||||
|
}}
|
||||||
|
value={element.value || ""}
|
||||||
|
onChange={element.handleChange}
|
||||||
|
InputProps={{
|
||||||
|
readOnly: element.readOnly,
|
||||||
|
}}
|
||||||
|
disabled={element.disabled}
|
||||||
|
helperText={element.helperText}
|
||||||
|
error={element.error}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const InnovenergyTextfield = (props: I_InnovenergyTextfieldProps) => {
|
const InnovenergyTextfield = (props: I_InnovenergyTextfieldProps) => {
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
return (
|
return (
|
||||||
<Grid container direction="row" alignItems="center" spacing={2}>
|
<Grid container direction="row" alignItems="center" spacing={2}>
|
||||||
<Grid item xs={2}>
|
<Grid item xs={3}>
|
||||||
<InputLabel>{props.label}</InputLabel>
|
<InputLabel>{props.label}</InputLabel>
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={10}>
|
<Grid item xs={9}>
|
||||||
<TextField
|
<TextField
|
||||||
color="secondary"
|
color="secondary"
|
||||||
id={props.id}
|
id={props.id}
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
name={props.name}
|
name={props.name}
|
||||||
|
@ -36,6 +112,7 @@ const InnovenergyTextfield = (props: I_InnovenergyTextfieldProps) => {
|
||||||
borderRadius: 1,
|
borderRadius: 1,
|
||||||
},
|
},
|
||||||
my: 0.5,
|
my: 0.5,
|
||||||
|
borderColor: "red",
|
||||||
}}
|
}}
|
||||||
value={props.value || ""}
|
value={props.value || ""}
|
||||||
onChange={props.handleChange}
|
onChange={props.handleChange}
|
||||||
|
|
|
@ -10,7 +10,6 @@ const ModeButtons = () => {
|
||||||
const routeMatch = useRouteMatch([
|
const routeMatch = useRouteMatch([
|
||||||
routes.installations + routes.tree + "*",
|
routes.installations + routes.tree + "*",
|
||||||
routes.installations + routes.list + "*",
|
routes.installations + routes.list + "*",
|
||||||
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -20,21 +19,35 @@ const ModeButtons = () => {
|
||||||
color="primary"
|
color="primary"
|
||||||
value={routeMatch?.pattern?.path}
|
value={routeMatch?.pattern?.path}
|
||||||
exclusive
|
exclusive
|
||||||
sx={{ mb: 1, bgcolor: theme.palette.primary.main,}}
|
sx={{
|
||||||
|
mb: 1,
|
||||||
|
bgcolor: theme.palette.primary.light,
|
||||||
|
}}
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
<ToggleButton
|
<ToggleButton
|
||||||
color="secondary"
|
sx={{
|
||||||
|
color: "#707071",
|
||||||
|
"&.Mui-selected": {
|
||||||
|
bgcolor: theme.palette.primary.dark,
|
||||||
|
color: "#707071",
|
||||||
|
},
|
||||||
|
}}
|
||||||
id="mode-toggle-button-list"
|
id="mode-toggle-button-list"
|
||||||
value={routes.installations + routes.list + "*"}
|
value={routes.installations + routes.list + "*"}
|
||||||
component={Link}
|
component={Link}
|
||||||
to={routes.list}
|
to={routes.list}
|
||||||
|
|
||||||
>
|
>
|
||||||
<ListIcon id="mode-toggle-button-list-icon" />
|
<ListIcon id="mode-toggle-button-list-icon" />
|
||||||
</ToggleButton>
|
</ToggleButton>
|
||||||
<ToggleButton
|
<ToggleButton
|
||||||
color="secondary"
|
sx={{
|
||||||
|
color: "#707071",
|
||||||
|
"&.Mui-selected": {
|
||||||
|
bgcolor: theme.palette.primary.dark,
|
||||||
|
color: "#707071",
|
||||||
|
},
|
||||||
|
}}
|
||||||
id="mode-toggle-button-tree"
|
id="mode-toggle-button-tree"
|
||||||
value={routes.installations + routes.tree + "*"}
|
value={routes.installations + routes.tree + "*"}
|
||||||
component={Link}
|
component={Link}
|
||||||
|
|
|
@ -17,19 +17,20 @@ const NavigationButtons = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<InnovenergyTabs
|
<InnovenergyTabs
|
||||||
sx={{paddingTop:0}}
|
sx={{ paddingTop: 0 }}
|
||||||
id="navigation-buttons-tabs"
|
id="navigation-buttons-tabs"
|
||||||
value={routeMatch?.pattern?.path}
|
value={routeMatch?.pattern?.path}
|
||||||
>
|
>
|
||||||
<InnovenergyTab
|
<InnovenergyTab
|
||||||
sx={{
|
sx={{
|
||||||
bgcolor:theme.palette.primary.main,
|
bgcolor: theme.palette.primary.main,
|
||||||
"&.Mui-selected": {
|
"&.Mui-selected": {
|
||||||
backgroundColor: theme.palette.primary.main,
|
backgroundColor: theme.palette.primary.main,
|
||||||
borderColor: theme.palette.text.disabled,
|
borderColor: theme.palette.text.disabled,
|
||||||
borderBottom: 0,
|
borderBottom: 0,
|
||||||
mb:-1/8,
|
mb: -1 / 8,
|
||||||
}}}
|
},
|
||||||
|
}}
|
||||||
id="navigation-tab-installations"
|
id="navigation-tab-installations"
|
||||||
value={routes.installations + "*"}
|
value={routes.installations + "*"}
|
||||||
component={Link}
|
component={Link}
|
||||||
|
@ -43,13 +44,14 @@ const NavigationButtons = () => {
|
||||||
/>
|
/>
|
||||||
<InnovenergyTab
|
<InnovenergyTab
|
||||||
sx={{
|
sx={{
|
||||||
bgcolor:theme.palette.primary.main,
|
bgcolor: theme.palette.primary.main,
|
||||||
"&.Mui-selected": {
|
"&.Mui-selected": {
|
||||||
backgroundColor: theme.palette.primary.main,
|
backgroundColor: theme.palette.primary.main,
|
||||||
borderColor: theme.palette.text.disabled,
|
borderColor: theme.palette.text.disabled,
|
||||||
borderBottom: 0,
|
borderBottom: 0,
|
||||||
mb:-1/8,
|
mb: -1 / 8,
|
||||||
}}}
|
},
|
||||||
|
}}
|
||||||
id="navigation-tab-users"
|
id="navigation-tab-users"
|
||||||
value={routes.users + "*"}
|
value={routes.users + "*"}
|
||||||
component={Link}
|
component={Link}
|
||||||
|
|
|
@ -1,11 +1,20 @@
|
||||||
import { Alert, CircularProgress, Grid, Snackbar, useTheme } from "@mui/material";
|
import {
|
||||||
|
Alert,
|
||||||
|
CircularProgress,
|
||||||
|
Grid,
|
||||||
|
Snackbar,
|
||||||
|
useTheme,
|
||||||
|
} from "@mui/material";
|
||||||
import { AxiosError, AxiosResponse } from "axios";
|
import { AxiosError, AxiosResponse } from "axios";
|
||||||
import { useFormik } from "formik";
|
import { useFormik } from "formik";
|
||||||
import { useContext, useState } from "react";
|
import { useContext, useState } from "react";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { I_User } from "../../util/user.util";
|
import { I_User } from "../../util/user.util";
|
||||||
import InnovenergyButton from "../Layout/InnovenergyButton";
|
import InnovenergyButton from "../Layout/InnovenergyButton";
|
||||||
import InnovenergyTextfield from "../Layout/InnovenergyTextfield";
|
import InnovenergyTextfield, {
|
||||||
|
I_InnovenergyTextfieldProps,
|
||||||
|
IePropertyGrid,
|
||||||
|
} from "../Layout/InnovenergyTextfield";
|
||||||
import { UserContext } from "../Context/UserContextProvider";
|
import { UserContext } from "../Context/UserContextProvider";
|
||||||
import { UsersContext } from "../Context/UsersContextProvider";
|
import { UsersContext } from "../Context/UsersContextProvider";
|
||||||
|
|
||||||
|
@ -53,43 +62,49 @@ const UserForm = (props: I_UserFormProps) => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const rows: I_InnovenergyTextfieldProps[] = [
|
||||||
|
{
|
||||||
|
id: "name-textfield",
|
||||||
|
label: intl.formatMessage({
|
||||||
|
id: "name",
|
||||||
|
defaultMessage: "Name",
|
||||||
|
}),
|
||||||
|
name: "name",
|
||||||
|
value: formik.values.name,
|
||||||
|
handleChange: formik.handleChange,
|
||||||
|
disabled: readOnly,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "email-textfield",
|
||||||
|
label: intl.formatMessage({
|
||||||
|
id: "email",
|
||||||
|
defaultMessage: "Email",
|
||||||
|
}),
|
||||||
|
name: "email",
|
||||||
|
value: formik.values.email,
|
||||||
|
handleChange: formik.handleChange,
|
||||||
|
disabled: readOnly,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "information-textfield",
|
||||||
|
label: intl.formatMessage({
|
||||||
|
id: "Information",
|
||||||
|
defaultMessage: "Information",
|
||||||
|
}),
|
||||||
|
name: "information",
|
||||||
|
value: formik.values.information,
|
||||||
|
handleChange: formik.handleChange,
|
||||||
|
disabled: readOnly,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<form onSubmit={formik.handleSubmit}>
|
<form onSubmit={formik.handleSubmit}>
|
||||||
<InnovenergyTextfield
|
<IePropertyGrid rows={rows} />
|
||||||
id="name-textfield"
|
|
||||||
label={intl.formatMessage({
|
|
||||||
id: "name",
|
|
||||||
defaultMessage: "Name",
|
|
||||||
})}
|
|
||||||
name="name"
|
|
||||||
value={formik.values.name}
|
|
||||||
handleChange={formik.handleChange}
|
|
||||||
disabled={readOnly}
|
|
||||||
/>
|
|
||||||
<InnovenergyTextfield
|
|
||||||
id="email-textfield"
|
|
||||||
label={intl.formatMessage({
|
|
||||||
id: "email",
|
|
||||||
defaultMessage: "Email",
|
|
||||||
})}
|
|
||||||
name="email"
|
|
||||||
value={formik.values.email}
|
|
||||||
handleChange={formik.handleChange}
|
|
||||||
disabled={readOnly}
|
|
||||||
/>
|
|
||||||
<InnovenergyTextfield
|
|
||||||
id="information-textfield"
|
|
||||||
label={intl.formatMessage({
|
|
||||||
id: "Information",
|
|
||||||
defaultMessage: "Information",
|
|
||||||
})}
|
|
||||||
name="information"
|
|
||||||
value={formik.values.information}
|
|
||||||
handleChange={formik.handleChange}
|
|
||||||
disabled={readOnly}
|
|
||||||
/>
|
|
||||||
<Grid container justifyContent="flex-end" sx={{ pt: 1 }}>
|
<Grid container justifyContent="flex-end" sx={{ pt: 1 }}>
|
||||||
{loading && <CircularProgress sx={{color: theme.palette.secondary.main}} />}
|
{loading && (
|
||||||
|
<CircularProgress sx={{ color: theme.palette.secondary.main }} />
|
||||||
|
)}
|
||||||
{currentUser.hasWriteAccess && (
|
{currentUser.hasWriteAccess && (
|
||||||
<InnovenergyButton type="submit">
|
<InnovenergyButton type="submit">
|
||||||
<FormattedMessage id="submit" defaultMessage="Submit" />
|
<FormattedMessage id="submit" defaultMessage="Submit" />
|
||||||
|
|
|
@ -13,20 +13,20 @@ const root = ReactDOM.createRoot(
|
||||||
|
|
||||||
export const colors = {
|
export const colors = {
|
||||||
black: "#000000",
|
black: "#000000",
|
||||||
blueBlack: '#2b3e54',
|
blueBlack: "#2b3e54",
|
||||||
borderColor: '#c0c6d0',
|
borderColor: "#a8b0be",
|
||||||
|
|
||||||
background: '#f3f4f7',
|
background: "#f3f4f7",
|
||||||
//change this color in index.css too
|
//change this color in index.css too
|
||||||
|
|
||||||
greyDark: '#d1d7de',
|
greyDark: "#d1d7de",
|
||||||
greyLight:'#e1e4e7',
|
greyLight: "#e1e4e7",
|
||||||
|
|
||||||
orangeSelected: '#ffd280',
|
|
||||||
orangeHover: '#ffe4b3',
|
|
||||||
|
|
||||||
orangeDark:"#ffc04d",
|
orangeSelected: "#ffd280",
|
||||||
}
|
orangeHover: "#ffe4b3",
|
||||||
|
|
||||||
|
orangeDark: "#ffc04d",
|
||||||
|
};
|
||||||
|
|
||||||
const theme = createTheme({
|
const theme = createTheme({
|
||||||
components: {
|
components: {
|
||||||
|
@ -51,7 +51,6 @@ const theme = createTheme({
|
||||||
main: colors.orangeSelected,
|
main: colors.orangeSelected,
|
||||||
light: colors.orangeHover,
|
light: colors.orangeHover,
|
||||||
dark: colors.orangeDark,
|
dark: colors.orangeDark,
|
||||||
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
typography: {
|
typography: {
|
||||||
|
|
Loading…
Reference in New Issue