diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2023-02-03 18:32:34 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-03 18:32:34 +0000 |
| commit | bb5e9e7778f6e7cc2161a988fef177d28df8d64f (patch) | |
| tree | 3085bdbc0899c7269e286ce026982c02a3a2864e /opendc-web/opendc-web-ui | |
| parent | dd9b7b1e0c59c010fb191a1ea1d805f2748fb216 (diff) | |
| parent | 49b3015a16287bb4486aa64c5c26f05f7c22089c (diff) | |
merge: Clean up web server (#130)
This pull request cleans up the web server to follow Quarkus' best-practices.
## Implementation Notes :hammer_and_pick:
* Migrate to Hypersistence Utils
* Convert web server utils to Java
* Use Panache for entity modeling
* Convert resources to Java
* Remove unnecessary service indirections
## External Dependencies :four_leaf_clover:
* Panache for modeling database entities
* Hypersistence Utils for storing JSON in database
* Mockito for mocking in the web server tests
## Breaking API Changes :warning:
* All implementation is moved to Java for better compatibility with Quarkus.
* Scenarios can now have multiple jobs (e.g., if retried)
Diffstat (limited to 'opendc-web/opendc-web-ui')
3 files changed, 14 insertions, 11 deletions
diff --git a/opendc-web/opendc-web-ui/src/components/portfolios/PortfolioResults.js b/opendc-web/opendc-web-ui/src/components/portfolios/PortfolioResults.js index f50105ed..62150fa7 100644 --- a/opendc-web/opendc-web-ui/src/components/portfolios/PortfolioResults.js +++ b/opendc-web/opendc-web-ui/src/components/portfolios/PortfolioResults.js @@ -57,14 +57,17 @@ function PortfolioResults({ projectId, portfolioId }) { const dataPerMetric = {} AVAILABLE_METRICS.forEach((metric) => { dataPerMetric[metric] = scenarios - .filter((scenario) => scenario.job?.results) - .map((scenario) => ({ - metric, - x: scenario.name, - y: mean(scenario.job.results[metric]), - errorY: std(scenario.job.results[metric]), - label, - })) + .filter((scenario) => scenario.jobs && scenario.jobs[scenario.jobs.length - 1].results) + .map((scenario) => { + const job = scenario.jobs[scenario.jobs.length - 1] + return { + metric, + x: scenario.name, + y: mean(job.results[metric]), + errorY: std(job.results[metric]), + label, + } + }) }) return dataPerMetric }, [scenarios]) diff --git a/opendc-web/opendc-web-ui/src/components/portfolios/ScenarioTable.js b/opendc-web/opendc-web-ui/src/components/portfolios/ScenarioTable.js index 5fd2a1da..b068d045 100644 --- a/opendc-web/opendc-web-ui/src/components/portfolios/ScenarioTable.js +++ b/opendc-web/opendc-web-ui/src/components/portfolios/ScenarioTable.js @@ -59,7 +59,7 @@ function ScenarioTable({ portfolio, status }) { <Td dataLabel="Topology"> {scenario.topology ? ( <Link href={`/projects/${projectId}/topologies/${scenario.topology.number}`}> - scenario.topology.name + {scenario.topology.name} </Link> ) : ( 'Unknown Topology' @@ -69,7 +69,7 @@ function ScenarioTable({ portfolio, status }) { scenario.workload.samplingFraction * 100 }%)`}</Td> <Td dataLabel="State"> - <ScenarioState state={scenario.job.state} /> + <ScenarioState state={scenario.jobs[scenario.jobs.length - 1].state} /> </Td> <Td isActionCell> <ActionsColumn items={actions(scenario)} /> diff --git a/opendc-web/opendc-web-ui/src/shapes.js b/opendc-web/opendc-web-ui/src/shapes.js index 6c93f458..50b82361 100644 --- a/opendc-web/opendc-web-ui/src/shapes.js +++ b/opendc-web/opendc-web-ui/src/shapes.js @@ -159,7 +159,7 @@ export const Scenario = PropTypes.shape({ topology: TopologySummary.isRequired, phenomena: Phenomena.isRequired, schedulerName: PropTypes.string.isRequired, - job: Job.isRequired, + jobs: PropTypes.arrayOf(Job).isRequired, }) export const Portfolio = PropTypes.shape({ |
