scribe data from Information tab for configuration tab
This commit is contained in:
parent
8578b42503
commit
f1cd5c0736
|
|
@ -702,6 +702,7 @@ export type ConfigurationValues = {
|
|||
batteriesCountPerInverter: number[];
|
||||
clusterNumber: number;
|
||||
PvNumber: number;
|
||||
pvCountPerInverter: number[];
|
||||
controlPermission:boolean;
|
||||
|
||||
// For sodistoreHome-Sinexcel: TimeChargeDischarge mode
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import {
|
|||
CardContent,
|
||||
CircularProgress,
|
||||
Container,
|
||||
Divider,
|
||||
FormControl,
|
||||
Grid,
|
||||
IconButton,
|
||||
|
|
@ -25,6 +26,7 @@ import axiosConfig from '../../../Resources/axiosConfig';
|
|||
import { UserContext } from '../../../contexts/userContext';
|
||||
import { ProductIdContext } from '../../../contexts/ProductIdContextProvider';
|
||||
import { I_Installation } from 'src/interfaces/InstallationTypes';
|
||||
import { INSTALLATION_PRESETS } from '../Information/installationSetupUtils';
|
||||
import { LocalizationProvider } from '@mui/x-date-pickers';
|
||||
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
|
||||
import {DateTimePicker } from '@mui/x-date-pickers';
|
||||
|
|
@ -106,6 +108,8 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
|||
batteriesCount: props.values.Config.BatteriesCount,
|
||||
clusterNumber: props.values.Config.ClusterNumber ?? 1,
|
||||
PvNumber: props.values.Config.PvNumber ?? 0,
|
||||
pvCountPerInverter: (props.values.Config as any).PvCountPerInverter
|
||||
?? Array(inverterNum).fill(props.values.Config.PvNumber ?? 0),
|
||||
timeChargeandDischargePower: props.values.Config?.TimeChargeandDischargePower ?? 0,
|
||||
startTimeChargeandDischargeDayandTime: (() => {
|
||||
const raw = props.values.Config?.StartTimeChargeandDischargeDayandTime;
|
||||
|
|
@ -251,6 +255,7 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
|||
batteriesCount: formValues.batteriesCountPerInverter?.[0] ?? formValues.batteriesCount,
|
||||
clusterNumber:formValues.clusterNumber,
|
||||
PvNumber:formValues.PvNumber,
|
||||
pvCountPerInverter: formValues.pvCountPerInverter,
|
||||
timeChargeandDischargePower: formValues.timeChargeandDischargePower,
|
||||
startTimeChargeandDischargeDayandTime: formValues.startTimeChargeandDischargeDayandTime
|
||||
? new Date(formValues.startTimeChargeandDischargeDayandTime.getTime() - formValues.startTimeChargeandDischargeDayandTime.getTimezoneOffset() * 60000)
|
||||
|
|
@ -416,7 +421,7 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
|||
sx={{ transform: "scale(1.4)", marginLeft: "15px" }}
|
||||
/>
|
||||
}
|
||||
|
||||
sx={{ ml: 0 }}
|
||||
label={
|
||||
<FormattedMessage
|
||||
id="controlPermission"
|
||||
|
|
@ -426,99 +431,76 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
|||
/>
|
||||
</div>
|
||||
|
||||
<div style={{ marginBottom: '5px' }}>
|
||||
<TextField
|
||||
label={intl.formatMessage({ id: 'inverterNumber' })}
|
||||
name="inverterNumber"
|
||||
value={formValues.inverterNumber ?? ''}
|
||||
onChange={(e) => {
|
||||
setFormDirty(true);
|
||||
const raw = e.target.value;
|
||||
if (raw === '') {
|
||||
setFormValues((prev) => ({ ...prev, inverterNumber: '' as any }));
|
||||
return;
|
||||
}
|
||||
const parsed = parseInt(raw);
|
||||
if (isNaN(parsed) || parsed < 1) return;
|
||||
const currentArr = formValues.batteriesCountPerInverter || [1];
|
||||
const newArr = Array.from({ length: parsed }, (_, i) => currentArr[i] ?? 1);
|
||||
setFormValues((prev) => ({
|
||||
...prev,
|
||||
inverterNumber: parsed,
|
||||
batteriesCountPerInverter: newArr,
|
||||
}));
|
||||
}}
|
||||
fullWidth
|
||||
/>
|
||||
</div>
|
||||
|
||||
{Array.from({ length: formValues.inverterNumber ?? 1 }, (_, i) => (
|
||||
<div key={`battCount_${i}`} style={{ marginBottom: '5px' }}>
|
||||
<TextField
|
||||
label={intl.formatMessage(
|
||||
{ id: 'batteriesCountInInverter' },
|
||||
{ number: i + 1 }
|
||||
)}
|
||||
name={`batteriesCountPerInverter_${i}`}
|
||||
value={formValues.batteriesCountPerInverter?.[i] ?? ''}
|
||||
onChange={(e) => {
|
||||
setFormDirty(true);
|
||||
const raw = e.target.value;
|
||||
if (raw === '') {
|
||||
setFormValues((prev) => {
|
||||
const arr = [...(prev.batteriesCountPerInverter || [1])];
|
||||
arr[i] = '' as any;
|
||||
return { ...prev, batteriesCountPerInverter: arr };
|
||||
});
|
||||
return;
|
||||
}
|
||||
const parsed = parseInt(raw);
|
||||
if (isNaN(parsed) || parsed < 1) return;
|
||||
setFormValues((prev) => {
|
||||
const arr = [...(prev.batteriesCountPerInverter || [1])];
|
||||
arr[i] = parsed;
|
||||
return { ...prev, batteriesCountPerInverter: arr };
|
||||
});
|
||||
}}
|
||||
fullWidth
|
||||
/>
|
||||
</div>
|
||||
))}
|
||||
|
||||
{device === 4 && (
|
||||
<>
|
||||
<div style={{ marginBottom: '5px' }}>
|
||||
<TextField
|
||||
label={
|
||||
<FormattedMessage
|
||||
id="clusterNumber"
|
||||
defaultMessage="Cluster Number"
|
||||
/>
|
||||
}
|
||||
name="clusterNumber"
|
||||
value={formValues.clusterNumber}
|
||||
onChange={handleChange}
|
||||
fullWidth
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div style={{ marginBottom: '5px' }}>
|
||||
<TextField
|
||||
label={
|
||||
<FormattedMessage
|
||||
id="PvNumber"
|
||||
defaultMessage="PV Number"
|
||||
/>
|
||||
}
|
||||
name="PvNumber"
|
||||
value={formValues.PvNumber}
|
||||
onChange={handleChange}
|
||||
fullWidth
|
||||
/>
|
||||
</div>
|
||||
<Typography variant="h6" sx={{ mt: 3, mb: 1 }}>
|
||||
<FormattedMessage id="installationSetup" defaultMessage="Installation Setup" />
|
||||
</Typography>
|
||||
<Divider sx={{ mb: 2 }} />
|
||||
</>
|
||||
)}
|
||||
|
||||
{device === 4 && (() => {
|
||||
const preset = INSTALLATION_PRESETS[props.installation.installationModel];
|
||||
const inverterCount = preset ? preset.length : 1;
|
||||
const pvStrings = (props.installation.pvStringsPerInverter || '')
|
||||
.split(',')
|
||||
.map((s) => s.trim())
|
||||
.filter((s) => s !== '');
|
||||
|
||||
return (
|
||||
<>
|
||||
<div style={{ marginBottom: '5px' }}>
|
||||
<TextField
|
||||
label={intl.formatMessage({ id: 'inverterNumber' })}
|
||||
value={inverterCount}
|
||||
InputProps={{ readOnly: true }}
|
||||
fullWidth
|
||||
/>
|
||||
</div>
|
||||
|
||||
{preset && preset.map((clusters, i) => {
|
||||
const batteriesInInverter = clusters.reduce((a, b) => a + b, 0);
|
||||
return (
|
||||
<div key={`battCount_${i}`} style={{ marginBottom: '5px' }}>
|
||||
<TextField
|
||||
label={intl.formatMessage(
|
||||
{ id: 'batteriesCountInInverter' },
|
||||
{ number: i + 1 }
|
||||
)}
|
||||
value={batteriesInInverter}
|
||||
InputProps={{ readOnly: true }}
|
||||
fullWidth
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
|
||||
{Array.from({ length: inverterCount }, (_, i) => (
|
||||
<div key={`pvCount_${i}`} style={{ marginBottom: '5px' }}>
|
||||
<TextField
|
||||
label={intl.formatMessage(
|
||||
{ id: 'pvInInverter' },
|
||||
{ number: i + 1 }
|
||||
)}
|
||||
value={pvStrings[i] ?? 0}
|
||||
InputProps={{ readOnly: true }}
|
||||
fullWidth
|
||||
/>
|
||||
</div>
|
||||
))}
|
||||
</>
|
||||
);
|
||||
})()}
|
||||
|
||||
{device === 4 && (
|
||||
<>
|
||||
<Typography variant="h6" sx={{ mt: 3, mb: 1 }}>
|
||||
<FormattedMessage id="batteryLimits" defaultMessage="Battery Limits" />
|
||||
</Typography>
|
||||
<Divider sx={{ mb: 2 }} />
|
||||
</>
|
||||
)}
|
||||
|
||||
<div style={{ marginBottom: '5px' }}>
|
||||
{/*<TextField*/}
|
||||
|
|
@ -574,6 +556,15 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
|||
/>
|
||||
</div>
|
||||
|
||||
{device === 4 && (
|
||||
<>
|
||||
<Typography variant="h6" sx={{ mt: 3, mb: 1 }}>
|
||||
<FormattedMessage id="systemSettings" defaultMessage="System Settings" />
|
||||
</Typography>
|
||||
<Divider sx={{ mb: 2 }} />
|
||||
</>
|
||||
)}
|
||||
|
||||
<div style={{ marginBottom: '5px', marginTop: '10px' }}>
|
||||
<FormControl fullWidth sx={{ marginLeft: 1, width: 390 }}>
|
||||
<InputLabel
|
||||
|
|
|
|||
|
|
@ -512,6 +512,11 @@
|
|||
"powerPerInverterKW": "Leistung pro Wechselrichter (kW)",
|
||||
"startDateTime": "Startdatum und -zeit (Startzeit < Stoppzeit)",
|
||||
"stopDateTime": "Stoppdatum und -zeit (Startzeit < Stoppzeit)",
|
||||
"installationSetup": "Installationseinrichtung",
|
||||
"batteryLimits": "Batteriegrenzwerte",
|
||||
"systemSettings": "Systemeinstellungen",
|
||||
"pvPerInverter": "PV pro Wechselrichter",
|
||||
"pvInInverter": "PV in Wechselrichter {number}",
|
||||
"tourLanguageTitle": "Sprache",
|
||||
"tourLanguageContent": "Wählen Sie Ihre bevorzugte Sprache. Die Oberfläche unterstützt Englisch, Deutsch, Französisch und Italienisch.",
|
||||
"tourExploreTitle": "Installation erkunden",
|
||||
|
|
|
|||
|
|
@ -260,6 +260,11 @@
|
|||
"powerPerInverterKW": "Power per Inverter (kW)",
|
||||
"startDateTime": "Start Date and Time (Start Time < Stop Time)",
|
||||
"stopDateTime": "Stop Date and Time (Start Time < Stop Time)",
|
||||
"installationSetup": "Installation Setup",
|
||||
"batteryLimits": "Battery Limits",
|
||||
"systemSettings": "System Settings",
|
||||
"pvPerInverter": "PV per Inverter",
|
||||
"pvInInverter": "PV in Inverter {number}",
|
||||
"tourLanguageTitle": "Language",
|
||||
"tourLanguageContent": "Choose your preferred language. The interface supports English, German, French, and Italian.",
|
||||
"tourExploreTitle": "Explore an Installation",
|
||||
|
|
|
|||
|
|
@ -512,6 +512,11 @@
|
|||
"powerPerInverterKW": "Puissance par onduleur (kW)",
|
||||
"startDateTime": "Date et heure de début (Début < Fin)",
|
||||
"stopDateTime": "Date et heure de fin (Début < Fin)",
|
||||
"installationSetup": "Configuration de l'installation",
|
||||
"batteryLimits": "Limites de la batterie",
|
||||
"systemSettings": "Paramètres système",
|
||||
"pvPerInverter": "PV par onduleur",
|
||||
"pvInInverter": "PV dans l'onduleur {number}",
|
||||
"tourLanguageTitle": "Langue",
|
||||
"tourLanguageContent": "Choisissez votre langue préférée. L'interface est disponible en anglais, allemand, français et italien.",
|
||||
"tourExploreTitle": "Explorer une installation",
|
||||
|
|
|
|||
|
|
@ -512,6 +512,11 @@
|
|||
"powerPerInverterKW": "Potenza per inverter (kW)",
|
||||
"startDateTime": "Data e ora di inizio (Inizio < Fine)",
|
||||
"stopDateTime": "Data e ora di fine (Inizio < Fine)",
|
||||
"installationSetup": "Configurazione dell'installazione",
|
||||
"batteryLimits": "Limiti della batteria",
|
||||
"systemSettings": "Impostazioni di sistema",
|
||||
"pvPerInverter": "PV per inverter",
|
||||
"pvInInverter": "PV nell'inverter {number}",
|
||||
"tourLanguageTitle": "Lingua",
|
||||
"tourLanguageContent": "Scegli la tua lingua preferita. L'interfaccia supporta inglese, tedesco, francese e italiano.",
|
||||
"tourExploreTitle": "Esplora un'installazione",
|
||||
|
|
|
|||
Loading…
Reference in New Issue