added Control Permission in Growatt Configuration tab
This commit is contained in:
parent
da037b7f5a
commit
f453ecda6e
|
|
@ -332,7 +332,10 @@ export interface JSONRecordData {
|
|||
ClusterNumber: number;
|
||||
PvNumber: number;
|
||||
|
||||
//For Sinexcel: TimeChargeDischarge mode
|
||||
//For SodistoerHome-Growatt:
|
||||
ControlPermission:boolean;
|
||||
|
||||
//For SodistoerHome-Sinexcel: TimeChargeDischarge mode
|
||||
TimeChargeDischargePower?: number;
|
||||
TimeChargeDischargeTime?: string;
|
||||
TimeChargeDischargeDate?: string;
|
||||
|
|
@ -643,7 +646,10 @@ export type ConfigurationValues = {
|
|||
clusterNumber: number;
|
||||
PvNumber: number;
|
||||
|
||||
// For Sinexcel: TimeChargeDischarge mode
|
||||
//For sodistoreHome-Growatt:
|
||||
controlPermission:boolean;
|
||||
|
||||
// For sodistoreHome-Sinexcel: TimeChargeDischarge mode
|
||||
timeChargeDischargePower?: number;
|
||||
timeChargeDischargeTime?: Date | string;
|
||||
timeChargeDischargeDate?: Date | string;
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@ import { LocalizationProvider } from '@mui/x-date-pickers';
|
|||
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
|
||||
import { DatePicker, TimePicker } from '@mui/x-date-pickers';
|
||||
import dayjs from 'dayjs';
|
||||
import Switch from '@mui/material/Switch';
|
||||
import FormControlLabel from '@mui/material/FormControlLabel';
|
||||
|
||||
interface SodistoreHomeConfigurationProps {
|
||||
values: JSONRecordData;
|
||||
|
|
@ -87,20 +89,31 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
|||
props.values.Config.OperatingPriority
|
||||
),
|
||||
batteriesCount: props.values.Config.BatteriesCount,
|
||||
...(device === 4
|
||||
? {
|
||||
clusterNumber: props.values.Config.ClusterNumber??1,
|
||||
PvNumber: props.values.Config.PvNumber??0,
|
||||
timeChargeDischargePower:
|
||||
props.values.Config?.TimeChargeDischargePower ?? 0, // default 0 W
|
||||
timeChargeDischargeTime: props.values.Config?.TimeChargeDischargeTime
|
||||
? dayjs(props.values.Config.TimeChargeDischargeTime).toDate()
|
||||
: dayjs().hour(8).minute(0).second(0).toDate(), // default 08:00
|
||||
timeChargeDischargeDate: props.values.Config?.TimeChargeDischargeDate
|
||||
? dayjs(props.values.Config.TimeChargeDischargeDate).toDate()
|
||||
: dayjs().add(1, 'day').toDate(), // default = tomorrow
|
||||
}
|
||||
: {}),
|
||||
clusterNumber: props.values.Config.ClusterNumber??1,
|
||||
PvNumber: props.values.Config.PvNumber??0,
|
||||
timeChargeDischargePower: props.values.Config?.TimeChargeDischargePower ?? 0, // default 0 W
|
||||
timeChargeDischargeTime: props.values.Config?.TimeChargeDischargeTime ? dayjs(props.values.Config.TimeChargeDischargeTime).toDate() : dayjs().hour(8).minute(0).second(0).toDate(), // default 08:00
|
||||
timeChargeDischargeDate: props.values.Config?.TimeChargeDischargeDate ? dayjs(props.values.Config.TimeChargeDischargeDate).toDate() : dayjs().add(1, 'day').toDate(), // default = tomorrow
|
||||
controlPermission: props.values.Config.ControlPermission??false,
|
||||
// ...(device === 4
|
||||
// ? {
|
||||
// clusterNumber: props.values.Config.ClusterNumber??1,
|
||||
// PvNumber: props.values.Config.PvNumber??0,
|
||||
// timeChargeDischargePower:
|
||||
// props.values.Config?.TimeChargeDischargePower ?? 0, // default 0 W
|
||||
// timeChargeDischargeTime: props.values.Config?.TimeChargeDischargeTime
|
||||
// ? dayjs(props.values.Config.TimeChargeDischargeTime).toDate()
|
||||
// : dayjs().hour(8).minute(0).second(0).toDate(), // default 08:00
|
||||
// timeChargeDischargeDate: props.values.Config?.TimeChargeDischargeDate
|
||||
// ? dayjs(props.values.Config.TimeChargeDischargeDate).toDate()
|
||||
// : dayjs().add(1, 'day').toDate(), // default = tomorrow
|
||||
// }
|
||||
// : {}),
|
||||
// ...(device === 3
|
||||
// ? {
|
||||
// controlPermission: props.values.Config.ControlPermission??true,
|
||||
// }
|
||||
// : {}),
|
||||
});
|
||||
|
||||
const handleOperatingPriorityChange = (event) => {
|
||||
|
|
@ -122,7 +135,10 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
|||
batteriesCount:formValues.batteriesCount,
|
||||
clusterNumber:formValues.clusterNumber,
|
||||
PvNumber:formValues.PvNumber,
|
||||
|
||||
timeChargeDischargePower: formValues.timeChargeDischargePower,
|
||||
timeChargeDischargeTime: formValues.timeChargeDischargeTime,
|
||||
timeChargeDischargeDate: formValues.timeChargeDischargeDate,
|
||||
controlPermission:formValues.controlPermission
|
||||
// ...(device === 4 &&
|
||||
// OperatingPriorityOptions[formValues.operatingPriority] ===
|
||||
// 'TimeChargeDischarge' && {
|
||||
|
|
@ -290,6 +306,37 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
|||
autoComplete="off"
|
||||
>
|
||||
<>
|
||||
{device === 3 && (
|
||||
<div style={{ marginBottom: '5px' }}>
|
||||
<FormControlLabel
|
||||
labelPlacement="start"
|
||||
control={
|
||||
<Switch
|
||||
sx={{
|
||||
transform: "scale(1.4)",
|
||||
marginLeft: "15px",
|
||||
}}
|
||||
checked={formValues.controlPermission ?? false}
|
||||
onChange={(e) =>
|
||||
handleChange({
|
||||
target: {
|
||||
name: "controlPermission",
|
||||
value: e.target.checked
|
||||
}
|
||||
})
|
||||
}
|
||||
/>
|
||||
}
|
||||
label={
|
||||
<FormattedMessage
|
||||
id="controlPermission"
|
||||
defaultMessage="Control Permission"
|
||||
/>
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div style={{ marginBottom: '5px' }}>
|
||||
<TextField
|
||||
label={
|
||||
|
|
@ -305,36 +352,6 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
|||
/>
|
||||
</div>
|
||||
|
||||
{/*<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>*/}
|
||||
|
||||
{device === 4 && (
|
||||
<>
|
||||
<div style={{ marginBottom: '5px' }}>
|
||||
|
|
|
|||
Loading…
Reference in New Issue