Improve EOSdash.

Make EOSdash use UI components from MonsterUI to ease further development.

- Add a first menu with some dummy pages and the configuration page.
- Make the configuration scrollable.
- Add markdown component that uses markdown-it-py (same as used by
  the myth-parser for documentation generation).
- Add bokeh (https://docs.bokeh.org/) component for charts
- Added several prediction charts to demo
- Add a footer that displays connection status with EOS server
- Add logo and favicon

Update EOS server:

- Move error message generation to extra module
- Use redirect instead of proxy

Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
This commit is contained in:
Bobby Noelte
2025-01-22 23:47:28 +01:00
parent 80bfe4d0f0
commit ab6a518b5f
34 changed files with 1802 additions and 351 deletions

View File

@@ -2229,7 +2229,7 @@
"type": "object"
},
"ServerCommonSettings": {
"description": "Server Configuration.\n\nAttributes:\n To be added",
"description": "Server Configuration.",
"properties": {
"eosdash_host": {
"anyOf": [
@@ -3371,7 +3371,7 @@
},
"/v1/config/reset": {
"post": {
"description": "Reset the configuration.\n\nReturns:\n configuration (ConfigEOS): The current configuration after update.",
"description": "Reset the configuration to the EOS configuration file.\n\nReturns:\n configuration (ConfigEOS): The current configuration after update.",
"operationId": "fastapi_config_reset_post_v1_config_reset_post",
"responses": {
"200": {
@@ -3951,6 +3951,108 @@
]
}
},
"/v1/prediction/dataframe": {
"get": {
"description": "Get prediction for given key within given date range as series.\n\nArgs:\n key (str): Prediction key\n start_datetime (Optional[str]): Starting datetime (inclusive).\n Defaults to start datetime of latest prediction.\n end_datetime (Optional[str]: Ending datetime (exclusive).\n\nDefaults to end datetime of latest prediction.",
"operationId": "fastapi_prediction_dataframe_get_v1_prediction_dataframe_get",
"parameters": [
{
"description": "Prediction keys.",
"in": "query",
"name": "keys",
"required": true,
"schema": {
"description": "Prediction keys.",
"items": {
"type": "string"
},
"title": "Keys",
"type": "array"
}
},
{
"description": "Starting datetime (inclusive).",
"in": "query",
"name": "start_datetime",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Starting datetime (inclusive).",
"title": "Start Datetime"
}
},
{
"description": "Ending datetime (exclusive).",
"in": "query",
"name": "end_datetime",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Ending datetime (exclusive).",
"title": "End Datetime"
}
},
{
"description": "Time duration for each interval. Defaults to 1 hour.",
"in": "query",
"name": "interval",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Time duration for each interval. Defaults to 1 hour.",
"title": "Interval"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PydanticDateTimeDataFrame"
}
}
},
"description": "Successful Response"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
},
"summary": "Fastapi Prediction Dataframe Get",
"tags": [
"prediction"
]
}
},
"/v1/prediction/import/{provider_id}": {
"put": {
"description": "Import prediction for given provider ID.\n\nArgs:\n provider_id: ID of provider to update.\n data: Prediction data.\n force_enable: Update data even if provider is disabled.\n Defaults to False.",