Skip to content

Commit

Permalink
feat(tablemode-ui): only display columns of study version
Browse files Browse the repository at this point in the history
  • Loading branch information
skamril committed Apr 23, 2024
1 parent 8c42941 commit e2e44c6
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 19 deletions.
46 changes: 37 additions & 9 deletions webapp/src/components/common/TableMode.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { useEffect, useState } from "react";
import { StudyMetadata } from "../../common/types";
import usePromise from "../../hooks/usePromise";
import {
Expand All @@ -12,6 +13,8 @@ import {
import { SubmitHandlerPlus } from "./Form/types";
import TableForm from "./TableForm";
import UsePromiseCond from "./utils/UsePromiseCond";
import GridOffIcon from "@mui/icons-material/GridOff";
import SimpleContent from "./page/SimpleContent";

export interface TableModeProps<T extends TableModeType = TableModeType> {
studyId: StudyMetadata["id"];
Expand All @@ -21,10 +24,31 @@ export interface TableModeProps<T extends TableModeType = TableModeType> {

function TableMode<T extends TableModeType>(props: TableModeProps<T>) {
const { studyId, type, columns } = props;
const [filteredColumns, setFilteredColumns] = useState(columns);

const res = usePromise(
() => getTableMode({ studyId, tableType: type, columns }),
[studyId, type, JSON.stringify(columns)],
[studyId, type, columns.join(",")],
);

// Filter columns based on the data received, because the API may return
// fewer columns than requested depending on the study version
useEffect(
() => {
const dataKeys = Object.keys(res.data || {});

if (dataKeys.length === 0) {
setFilteredColumns([]);
return;
}

const data = res.data!;
const dataRowKeys = Object.keys(data[dataKeys[0]]);

setFilteredColumns(columns.filter((col) => dataRowKeys.includes(col)));
},
// eslint-disable-next-line react-hooks/exhaustive-deps
[res.data, columns.join(",")],
);

////////////////////////////////////////////////////////////////
Expand All @@ -42,14 +66,18 @@ function TableMode<T extends TableModeType>(props: TableModeProps<T>) {
return (
<UsePromiseCond
response={res}
ifResolved={(data) => (
<TableForm
defaultValues={data}
onSubmit={handleSubmit}
tableProps={{ columns }}
autoSubmit={false}
/>
)}
ifResolved={(data) =>
filteredColumns.length > 0 ? (
<TableForm
defaultValues={data}
onSubmit={handleSubmit}
tableProps={{ columns: filteredColumns }}
autoSubmit={false}
/>
) : (
<SimpleContent icon={<GridOffIcon />} title="study.results.noData" />
)
}
/>
);
}
Expand Down
20 changes: 10 additions & 10 deletions webapp/src/services/api/studies/tableMode/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,16 @@ export const TABLE_MODE_TYPES = [

export const TABLE_MODE_COLUMNS_BY_TYPE = {
[AREAS]: [
// Optimization - Nodal optimization
"nonDispatchablePower",
"dispatchableHydroPower",
"otherDispatchablePower",
"averageUnsuppliedEnergyCost",
"spreadUnsuppliedEnergyCost",
"averageSpilledEnergyCost",
"spreadSpilledEnergyCost",
// Optimization - Filtering
"filterSynthesis",
"filterYearByYear",
// Adequacy patch
// Since v8.3
"adequacyPatchMode",
],
[LINKS]: [
Expand All @@ -37,14 +35,12 @@ export const TABLE_MODE_COLUMNS_BY_TYPE = {
"assetType",
"linkStyle",
"linkWidth",
"comments", // unknown field?!
"comments",
"displayComments",
// Optimization - Filtering
"filterSynthesis",
"filterYearByYear",
],
[THERMALS]: [
// "name" is read-only
"group",
"enabled",
"unitCount",
Expand All @@ -64,8 +60,8 @@ export const TABLE_MODE_COLUMNS_BY_TYPE = {
"fixedCost",
"startupCost",
"marketBidCost",
// Pollutants - since v8.6 (except for "co2")
"co2",
// Since v8.6
"nh3",
"so2",
"nox",
Expand All @@ -84,30 +80,34 @@ export const TABLE_MODE_COLUMNS_BY_TYPE = {
"variableOMCost",
],
[RENEWABLES]: [
// Since v8.1
"group",
"enabled",
"tsInterpretation",
"unitCount",
"nominalCapacity",
],
[ST_STORAGES]: [
// Since v8.6
"group",
// "enabled", // since v8.8
"injectionNominalCapacity",
"withdrawalNominalCapacity",
"reservoirCapacity",
"efficiency",
"initialLevel",
"initialLevelOptim",
// Since v8.8
"enabled",
],
[BINDING_CONSTRAINTS]: [
"group",
"enabled",
"timeStep",
"operator",
"comments",
// Optimization - Filtering
// Since v8.3
"filterSynthesis",
"filterYearByYear",
// Since v8.7
"group",
],
} as const;

0 comments on commit e2e44c6

Please sign in to comment.