Skip to content

Commit 6276772

Browse files
committed
Set default cost parameters
For battery and SDE.
1 parent a5eced8 commit 6276772

File tree

5 files changed

+32
-18
lines changed

5 files changed

+32
-18
lines changed

webtool/frontend/src/components/assets/battery.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export const BatteryForm: FunctionComponent<{
4646
initialData?: Battery | null;
4747
save: (save: Battery) => void
4848
hide: () => void
49-
}> = ({initialData, save, hide}) => {
49+
}> = ({initialData = new Battery, save, hide}) => {
5050
const onSubmit = (event: FormEvent<HTMLFormElement>) => {
5151
event.preventDefault()
5252
const form = event.currentTarget
@@ -68,11 +68,11 @@ export const BatteryForm: FunctionComponent<{
6868
<form onSubmit={onSubmit}>
6969
<div className="radix-grid">
7070
<LabelWithInfo data={titles["capacity_kWh"]} />
71-
<input className="form-input" type="number" id="capacity_kWh" name="capacity_kWh" defaultValue={ initialData?.capacity_kWh || 100} />
71+
<input className="form-input" type="number" id="capacity_kWh" name="capacity_kWh" defaultValue={ initialData?.capacity_kWh } />
7272
</div>
7373
<div className="radix-grid">
7474
<LabelWithInfo data={titles["peakPower_kW"]} />
75-
<input className="form-input" type="number" id="peakPower_kW" name="peakPower_kW" defaultValue={ initialData?.peakPower_kW || 100} />
75+
<input className="form-input" type="number" id="peakPower_kW" name="peakPower_kW" defaultValue={ initialData?.peakPower_kW } />
7676
</div>
7777
<CostSection showCostPerKwh={false} showTotalCostFactors={true} initialData={initialData?.cost}/>
7878
<Button onClick={hide} style={{ marginRight: '10px' }} highContrast variant="soft">Annuleren</Button>

webtool/frontend/src/components/cost/cost-section.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ const CostHeading = () => (
9595
</Heading>
9696
);
9797

98+
const defaultGenerationCost = AssetCost.Companion.createForGenerationAsset()
99+
98100
export const CostSection: FunctionComponent<{
99101
showCostPerKwh?: boolean
100102
showTotalCostFactors?: boolean
@@ -124,16 +126,16 @@ export const CostSection: FunctionComponent<{
124126
<input className="form-input" type="number" id="LCOE_eurpkWh" name="LCOE_eurpkWh"
125127
min={0} step={0.001}
126128
placeholder="€/kWh"
127-
defaultValue={initialData?.LCOE_eurpkWH || 0}
129+
defaultValue={initialData?.LCOE_eurpkWH || defaultGenerationCost.LCOE_eurpkWH || ""}
128130
/>
129131
</div>
130132
: null}
131133
{ppaType === PPAType.FLOOR_CAP_PPA ?
132134
<>
133135
<SdeAanvraagBedragFormRow
134-
defaultValue={initialData?.sdeAanvraagbedrag_eurpkWh || 0} />
136+
defaultValue={initialData?.sdeAanvraagbedrag_eurpkWh || defaultGenerationCost.sdeAanvraagbedrag_eurpkWh} />
135137
<SdeBasisenergiePrijsFormRow
136-
defaultValue={initialData?.sdeBasisenergieprijs_eurpkWh || 0} />
138+
defaultValue={initialData?.sdeBasisenergieprijs_eurpkWh || defaultGenerationCost.sdeBasisenergieprijs_eurpkWh} />
137139
</>
138140
: null}
139141
</>

webtool/frontend/src/components/solarfarm/solarfarm-form.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import {LabelWithInfo} from "../info/label-with-info.tsx"
88
import {solarFarmTitles, titles} from "../info/titles.tsx"
99

1010
export const SolarFarmForm: FunctionComponent<{
11-
initialData?: SolarFarm | null;
11+
initialData?: SolarFarm | null
1212
save: (solarFarm: SolarFarm) => void
1313
hide: () => void
14-
}> = ({initialData, save, hide}) => {
14+
}> = ({initialData = new SolarFarm, save, hide}) => {
1515
const onSubmit = (event: FormEvent<HTMLFormElement>) => {
1616
event.preventDefault()
1717
const form = event.currentTarget
@@ -41,7 +41,7 @@ export const SolarFarmForm: FunctionComponent<{
4141
<form onSubmit={onSubmit}>
4242
<div className="radix-grid">
4343
<LabelWithInfo data={solarFarmTitles["nominalPower_kW"]} />
44-
<input className="form-input" type="number" id="nominalPower_kW" name="nominalPower_kW" defaultValue={ initialData?.nominalPower_kW || 1000}/>
44+
<input className="form-input" type="number" id="nominalPower_kW" name="nominalPower_kW" defaultValue={ initialData?.nominalPower_kW }/>
4545
</div>
4646
<div className="radix-grid">
4747
<LabelWithInfo data={solarFarmTitles.curtailment} />

webtool/frontend/src/components/wind-farm/wind-farm.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {FormEvent, FunctionComponent, useState} from "react"
22
import {Flex, Button, Card, DataList, Heading} from "@radix-ui/themes"
3-
import {Pilot, WindFarm, WindFarmLocation} from "local4local"
3+
import {Pilot, WindFarm, WindFarmLocation, AssetCost} from "local4local"
44
import { GiWindTurbine } from "react-icons/gi";
55
import {CostSection, CostDisplay} from "../cost/cost-section.tsx"
66
import {CardMenu} from "../card-menu.tsx"
@@ -88,7 +88,7 @@ export const WindFarmForm: FunctionComponent<{
8888
<LabelWithInfo data={windFarmTitles.curtailment} />
8989
<input type="checkbox" id="curtailment" name="curtailment" defaultChecked={initialData?.curtailment} />
9090
</div>
91-
<CostSection initialData={initialData?.cost}/>
91+
<CostSection initialData={initialData?.cost ?? AssetCost.Companion.createForGenerationAsset()}/>
9292
<Button onClick={hide} style={{ marginRight: '10px' }} highContrast variant="soft">Annuleren</Button>
9393
<Button type="submit">Opslaan</Button>
9494
</form>

webtool/gradle/common/src/commonMain/kotlin/Pilot.kt

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,14 @@ data class AssetCost(
131131
val interest_r: Double? = 0.0,
132132
val depreciationPeriod_y: Double? = 0.0,
133133
val OPEX_eurpy: Double? = 0.0,
134-
)
134+
) {
135+
companion object {
136+
fun createForGenerationAsset(): AssetCost = AssetCost(
137+
sdeAanvraagbedrag_eurpkWh = 0.10,
138+
sdeBasisenergieprijs_eurpkWh = 0.04,
139+
)
140+
}
141+
}
135142

136143
@JsExport
137144
@Serializable
@@ -190,11 +197,11 @@ enum class PVOrientation(val displayName: String) {
190197
@JsExport
191198
@Serializable
192199
data class SolarFarm(
193-
val nominalPower_kW: Double,
200+
val nominalPower_kW: Double = 1000.0,
194201
val orientation: PVOrientation = PVOrientation.SOUTH,
195-
val cost: AssetCost,
202+
val cost: AssetCost = AssetCost.createForGenerationAsset(),
196203
val curtailment: Boolean = false,
197-
val id: String = "SolarFarm_${idCounter++}"
204+
val id: String = "SolarFarm_${idCounter++}",
198205
) {
199206
fun withSdeAanvraagbedrag_eurpkWh(sdeAanvraagbedrag_eurpkWh: Double) = copy(
200207
cost = cost.copy(
@@ -263,9 +270,14 @@ enum class WindFarmLocation(val displayName: String) {
263270
@JsExport
264271
@Serializable
265272
data class Battery(
266-
val capacity_kWh: Double,
267-
val peakPower_kW: Double,
268-
val cost: AssetCost,
273+
val capacity_kWh: Double = 2000.0,
274+
val peakPower_kW: Double = 1000.0,
275+
val cost: AssetCost = AssetCost(
276+
CAPEX_eur = 400_000.0,
277+
interest_r = 0.06,
278+
depreciationPeriod_y = 15.0,
279+
OPEX_eurpy = 8000.0,
280+
),
269281
val id: String = "Battery_${idCounter++}"
270282
)
271283

0 commit comments

Comments
 (0)