完善MECMAS21参数配置与分组交互
This commit is contained in:
1 parent
32f21f08ff
commit
be54070855
28 files changed
+3418
-202
No files matched your search
@@ -9,6 +9,7 @@ ResultVariableScope = Literal["component", "port"]
|
||||
ParameterEditor = Literal[
|
||||
"amesimGasReference",
|
||||
"amesimGasPropertyModel",
|
||||
"choice",
|
||||
]
|
||||
|
||||
|
||||
@@ -52,9 +53,27 @@ class ParameterOption:
|
||||
}
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class ParameterCondition:
|
||||
"""Match when the controlling parameter equals any declared value."""
|
||||
|
||||
parameter: str
|
||||
values: tuple[float, ...]
|
||||
|
||||
def as_interface_dict(self) -> dict[str, object]:
|
||||
return {
|
||||
"parameter": self.parameter,
|
||||
"values": list(self.values),
|
||||
}
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class ParameterDefinition:
|
||||
"""User-configurable model input expressed in the backend SI contract."""
|
||||
"""User-configurable model input expressed in the backend SI contract.
|
||||
|
||||
Every ``visible_when`` condition must match for the catalog parameter to
|
||||
be visible; each individual condition matches any one of its ``values``.
|
||||
"""
|
||||
|
||||
name: str
|
||||
default: float
|
||||
@@ -67,6 +86,7 @@ class ParameterDefinition:
|
||||
editor: ParameterEditor | None = None
|
||||
options: tuple[ParameterOption, ...] = ()
|
||||
description: str = ""
|
||||
visible_when: tuple[ParameterCondition, ...] = ()
|
||||
|
||||
def validation_message(self, value: float) -> str | None:
|
||||
if not isfinite(value):
|
||||
@@ -106,6 +126,10 @@ class ParameterDefinition:
|
||||
]
|
||||
if self.description:
|
||||
payload["description"] = self.description
|
||||
if self.visible_when:
|
||||
payload["visibleWhen"] = [
|
||||
condition.as_interface_dict() for condition in self.visible_when
|
||||
]
|
||||
if value is not None:
|
||||
payload["value"] = value
|
||||
return payload
|
||||
|
||||
Reference in new issue
Block a user