diff --git a/web/src/components/CaseBuilder/Buses.test.ts b/web/src/components/CaseBuilder/Buses.test.ts index bc74a3b..21fe0a7 100644 --- a/web/src/components/CaseBuilder/Buses.test.ts +++ b/web/src/components/CaseBuilder/Buses.test.ts @@ -7,7 +7,7 @@ import assert from "node:assert"; import { BusesColumnSpec, generateBusesData } from "./Buses"; import { generateCsv, parseCsv } from "../Common/Forms/DataTable"; -import { TEST_DATA_1 } from "../../core/fixtures.test"; +import { TEST_DATA_1 } from "../../core/Data/fixtures.test"; test("generate CSV", () => { const [data, columns] = generateBusesData(TEST_DATA_1); diff --git a/web/src/components/CaseBuilder/Buses.tsx b/web/src/components/CaseBuilder/Buses.tsx index f46c4ae..81ea25e 100644 --- a/web/src/components/CaseBuilder/Buses.tsx +++ b/web/src/components/CaseBuilder/Buses.tsx @@ -14,7 +14,7 @@ import { import { offerDownload } from "../Common/io"; import FileUploadElement from "../Common/Buttons/FileUploadElement"; import { useRef } from "react"; -import { ValidationError } from "../../core/Validation/validate"; +import { ValidationError } from "../../core/Data/validate"; import DataTable, { ColumnSpec, generateCsv, @@ -23,7 +23,6 @@ import DataTable, { parseCsv, } from "../Common/Forms/DataTable"; -import { UnitCommitmentScenario } from "../../core/fixtures"; import { ColumnDefinition } from "tabulator-tables"; import { changeBusData, @@ -32,6 +31,7 @@ import { renameBus, } from "../../core/Operations/busOps"; import { CaseBuilderSectionProps } from "./CaseBuilder"; +import { UnitCommitmentScenario } from "../../core/Data/types"; export const BusesColumnSpec: ColumnSpec[] = [ { diff --git a/web/src/components/CaseBuilder/CaseBuilder.tsx b/web/src/components/CaseBuilder/CaseBuilder.tsx index 1650953..188982a 100644 --- a/web/src/components/CaseBuilder/CaseBuilder.tsx +++ b/web/src/components/CaseBuilder/CaseBuilder.tsx @@ -7,23 +7,20 @@ import Header from "./Header"; import Parameters from "./Parameters"; import BusesComponent from "./Buses"; -import { - BLANK_SCENARIO, - TEST_SCENARIO, - UnitCommitmentScenario, -} from "../../core/fixtures"; +import { BLANK_SCENARIO, TEST_SCENARIO } from "../../core/Data/fixtures"; import "tabulator-tables/dist/css/tabulator.min.css"; import "../Common/Forms/Tables.css"; import { useState } from "react"; import Footer from "./Footer"; -import { validate } from "../../core/Validation/validate"; +import { validate } from "../../core/Data/validate"; import { offerDownload } from "../Common/io"; import { preprocess } from "../../core/Operations/preprocessing"; import Toast from "../Common/Forms/Toast"; import ProfiledUnitsComponent from "./ProfiledUnits"; import ThermalUnitsComponent from "./ThermalUnits"; import TransmissionLinesComponent from "./TransmissionLines"; +import { UnitCommitmentScenario } from "../../core/Data/types"; export interface CaseBuilderSectionProps { scenario: UnitCommitmentScenario; diff --git a/web/src/components/CaseBuilder/Header.tsx b/web/src/components/CaseBuilder/Header.tsx index 69e432b..9573edf 100644 --- a/web/src/components/CaseBuilder/Header.tsx +++ b/web/src/components/CaseBuilder/Header.tsx @@ -6,9 +6,9 @@ import styles from "./Header.module.css"; import SiteHeaderButton from "../Common/Buttons/SiteHeaderButton"; -import { UnitCommitmentScenario } from "../../core/fixtures"; import { useRef } from "react"; import FileUploadElement from "../Common/Buttons/FileUploadElement"; +import { UnitCommitmentScenario } from "../../core/Data/types"; interface HeaderProps { onClear: () => void; diff --git a/web/src/components/CaseBuilder/Parameters.tsx b/web/src/components/CaseBuilder/Parameters.tsx index f0009c8..20092dc 100644 --- a/web/src/components/CaseBuilder/Parameters.tsx +++ b/web/src/components/CaseBuilder/Parameters.tsx @@ -7,12 +7,12 @@ import SectionHeader from "../Common/SectionHeader/SectionHeader"; import Form from "../Common/Forms/Form"; import TextInputRow from "../Common/Forms/TextInputRow"; -import { UnitCommitmentScenario } from "../../core/fixtures"; import { changeParameter, changeTimeHorizon, changeTimeStep, } from "../../core/Operations/parameterOps"; +import { UnitCommitmentScenario } from "../../core/Data/types"; interface ParametersProps { scenario: UnitCommitmentScenario; diff --git a/web/src/components/CaseBuilder/ProfiledUnits.test.ts b/web/src/components/CaseBuilder/ProfiledUnits.test.ts index 81c63f7..7119d94 100644 --- a/web/src/components/CaseBuilder/ProfiledUnits.test.ts +++ b/web/src/components/CaseBuilder/ProfiledUnits.test.ts @@ -13,12 +13,12 @@ import { parseProfiledUnitsCsv, ProfiledUnitsColumnSpec, } from "./ProfiledUnits"; -import { TEST_DATA_1 } from "../../core/fixtures.test"; +import { TEST_DATA_1 } from "../../core/Data/fixtures.test"; import assert from "node:assert"; import { getProfiledGenerators, getThermalGenerators, -} from "../../core/fixtures"; +} from "../../core/Data/types"; test("parse CSV", () => { const csvContents = diff --git a/web/src/components/CaseBuilder/ProfiledUnits.tsx b/web/src/components/CaseBuilder/ProfiledUnits.tsx index 4029bb6..d4aeb51 100644 --- a/web/src/components/CaseBuilder/ProfiledUnits.tsx +++ b/web/src/components/CaseBuilder/ProfiledUnits.tsx @@ -18,11 +18,6 @@ import DataTable, { generateTableData, parseCsv, } from "../Common/Forms/DataTable"; -import { - getProfiledGenerators, - getThermalGenerators, - UnitCommitmentScenario, -} from "../../core/fixtures"; import { ColumnDefinition } from "tabulator-tables"; import { offerDownload } from "../Common/io"; import FileUploadElement from "../Common/Buttons/FileUploadElement"; @@ -33,8 +28,13 @@ import { deleteGenerator, renameGenerator, } from "../../core/Operations/generatorOps"; -import { ValidationError } from "../../core/Validation/validate"; +import { ValidationError } from "../../core/Data/validate"; import { CaseBuilderSectionProps } from "./CaseBuilder"; +import { + getProfiledGenerators, + getThermalGenerators, + UnitCommitmentScenario, +} from "../../core/Data/types"; export const ProfiledUnitsColumnSpec: ColumnSpec[] = [ { diff --git a/web/src/components/CaseBuilder/ThermalUnits.test.ts b/web/src/components/CaseBuilder/ThermalUnits.test.ts index a5b4a02..b89425e 100644 --- a/web/src/components/CaseBuilder/ThermalUnits.test.ts +++ b/web/src/components/CaseBuilder/ThermalUnits.test.ts @@ -10,7 +10,7 @@ import { generateTableColumns, generateTableData, } from "../Common/Forms/DataTable"; -import { TEST_DATA_1 } from "../../core/fixtures.test"; +import { TEST_DATA_1 } from "../../core/Data/fixtures.test"; import { generateThermalUnitsData, parseThermalUnitsCsv, @@ -20,7 +20,7 @@ import assert from "node:assert"; import { getProfiledGenerators, getThermalGenerators, -} from "../../core/fixtures"; +} from "../../core/Data/types"; test("generateTableColumns", () => { const columns = generateTableColumns(TEST_DATA_1, ThermalUnitsColumnSpec); diff --git a/web/src/components/CaseBuilder/ThermalUnits.tsx b/web/src/components/CaseBuilder/ThermalUnits.tsx index e7af112..a1aff04 100644 --- a/web/src/components/CaseBuilder/ThermalUnits.tsx +++ b/web/src/components/CaseBuilder/ThermalUnits.tsx @@ -14,7 +14,7 @@ import DataTable, { import { CaseBuilderSectionProps } from "./CaseBuilder"; import { useRef } from "react"; import FileUploadElement from "../Common/Buttons/FileUploadElement"; -import { ValidationError } from "../../core/Validation/validate"; +import { ValidationError } from "../../core/Data/validate"; import SectionHeader from "../Common/SectionHeader/SectionHeader"; import SectionButton from "../Common/Buttons/SectionButton"; import { @@ -22,11 +22,6 @@ import { faPlus, faUpload, } from "@fortawesome/free-solid-svg-icons"; -import { - getProfiledGenerators, - getThermalGenerators, - UnitCommitmentScenario, -} from "../../core/fixtures"; import { ColumnDefinition } from "tabulator-tables"; import { offerDownload } from "../Common/io"; import { @@ -35,6 +30,11 @@ import { deleteGenerator, renameGenerator, } from "../../core/Operations/generatorOps"; +import { + getProfiledGenerators, + getThermalGenerators, + UnitCommitmentScenario, +} from "../../core/Data/types"; export const ThermalUnitsColumnSpec: ColumnSpec[] = [ { diff --git a/web/src/components/CaseBuilder/TransmissionLines.tsx b/web/src/components/CaseBuilder/TransmissionLines.tsx index 7291743..39c1300 100644 --- a/web/src/components/CaseBuilder/TransmissionLines.tsx +++ b/web/src/components/CaseBuilder/TransmissionLines.tsx @@ -18,11 +18,10 @@ import DataTable, { generateTableData, parseCsv, } from "../Common/Forms/DataTable"; -import { UnitCommitmentScenario } from "../../core/fixtures"; import { ColumnDefinition } from "tabulator-tables"; import FileUploadElement from "../Common/Buttons/FileUploadElement"; import { useRef } from "react"; -import { ValidationError } from "../../core/Validation/validate"; +import { ValidationError } from "../../core/Data/validate"; import { CaseBuilderSectionProps } from "./CaseBuilder"; import { changeTransmissionLineData, @@ -31,6 +30,7 @@ import { renameTransmissionLine, } from "../../core/Operations/transmissionOps"; import { offerDownload } from "../Common/io"; +import { UnitCommitmentScenario } from "../../core/Data/types"; export const TransmissionLinesColumnSpec: ColumnSpec[] = [ { diff --git a/web/src/components/Common/Forms/DataTable.tsx b/web/src/components/Common/Forms/DataTable.tsx index 67b652c..962fa36 100644 --- a/web/src/components/Common/Forms/DataTable.tsx +++ b/web/src/components/Common/Forms/DataTable.tsx @@ -10,10 +10,10 @@ import { ColumnDefinition, TabulatorFull as Tabulator, } from "tabulator-tables"; -import { ValidationError } from "../../../core/Validation/validate"; -import { UnitCommitmentScenario } from "../../../core/fixtures"; +import { ValidationError } from "../../../core/Data/validate"; import Papa from "papaparse"; import { parseBool, parseNumber } from "../../../core/Operations/commonOps"; +import { UnitCommitmentScenario } from "../../../core/Data/types"; export interface ColumnSpec { title: string; diff --git a/web/src/components/Common/Forms/TextInputRow.tsx b/web/src/components/Common/Forms/TextInputRow.tsx index fd513b9..854e315 100644 --- a/web/src/components/Common/Forms/TextInputRow.tsx +++ b/web/src/components/Common/Forms/TextInputRow.tsx @@ -7,7 +7,7 @@ import formStyles from "./Form.module.css"; import HelpButton from "../Buttons/HelpButton"; import React, { useRef, useState } from "react"; -import { ValidationError } from "../../../core/Validation/validate"; +import { ValidationError } from "../../../core/Data/validate"; interface TextInputRowProps { label: string; diff --git a/web/src/core/fixtures.test.ts b/web/src/core/Data/fixtures.test.ts similarity index 88% rename from web/src/core/fixtures.test.ts rename to web/src/core/Data/fixtures.test.ts index 916ae9a..fdb248f 100644 --- a/web/src/core/fixtures.test.ts +++ b/web/src/core/Data/fixtures.test.ts @@ -1,4 +1,10 @@ -import { UnitCommitmentScenario } from "./fixtures"; +/* + * UnitCommitment.jl: Optimization Package for Security-Constrained Unit Commitment + * Copyright (C) 2020-2025, UChicago Argonne, LLC. All rights reserved. + * Released under the modified BSD license. See COPYING.md for more details. + */ + +import { UnitCommitmentScenario } from "./types"; export const TEST_DATA_1: UnitCommitmentScenario = { Parameters: { diff --git a/web/src/core/fixtures.tsx b/web/src/core/Data/fixtures.tsx similarity index 70% rename from web/src/core/fixtures.tsx rename to web/src/core/Data/fixtures.tsx index dcd3b66..ba2e00b 100644 --- a/web/src/core/fixtures.tsx +++ b/web/src/core/Data/fixtures.tsx @@ -4,86 +4,12 @@ * Released under the modified BSD license. See COPYING.md for more details. */ +import { UnitCommitmentScenario } from "./types"; + export interface Buses { [busName: string]: { "Load (MW)": number[] }; } -export interface Generators { - [name: string]: ProfiledUnit | ThermalUnit; -} - -export interface ProfiledUnit { - Bus: string; - Type: "Profiled"; - "Minimum power (MW)": number[]; - "Maximum power (MW)": number[]; - "Cost ($/MW)": number; -} - -export interface ThermalUnit { - Bus: string; - Type: "Thermal"; - "Production cost curve (MW)": number[]; - "Production cost curve ($)": number[]; - "Startup costs ($)": number[]; - "Startup delays (h)": number[]; - "Ramp up limit (MW)": number | ""; - "Ramp down limit (MW)": number | ""; - "Startup limit (MW)": number | ""; - "Shutdown limit (MW)": number | ""; - "Minimum downtime (h)": number; - "Minimum uptime (h)": number; - "Initial status (h)": number; - "Initial power (MW)": number; - "Must run?": boolean; -} - -export interface TransmissionLine { - "Source bus": string; - "Target bus": string; - "Susceptance (S)": number; - "Normal flow limit (MW)": number; - "Emergency flow limit (MW)": number; - "Flow limit penalty ($/MW)": number; -} - -export interface UnitCommitmentScenario { - Parameters: { - Version: string; - "Power balance penalty ($/MW)": number; - "Time horizon (h)": number; - "Time step (min)": number; - }; - Buses: Buses; - Generators: Generators; - "Transmission lines": { - [name: string]: TransmissionLine; - }; -} - -const getTypedGenerators = ( - scenario: UnitCommitmentScenario, - type: string, -): { - [key: string]: T; -} => { - const selected: { [key: string]: T } = {}; - for (const [name, gen] of Object.entries(scenario.Generators)) { - if (gen["Type"] === type) selected[name] = gen as T; - } - return selected; -}; - -export const getProfiledGenerators = ( - scenario: UnitCommitmentScenario, -): { [key: string]: ProfiledUnit } => - getTypedGenerators(scenario, "Profiled"); - -export const getThermalGenerators = ( - scenario: UnitCommitmentScenario, -): { [key: string]: ThermalUnit } => - getTypedGenerators(scenario, "Thermal"); - export const BLANK_SCENARIO: UnitCommitmentScenario = { Parameters: { Version: "0.4", diff --git a/web/src/core/Data/migrate.test.ts b/web/src/core/Data/migrate.test.ts new file mode 100644 index 0000000..84b248b --- /dev/null +++ b/web/src/core/Data/migrate.test.ts @@ -0,0 +1,34 @@ +/* + * UnitCommitment.jl: Optimization Package for Security-Constrained Unit Commitment + * Copyright (C) 2020-2025, UChicago Argonne, LLC. All rights reserved. + * Released under the modified BSD license. See COPYING.md for more details. + */ + +import assert from "node:assert"; +import fs from "node:fs"; +import pako from "pako"; +import { migrateToV03, migrateToV04 } from "./migrate"; + +function readJsonGz(filename: string) { + const compressedData = fs.readFileSync(filename); + const decompressedData = pako.inflate(compressedData, { to: "string" }); + return JSON.parse(decompressedData); +} + +test("migrateToV03", () => { + const jsonData = readJsonGz("../test/fixtures/ucjl-0.2.json.gz"); + migrateToV03(jsonData); + assert.deepEqual(jsonData.Reserves, { + r1: { + "Amount (MW)": 100, + "Shortfall penalty ($/MW)": 1000, + Type: "spinning", + }, + }); +}); + +test("migrateToV04", () => { + const jsonData = readJsonGz("../test/fixtures/ucjl-0.3.json.gz"); + migrateToV04(jsonData); + assert.equal(jsonData.Generators["g1"].Type, "Thermal"); +}); diff --git a/web/src/core/Data/migrate.ts b/web/src/core/Data/migrate.ts new file mode 100644 index 0000000..3c450d2 --- /dev/null +++ b/web/src/core/Data/migrate.ts @@ -0,0 +1,56 @@ +/* + * UnitCommitment.jl: Optimization Package for Security-Constrained Unit Commitment + * Copyright (C) 2020-2025, UChicago Argonne, LLC. All rights reserved. + * Released under the modified BSD license. See COPYING.md for more details. + */ + +import { ValidationError } from "./validate"; + +export const migrate = (json: any): ValidationError | null => { + const version = json.Parameters?.Version; + if (!version) { + return { + message: + "The provided input file cannot be loaded because it does not " + + "specify what version of UnitCommitment.jl it was written for.", + }; + } + if (!["0.2", "0.3", "0.4"].includes(version)) { + return { message: `Unsupported file version: ${version}` }; + } + if (version < "0.3") migrateToV03(json); + if (version < "0.4") migrateToV04(json); + json.Parameters.Version = "0.4"; + return null; +}; + +export const migrateToV03 = (json: any): void => { + if (json.Reserves && json.Reserves["Spinning (MW)"] != null) { + const amount = json.Reserves["Spinning (MW)"]; + json.Reserves = { + r1: { + Type: "spinning", + "Amount (MW)": amount, + }, + }; + if (json.Generators) { + for (const genName in json.Generators) { + const gen = json.Generators[genName]; + if (gen["Provides spinning reserves?"] === true) { + gen["Reserve eligibility"] = ["r1"]; + } + } + } + } +}; + +export const migrateToV04 = (json: any): void => { + if (json.Generators) { + for (const genName in json.Generators) { + const gen = json.Generators[genName]; + if (gen.Type == null) { + gen.Type = "Thermal"; + } + } + } +}; diff --git a/web/src/core/Validation/schema.ts b/web/src/core/Data/schema.ts similarity index 100% rename from web/src/core/Validation/schema.ts rename to web/src/core/Data/schema.ts diff --git a/web/src/core/Data/types.tsx b/web/src/core/Data/types.tsx new file mode 100644 index 0000000..ad3a237 --- /dev/null +++ b/web/src/core/Data/types.tsx @@ -0,0 +1,81 @@ +/* + * UnitCommitment.jl: Optimization Package for Security-Constrained Unit Commitment + * Copyright (C) 2020-2025, UChicago Argonne, LLC. All rights reserved. + * Released under the modified BSD license. See COPYING.md for more details. + */ + +import { Buses } from "./fixtures"; + +export interface Generators { + [name: string]: ProfiledUnit | ThermalUnit; +} + +export interface ProfiledUnit { + Bus: string; + Type: "Profiled"; + "Minimum power (MW)": number[]; + "Maximum power (MW)": number[]; + "Cost ($/MW)": number; +} + +export interface ThermalUnit { + Bus: string; + Type: "Thermal"; + "Production cost curve (MW)": number[]; + "Production cost curve ($)": number[]; + "Startup costs ($)": number[]; + "Startup delays (h)": number[]; + "Ramp up limit (MW)": number | ""; + "Ramp down limit (MW)": number | ""; + "Startup limit (MW)": number | ""; + "Shutdown limit (MW)": number | ""; + "Minimum downtime (h)": number; + "Minimum uptime (h)": number; + "Initial status (h)": number; + "Initial power (MW)": number; + "Must run?": boolean; +} + +export interface TransmissionLine { + "Source bus": string; + "Target bus": string; + "Susceptance (S)": number; + "Normal flow limit (MW)": number; + "Emergency flow limit (MW)": number; + "Flow limit penalty ($/MW)": number; +} + +export interface UnitCommitmentScenario { + Parameters: { + Version: string; + "Power balance penalty ($/MW)": number; + "Time horizon (h)": number; + "Time step (min)": number; + }; + Buses: Buses; + Generators: Generators; + "Transmission lines": { + [name: string]: TransmissionLine; + }; +} + +const getTypedGenerators = ( + scenario: UnitCommitmentScenario, + type: string, +): { + [key: string]: T; +} => { + const selected: { [key: string]: T } = {}; + for (const [name, gen] of Object.entries(scenario.Generators)) { + if (gen["Type"] === type) selected[name] = gen as T; + } + return selected; +}; +export const getProfiledGenerators = ( + scenario: UnitCommitmentScenario, +): { [key: string]: ProfiledUnit } => + getTypedGenerators(scenario, "Profiled"); +export const getThermalGenerators = ( + scenario: UnitCommitmentScenario, +): { [key: string]: ThermalUnit } => + getTypedGenerators(scenario, "Thermal"); diff --git a/web/src/core/Validation/validate.ts b/web/src/core/Data/validate.ts similarity index 100% rename from web/src/core/Validation/validate.ts rename to web/src/core/Data/validate.ts diff --git a/web/src/core/Operations/busOps.test.ts b/web/src/core/Operations/busOps.test.ts index 09c431b..590c708 100644 --- a/web/src/core/Operations/busOps.test.ts +++ b/web/src/core/Operations/busOps.test.ts @@ -6,7 +6,7 @@ import { changeBusData, createBus, deleteBus, renameBus } from "./busOps"; import assert from "node:assert"; -import { TEST_DATA_1 } from "../fixtures.test"; +import { TEST_DATA_1 } from "../Data/fixtures.test"; test("createBus", () => { const newScenario = createBus(TEST_DATA_1); diff --git a/web/src/core/Operations/busOps.ts b/web/src/core/Operations/busOps.ts index db98f15..3a51a2b 100644 --- a/web/src/core/Operations/busOps.ts +++ b/web/src/core/Operations/busOps.ts @@ -4,8 +4,8 @@ * Released under the modified BSD license. See COPYING.md for more details. */ -import { Buses, UnitCommitmentScenario } from "../fixtures"; -import { ValidationError } from "../Validation/validate"; +import { Buses } from "../Data/fixtures"; +import { ValidationError } from "../Data/validate"; import { generateTimeslots } from "../../components/Common/Forms/DataTable"; import { changeData, @@ -13,6 +13,7 @@ import { renameItemInObject, } from "./commonOps"; import { BusesColumnSpec } from "../../components/CaseBuilder/Buses"; +import { UnitCommitmentScenario } from "../Data/types"; export const createBus = (scenario: UnitCommitmentScenario) => { const name = generateUniqueName(scenario.Buses, "b"); diff --git a/web/src/core/Operations/commonOps.ts b/web/src/core/Operations/commonOps.ts index e3af76c..ff0f99e 100644 --- a/web/src/core/Operations/commonOps.ts +++ b/web/src/core/Operations/commonOps.ts @@ -4,9 +4,9 @@ * Released under the modified BSD license. See COPYING.md for more details. */ -import { ValidationError } from "../Validation/validate"; -import { UnitCommitmentScenario } from "../fixtures"; +import { ValidationError } from "../Data/validate"; import { ColumnSpec } from "../../components/Common/Forms/DataTable"; +import { UnitCommitmentScenario } from "../Data/types"; export const renameItemInObject = ( oldName: string, diff --git a/web/src/core/Operations/generatorOps.test.ts b/web/src/core/Operations/generatorOps.test.ts index 5664518..ecb1f12 100644 --- a/web/src/core/Operations/generatorOps.test.ts +++ b/web/src/core/Operations/generatorOps.test.ts @@ -4,7 +4,7 @@ * Released under the modified BSD license. See COPYING.md for more details. */ -import { TEST_DATA_1, TEST_DATA_BLANK } from "../fixtures.test"; +import { TEST_DATA_1, TEST_DATA_BLANK } from "../Data/fixtures.test"; import assert from "node:assert"; import { changeProfiledUnitData, @@ -14,7 +14,7 @@ import { deleteGenerator, renameGenerator, } from "./generatorOps"; -import { ValidationError } from "../Validation/validate"; +import { ValidationError } from "../Data/validate"; test("createProfiledUnit", () => { const [newScenario, err] = createProfiledUnit(TEST_DATA_1); diff --git a/web/src/core/Operations/generatorOps.ts b/web/src/core/Operations/generatorOps.ts index 56fef26..1e828cd 100644 --- a/web/src/core/Operations/generatorOps.ts +++ b/web/src/core/Operations/generatorOps.ts @@ -4,9 +4,8 @@ * Released under the modified BSD license. See COPYING.md for more details. */ -import { Generators, UnitCommitmentScenario } from "../fixtures"; import { generateTimeslots } from "../../components/Common/Forms/DataTable"; -import { ValidationError } from "../Validation/validate"; +import { ValidationError } from "../Data/validate"; import { assertBusesNotEmpty, changeData, @@ -15,6 +14,7 @@ import { } from "./commonOps"; import { ProfiledUnitsColumnSpec } from "../../components/CaseBuilder/ProfiledUnits"; import { ThermalUnitsColumnSpec } from "../../components/CaseBuilder/ThermalUnits"; +import { Generators, UnitCommitmentScenario } from "../Data/types"; export const createProfiledUnit = ( scenario: UnitCommitmentScenario, diff --git a/web/src/core/Operations/parameterOps.test.ts b/web/src/core/Operations/parameterOps.test.ts index 098007c..d3806c1 100644 --- a/web/src/core/Operations/parameterOps.test.ts +++ b/web/src/core/Operations/parameterOps.test.ts @@ -10,7 +10,7 @@ import { evaluatePwlFunction, } from "./parameterOps"; import assert from "node:assert"; -import { TEST_DATA_1, TEST_DATA_2 } from "../fixtures.test"; +import { TEST_DATA_1, TEST_DATA_2 } from "../Data/fixtures.test"; test("changeTimeHorizon: Shrink 1", () => { const [newScenario, err] = changeTimeHorizon(TEST_DATA_1, "3"); diff --git a/web/src/core/Operations/parameterOps.ts b/web/src/core/Operations/parameterOps.ts index 91fe415..21a8214 100644 --- a/web/src/core/Operations/parameterOps.ts +++ b/web/src/core/Operations/parameterOps.ts @@ -4,8 +4,9 @@ * Released under the modified BSD license. See COPYING.md for more details. */ -import { Buses, UnitCommitmentScenario } from "../fixtures"; -import { ValidationError } from "../Validation/validate"; +import { Buses } from "../Data/fixtures"; +import { ValidationError } from "../Data/validate"; +import { UnitCommitmentScenario } from "../Data/types"; export const changeTimeHorizon = ( scenario: UnitCommitmentScenario, diff --git a/web/src/core/Operations/preprocessing.ts b/web/src/core/Operations/preprocessing.ts index ccc0a0e..e66d571 100644 --- a/web/src/core/Operations/preprocessing.ts +++ b/web/src/core/Operations/preprocessing.ts @@ -6,7 +6,7 @@ * Released under the modified BSD license. See COPYING.md for more details. */ -import { validate } from "../Validation/validate"; +import { validate } from "../Data/validate"; export const preprocess = (data) => { // Make a copy of the original data diff --git a/web/src/core/Operations/transmissionOps.test.ts b/web/src/core/Operations/transmissionOps.test.ts index 1300e2c..65abdb5 100644 --- a/web/src/core/Operations/transmissionOps.test.ts +++ b/web/src/core/Operations/transmissionOps.test.ts @@ -4,7 +4,7 @@ * Released under the modified BSD license. See COPYING.md for more details. */ -import { TEST_DATA_1 } from "../fixtures.test"; +import { TEST_DATA_1 } from "../Data/fixtures.test"; import assert from "node:assert"; import { changeTransmissionLineData, @@ -12,7 +12,7 @@ import { deleteTransmissionLine, renameTransmissionLine, } from "./transmissionOps"; -import { ValidationError } from "../Validation/validate"; +import { ValidationError } from "../Data/validate"; test("createTransmissionLine", () => { const [newScenario, err] = createTransmissionLine(TEST_DATA_1); diff --git a/web/src/core/Operations/transmissionOps.ts b/web/src/core/Operations/transmissionOps.ts index 6e90f21..0e55707 100644 --- a/web/src/core/Operations/transmissionOps.ts +++ b/web/src/core/Operations/transmissionOps.ts @@ -4,15 +4,15 @@ * Released under the modified BSD license. See COPYING.md for more details. */ -import { TransmissionLine, UnitCommitmentScenario } from "../fixtures"; import { assertBusesNotEmpty, changeData, generateUniqueName, renameItemInObject, } from "./commonOps"; -import { ValidationError } from "../Validation/validate"; +import { ValidationError } from "../Data/validate"; import { TransmissionLinesColumnSpec } from "../../components/CaseBuilder/TransmissionLines"; +import { TransmissionLine, UnitCommitmentScenario } from "../Data/types"; export const createTransmissionLine = ( scenario: UnitCommitmentScenario,