Skip to content
Snippets Groups Projects
Commit 55c8c710 authored by Emmanuel Raviart's avatar Emmanuel Raviart
Browse files

Allow to compute a simulation with modified scales.

parent 7cdce6db
No related branches found
No related tags found
No related merge requests found
<script lang="ts">
import { createEventDispatcher } from "svelte"
export let bracket: { [threshold: string]: number | null } | undefined | null
import type { Bracket } from "$lib/parameters"
export let bracket: Bracket | undefined | null
const dispatch = createEventDispatcher()
......
......@@ -3,7 +3,8 @@
import type { Writable } from "svelte/store"
import type { Parameter } from "$lib/parameters"
import type { Reform } from "$lib/reforms"
import type { Reform, ReformChangeParameter } from "$lib/reforms"
import { ReformChangeType } from "$lib/reforms"
import VariableReferredParameterHeader from "./VariableReferredParameterHeader.svelte"
......@@ -18,7 +19,7 @@
) as Writable<boolean>
let validValue = undefined
$: change = $reform[parameter.name]
$: change = $reform[parameter.name] as ReformChangeParameter | undefined
$: latestValue = parameter.values?.[0]
......@@ -40,6 +41,7 @@
...$reform,
[parameter.name]: {
start,
type: ReformChangeType.Parameter,
value,
},
}
......
......@@ -3,8 +3,9 @@
import type { Writable } from "svelte/store"
import BracketEdit from "$lib/components/parameters/BracketEdit.svelte"
import type { Scale } from "$lib/parameters"
import type { Reform } from "$lib/reforms"
import type { Bracket, Scale } from "$lib/parameters"
import type { Reform, ReformChangeScale } from "$lib/reforms"
import { ReformChangeType } from "$lib/reforms"
import VariableReferredParameterHeader from "./VariableReferredParameterHeader.svelte"
......@@ -22,6 +23,8 @@
parameter.brackets,
).sort(([instant1], [instant2]) => instant2.localeCompare(instant1))
$: change = $reform[parameter.name] as ReformChangeScale | undefined
$: latestInstantAndBracket = bracketsArray[0]
$: latestBracket = latestInstantAndBracket[1]
......@@ -30,22 +33,26 @@
$: latestInstantSplit = latestInstant.split("-")
function changeBracket({ detail: bracket }) {
function changeBracket({ detail: bracket }: { detail: Bracket }) {
updateReform(`${date.split("-")[0]}-01-01`, bracket)
}
function updateReform(start: string, value) {
// TODO
// if (start !== undefined && value !== undefined) {
// $reform = {
// ...$reform,
// [parameter.name]: {
// start,
// value,
// },
// }
// $simulationRequested = true
// }
function updateReform(start: string, bracket: Bracket) {
if (
start !== undefined &&
bracket !== undefined &&
Object.keys(bracket).length > 0
) {
$reform = {
...$reform,
[parameter.name]: {
bracket,
start,
type: ReformChangeType.Scale,
},
}
$simulationRequested = true
}
}
</script>
......
export type AnyParameter = Parameter | ParameterNode | Scale
export type Bracket = { [threshold: string]: number | null }
export interface Parameter extends ParameterBase {
class: ParameterClass.Parameter
values: ParameterAtInstant[]
......@@ -45,7 +47,7 @@ export interface ParameterWithAncestors {
}
export interface Scale extends ParameterBase {
brackets: { [instant: string]: { [threshold: string]: number | null } | null }
brackets: { [instant: string]: Bracket | null }
class: ParameterClass.Scale
rate_unit?: Unit.Rate
threshold_unit?: Unit.Currency
......
export interface ReformChange {
import type { Bracket } from "./parameters"
export interface Reform {
[parameterName: string]: ReformChange
}
type ReformChange = ReformChangeParameter | ReformChangeScale
export interface ReformChangeBase {
start: string
stop?: string
type: ReformChangeType
}
export interface ReformChangeParameter extends ReformChangeBase {
type: ReformChangeType.Parameter
value: number
}
export interface Reform {
[parameterName: string]: ReformChange
export interface ReformChangeScale extends ReformChangeBase {
type: ReformChangeType.Scale
bracket: Bracket
}
export enum ReformChangeType {
Parameter = "parameter",
Scale = "scale",
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment