diff --git a/webapp/.eslintrc.cjs b/webapp/.eslintrc.cjs index 29270da704..27cb270ac4 100644 --- a/webapp/.eslintrc.cjs +++ b/webapp/.eslintrc.cjs @@ -14,15 +14,8 @@ module.exports = { "plugin:jsdoc/recommended-typescript", "plugin:prettier/recommended", // Must be the last one ], - plugins: [ - "license-header", - "react-refresh", - ], - ignorePatterns: [ - "dist", - "license-header.js", - ".eslintrc.cjs", - ], + plugins: ["license-header", "react-refresh", "simple-import-sort"], + ignorePatterns: ["dist", "license-header.js", ".eslintrc.cjs"], parser: "@typescript-eslint/parser", parserOptions: { // `ecmaVersion` is automatically sets by `esXXXX` in `env` @@ -85,5 +78,32 @@ module.exports = { "react/prop-types": "off", "react/self-closing-comp": "error", "require-await": "warn", // TODO: switch to "error" when the quantity of warning will be low + "simple-import-sort/imports": [ + "error", + { + groups: [ + // React first, then packages starting with a character + ["^react$", "^[a-z]"], + + // Packages starting with `@` (except our internal @/) + ["^@(?!/)"], + + // Internal imports from src using @/, sorted alphabetically + ["^@/.*"], + + // Imports starting with `../` + ["^\\.\\.(?!/?$)", "^\\.\\./?$"], + + // Imports starting with `./` + ["^\\./(?=.*/)(?!/?$)", "^\\.(?!/?$)", "^\\./?$"], + + // Style imports + ["^.+\\.s?css$"], + + // Side effect imports + ["^\\u0000"], + ], + }, + ], }, }; diff --git a/webapp/package-lock.json b/webapp/package-lock.json index 809c088d3d..53f8ea6660 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -108,6 +108,7 @@ "eslint-plugin-react": "7.37.0", "eslint-plugin-react-hooks": "4.6.2", "eslint-plugin-react-refresh": "0.4.12", + "eslint-plugin-simple-import-sort": "12.1.1", "husky": "9.1.6", "jsdom": "25.0.1", "prettier": "3.3.3", @@ -7057,6 +7058,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-simple-import-sort": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz", + "integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, "node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", diff --git a/webapp/package.json b/webapp/package.json index 117add1312..557734a601 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -9,6 +9,7 @@ "coverage": "vitest run --coverage", "dev": "vite", "lint": "tsc --noEmit && eslint . --ext ts,tsx --report-unused-disable-directives", + "lint:fix": "eslint . --fix", "preview": "vite preview", "test": "vitest", "test:ui": "vitest --ui" @@ -114,6 +115,7 @@ "eslint-plugin-react": "7.37.0", "eslint-plugin-react-hooks": "4.6.2", "eslint-plugin-react-refresh": "0.4.12", + "eslint-plugin-simple-import-sort": "12.1.1", "husky": "9.1.6", "jsdom": "25.0.1", "prettier": "3.3.3", diff --git a/webapp/src/components/App/Settings/utils.ts b/webapp/src/common/constants.ts similarity index 78% rename from webapp/src/components/App/Settings/utils.ts rename to webapp/src/common/constants.ts index b074304987..7c850b4dfd 100644 --- a/webapp/src/components/App/Settings/utils.ts +++ b/webapp/src/common/constants.ts @@ -12,12 +12,11 @@ * This file is part of the Antares project. */ -import * as RA from "ramda-adjunct"; -import { RoleType } from "../../../common/types"; +import { RoleType } from "./types"; +export const APP_NAME = "antares-web"; export const RESERVED_USER_NAMES = ["admin"]; export const RESERVED_GROUP_NAMES = ["admin"]; - export const ROLE_TYPE_KEYS = Object.values(RoleType).filter( - RA.isString, -) as Array; + (value): value is keyof typeof RoleType => typeof value === "string", +); diff --git a/webapp/src/components/App/Api.tsx b/webapp/src/components/App/Api.tsx index 837b80e729..e642c3c65f 100644 --- a/webapp/src/components/App/Api.tsx +++ b/webapp/src/components/App/Api.tsx @@ -12,10 +12,13 @@ * This file is part of the Antares project. */ -import { Box } from "@mui/material"; import SwaggerUI from "swagger-ui-react"; + +import { Box } from "@mui/material"; + +import { getConfig } from "@/services/config"; + import "swagger-ui-react/swagger-ui.css"; -import { getConfig } from "../../services/config"; function Api() { return ( diff --git a/webapp/src/components/App/Data/DataListing.tsx b/webapp/src/components/App/Data/DataListing.tsx index 30968f4f30..e7a68475db 100644 --- a/webapp/src/components/App/Data/DataListing.tsx +++ b/webapp/src/components/App/Data/DataListing.tsx @@ -13,11 +13,13 @@ */ import { memo } from "react"; -import { Typography, Box, styled } from "@mui/material"; import AutoSizer from "react-virtualized-auto-sizer"; -import { FixedSizeList, areEqual, ListChildComponentProps } from "react-window"; +import { areEqual, FixedSizeList, ListChildComponentProps } from "react-window"; + import ArrowRightIcon from "@mui/icons-material/ArrowRight"; -import { MatrixDataSetDTO } from "../../../common/types"; +import { Box, styled, Typography } from "@mui/material"; + +import { MatrixDataSetDTO } from "@/common/types"; const ROW_ITEM_SIZE = 45; const BUTTONS_SIZE = 40; diff --git a/webapp/src/components/App/Data/DataPropsView.tsx b/webapp/src/components/App/Data/DataPropsView.tsx index c4b5215cf5..75748689cf 100644 --- a/webapp/src/components/App/Data/DataPropsView.tsx +++ b/webapp/src/components/App/Data/DataPropsView.tsx @@ -13,8 +13,10 @@ */ import { useState } from "react"; -import { MatrixDataSetDTO, MatrixInfoDTO } from "../../../common/types"; -import PropertiesView from "../../common/PropertiesView"; + +import { MatrixDataSetDTO, MatrixInfoDTO } from "@/common/types"; +import PropertiesView from "@/components/common/PropertiesView"; + import DataListing from "./DataListing"; import { StyledListingBox } from "./styles"; @@ -39,7 +41,7 @@ function DataPropsView(props: PropTypes) { ); }; - const onChange = async (currentName: string) => { + const onChange = (currentName: string) => { if (currentName !== "") { const f = filter(currentName); setFilteredDatas(f); diff --git a/webapp/src/components/App/Data/DatasetCreationDialog.tsx b/webapp/src/components/App/Data/DatasetCreationDialog.tsx index 90764a1977..b08b2acb0d 100644 --- a/webapp/src/components/App/Data/DatasetCreationDialog.tsx +++ b/webapp/src/components/App/Data/DatasetCreationDialog.tsx @@ -12,27 +12,30 @@ * This file is part of the Antares project. */ -import { useState, useEffect, forwardRef, ChangeEvent } from "react"; +import { ChangeEvent, forwardRef, useEffect, useState } from "react"; +import axios, { AxiosError } from "axios"; +import { useSnackbar } from "notistack"; +import { useTranslation } from "react-i18next"; + +import HelpIcon from "@mui/icons-material/Help"; import { Box, - TextField, - Typography, Button, Checkbox, Chip, + TextField, Tooltip, + Typography, } from "@mui/material"; -import { useSnackbar } from "notistack"; -import { useTranslation } from "react-i18next"; -import axios, { AxiosError } from "axios"; -import HelpIcon from "@mui/icons-material/Help"; -import { getGroups } from "../../../services/api/user"; -import { GroupDTO, MatrixDataSetDTO } from "../../../common/types"; + +import { GroupDTO, MatrixDataSetDTO } from "@/common/types"; +import BasicDialog from "@/components/common/dialogs/BasicDialog"; +import SimpleLoader from "@/components/common/loaders/SimpleLoader"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import { getGroups } from "@/services/api/user"; + +import { BoxParam, BoxParamHeader, ParamTitle } from "./styles"; import { saveMatrix } from "./utils"; -import useEnqueueErrorSnackbar from "../../../hooks/useEnqueueErrorSnackbar"; -import SimpleLoader from "../../common/loaders/SimpleLoader"; -import BasicDialog from "../../common/dialogs/BasicDialog"; -import { BoxParamHeader, BoxParam, ParamTitle } from "./styles"; interface PropTypes { open: boolean; diff --git a/webapp/src/components/App/Data/MatrixDialog.tsx b/webapp/src/components/App/Data/MatrixDialog.tsx index c02bf8a6c1..1d6f1df084 100644 --- a/webapp/src/components/App/Data/MatrixDialog.tsx +++ b/webapp/src/components/App/Data/MatrixDialog.tsx @@ -12,13 +12,14 @@ * This file is part of the Antares project. */ -import { useState, useEffect } from "react"; +import { useEffect, useState } from "react"; import { AxiosError } from "axios"; import { useTranslation } from "react-i18next"; -import { MatrixInfoDTO, MatrixType } from "../../../common/types"; -import { getMatrix } from "../../../services/api/matrix"; -import useEnqueueErrorSnackbar from "../../../hooks/useEnqueueErrorSnackbar"; -import DataViewerDialog from "../../common/dialogs/DataViewerDialog"; + +import { MatrixInfoDTO, MatrixType } from "@/common/types"; +import DataViewerDialog from "@/components/common/dialogs/DataViewerDialog"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import { getMatrix } from "@/services/api/matrix"; interface PropTypes { matrixInfo: MatrixInfoDTO; diff --git a/webapp/src/components/App/Data/index.tsx b/webapp/src/components/App/Data/index.tsx index 9055a3e2b4..ed30855756 100644 --- a/webapp/src/components/App/Data/index.tsx +++ b/webapp/src/components/App/Data/index.tsx @@ -12,33 +12,36 @@ * This file is part of the Antares project. */ -import { useState, useEffect } from "react"; +import { useEffect, useState } from "react"; import { AxiosError } from "axios"; import { useSnackbar } from "notistack"; import { useTranslation } from "react-i18next"; + import DeleteIcon from "@mui/icons-material/Delete"; -import StorageIcon from "@mui/icons-material/Storage"; -import { Box, Typography, IconButton, Tooltip } from "@mui/material"; -import EditIcon from "@mui/icons-material/Edit"; import DownloadIcon from "@mui/icons-material/Download"; -import DataPropsView from "./DataPropsView"; +import EditIcon from "@mui/icons-material/Edit"; +import StorageIcon from "@mui/icons-material/Storage"; +import { Box, IconButton, Tooltip, Typography } from "@mui/material"; + +import { MatrixDataSetDTO, MatrixInfoDTO } from "@/common/types"; +import ConfirmationDialog from "@/components/common/dialogs/ConfirmationDialog"; +import FileTable from "@/components/common/FileTable"; +import SimpleLoader from "@/components/common/loaders/SimpleLoader"; +import RootPage from "@/components/common/page/RootPage"; +import SplitView from "@/components/common/SplitView"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getAuthUser } from "@/redux/selectors"; import { deleteDataSet, exportMatrixDataset, - getMatrixList, getExportMatrixUrl, -} from "../../../services/api/matrix"; -import { MatrixInfoDTO, MatrixDataSetDTO } from "../../../common/types"; + getMatrixList, +} from "@/services/api/matrix"; + +import DataPropsView from "./DataPropsView"; import DatasetCreationDialog from "./DatasetCreationDialog"; -import ConfirmationDialog from "../../common/dialogs/ConfirmationDialog"; -import RootPage from "../../common/page/RootPage"; import MatrixDialog from "./MatrixDialog"; -import useEnqueueErrorSnackbar from "../../../hooks/useEnqueueErrorSnackbar"; -import SimpleLoader from "../../common/loaders/SimpleLoader"; -import FileTable from "../../common/FileTable"; -import { getAuthUser } from "../../../redux/selectors"; -import useAppSelector from "../../../redux/hooks/useAppSelector"; -import SplitView from "../../common/SplitView"; function Data() { const [t] = useTranslation(); diff --git a/webapp/src/components/App/Data/styles.ts b/webapp/src/components/App/Data/styles.ts index fe3be93d6b..224087b458 100644 --- a/webapp/src/components/App/Data/styles.ts +++ b/webapp/src/components/App/Data/styles.ts @@ -12,8 +12,8 @@ * This file is part of the Antares project. */ -import { styled, Box, Typography } from "@mui/material"; import DownloadIcon from "@mui/icons-material/Download"; +import { Box, styled, Typography } from "@mui/material"; export const BoxParamHeader = styled(Box)({ width: "100%", diff --git a/webapp/src/components/App/Data/utils.tsx b/webapp/src/components/App/Data/utils.tsx index a05c03a790..98ceef18f8 100644 --- a/webapp/src/components/App/Data/utils.tsx +++ b/webapp/src/components/App/Data/utils.tsx @@ -17,12 +17,12 @@ import { MatrixDataSetDTO, MatrixDataSetUpdateDTO, MatrixInfoDTO, -} from "../../../common/types"; +} from "@/common/types"; import { + createDataSet, createMatrixByImportation, updateDataSet, - createDataSet, -} from "../../../services/api/matrix"; +} from "@/services/api/matrix"; const updateMatrix = async ( data: MatrixDataSetDTO, diff --git a/webapp/src/components/App/Settings/Groups/Header.tsx b/webapp/src/components/App/Settings/Groups/Header.tsx index f73f783ef9..3c4e0ddfa0 100644 --- a/webapp/src/components/App/Settings/Groups/Header.tsx +++ b/webapp/src/components/App/Settings/Groups/Header.tsx @@ -12,15 +12,18 @@ * This file is part of the Antares project. */ -import { Box, Button } from "@mui/material"; -import GroupAddIcon from "@mui/icons-material/GroupAdd"; -import { useTranslation } from "react-i18next"; import { useState } from "react"; -import { GroupDetailsDTO } from "../../../../common/types"; +import { useTranslation } from "react-i18next"; + +import GroupAddIcon from "@mui/icons-material/GroupAdd"; +import { Box, Button } from "@mui/material"; + +import { GroupDetailsDTO } from "@/common/types"; +import SearchFE from "@/components/common/fieldEditors/SearchFE"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { isAuthUserAdmin } from "@/redux/selectors"; + import CreateGroupDialog from "./dialog/CreateGroupDialog"; -import { isAuthUserAdmin } from "../../../../redux/selectors"; -import useAppSelector from "../../../../redux/hooks/useAppSelector"; -import SearchFE from "../../../common/fieldEditors/SearchFE"; interface Props { setSearchValue: (v: string) => void; diff --git a/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx b/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx index 3b3abd1485..1d45634202 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/CreateGroupDialog.tsx @@ -12,19 +12,22 @@ * This file is part of the Antares project. */ -import GroupAddIcon from "@mui/icons-material/GroupAdd"; import { useSnackbar } from "notistack"; import { useTranslation } from "react-i18next"; import { usePromise as usePromiseWrapper } from "react-use"; + +import GroupAddIcon from "@mui/icons-material/GroupAdd"; + import { GroupDetailsDTO, GroupDTO, RoleDetailsDTO, UserDTO, -} from "../../../../../common/types"; -import useEnqueueErrorSnackbar from "../../../../../hooks/useEnqueueErrorSnackbar"; -import { createGroup, createRole } from "../../../../../services/api/user"; -import { SubmitHandlerPlus } from "../../../../common/Form/types"; +} from "@/common/types"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import { createGroup, createRole } from "@/services/api/user"; + import GroupFormDialog, { GroupFormDialogProps } from "./GroupFormDialog"; type InheritPropsToOmit = "title" | "titleIcon" | "onSubmit" | "onCancel"; diff --git a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx index 87e47d9db2..3fd21ab94c 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx @@ -12,43 +12,45 @@ * This file is part of the Antares project. */ -import { useTranslation } from "react-i18next"; import { useMemo, useRef, useState } from "react"; +import { Controller, useFieldArray } from "react-hook-form"; +import { useTranslation } from "react-i18next"; +import { v4 as uuidv4 } from "uuid"; + +import DeleteIcon from "@mui/icons-material/Delete"; +import GroupIcon from "@mui/icons-material/Group"; import { - TextField, - Typography, - Paper, - Select, - MenuItem, Box, Button, - InputLabel, + CircularProgress, FormControl, - ListItem, IconButton, + InputLabel, List, + ListItem, ListItemButton, ListItemIcon, ListItemText, - CircularProgress, + MenuItem, + Paper, + Select, SelectChangeEvent, + TextField, + Typography, } from "@mui/material"; -import { Controller, useFieldArray } from "react-hook-form"; -import { v4 as uuidv4 } from "uuid"; -import DeleteIcon from "@mui/icons-material/Delete"; -import GroupIcon from "@mui/icons-material/Group"; + import { RESERVED_GROUP_NAMES, RESERVED_USER_NAMES, ROLE_TYPE_KEYS, -} from "../../../utils"; -import { RoleType, UserDTO } from "../../../../../../common/types"; -import { roleToString, sortByName } from "../../../../../../services/utils"; -import usePromise from "../../../../../../hooks/usePromise"; -import { getGroups, getUsers } from "../../../../../../services/api/user"; -import { getAuthUser } from "../../../../../../redux/selectors"; -import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; -import { UseFormReturnPlus } from "../../../../../common/Form/types"; +} from "@/common/constants"; +import { RoleType, UserDTO } from "@/common/types"; +import { UseFormReturnPlus } from "@/components/common/Form/types"; +import usePromise from "@/hooks/usePromise"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getAuthUser } from "@/redux/selectors"; +import { getGroups, getUsers } from "@/services/api/user"; +import { roleToString, sortByName } from "@/services/utils"; import { validateString } from "@/utils/validation/string"; function GroupForm(props: UseFormReturnPlus) { diff --git a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx index ef29ca1722..79c1e35206 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx @@ -12,10 +12,11 @@ * This file is part of the Antares project. */ +import { RoleType, UserDTO } from "@/common/types"; import FormDialog, { FormDialogProps, -} from "../../../../../common/dialogs/FormDialog"; -import { RoleType, UserDTO } from "../../../../../../common/types"; +} from "@/components/common/dialogs/FormDialog"; + import GroupForm from "./GroupForm"; export interface GroupFormDialogProps diff --git a/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx b/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx index 42e4541ed9..870e880e2b 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx @@ -12,23 +12,27 @@ * This file is part of the Antares project. */ -import EditIcon from "@mui/icons-material/Edit"; import { useMemo } from "react"; -import { useTranslation } from "react-i18next"; -import { usePromise as usePromiseWrapper } from "react-use"; import { useSnackbar } from "notistack"; import * as R from "ramda"; -import { GroupDetailsDTO } from "../../../../../common/types"; +import { useTranslation } from "react-i18next"; +import { usePromise as usePromiseWrapper } from "react-use"; + +import EditIcon from "@mui/icons-material/Edit"; + +import { GroupDetailsDTO } from "@/common/types"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; import { createRole, deleteUserRole, getRolesForGroup, updateGroup, -} from "../../../../../services/api/user"; -import useEnqueueErrorSnackbar from "../../../../../hooks/useEnqueueErrorSnackbar"; -import GroupFormDialog, { GroupFormDialogProps } from "./GroupFormDialog"; +} from "@/services/api/user"; + import { GroupEdit } from ".."; -import { SubmitHandlerPlus } from "../../../../common/Form/types"; + +import GroupFormDialog, { GroupFormDialogProps } from "./GroupFormDialog"; type InheritPropsToOmit = | "title" diff --git a/webapp/src/components/App/Settings/Groups/index.tsx b/webapp/src/components/App/Settings/Groups/index.tsx index b92e62ffe8..bb305af0c7 100644 --- a/webapp/src/components/App/Settings/Groups/index.tsx +++ b/webapp/src/components/App/Settings/Groups/index.tsx @@ -12,6 +12,17 @@ * This file is part of the Antares project. */ +import { ReactNode, useMemo, useReducer, useState } from "react"; +import { produce } from "immer"; +import { useSnackbar } from "notistack"; +import * as R from "ramda"; +import { useTranslation } from "react-i18next"; +import { usePromise as usePromiseWrapper, useUpdateEffect } from "react-use"; +import { Action } from "redux"; + +import DeleteIcon from "@mui/icons-material/Delete"; +import EditIcon from "@mui/icons-material/Edit"; +import GroupIcon from "@mui/icons-material/Group"; import { Box, CircularProgress, @@ -24,28 +35,20 @@ import { Skeleton, Typography, } from "@mui/material"; -import { produce } from "immer"; -import { ReactNode, useMemo, useReducer, useState } from "react"; -import { useTranslation } from "react-i18next"; -import { usePromise as usePromiseWrapper, useUpdateEffect } from "react-use"; -import { Action } from "redux"; -import DeleteIcon from "@mui/icons-material/Delete"; -import EditIcon from "@mui/icons-material/Edit"; -import * as R from "ramda"; -import GroupIcon from "@mui/icons-material/Group"; -import { useSnackbar } from "notistack"; -import { GroupDetailsDTO } from "../../../../common/types"; -import usePromiseWithSnackbarError from "../../../../hooks/usePromiseWithSnackbarError"; -import { deleteGroup, getGroups } from "../../../../services/api/user"; -import { sortByName } from "../../../../services/utils"; -import ConfirmationDialog from "../../../common/dialogs/ConfirmationDialog"; -import useEnqueueErrorSnackbar from "../../../../hooks/useEnqueueErrorSnackbar"; -import { RESERVED_GROUP_NAMES } from "../utils"; -import Header from "./Header"; + +import { RESERVED_GROUP_NAMES } from "@/common/constants"; +import { GroupDetailsDTO } from "@/common/types"; +import ConfirmationDialog from "@/components/common/dialogs/ConfirmationDialog"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import usePromiseWithSnackbarError from "@/hooks/usePromiseWithSnackbarError"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getAuthUser } from "@/redux/selectors"; +import { deleteGroup, getGroups } from "@/services/api/user"; +import { sortByName } from "@/services/utils"; +import { isSearchMatching } from "@/utils/stringUtils"; + import UpdateGroupDialog from "./dialog/UpdateGroupDialog"; -import { getAuthUser } from "../../../../redux/selectors"; -import useAppSelector from "../../../../redux/hooks/useAppSelector"; -import { isSearchMatching } from "../../../../utils/stringUtils"; +import Header from "./Header"; enum GroupActionKind { ADD = "ADD", diff --git a/webapp/src/components/App/Settings/Maintenance/index.tsx b/webapp/src/components/App/Settings/Maintenance/index.tsx index 624006a4e6..dfdbf35fb3 100644 --- a/webapp/src/components/App/Settings/Maintenance/index.tsx +++ b/webapp/src/components/App/Settings/Maintenance/index.tsx @@ -12,6 +12,12 @@ * This file is part of the Antares project. */ +import { useState } from "react"; +import { useSnackbar } from "notistack"; +import { Controller, FieldValues, useForm } from "react-hook-form"; +import { useTranslation } from "react-i18next"; +import { useUpdateEffect } from "react-use"; + import { Backdrop, Box, @@ -22,20 +28,16 @@ import { TextField, Typography, } from "@mui/material"; -import { useSnackbar } from "notistack"; -import { useState } from "react"; -import { Controller, FieldValues, useForm } from "react-hook-form"; -import { useTranslation } from "react-i18next"; -import { useUpdateEffect } from "react-use"; -import useEnqueueErrorSnackbar from "../../../../hooks/useEnqueueErrorSnackbar"; -import usePromiseWithSnackbarError from "../../../../hooks/usePromiseWithSnackbarError"; + +import ConfirmationDialog from "@/components/common/dialogs/ConfirmationDialog"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import usePromiseWithSnackbarError from "@/hooks/usePromiseWithSnackbarError"; import { getMaintenanceMode, getMessageInfo, updateMaintenanceMode, updateMessageInfo, -} from "../../../../services/api/maintenance"; -import ConfirmationDialog from "../../../common/dialogs/ConfirmationDialog"; +} from "@/services/api/maintenance"; function Maintenance() { const { t } = useTranslation(); diff --git a/webapp/src/components/App/Settings/Tokens/Header.tsx b/webapp/src/components/App/Settings/Tokens/Header.tsx index 0cf3d3e329..e728c4b77b 100644 --- a/webapp/src/components/App/Settings/Tokens/Header.tsx +++ b/webapp/src/components/App/Settings/Tokens/Header.tsx @@ -12,13 +12,16 @@ * This file is part of the Antares project. */ -import { Box, Button } from "@mui/material"; -import TokenIcon from "@mui/icons-material/Token"; -import { useTranslation } from "react-i18next"; import { useState } from "react"; -import { BotDTO } from "../../../../common/types"; +import { useTranslation } from "react-i18next"; + +import TokenIcon from "@mui/icons-material/Token"; +import { Box, Button } from "@mui/material"; + +import { BotDTO } from "@/common/types"; +import SearchFE from "@/components/common/fieldEditors/SearchFE"; + import CreateTokenDialog from "./dialog/CreateTokenDialog"; -import SearchFE from "../../../common/fieldEditors/SearchFE"; interface Props { setSearchValue: (v: string) => void; diff --git a/webapp/src/components/App/Settings/Tokens/dialog/CreateTokenDialog.tsx b/webapp/src/components/App/Settings/Tokens/dialog/CreateTokenDialog.tsx index c735ddb702..313dd6b167 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/CreateTokenDialog.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/CreateTokenDialog.tsx @@ -12,24 +12,22 @@ * This file is part of the Antares project. */ -import TokenIcon from "@mui/icons-material/Token"; -import { IconButton, Paper, Tooltip } from "@mui/material"; -import { useSnackbar } from "notistack"; import { useState } from "react"; +import { useSnackbar } from "notistack"; import { useTranslation } from "react-i18next"; import { usePromise as usePromiseWrapper } from "react-use"; + import ContentCopyIcon from "@mui/icons-material/ContentCopy"; -import { - BotCreateDTO, - BotDTO, - GroupDTO, - RoleType, -} from "../../../../../common/types"; -import useEnqueueErrorSnackbar from "../../../../../hooks/useEnqueueErrorSnackbar"; -import { createBot } from "../../../../../services/api/user"; -import OkDialog from "../../../../common/dialogs/OkDialog"; +import TokenIcon from "@mui/icons-material/Token"; +import { IconButton, Paper, Tooltip } from "@mui/material"; + +import { BotCreateDTO, BotDTO, GroupDTO, RoleType } from "@/common/types"; +import OkDialog from "@/components/common/dialogs/OkDialog"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import { createBot } from "@/services/api/user"; + import TokenFormDialog, { TokenFormDialogProps } from "./TokenFormDialog"; -import { SubmitHandlerPlus } from "../../../../common/Form/types"; type InheritPropsToOmit = "title" | "titleIcon" | "onSubmit" | "onCancel"; diff --git a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx index 08b8fa928c..d0e2b65548 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/TokenForm.tsx @@ -12,6 +12,13 @@ * This file is part of the Antares project. */ +import { useMemo, useRef, useState } from "react"; +import { Controller, useFieldArray, UseFormReturn } from "react-hook-form"; +import { useTranslation } from "react-i18next"; +import { v4 as uuidv4 } from "uuid"; + +import DeleteIcon from "@mui/icons-material/Delete"; +import GroupIcon from "@mui/icons-material/Group"; import { Box, Button, @@ -31,23 +38,16 @@ import { TextField, Typography, } from "@mui/material"; -import { useMemo, useRef, useState } from "react"; -import { Controller, useFieldArray, UseFormReturn } from "react-hook-form"; -import { useTranslation } from "react-i18next"; -import { v4 as uuidv4 } from "uuid"; -import DeleteIcon from "@mui/icons-material/Delete"; -import GroupIcon from "@mui/icons-material/Group"; + +import { RESERVED_GROUP_NAMES, ROLE_TYPE_KEYS } from "@/common/constants"; +import { GroupDTO, RoleType } from "@/common/types"; +import usePromise from "@/hooks/usePromise"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getAuthUser, isAuthUserAdmin } from "@/redux/selectors"; +import { getGroups } from "@/services/api/user"; +import { roleToString, sortByName } from "@/services/utils"; + import { TokenFormDialogProps } from "."; -import { GroupDTO, RoleType } from "../../../../../../common/types"; -import usePromise from "../../../../../../hooks/usePromise"; -import { getGroups } from "../../../../../../services/api/user"; -import { roleToString, sortByName } from "../../../../../../services/utils"; -import { RESERVED_GROUP_NAMES, ROLE_TYPE_KEYS } from "../../../utils"; -import { - getAuthUser, - isAuthUserAdmin, -} from "../../../../../../redux/selectors"; -import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; interface Props extends UseFormReturn { onlyPermissions?: TokenFormDialogProps["onlyPermissions"]; diff --git a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx index 24516f6b7e..11b920b991 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx @@ -14,7 +14,8 @@ import FormDialog, { FormDialogProps, -} from "../../../../../common/dialogs/FormDialog"; +} from "@/components/common/dialogs/FormDialog"; + import TokenForm from "./TokenForm"; export interface TokenFormDialogProps diff --git a/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx b/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx index 23f12dc088..6ae2149390 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx @@ -12,15 +12,18 @@ * This file is part of the Antares project. */ -import { DialogContentText } from "@mui/material"; -import { useTranslation } from "react-i18next"; -import InfoIcon from "@mui/icons-material/Info"; import { useMemo } from "react"; import { FieldValues } from "react-hook-form"; -import { BotDetailsDTO } from "../../../../../common/types"; -import OkDialog, { OkDialogProps } from "../../../../common/dialogs/OkDialog"; +import { useTranslation } from "react-i18next"; + +import { Info } from "@mui/icons-material"; +import { DialogContentText } from "@mui/material"; + +import { BotDetailsDTO } from "@/common/types"; +import OkDialog, { OkDialogProps } from "@/components/common/dialogs/OkDialog"; +import Form from "@/components/common/Form"; + import TokenForm from "./TokenFormDialog/TokenForm"; -import Form from "../../../../common/Form"; interface Props extends Omit { token: BotDetailsDTO; @@ -52,7 +55,7 @@ function TokenInfoDialog(props: Props) { fullWidth {...dialogProps} title={t("global.permissions")} - titleIcon={InfoIcon} + titleIcon={Info} > {t("settings.currentToken", { 0: token.name })} diff --git a/webapp/src/components/App/Settings/Tokens/index.tsx b/webapp/src/components/App/Settings/Tokens/index.tsx index 18aa3b4d9a..fca8d421ed 100644 --- a/webapp/src/components/App/Settings/Tokens/index.tsx +++ b/webapp/src/components/App/Settings/Tokens/index.tsx @@ -12,6 +12,17 @@ * This file is part of the Antares project. */ +import { ReactNode, useMemo, useReducer, useState } from "react"; +import { produce } from "immer"; +import { useSnackbar } from "notistack"; +import * as R from "ramda"; +import { useTranslation } from "react-i18next"; +import { usePromise as usePromiseWrapper, useUpdateEffect } from "react-use"; +import { Action } from "redux"; + +import DeleteIcon from "@mui/icons-material/Delete"; +import InfoIcon from "@mui/icons-material/Info"; +import TokenIcon from "@mui/icons-material/Token"; import { Box, CircularProgress, @@ -24,32 +35,19 @@ import { Skeleton, Typography, } from "@mui/material"; -import { produce } from "immer"; -import { ReactNode, useMemo, useReducer, useState } from "react"; -import { useTranslation } from "react-i18next"; -import { usePromise as usePromiseWrapper, useUpdateEffect } from "react-use"; -import { Action } from "redux"; -import DeleteIcon from "@mui/icons-material/Delete"; -import InfoIcon from "@mui/icons-material/Info"; -import TokenIcon from "@mui/icons-material/Token"; -import * as R from "ramda"; -import { useSnackbar } from "notistack"; -import { BotDTO, BotDetailsDTO, UserDTO } from "../../../../common/types"; -import usePromiseWithSnackbarError from "../../../../hooks/usePromiseWithSnackbarError"; -import { - deleteBot, - getBots, - getUser, - getUsers, -} from "../../../../services/api/user"; -import { isUserAdmin, sortByProp } from "../../../../services/utils"; -import ConfirmationDialog from "../../../common/dialogs/ConfirmationDialog"; -import useEnqueueErrorSnackbar from "../../../../hooks/useEnqueueErrorSnackbar"; -import Header from "./Header"; -import { getAuthUser } from "../../../../redux/selectors"; + +import { BotDetailsDTO, BotDTO, UserDTO } from "@/common/types"; +import ConfirmationDialog from "@/components/common/dialogs/ConfirmationDialog"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import usePromiseWithSnackbarError from "@/hooks/usePromiseWithSnackbarError"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getAuthUser } from "@/redux/selectors"; +import { deleteBot, getBots, getUser, getUsers } from "@/services/api/user"; +import { isUserAdmin, sortByProp } from "@/services/utils"; +import { isSearchMatching } from "@/utils/stringUtils"; + import TokenInfoDialog from "./dialog/TokenInfoDialog"; -import useAppSelector from "../../../../redux/hooks/useAppSelector"; -import { isSearchMatching } from "../../../../utils/stringUtils"; +import Header from "./Header"; interface BotDetailsDtoWithUser extends BotDetailsDTO { user: UserDTO; diff --git a/webapp/src/components/App/Settings/Users/Header.tsx b/webapp/src/components/App/Settings/Users/Header.tsx index 47969745bf..ba2f012628 100644 --- a/webapp/src/components/App/Settings/Users/Header.tsx +++ b/webapp/src/components/App/Settings/Users/Header.tsx @@ -12,13 +12,16 @@ * This file is part of the Antares project. */ -import { Box, Button } from "@mui/material"; -import PersonAddAltIcon from "@mui/icons-material/PersonAddAlt"; -import { useTranslation } from "react-i18next"; import { useState } from "react"; +import { useTranslation } from "react-i18next"; + +import PersonAddAltIcon from "@mui/icons-material/PersonAddAlt"; +import { Box, Button } from "@mui/material"; + +import { UserDetailsDTO } from "@/common/types"; +import SearchFE from "@/components/common/fieldEditors/SearchFE"; + import CreateUserDialog from "./dialog/CreateUserDialog"; -import { UserDetailsDTO } from "../../../../common/types"; -import SearchFE from "../../../common/fieldEditors/SearchFE"; interface Props { setSearchValue: (v: string) => void; diff --git a/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx b/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx index 298b7fb84d..2f093b4498 100644 --- a/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx @@ -12,20 +12,23 @@ * This file is part of the Antares project. */ -import PersonAddIcon from "@mui/icons-material/PersonAdd"; import { useSnackbar } from "notistack"; import { useTranslation } from "react-i18next"; import { usePromise as usePromiseWrapper } from "react-use"; + +import PersonAddIcon from "@mui/icons-material/PersonAdd"; + import { GroupDTO, RoleDetailsDTO, RoleType, UserDetailsDTO, UserDTO, -} from "../../../../../common/types"; -import useEnqueueErrorSnackbar from "../../../../../hooks/useEnqueueErrorSnackbar"; -import { createRole, createUser } from "../../../../../services/api/user"; -import { SubmitHandlerPlus } from "../../../../common/Form/types"; +} from "@/common/types"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import { createRole, createUser } from "@/services/api/user"; + import UserFormDialog, { UserFormDialogProps } from "./UserFormDialog"; type InheritPropsToOmit = "title" | "titleIcon" | "onSubmit" | "onCancel"; diff --git a/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx b/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx index 1f8f6afabb..3962ac595f 100644 --- a/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx @@ -12,21 +12,21 @@ * This file is part of the Antares project. */ -import EditIcon from "@mui/icons-material/Edit"; import { useMemo } from "react"; +import { useSnackbar } from "notistack"; import { useTranslation } from "react-i18next"; import { usePromise as usePromiseWrapper } from "react-use"; -import { useSnackbar } from "notistack"; -import { - GroupDTO, - RoleType, - UserDetailsDTO, -} from "../../../../../common/types"; -import { createRole, deleteUserRoles } from "../../../../../services/api/user"; -import UserFormDialog, { UserFormDialogProps } from "./UserFormDialog"; + +import EditIcon from "@mui/icons-material/Edit"; + +import { GroupDTO, RoleType, UserDetailsDTO } from "@/common/types"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import { createRole, deleteUserRoles } from "@/services/api/user"; + import { UserEdit } from ".."; -import useEnqueueErrorSnackbar from "../../../../../hooks/useEnqueueErrorSnackbar"; -import { SubmitHandlerPlus } from "../../../../common/Form/types"; + +import UserFormDialog, { UserFormDialogProps } from "./UserFormDialog"; type InheritPropsToOmit = | "title" diff --git a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx index 7607a4a00f..6039905eb9 100644 --- a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx @@ -12,44 +12,47 @@ * This file is part of the Antares project. */ -import { useTranslation } from "react-i18next"; import { useMemo, useRef, useState } from "react"; +import { Controller, useFieldArray } from "react-hook-form"; +import { useTranslation } from "react-i18next"; +import { v4 as uuidv4 } from "uuid"; + +import DeleteIcon from "@mui/icons-material/Delete"; +import GroupIcon from "@mui/icons-material/Group"; import { - TextField, - Typography, - Paper, - Select, - MenuItem, Box, Button, - InputLabel, + CircularProgress, FormControl, - ListItem, IconButton, + InputLabel, List, + ListItem, ListItemButton, ListItemIcon, ListItemText, - CircularProgress, + MenuItem, + Paper, + Select, SelectChangeEvent, + TextField, + Typography, } from "@mui/material"; -import { Controller, useFieldArray } from "react-hook-form"; -import { v4 as uuidv4 } from "uuid"; -import DeleteIcon from "@mui/icons-material/Delete"; -import GroupIcon from "@mui/icons-material/Group"; + import { RESERVED_GROUP_NAMES, RESERVED_USER_NAMES, ROLE_TYPE_KEYS, -} from "../../../utils"; -import { GroupDTO, RoleType } from "../../../../../../common/types"; -import { roleToString, sortByName } from "../../../../../../services/utils"; -import usePromise from "../../../../../../hooks/usePromise"; -import { getGroups, getUsers } from "../../../../../../services/api/user"; -import { UserFormDialogProps } from "."; -import { UseFormReturnPlus } from "../../../../../common/Form/types"; +} from "@/common/constants"; +import { GroupDTO, RoleType } from "@/common/types"; +import { UseFormReturnPlus } from "@/components/common/Form/types"; +import usePromise from "@/hooks/usePromise"; +import { getGroups, getUsers } from "@/services/api/user"; +import { roleToString, sortByName } from "@/services/utils"; import { validatePassword, validateString } from "@/utils/validation/string"; +import { UserFormDialogProps } from "."; + interface Props extends UseFormReturnPlus { onlyPermissions?: UserFormDialogProps["onlyPermissions"]; } diff --git a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx index cc2dd19efd..3ff4cf221c 100644 --- a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx @@ -13,10 +13,12 @@ */ import { DialogContentText } from "@mui/material"; + +import { GroupDTO, RoleType } from "@/common/types"; import FormDialog, { FormDialogProps, -} from "../../../../../common/dialogs/FormDialog"; -import { GroupDTO, RoleType } from "../../../../../../common/types"; +} from "@/components/common/dialogs/FormDialog"; + import UserForm from "./UserForm"; export interface UserFormDialogProps extends Omit { diff --git a/webapp/src/components/App/Settings/Users/index.tsx b/webapp/src/components/App/Settings/Users/index.tsx index 373ca36b84..cc89cd49fd 100644 --- a/webapp/src/components/App/Settings/Users/index.tsx +++ b/webapp/src/components/App/Settings/Users/index.tsx @@ -12,6 +12,17 @@ * This file is part of the Antares project. */ +import { ReactNode, useMemo, useReducer, useState } from "react"; +import { produce } from "immer"; +import { useSnackbar } from "notistack"; +import * as R from "ramda"; +import { useTranslation } from "react-i18next"; +import { usePromise as usePromiseWrapper, useUpdateEffect } from "react-use"; +import { Action } from "redux"; + +import DeleteIcon from "@mui/icons-material/Delete"; +import EditIcon from "@mui/icons-material/Edit"; +import PersonIcon from "@mui/icons-material/Person"; import { Box, CircularProgress, @@ -24,26 +35,18 @@ import { Skeleton, Typography, } from "@mui/material"; -import DeleteIcon from "@mui/icons-material/Delete"; -import EditIcon from "@mui/icons-material/Edit"; -import { useMemo, useReducer, useState, ReactNode } from "react"; -import { useTranslation } from "react-i18next"; -import PersonIcon from "@mui/icons-material/Person"; -import { produce } from "immer"; -import { usePromise as usePromiseWrapper, useUpdateEffect } from "react-use"; -import { Action } from "redux"; -import { useSnackbar } from "notistack"; -import * as R from "ramda"; -import { deleteUser, getUsers } from "../../../../services/api/user"; -import usePromiseWithSnackbarError from "../../../../hooks/usePromiseWithSnackbarError"; -import useEnqueueErrorSnackbar from "../../../../hooks/useEnqueueErrorSnackbar"; -import ConfirmationDialog from "../../../common/dialogs/ConfirmationDialog"; -import Header from "./Header"; -import { RESERVED_USER_NAMES } from "../utils"; -import { UserDetailsDTO } from "../../../../common/types"; + +import { RESERVED_USER_NAMES } from "@/common/constants"; +import { UserDetailsDTO } from "@/common/types"; +import ConfirmationDialog from "@/components/common/dialogs/ConfirmationDialog"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import usePromiseWithSnackbarError from "@/hooks/usePromiseWithSnackbarError"; +import { deleteUser, getUsers } from "@/services/api/user"; +import { sortByName } from "@/services/utils"; +import { isSearchMatching } from "@/utils/stringUtils"; + import UpdateUserDialog from "./dialog/UpdateUserDialog"; -import { sortByName } from "../../../../services/utils"; -import { isSearchMatching } from "../../../../utils/stringUtils"; +import Header from "./Header"; enum UserActionKind { ADD = "ADD", diff --git a/webapp/src/components/App/Settings/index.tsx b/webapp/src/components/App/Settings/index.tsx index e1479ed8b8..4964db4ce3 100644 --- a/webapp/src/components/App/Settings/index.tsx +++ b/webapp/src/components/App/Settings/index.tsx @@ -12,22 +12,22 @@ * This file is part of the Antares project. */ +import { SyntheticEvent, useMemo, useState } from "react"; +import { useTranslation } from "react-i18next"; + import SettingsIcon from "@mui/icons-material/Settings"; import { TabContext, TabList, TabPanel } from "@mui/lab"; import { Box, Tab } from "@mui/material"; -import { SyntheticEvent, useMemo, useState } from "react"; -import { useTranslation } from "react-i18next"; -import RootPage from "../../common/page/RootPage"; + +import RootPage from "@/components/common/page/RootPage"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { isAuthUserAdmin, isAuthUserInGroupAdmin } from "@/redux/selectors"; +import { tuple } from "@/utils/tsUtils"; + import Groups from "./Groups"; import Maintenance from "./Maintenance"; import Tokens from "./Tokens"; import Users from "./Users"; -import useAppSelector from "../../../redux/hooks/useAppSelector"; -import { - isAuthUserAdmin, - isAuthUserInGroupAdmin, -} from "../../../redux/selectors"; -import { tuple } from "../../../utils/tsUtils"; function Settings() { const [tabValue, setTabValue] = useState("1"); diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx index 3c0912d1f4..8cb0e58e2d 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx @@ -13,10 +13,11 @@ */ import { useRef } from "react"; -import { useTranslation } from "react-i18next"; import { useSnackbar } from "notistack"; -import { Box, ButtonBase } from "@mui/material"; +import { useTranslation } from "react-i18next"; + import CloudUploadOutlinedIcon from "@mui/icons-material/CloudUploadOutlined"; +import { Box, ButtonBase } from "@mui/material"; interface PropTypes { onImport: (json: object) => void; diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx index d57efcec10..a091cb8529 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx @@ -12,11 +12,14 @@ * This file is part of the Antares project. */ -import { Box, Button } from "@mui/material"; -import { isString } from "ramda-adjunct"; import { useState } from "react"; +import { isString } from "ramda-adjunct"; import { useTranslation } from "react-i18next"; -import MatrixDialog from "../../../../../Data/MatrixDialog"; + +import { Box, Button } from "@mui/material"; + +import MatrixDialog from "@/components/App/Data/MatrixDialog"; + import { CommandEnum, CommandItem } from "../../commandTypes"; interface PropTypes { diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/index.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/index.tsx index c53d7b7ef1..0cd9c5deb6 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/index.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/index.tsx @@ -16,10 +16,11 @@ import { CSSProperties, useState } from "react"; import { DraggableProvided } from "react-beautiful-dnd"; import ReactJson, { InteractionProps } from "react-json-view"; -import ExpandMore from "@mui/icons-material/ExpandMore"; -import SaveOutlinedIcon from "@mui/icons-material/SaveOutlined"; + import CloudDownloadOutlinedIcon from "@mui/icons-material/CloudDownloadOutlined"; +import ExpandMore from "@mui/icons-material/ExpandMore"; import InfoIcon from "@mui/icons-material/Info"; +import SaveOutlinedIcon from "@mui/icons-material/SaveOutlined"; import { AccordionDetails, AccordionSummary, @@ -28,10 +29,14 @@ import { styled, Typography, } from "@mui/material"; + +import { CommandResultDTO } from "@/common/types"; +import LogModal from "@/components/common/LogModal"; + import { CommandItem } from "../../commandTypes"; import CommandImportButton from "../CommandImportButton"; -import { CommandResultDTO } from "../../../../../../../common/types"; -import LogModal from "../../../../../../common/LogModal"; + +import CommandMatrixViewer from "./CommandMatrixViewer"; import { detailsStyle, DraggableAccorderon, @@ -42,7 +47,6 @@ import { JsonContainer, StyledDeleteIcon, } from "./style"; -import CommandMatrixViewer from "./CommandMatrixViewer"; export const Item = styled(Box)(({ theme }) => ({ boxSizing: "border-box", diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/style.ts b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/style.ts index e0d056e66c..bd67ba3e6d 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/style.ts +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/style.ts @@ -12,9 +12,10 @@ * This file is part of the Antares project. */ -import { Accordion, Box, styled } from "@mui/material"; import DeleteIcon from "@mui/icons-material/HighlightOff"; -import { PAPER_BACKGROUND_NO_TRANSPARENCY } from "../../../../../../../theme"; +import { Accordion, Box, styled } from "@mui/material"; + +import { PAPER_BACKGROUND_NO_TRANSPARENCY } from "@/theme"; export const ItemContainer = styled(Box, { shouldForwardProp: (prop) => prop !== "onTopVisible", diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListView.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListView.tsx index 5ba09ec873..7d08708d19 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListView.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListView.tsx @@ -13,14 +13,16 @@ */ import { memo, useEffect, useRef } from "react"; -import { FixedSizeList, areEqual, ListChildComponentProps } from "react-window"; import { DragDropContext, - Droppable, Draggable, + Droppable, OnDragEndResponder, } from "react-beautiful-dnd"; +import { areEqual, FixedSizeList, ListChildComponentProps } from "react-window"; + import { CommandItem } from "../commandTypes"; + import CommandListItem from "./CommandListItem"; const Row = memo((props: ListChildComponentProps) => { diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/commandTypes.ts b/webapp/src/components/App/Singlestudy/Commands/Edition/commandTypes.ts index 76d63180d0..8361edfd1c 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/commandTypes.ts +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/commandTypes.ts @@ -12,7 +12,7 @@ * This file is part of the Antares project. */ -import { CommandResultDTO } from "../../../../../common/types"; +import { CommandResultDTO } from "@/common/types"; export interface CommandItem { id?: string; diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/index.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/index.tsx index cdb2098be6..646b9e577e 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/index.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/index.tsx @@ -13,59 +13,62 @@ */ import { useCallback, useEffect, useRef, useState } from "react"; +import { AxiosError } from "axios"; +import debug from "debug"; +import _ from "lodash"; import { useSnackbar } from "notistack"; -import { useTranslation } from "react-i18next"; import { DropResult } from "react-beautiful-dnd"; -import _ from "lodash"; +import { useTranslation } from "react-i18next"; +import { useMountedState } from "react-use"; + +import BoltIcon from "@mui/icons-material/Bolt"; import CloudDownloadOutlinedIcon from "@mui/icons-material/CloudDownloadOutlined"; import DeleteForeverIcon from "@mui/icons-material/DeleteForever"; -import BoltIcon from "@mui/icons-material/Bolt"; -import debug from "debug"; -import { AxiosError } from "axios"; import HelpIcon from "@mui/icons-material/Help"; import { Box, Button, Tooltip, Typography } from "@mui/material"; -import { useMountedState } from "react-use"; -import { CommandItem, JsonCommandItem } from "./commandTypes"; -import CommandListView from "./DraggableCommands/CommandListView"; + import { - reorder, - fromCommandDTOToCommandItem, - fromCommandDTOToJsonCommand, - exportJson, - isTaskFinal, - updateCommandResults, -} from "./utils"; + CommandResultDTO, + TaskEventPayload, + TaskStatus, + WSEvent, + WSMessage, +} from "@/common/types"; +import ConfirmationDialog from "@/components/common/dialogs/ConfirmationDialog"; +import CheckBoxFE from "@/components/common/fieldEditors/CheckBoxFE"; +import SimpleLoader from "@/components/common/loaders/SimpleLoader"; +import EmptyView from "@/components/common/page/SimpleContent"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import { getTask } from "@/services/api/tasks"; import { + applyCommands, deleteCommand, + exportCommandsMatrices, getCommand, getCommands, + getStudyTask, moveCommand, - updateCommand, replaceCommands, - applyCommands, - getStudyTask, - exportCommandsMatrices, -} from "../../../../../services/api/variant"; -import { - WSEvent, - WSMessage, - CommandResultDTO, - TaskEventPayload, - TaskStatus, -} from "../../../../../common/types"; -import CommandImportButton from "./DraggableCommands/CommandImportButton"; -import { getTask } from "../../../../../services/api/tasks"; -import { Body, EditHeader, Header, headerIconStyle, Root } from "./style"; -import SimpleLoader from "../../../../common/loaders/SimpleLoader"; -import useEnqueueErrorSnackbar from "../../../../../hooks/useEnqueueErrorSnackbar"; + updateCommand, +} from "@/services/api/variant"; import { addWsMessageListener, sendWsSubscribeMessage, WsChannel, -} from "../../../../../services/webSockets"; -import ConfirmationDialog from "../../../../common/dialogs/ConfirmationDialog"; -import CheckBoxFE from "../../../../common/fieldEditors/CheckBoxFE"; -import EmptyView from "../../../../common/page/SimpleContent"; +} from "@/services/webSockets"; + +import CommandImportButton from "./DraggableCommands/CommandImportButton"; +import CommandListView from "./DraggableCommands/CommandListView"; +import { CommandItem, JsonCommandItem } from "./commandTypes"; +import { Body, EditHeader, Header, headerIconStyle, Root } from "./style"; +import { + exportJson, + fromCommandDTOToCommandItem, + fromCommandDTOToJsonCommand, + isTaskFinal, + reorder, + updateCommandResults, +} from "./utils"; const logError = debug("antares:variantedition:error"); diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/utils.ts b/webapp/src/components/App/Singlestudy/Commands/Edition/utils.ts index 5d19407ad5..8b9ab5cb0b 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/utils.ts +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/utils.ts @@ -17,7 +17,8 @@ import { CommandResultDTO, TaskDTO, TaskStatus, -} from "../../../../../common/types"; +} from "@/common/types"; + import { CommandEnum, CommandItem, JsonCommandItem } from "./commandTypes"; export const CommandList = [ diff --git a/webapp/src/components/App/Singlestudy/Commands/index.tsx b/webapp/src/components/App/Singlestudy/Commands/index.tsx index ef595a8eed..ba0277c5b6 100644 --- a/webapp/src/components/App/Singlestudy/Commands/index.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/index.tsx @@ -13,11 +13,13 @@ */ import { useTranslation } from "react-i18next"; -import Toolbar from "@mui/material/Toolbar"; -import Divider from "@mui/material/Divider"; + import { Typography } from "@mui/material"; -import { CommandDrawer, TitleContainer } from "./style"; +import Divider from "@mui/material/Divider"; +import Toolbar from "@mui/material/Toolbar"; + import EditionView from "./Edition"; +import { CommandDrawer, TitleContainer } from "./style"; interface Props { open: boolean; diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx index b4b4cd8c4d..fb727226e7 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/CreateVariantDialog.tsx @@ -13,17 +13,19 @@ */ import { useEffect, useMemo, useState } from "react"; -import { useNavigate } from "react-router"; import { useTranslation } from "react-i18next"; +import { useNavigate } from "react-router"; + import AddCircleIcon from "@mui/icons-material/AddCircle"; -import { GenericInfo, VariantTree } from "../../../../../common/types"; -import { createVariant } from "../../../../../services/api/variant"; -import { createListFromTree } from "../../../../../services/utils"; -import FormDialog from "../../../../common/dialogs/FormDialog"; -import StringFE from "../../../../common/fieldEditors/StringFE"; -import Fieldset from "../../../../common/Fieldset"; -import SelectFE from "../../../../common/fieldEditors/SelectFE"; -import { SubmitHandlerPlus } from "../../../../common/Form/types"; + +import { GenericInfo, VariantTree } from "@/common/types"; +import FormDialog from "@/components/common/dialogs/FormDialog"; +import SelectFE from "@/components/common/fieldEditors/SelectFE"; +import StringFE from "@/components/common/fieldEditors/StringFE"; +import Fieldset from "@/components/common/Fieldset"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import { createVariant } from "@/services/api/variant"; +import { createListFromTree } from "@/services/utils"; import { validateString } from "@/utils/validation/string"; interface Props { diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/JobStepper.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/JobStepper.tsx index 80ce0830c3..8e82f9e6e3 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/JobStepper.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/JobStepper.tsx @@ -12,28 +12,31 @@ * This file is part of the Antares project. */ -import Stepper from "@mui/material/Stepper"; -import Step from "@mui/material/Step"; -import StepLabel from "@mui/material/StepLabel"; -import FiberManualRecordIcon from "@mui/icons-material/FiberManualRecord"; +import { useState } from "react"; +import { AxiosError } from "axios"; +import moment from "moment"; +import { useSnackbar } from "notistack"; +import { useTranslation } from "react-i18next"; + import BlockIcon from "@mui/icons-material/Block"; import ContentCopyIcon from "@mui/icons-material/ContentCopy"; import EqualizerIcon from "@mui/icons-material/Equalizer"; +import FiberManualRecordIcon from "@mui/icons-material/FiberManualRecord"; import { StepIconProps, Tooltip, Typography } from "@mui/material"; -import moment from "moment"; -import { useState } from "react"; -import { useTranslation } from "react-i18next"; -import { useSnackbar } from "notistack"; -import { AxiosError } from "axios"; -import { - JobStatus, - LaunchJob, - LaunchJobsProgress, -} from "../../../../../../common/types"; -import { convertUTCToLocalTime } from "../../../../../../services/utils"; -import { killStudy } from "../../../../../../services/api/study"; -import LaunchJobLogView from "../../../../Tasks/LaunchJobLogView"; -import useEnqueueErrorSnackbar from "../../../../../../hooks/useEnqueueErrorSnackbar"; +import Step from "@mui/material/Step"; +import StepLabel from "@mui/material/StepLabel"; +import Stepper from "@mui/material/Stepper"; + +import { JobStatus, LaunchJob, LaunchJobsProgress } from "@/common/types"; +import LaunchJobLogView from "@/components/App/Tasks/LaunchJobLogView"; +import ConfirmationDialog from "@/components/common/dialogs/ConfirmationDialog"; +import DigestDialog from "@/components/common/dialogs/DigestDialog"; +import LinearProgressWithLabel from "@/components/common/LinearProgressWithLabel"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import { killStudy } from "@/services/api/study"; +import { convertUTCToLocalTime } from "@/services/utils"; +import type { EmptyObject } from "@/utils/tsUtils"; + import { CancelContainer, JobRoot, @@ -42,17 +45,13 @@ import { StepLabelRoot, StepLabelRow, } from "./style"; -import ConfirmationDialog from "../../../../../common/dialogs/ConfirmationDialog"; -import LinearProgressWithLabel from "../../../../../common/LinearProgressWithLabel"; -import DigestDialog from "../../../../../common/dialogs/DigestDialog"; -import type { EmptyObject } from "../../../../../../utils/tsUtils"; export const ColorStatus = { running: "warning.main", pending: "grey.400", success: "success.main", failed: "error.main", -}; +} as const; const iconStyle = { m: 0.5, diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/index.tsx index 263a12d1a5..c03446ff93 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/LauncherHistory/index.tsx @@ -12,12 +12,14 @@ * This file is part of the Antares project. */ -import { Box, Paper, styled, Typography } from "@mui/material"; import { useCallback, useEffect, useState } from "react"; -import { useTranslation } from "react-i18next"; import { AxiosError } from "axios"; -import HistoryIcon from "@mui/icons-material/History"; import moment from "moment"; +import { useTranslation } from "react-i18next"; + +import HistoryIcon from "@mui/icons-material/History"; +import { Box, Paper, styled, Typography } from "@mui/material"; + import { LaunchJob, LaunchJobDTO, @@ -26,19 +28,17 @@ import { StudyMetadata, WSEvent, WSMessage, -} from "../../../../../../common/types"; -import { - getStudyJobs, - mapLaunchJobDTO, -} from "../../../../../../services/api/study"; +} from "@/common/types"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import { getStudyJobs, mapLaunchJobDTO } from "@/services/api/study"; +import { getProgress } from "@/services/api/tasks"; import { addWsMessageListener, sendWsSubscribeMessage, WsChannel, -} from "../../../../../../services/webSockets"; +} from "@/services/webSockets"; + import JobStepper from "./JobStepper"; -import useEnqueueErrorSnackbar from "../../../../../../hooks/useEnqueueErrorSnackbar"; -import { getProgress } from "../../../../../../services/api/tasks"; const TitleHeader = styled(Box)(({ theme }) => ({ display: "flex", diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/DetailsList.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/DetailsList.tsx index 295e521547..81fc717600 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/DetailsList.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/DetailsList.tsx @@ -12,13 +12,13 @@ * This file is part of the Antares project. */ +import { SvgIconComponent } from "@mui/icons-material"; +import { Icon } from "@mui/material"; +import Avatar from "@mui/material/Avatar"; import List from "@mui/material/List"; import ListItem from "@mui/material/ListItem"; -import ListItemText from "@mui/material/ListItemText"; import ListItemAvatar from "@mui/material/ListItemAvatar"; -import Avatar from "@mui/material/Avatar"; -import { Icon } from "@mui/material"; -import { SvgIconComponent } from "@mui/icons-material"; +import ListItemText from "@mui/material/ListItemText"; interface ListItem { content: React.ReactNode; diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx index 7dae04424a..4cb8a7f0f0 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/NodeEditorModal/index.tsx @@ -14,12 +14,16 @@ import { useEffect, useState } from "react"; import { Editor, EditorState, getDefaultKeyBinding, RichUtils } from "draft-js"; -import { Button } from "@mui/material"; import { useTranslation } from "react-i18next"; + import FormatListBulletedIcon from "@mui/icons-material/FormatListBulleted"; import FormatListNumberedIcon from "@mui/icons-material/FormatListNumbered"; +import { Button } from "@mui/material"; + +import BasicDialog from "@/components/common/dialogs/BasicDialog"; + import { convertDraftJSToXML, convertXMLToDraftJS } from "../utils"; -import BasicDialog from "../../../../../../common/dialogs/BasicDialog"; + import { EditorButton, EditorContainer, diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx index 9491982e92..aae849dad7 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/index.tsx @@ -13,33 +13,37 @@ */ import { useEffect, useState } from "react"; -import { useTranslation } from "react-i18next"; -import { useSnackbar } from "notistack"; import { AxiosError } from "axios"; -import { Box, Divider, Skeleton, styled, Typography } from "@mui/material"; -import StickyNote2OutlinedIcon from "@mui/icons-material/StickyNote2Outlined"; +import { Editor, EditorState } from "draft-js"; +import { useSnackbar } from "notistack"; +import { useTranslation } from "react-i18next"; + +import EditIcon from "@mui/icons-material/Edit"; +import HubIcon from "@mui/icons-material/Hub"; import LinearScaleIcon from "@mui/icons-material/LinearScale"; +import StickyNote2OutlinedIcon from "@mui/icons-material/StickyNote2Outlined"; import StorageIcon from "@mui/icons-material/Storage"; -import HubIcon from "@mui/icons-material/Hub"; -import { Editor, EditorState } from "draft-js"; -import "draft-js/dist/Draft.css"; import { LoadingButton } from "@mui/lab"; -import EditIcon from "@mui/icons-material/Edit"; +import { Box, Divider, Skeleton, styled, Typography } from "@mui/material"; + +import { StudyMetadata } from "@/common/types"; +import UsePromiseCond from "@/components/common/utils/UsePromiseCond"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import usePromiseWithSnackbarError from "@/hooks/usePromiseWithSnackbarError"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import useStudySynthesis from "@/redux/hooks/useStudySynthesis"; +import { getAreas, getLinks } from "@/redux/selectors"; import { editComments, getComments, getStudyDiskUsage, -} from "../../../../../../services/api/study"; -import { convertSize, convertXMLToDraftJS, getColorForSize } from "./utils"; -import { StudyMetadata } from "../../../../../../common/types"; -import NoteEditorModal from "./NodeEditorModal"; -import useEnqueueErrorSnackbar from "../../../../../../hooks/useEnqueueErrorSnackbar"; -import usePromiseWithSnackbarError from "../../../../../../hooks/usePromiseWithSnackbarError"; +} from "@/services/api/study"; + import DetailsList from "./DetailsList"; -import { getAreas, getLinks } from "../../../../../../redux/selectors"; -import UsePromiseCond from "../../../../../common/utils/UsePromiseCond"; -import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; -import useStudySynthesis from "../../../../../../redux/hooks/useStudySynthesis"; +import NoteEditorModal from "./NodeEditorModal"; +import { convertSize, convertXMLToDraftJS, getColorForSize } from "./utils"; + +import "draft-js/dist/Draft.css"; const Root = styled(Box)(() => ({ flex: "0 0 40%", diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts index 4f2d146330..f9440295ff 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts @@ -14,11 +14,12 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable no-param-reassign */ +import { convertFromHTML } from "draft-convert"; import { ContentState, convertToRaw, EditorState } from "draft-js"; import draftToHtml from "draftjs-to-html"; -import { convertFromHTML } from "draft-convert"; import { Element as XMLElement, js2xml, xml2json } from "xml-js"; -import theme from "../../../../../../theme"; + +import theme from "@/theme"; interface BlockMap { from: string; diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx index 52b57f4935..f07b7e0ef7 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx @@ -13,20 +13,23 @@ */ import { useState } from "react"; -import { Paper, Button, Box, Divider } from "@mui/material"; -import { useNavigate } from "react-router-dom"; -import { useTranslation } from "react-i18next"; import { AxiosError } from "axios"; -import { StudyMetadata, VariantTree } from "../../../../../common/types"; -import CreateVariantDialog from "./CreateVariantDialog"; -import LauncherHistory from "./LauncherHistory"; -import Notes from "./Notes"; -import LauncherDialog from "../../../Studies/LauncherDialog"; +import { useTranslation } from "react-i18next"; +import { useNavigate } from "react-router-dom"; + +import { Box, Button, Divider, Paper } from "@mui/material"; + +import { StudyMetadata, VariantTree } from "@/common/types"; +import LauncherDialog from "@/components/App/Studies/LauncherDialog"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; import { copyStudy, unarchiveStudy as callUnarchiveStudy, -} from "../../../../../services/api/study"; -import useEnqueueErrorSnackbar from "../../../../../hooks/useEnqueueErrorSnackbar"; +} from "@/services/api/study"; + +import CreateVariantDialog from "./CreateVariantDialog"; +import LauncherHistory from "./LauncherHistory"; +import Notes from "./Notes"; interface Props { study: StudyMetadata | undefined; diff --git a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx index 3e483c8e21..d3cdcedb2f 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx @@ -14,12 +14,15 @@ import { useEffect, useMemo, useState } from "react"; import * as React from "react"; + import { Box, styled } from "@mui/material"; -import { StudyMetadata, VariantTree } from "../../../../../common/types"; -import { StudyTree, getTreeNodes } from "./utils"; + +import { StudyMetadata, VariantTree } from "@/common/types"; + import { CIRCLE_RADIUS, colors, + CURVE_OFFSET, DCX, DCY, DEPTH_OFFSET, @@ -36,8 +39,8 @@ import { TILE_SIZE_Y, TILE_SIZE_Y_2, ZOOM_OUT, - CURVE_OFFSET, } from "./treeconfig"; +import { getTreeNodes, StudyTree } from "./utils"; export const SVGCircle = styled("circle")({ cursor: "pointer", diff --git a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/utils.ts b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/utils.ts index f9225289fb..776a092b08 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/utils.ts +++ b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/utils.ts @@ -13,11 +13,7 @@ */ /* eslint-disable no-param-reassign */ -import { - GenericInfo, - StudyMetadata, - VariantTree, -} from "../../../../../common/types"; +import { GenericInfo, StudyMetadata, VariantTree } from "@/common/types"; export interface StudyTree { name: string; diff --git a/webapp/src/components/App/Singlestudy/HomeView/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/index.tsx index 83f4d765a5..b34159d37d 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/index.tsx @@ -13,12 +13,16 @@ */ import { useNavigate } from "react-router-dom"; -import { Box } from "@mui/material"; import Split from "react-split"; -import { StudyMetadata, VariantTree } from "../../../../common/types"; -import "./Split.css"; -import StudyTreeView from "./StudyTreeView"; + +import { Box } from "@mui/material"; + +import { StudyMetadata, VariantTree } from "@/common/types"; + import InformationView from "./InformationView"; +import StudyTreeView from "./StudyTreeView"; + +import "./Split.css"; interface Props { study: StudyMetadata | undefined; diff --git a/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx b/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx index fb9dca2669..4cec358def 100644 --- a/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx +++ b/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx @@ -12,19 +12,21 @@ * This file is part of the Antares project. */ -import { Box, Tooltip, Typography, Chip, Button, Divider } from "@mui/material"; -import HistoryOutlinedIcon from "@mui/icons-material/HistoryOutlined"; -import ContentCopyIcon from "@mui/icons-material/ContentCopy"; import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router"; -import MoreVertIcon from "@mui/icons-material/MoreVert"; + import ArrowBackIcon from "@mui/icons-material/ArrowBack"; -import { StudyMetadata, StudyType } from "../../../../common/types"; -import { toggleFavorite } from "../../../../redux/ducks/studies"; -import StarToggle from "../../../common/StarToggle"; -import useAppDispatch from "../../../../redux/hooks/useAppDispatch"; -import useAppSelector from "../../../../redux/hooks/useAppSelector"; -import { isCurrentStudyFavorite } from "../../../../redux/selectors"; +import ContentCopyIcon from "@mui/icons-material/ContentCopy"; +import HistoryOutlinedIcon from "@mui/icons-material/HistoryOutlined"; +import MoreVertIcon from "@mui/icons-material/MoreVert"; +import { Box, Button, Chip, Divider, Tooltip, Typography } from "@mui/material"; + +import { StudyMetadata, StudyType } from "@/common/types"; +import StarToggle from "@/components/common/StarToggle"; +import { toggleFavorite } from "@/redux/ducks/studies"; +import useAppDispatch from "@/redux/hooks/useAppDispatch"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { isCurrentStudyFavorite } from "@/redux/selectors"; interface Props { study: StudyMetadata | undefined; diff --git a/webapp/src/components/App/Singlestudy/NavHeader/ActionsMenu.tsx b/webapp/src/components/App/Singlestudy/NavHeader/ActionsMenu.tsx index 7e0c7b9135..d411f2a516 100644 --- a/webapp/src/components/App/Singlestudy/NavHeader/ActionsMenu.tsx +++ b/webapp/src/components/App/Singlestudy/NavHeader/ActionsMenu.tsx @@ -12,10 +12,11 @@ * This file is part of the Antares project. */ -import { Menu, MenuItem, ListItemIcon, ListItemText } from "@mui/material"; -import { SvgIconComponent } from "@mui/icons-material"; import { useTranslation } from "react-i18next"; +import { SvgIconComponent } from "@mui/icons-material"; +import { ListItemIcon, ListItemText, Menu, MenuItem } from "@mui/material"; + export interface ActionsMenuItem { key: string; icon: SvgIconComponent; diff --git a/webapp/src/components/App/Singlestudy/NavHeader/Details.tsx b/webapp/src/components/App/Singlestudy/NavHeader/Details.tsx index 2a59f1dca5..f20b859c77 100644 --- a/webapp/src/components/App/Singlestudy/NavHeader/Details.tsx +++ b/webapp/src/components/App/Singlestudy/NavHeader/Details.tsx @@ -12,23 +12,25 @@ * This file is part of the Antares project. */ -import ScheduleOutlinedIcon from "@mui/icons-material/ScheduleOutlined"; -import UpdateOutlinedIcon from "@mui/icons-material/UpdateOutlined"; -import AltRouteOutlinedIcon from "@mui/icons-material/AltRouteOutlined"; -import SecurityOutlinedIcon from "@mui/icons-material/SecurityOutlined"; -import AccountTreeOutlinedIcon from "@mui/icons-material/AccountTreeOutlined"; -import PersonOutlineOutlinedIcon from "@mui/icons-material/PersonOutlineOutlined"; -import { Box, Divider, Tooltip, Typography, styled } from "@mui/material"; import { useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; + +import AccountTreeOutlinedIcon from "@mui/icons-material/AccountTreeOutlined"; +import AltRouteOutlinedIcon from "@mui/icons-material/AltRouteOutlined"; +import PersonOutlineOutlinedIcon from "@mui/icons-material/PersonOutlineOutlined"; +import ScheduleOutlinedIcon from "@mui/icons-material/ScheduleOutlined"; +import SecurityOutlinedIcon from "@mui/icons-material/SecurityOutlined"; +import UpdateOutlinedIcon from "@mui/icons-material/UpdateOutlined"; +import { Box, Divider, styled, Tooltip, Typography } from "@mui/material"; + +import { StudyMetadata, VariantTree } from "@/common/types"; +import { PUBLIC_MODE_LIST } from "@/components/common/utils/constants"; import { buildModificationDate, convertUTCToLocalTime, countAllChildrens, displayVersionName, -} from "../../../../services/utils"; -import { StudyMetadata, VariantTree } from "../../../../common/types"; -import { PUBLIC_MODE_LIST } from "../../../common/utils/constants"; +} from "@/services/utils"; const MAX_STUDY_TITLE_LENGTH = 45; diff --git a/webapp/src/components/App/Singlestudy/NavHeader/index.tsx b/webapp/src/components/App/Singlestudy/NavHeader/index.tsx index decab0bfa8..a5d4b4e20c 100644 --- a/webapp/src/components/App/Singlestudy/NavHeader/index.tsx +++ b/webapp/src/components/App/Singlestudy/NavHeader/index.tsx @@ -12,36 +12,40 @@ * This file is part of the Antares project. */ -import { useState, MouseEvent } from "react"; +import { MouseEvent, useState } from "react"; +import { AxiosError } from "axios"; import debug from "debug"; import { useSnackbar } from "notistack"; +import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router-dom"; -import { AxiosError } from "axios"; -import { Box, Typography } from "@mui/material"; -import UpgradeIcon from "@mui/icons-material/Upgrade"; -import UnarchiveOutlinedIcon from "@mui/icons-material/UnarchiveOutlined"; -import DownloadOutlinedIcon from "@mui/icons-material/DownloadOutlined"; + import ArchiveOutlinedIcon from "@mui/icons-material/ArchiveOutlined"; import DeleteOutlinedIcon from "@mui/icons-material/DeleteOutlined"; +import DownloadOutlinedIcon from "@mui/icons-material/DownloadOutlined"; import EditOutlinedIcon from "@mui/icons-material/EditOutlined"; -import { useTranslation } from "react-i18next"; -import { StudyMetadata, VariantTree } from "../../../../common/types"; -import { STUDIES_HEIGHT_HEADER } from "../../../../theme"; -import { archiveStudy, unarchiveStudy } from "../../../../services/api/study"; -import { deleteStudy } from "../../../../redux/ducks/studies"; +import UnarchiveOutlinedIcon from "@mui/icons-material/UnarchiveOutlined"; +import UpgradeIcon from "@mui/icons-material/Upgrade"; +import { Box, Typography } from "@mui/material"; + +import { StudyMetadata, VariantTree } from "@/common/types"; +import ConfirmationDialog from "@/components/common/dialogs/ConfirmationDialog"; +import CheckBoxFE from "@/components/common/fieldEditors/CheckBoxFE"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import { deleteStudy } from "@/redux/ducks/studies"; +import useAppDispatch from "@/redux/hooks/useAppDispatch"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getLatestStudyVersion } from "@/redux/selectors"; +import { archiveStudy, unarchiveStudy } from "@/services/api/study"; +import { STUDIES_HEIGHT_HEADER } from "@/theme"; + +import ExportModal from "../../Studies/ExportModal"; import LauncherDialog from "../../Studies/LauncherDialog"; import PropertiesDialog from "../PropertiesDialog"; -import useEnqueueErrorSnackbar from "../../../../hooks/useEnqueueErrorSnackbar"; -import { getLatestStudyVersion } from "../../../../redux/selectors"; -import ExportDialog from "../../Studies/ExportModal"; -import ConfirmationDialog from "../../../common/dialogs/ConfirmationDialog"; -import useAppSelector from "../../../../redux/hooks/useAppSelector"; -import useAppDispatch from "../../../../redux/hooks/useAppDispatch"; -import CheckBoxFE from "../../../common/fieldEditors/CheckBoxFE"; -import Details from "./Details"; -import Actions from "./Actions"; import UpgradeDialog from "../UpgradeDialog"; + +import Actions from "./Actions"; import ActionsMenu, { ActionsMenuItem } from "./ActionsMenu"; +import Details from "./Details"; const logError = debug("antares:singlestudy:navheader:error"); @@ -289,7 +293,7 @@ function NavHeader({ /> )} {study && openExportDialog && ( - setOpenExportDialog(false)} study={study} diff --git a/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx b/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx index 39520299c4..260f9935d7 100644 --- a/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx +++ b/webapp/src/components/App/Singlestudy/PropertiesDialog.tsx @@ -12,31 +12,32 @@ * This file is part of the Antares project. */ +import { useMemo } from "react"; +import { AxiosError } from "axios"; import debug from "debug"; +import { useSnackbar } from "notistack"; import * as R from "ramda"; import { useTranslation } from "react-i18next"; -import { AxiosError } from "axios"; -import { useSnackbar } from "notistack"; -import { useMemo } from "react"; -import { StudyMetadata } from "../../../common/types"; + +import { StudyMetadata } from "@/common/types"; +import FormDialog from "@/components/common/dialogs/FormDialog"; +import CheckboxesTagsFE from "@/components/common/fieldEditors/CheckboxesTagsFE"; +import SelectFE from "@/components/common/fieldEditors/SelectFE"; +import StringFE from "@/components/common/fieldEditors/StringFE"; +import Fieldset from "@/components/common/Fieldset"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import { PUBLIC_MODE_LIST } from "@/components/common/utils/constants"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import usePromiseWithSnackbarError from "@/hooks/usePromiseWithSnackbarError"; +import { updateStudy } from "@/redux/ducks/studies"; +import useAppDispatch from "@/redux/hooks/useAppDispatch"; import { addStudyGroup, changePublicMode, deleteStudyGroup, updateStudyMetadata, -} from "../../../services/api/study"; -import { getGroups } from "../../../services/api/user"; -import useEnqueueErrorSnackbar from "../../../hooks/useEnqueueErrorSnackbar"; -import { PUBLIC_MODE_LIST } from "../../common/utils/constants"; -import usePromiseWithSnackbarError from "../../../hooks/usePromiseWithSnackbarError"; -import FormDialog from "../../common/dialogs/FormDialog"; -import StringFE from "../../common/fieldEditors/StringFE"; -import SelectFE from "../../common/fieldEditors/SelectFE"; -import CheckboxesTagsFE from "../../common/fieldEditors/CheckboxesTagsFE"; -import Fieldset from "../../common/Fieldset"; -import { SubmitHandlerPlus } from "../../common/Form/types"; -import useAppDispatch from "../../../redux/hooks/useAppDispatch"; -import { updateStudy } from "../../../redux/ducks/studies"; +} from "@/services/api/study"; +import { getGroups } from "@/services/api/user"; import { validateString } from "@/utils/validation/string"; const logErr = debug("antares:createstudyform:error"); diff --git a/webapp/src/components/App/Singlestudy/UpgradeDialog.tsx b/webapp/src/components/App/Singlestudy/UpgradeDialog.tsx index 48663558b6..d301e6fe2c 100644 --- a/webapp/src/components/App/Singlestudy/UpgradeDialog.tsx +++ b/webapp/src/components/App/Singlestudy/UpgradeDialog.tsx @@ -12,17 +12,19 @@ * This file is part of the Antares project. */ -import UpgradeIcon from "@mui/icons-material/Upgrade"; import { useMemo } from "react"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../common/types"; -import { SubmitHandlerPlus } from "../../common/Form/types"; -import Fieldset from "../../common/Fieldset"; -import SelectFE from "../../common/fieldEditors/SelectFE"; -import FormDialog from "../../common/dialogs/FormDialog"; -import useAppSelector from "../../../redux/hooks/useAppSelector"; -import { getStudyVersionsFormatted } from "../../../redux/selectors"; -import { upgradeStudy } from "../../../services/api/study"; + +import UpgradeIcon from "@mui/icons-material/Upgrade"; + +import { StudyMetadata } from "@/common/types"; +import FormDialog from "@/components/common/dialogs/FormDialog"; +import SelectFE from "@/components/common/fieldEditors/SelectFE"; +import Fieldset from "@/components/common/Fieldset"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getStudyVersionsFormatted } from "@/redux/selectors"; +import { upgradeStudy } from "@/services/api/study"; interface Props { study: StudyMetadata; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx index cbdccd3911..57e1e35162 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/Fields.tsx @@ -12,18 +12,21 @@ * This file is part of the Antares project. */ -import { Box } from "@mui/material"; import { useTranslation } from "react-i18next"; import { useOutletContext } from "react-router"; -import NumberFE from "../../../../../common/fieldEditors/NumberFE"; -import SelectFE from "../../../../../common/fieldEditors/SelectFE"; -import SwitchFE from "../../../../../common/fieldEditors/SwitchFE"; -import Fieldset from "../../../../../common/Fieldset"; -import { useFormContextPlus } from "../../../../../common/Form"; -import { AdequacyPatchFormFields, PRICE_TAKING_ORDER_OPTIONS } from "./utils"; -import { StudyMetadata } from "../../../../../../common/types"; + +import { Box } from "@mui/material"; + +import { StudyMetadata } from "@/common/types"; +import NumberFE from "@/components/common/fieldEditors/NumberFE"; +import SelectFE from "@/components/common/fieldEditors/SelectFE"; +import SwitchFE from "@/components/common/fieldEditors/SwitchFE"; +import Fieldset from "@/components/common/Fieldset"; +import { useFormContextPlus } from "@/components/common/Form"; import { validateNumber } from "@/utils/validation/number"; +import { AdequacyPatchFormFields, PRICE_TAKING_ORDER_OPTIONS } from "./utils"; + function Fields() { const { t } = useTranslation(); const { control } = useFormContextPlus(); diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/index.tsx index 8b8b178543..eb1f80131f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/index.tsx @@ -12,19 +12,21 @@ * This file is part of the Antares project. */ -import { useOutletContext } from "react-router"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../../common/types"; -import Form from "../../../../../common/Form"; -import { SubmitHandlerPlus } from "../../../../../common/Form/types"; +import { useOutletContext } from "react-router"; + +import { StudyMetadata } from "@/common/types"; +import Form from "@/components/common/Form"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import TableMode from "@/components/common/TableMode"; +import TabsView from "@/components/common/TabsView"; + import Fields from "./Fields"; import { AdequacyPatchFormFields, getAdequacyPatchFormFields, setAdequacyPatchFormFields, } from "./utils"; -import TableMode from "../../../../../common/TableMode"; -import TabsView from "../../../../../common/TabsView"; function AdequacyPatch() { const { study } = useOutletContext<{ study: StudyMetadata }>(); @@ -34,9 +36,7 @@ function AdequacyPatch() { // Event Handlers //////////////////////////////////////////////////////////////// - const handleSubmit = async ( - data: SubmitHandlerPlus, - ) => { + const handleSubmit = (data: SubmitHandlerPlus) => { return setAdequacyPatchFormFields(study.id, data.dirtyValues); }; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/utils.ts index 3fb10e2782..4f1be592c6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdequacyPatch/utils.ts @@ -12,8 +12,8 @@ * This file is part of the Antares project. */ -import { StudyMetadata } from "../../../../../../common/types"; -import client from "../../../../../../services/api/client"; +import { StudyMetadata } from "@/common/types"; +import client from "@/services/api/client"; //////////////////////////////////////////////////////////////// // Enums diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/Fields.tsx index 19a19d41a9..76f85c007d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/Fields.tsx @@ -12,28 +12,31 @@ * This file is part of the Antares project. */ -import { Box } from "@mui/material"; import { useTranslation } from "react-i18next"; -import NumberFE from "../../../../../common/fieldEditors/NumberFE"; -import SelectFE from "../../../../../common/fieldEditors/SelectFE"; -import Fieldset from "../../../../../common/Fieldset"; -import { useFormContextPlus } from "../../../../../common/Form"; +import { useOutletContext } from "react-router"; + +import { Box } from "@mui/material"; + +import { StudyMetadata } from "@/common/types"; +import NumberFE from "@/components/common/fieldEditors/NumberFE"; +import SelectFE from "@/components/common/fieldEditors/SelectFE"; +import Fieldset from "@/components/common/Fieldset"; +import { useFormContextPlus } from "@/components/common/Form"; + import { AdvancedParamsFormFields, HYDRO_HEURISTIC_POLICY_OPTIONS, - INITIAL_RESERVOIR_OPTIONS, HYDRO_PRICING_MODE_OPTIONS, + INITIAL_RESERVOIR_OPTIONS, POWER_FLUCTUATIONS_OPTIONS, - SPATIAL_CORRELATIONS_OPTIONS, - SHEDDING_POLICY_OPTIONS, + RENEWABLE_GENERATION_OPTIONS, RESERVE_MANAGEMENT_OPTIONS, - UNIT_COMMITMENT_MODE_OPTIONS, + SHEDDING_POLICY_OPTIONS, SIMULATION_CORES_OPTIONS, - RENEWABLE_GENERATION_OPTIONS, + SPATIAL_CORRELATIONS_OPTIONS, + UNIT_COMMITMENT_MODE_OPTIONS, UnitCommitmentMode, } from "./utils"; -import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../common/types"; function Fields() { const [t] = useTranslation(); diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/index.tsx index 28e5ef9ee2..01bfc65a61 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/index.tsx @@ -13,11 +13,13 @@ */ import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../common/types"; -import { updateStudySynthesis } from "../../../../../../redux/ducks/studySyntheses"; -import useAppDispatch from "../../../../../../redux/hooks/useAppDispatch"; -import Form from "../../../../../common/Form"; -import { SubmitHandlerPlus } from "../../../../../common/Form/types"; + +import { StudyMetadata } from "@/common/types"; +import Form from "@/components/common/Form"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import { updateStudySynthesis } from "@/redux/ducks/studySyntheses"; +import useAppDispatch from "@/redux/hooks/useAppDispatch"; + import Fields from "./Fields"; import { AdvancedParamsFormFields, diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/utils.ts index addfec700c..33d34531ae 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/AdvancedParameters/utils.ts @@ -13,8 +13,9 @@ */ import { DeepPartial } from "react-hook-form"; -import { StudyMetadata } from "../../../../../../common/types"; -import client from "../../../../../../services/api/client"; + +import { StudyMetadata } from "@/common/types"; +import client from "@/services/api/client"; //////////////////////////////////////////////////////////////// // Enums diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/Fields.tsx index f4d23505b4..c397b2867e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/Fields.tsx @@ -12,17 +12,26 @@ * This file is part of the Antares project. */ -import { Box, Button, Divider } from "@mui/material"; -import { useTranslation } from "react-i18next"; -import SettingsIcon from "@mui/icons-material/Settings"; import { useEffect } from "react"; import * as RA from "ramda-adjunct"; import { Validate } from "react-hook-form"; -import SelectFE from "../../../../../common/fieldEditors/SelectFE"; -import SwitchFE from "../../../../../common/fieldEditors/SwitchFE"; +import { useTranslation } from "react-i18next"; + +import SettingsIcon from "@mui/icons-material/Settings"; +import { Box, Button, Divider } from "@mui/material"; + +import BooleanFE from "@/components/common/fieldEditors/BooleanFE"; +import NumberFE from "@/components/common/fieldEditors/NumberFE"; +import SelectFE from "@/components/common/fieldEditors/SelectFE"; +import StringFE from "@/components/common/fieldEditors/StringFE"; +import SwitchFE from "@/components/common/fieldEditors/SwitchFE"; +import Fieldset from "@/components/common/Fieldset"; +import { useFormContextPlus } from "@/components/common/Form"; + +import { FieldWithButton } from "./styles"; import { - BuildingMode, BUILDING_MODE_OPTIONS, + BuildingMode, FIRST_JANUARY_OPTIONS, GeneralFormFields, MODE_OPTIONS, @@ -30,12 +39,6 @@ import { WEEK_OPTIONS, YEAR_OPTIONS, } from "./utils"; -import BooleanFE from "../../../../../common/fieldEditors/BooleanFE"; -import { useFormContextPlus } from "../../../../../common/Form"; -import StringFE from "../../../../../common/fieldEditors/StringFE"; -import NumberFE from "../../../../../common/fieldEditors/NumberFE"; -import Fieldset from "../../../../../common/Fieldset"; -import { FieldWithButton } from "./styles"; interface Props { setDialog: React.Dispatch>; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/Table.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/Table.tsx index 9b0648912a..ae9afdd7ab 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/Table.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/Table.tsx @@ -13,19 +13,21 @@ */ import { useTranslation } from "react-i18next"; -import TableForm from "../../../../../../../common/TableForm"; +import { useOutletContext } from "react-router"; + +import { StudyMetadata } from "@/common/types"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import EmptyView from "@/components/common/page/SimpleContent"; +import TableForm from "@/components/common/TableForm"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import { toError } from "@/utils/fnUtils"; + import { + ClustersHandlerReturn, GenericScenarioConfig, ScenarioType, - ClustersHandlerReturn, updateScenarioBuilderConfig, } from "./utils"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; -import EmptyView from "../../../../../../../common/page/SimpleContent"; -import useEnqueueErrorSnackbar from "../../../../../../../../hooks/useEnqueueErrorSnackbar"; -import { toError } from "../../../../../../../../utils/fnUtils"; -import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../../common/types"; interface Props { config: GenericScenarioConfig | ClustersHandlerReturn; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx index 3f86bc643c..9f7fee7228 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/index.tsx @@ -12,17 +12,20 @@ * This file is part of the Antares project. */ -import { TabContext, TabList, TabListProps, TabPanel } from "@mui/lab"; -import { Box, Button, Tab, Skeleton } from "@mui/material"; import { useState } from "react"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../../../../common/types"; -import BasicDialog from "../../../../../../../common/dialogs/BasicDialog"; + +import { TabContext, TabList, TabListProps, TabPanel } from "@mui/lab"; +import { Box, Button, Skeleton, Tab } from "@mui/material"; + +import { StudyMetadata } from "@/common/types"; +import BasicDialog from "@/components/common/dialogs/BasicDialog"; +import UsePromiseCond from "@/components/common/utils/UsePromiseCond"; +import usePromiseWithSnackbarError from "@/hooks/usePromiseWithSnackbarError"; + import Table from "./Table"; import { getScenarioConfigByType, SCENARIOS, ScenarioType } from "./utils"; -import UsePromiseCond from "../../../../../../../common/utils/UsePromiseCond"; import withAreas from "./withAreas"; -import usePromiseWithSnackbarError from "../../../../../../../../hooks/usePromiseWithSnackbarError"; interface Props { study: StudyMetadata; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/utils.ts index 87e4f5a979..271e259e3f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/utils.ts @@ -13,8 +13,9 @@ */ import { AxiosResponse } from "axios"; -import { StudyMetadata } from "../../../../../../../../common/types"; -import client from "../../../../../../../../services/api/client"; + +import { StudyMetadata } from "@/common/types"; +import client from "@/services/api/client"; //////////////////////////////////////////////////////////////// // Constants diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/withAreas.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/withAreas.tsx index 05dfcb013f..6052795173 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/withAreas.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioBuilderDialog/withAreas.tsx @@ -13,17 +13,21 @@ */ import { ComponentType, useEffect, useMemo, useState } from "react"; + import { Box } from "@mui/material"; -import SplitView from "../../../../../../../common/SplitView"; -import PropertiesView from "../../../../../../../common/PropertiesView"; + +import PropertiesView from "@/components/common/PropertiesView"; +import SplitView from "@/components/common/SplitView"; + import ListElement from "../../../../common/ListElement"; + import { - GenericScenarioConfig, - HandlerReturnTypes, - ScenarioType, ClustersHandlerReturn, + GenericScenarioConfig, getConfigByScenario, + HandlerReturnTypes, ScenarioConfig, + ScenarioType, } from "./utils"; interface ScenarioTableProps { diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx index 80f78ef82c..d38750ed6a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/index.tsx @@ -12,28 +12,29 @@ * This file is part of the Antares project. */ -import { Box, Button, Divider } from "@mui/material"; import { useRef } from "react"; -import { useTranslation } from "react-i18next"; +import Handsontable from "handsontable"; import * as R from "ramda"; import * as RA from "ramda-adjunct"; -import Handsontable from "handsontable"; -import { StudyMetadata } from "../../../../../../../../common/types"; -import usePromise from "../../../../../../../../hooks/usePromise"; -import BasicDialog from "../../../../../../../common/dialogs/BasicDialog"; -import TableForm from "../../../../../../../common/TableForm"; -import UsePromiseCond from "../../../../../../../common/utils/UsePromiseCond"; +import { useTranslation } from "react-i18next"; + +import { HotTableClass } from "@handsontable/react"; +import { Box, Button, Divider } from "@mui/material"; + +import { StudyMetadata } from "@/common/types"; +import BasicDialog from "@/components/common/dialogs/BasicDialog"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import { HandsontableProps } from "@/components/common/Handsontable"; +import TableForm from "@/components/common/TableForm"; +import UsePromiseCond from "@/components/common/utils/UsePromiseCond"; +import usePromise from "@/hooks/usePromise"; + import { DEFAULT_WEIGHT, getPlaylist, PlaylistData, setPlaylist, } from "./utils"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; -import { - HandsontableProps, - HotTableClass, -} from "../../../../../../../common/Handsontable"; interface Props { study: StudyMetadata; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/utils.ts index bd7c015df8..5404a5399c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ScenarioPlaylistDialog/utils.ts @@ -12,8 +12,8 @@ * This file is part of the Antares project. */ -import { StudyMetadata } from "../../../../../../../../common/types"; -import client from "../../../../../../../../services/api/client"; +import { StudyMetadata } from "@/common/types"; +import client from "@/services/api/client"; interface PlaylistColumns extends Record { status: boolean; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx index 19cbfdf8b9..4a28e9af22 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/index.tsx @@ -12,6 +12,12 @@ * This file is part of the Antares project. */ +import { useState } from "react"; +import * as R from "ramda"; +import * as RA from "ramda-adjunct"; +import { useTranslation } from "react-i18next"; + +import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import { Accordion, AccordionDetails, @@ -20,31 +26,28 @@ import { Divider, Grid2 as Grid, } from "@mui/material"; -import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; -import * as R from "ramda"; -import * as RA from "ramda-adjunct"; -import { useState } from "react"; -import { StudyMetadata } from "../../../../../../../../common/types"; -import SwitchFE from "../../../../../../../common/fieldEditors/SwitchFE"; +import Stack from "@mui/material/Stack"; + +import { StudyMetadata } from "@/common/types"; +import FormDialog from "@/components/common/dialogs/FormDialog"; +import SearchFE from "@/components/common/fieldEditors/SearchFE"; +import SwitchFE from "@/components/common/fieldEditors/SwitchFE"; import { SubmitHandlerPlus, UseFormReturnPlus, -} from "../../../../../../../common/Form/types"; -import SearchFE from "../../../../../../../common/fieldEditors/SearchFE"; -import { isSearchMatching } from "../../../../../../../../utils/stringUtils"; -import FormDialog from "../../../../../../../common/dialogs/FormDialog"; +} from "@/components/common/Form/types"; +import { + getThematicTrimmingConfig, + setThematicTrimmingConfig, +} from "@/services/api/studies/config/thematicTrimming"; +import type { ThematicTrimmingConfig } from "@/services/api/studies/config/thematicTrimming/types"; +import { isSearchMatching } from "@/utils/stringUtils"; + import { - THEMATIC_TRIMMING_GROUPS, getFieldLabelsForGroup, + THEMATIC_TRIMMING_GROUPS, type ThematicTrimmingGroup, } from "./utils"; -import type { ThematicTrimmingConfig } from "../../../../../../../../services/api/studies/config/thematicTrimming/types"; -import { - getThematicTrimmingConfig, - setThematicTrimmingConfig, -} from "../../../../../../../../services/api/studies/config/thematicTrimming"; -import { useTranslation } from "react-i18next"; -import Stack from "@mui/material/Stack"; interface Props { study: StudyMetadata; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts index a3a16e5661..72b7925429 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts @@ -13,9 +13,10 @@ */ import * as R from "ramda"; -import { ThematicTrimmingConfig } from "../../../../../../../../services/api/studies/config/thematicTrimming/types"; import { O } from "ts-toolbelt"; +import { ThematicTrimmingConfig } from "@/services/api/studies/config/thematicTrimming/types"; + export const THEMATIC_TRIMMING_GROUPS = [ "general", "generationHydro", diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx index 9d9ea519d9..8436a58c3a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx @@ -12,14 +12,18 @@ * This file is part of the Antares project. */ -import { useOutletContext } from "react-router"; -import * as R from "ramda"; import { useState } from "react"; -import { StudyMetadata } from "../../../../../../common/types"; -import Form from "../../../../../common/Form"; -import Fields from "./Fields"; -import ThematicTrimmingDialog from "./dialogs/ThematicTrimmingDialog"; +import * as R from "ramda"; +import { useOutletContext } from "react-router"; + +import { StudyMetadata } from "@/common/types"; +import Form from "@/components/common/Form"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; + +import ScenarioBuilderDialog from "./dialogs/ScenarioBuilderDialog"; import ScenarioPlaylistDialog from "./dialogs/ScenarioPlaylistDialog"; +import ThematicTrimmingDialog from "./dialogs/ThematicTrimmingDialog"; +import Fields from "./Fields"; import { GeneralFormFields, getGeneralFormFields, @@ -28,8 +32,6 @@ import { SetDialogStateType, setGeneralFormFields, } from "./utils"; -import { SubmitHandlerPlus } from "../../../../../common/Form/types"; -import ScenarioBuilderDialog from "./dialogs/ScenarioBuilderDialog"; function General() { const { study } = useOutletContext<{ study: StudyMetadata }>(); diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts index 612e43080f..1be37225eb 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts @@ -13,8 +13,9 @@ */ import * as R from "ramda"; -import { StudyMetadata } from "../../../../../../common/types"; -import client from "../../../../../../services/api/client"; + +import { StudyMetadata } from "@/common/types"; +import client from "@/services/api/client"; //////////////////////////////////////////////////////////////// // Enums diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx index 143b3108ed..3cb47b734e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx @@ -12,13 +12,16 @@ * This file is part of the Antares project. */ -import { Box } from "@mui/material"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../../common/types"; -import SelectFE from "../../../../../common/fieldEditors/SelectFE"; -import SwitchFE from "../../../../../common/fieldEditors/SwitchFE"; -import Fieldset from "../../../../../common/Fieldset"; -import { useFormContextPlus } from "../../../../../common/Form"; + +import { Box } from "@mui/material"; + +import { StudyMetadata } from "@/common/types"; +import SelectFE from "@/components/common/fieldEditors/SelectFE"; +import SwitchFE from "@/components/common/fieldEditors/SwitchFE"; +import Fieldset from "@/components/common/Fieldset"; +import { useFormContextPlus } from "@/components/common/Form"; + import { LEGACY_TRANSMISSION_CAPACITIES_OPTIONS, OptimizationFormFields, diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx index 775665d746..0668d7a84e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx @@ -13,9 +13,11 @@ */ import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../common/types"; -import Form from "../../../../../common/Form"; -import { SubmitHandlerPlus } from "../../../../../common/Form/types"; + +import { StudyMetadata } from "@/common/types"; +import Form from "@/components/common/Form"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; + import Fields from "./Fields"; import { getOptimizationFormFields, @@ -30,9 +32,7 @@ function Optimization() { // Event Handlers //////////////////////////////////////////////////////////////// - const handleSubmit = async ( - data: SubmitHandlerPlus, - ) => { + const handleSubmit = (data: SubmitHandlerPlus) => { return setOptimizationFormFields(study.id, data.dirtyValues); }; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts index 319509ac63..881e73fb39 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts @@ -17,9 +17,8 @@ import * as R from "ramda"; //////////////////////////////////////////////////////////////// // Enums //////////////////////////////////////////////////////////////// - -import { StudyMetadata } from "../../../../../../common/types"; -import client from "../../../../../../services/api/client"; +import { StudyMetadata } from "@/common/types"; +import client from "@/services/api/client"; enum UnfeasibleProblemBehavior { WarningDry = "warning-dry", diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx index d70ab020a4..ee90a479aa 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx @@ -12,6 +12,9 @@ * This file is part of the Antares project. */ +import { capitalize } from "lodash"; +import * as R from "ramda"; + import { Table, TableBody, @@ -20,14 +23,14 @@ import { TableHead, TableRow, } from "@mui/material"; -import { capitalize } from "lodash"; -import * as R from "ramda"; -import CheckBoxFE from "../../../../../common/fieldEditors/CheckBoxFE"; -import NumberFE from "../../../../../common/fieldEditors/NumberFE"; -import SelectFE from "../../../../../common/fieldEditors/SelectFE"; -import SwitchFE from "../../../../../common/fieldEditors/SwitchFE"; -import { useFormContextPlus } from "../../../../../common/Form"; -import { TSFormFields, SEASONAL_CORRELATION_OPTIONS, TSType } from "./utils"; + +import CheckBoxFE from "@/components/common/fieldEditors/CheckBoxFE"; +import NumberFE from "@/components/common/fieldEditors/NumberFE"; +import SelectFE from "@/components/common/fieldEditors/SelectFE"; +import SwitchFE from "@/components/common/fieldEditors/SwitchFE"; +import { useFormContextPlus } from "@/components/common/Form"; + +import { SEASONAL_CORRELATION_OPTIONS, TSFormFields, TSType } from "./utils"; const borderStyle = "1px solid rgba(255, 255, 255, 0.12)"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx index 2619fe284c..405d87279f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx @@ -13,9 +13,11 @@ */ import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../common/types"; -import Form from "../../../../../common/Form"; -import { SubmitHandlerPlus } from "../../../../../common/Form/types"; + +import { StudyMetadata } from "@/common/types"; +import Form from "@/components/common/Form"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; + import Fields from "./Fields"; import { getTimeSeriesFormFields, @@ -30,7 +32,7 @@ function TimeSeriesManagement() { // Event Handlers //////////////////////////////////////////////////////////////// - const handleSubmit = async (data: SubmitHandlerPlus) => { + const handleSubmit = (data: SubmitHandlerPlus) => { return setTimeSeriesFormFields(study.id, data.dirtyValues); }; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts index 19e42b5b33..cd4e88a315 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts @@ -13,8 +13,9 @@ */ import { DeepPartial } from "react-hook-form"; -import { StudyMetadata } from "../../../../../../common/types"; -import client from "../../../../../../services/api/client"; + +import { StudyMetadata } from "@/common/types"; +import client from "@/services/api/client"; //////////////////////////////////////////////////////////////// // Enums diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx index 2cb4312daa..143d4fa2b7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx @@ -12,21 +12,24 @@ * This file is part of the Antares project. */ -import * as R from "ramda"; import { useMemo, useState } from "react"; -import { useOutletContext } from "react-router"; +import * as R from "ramda"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../common/types"; -import PropertiesView from "../../../../common/PropertiesView"; +import { useOutletContext } from "react-router"; + +import { StudyMetadata } from "@/common/types"; +import ViewWrapper from "@/components/common/page/ViewWrapper"; +import PropertiesView from "@/components/common/PropertiesView"; +import SplitView from "@/components/common/SplitView"; +import TableMode from "@/components/common/TableMode"; + import ListElement from "../common/ListElement"; + import AdequacyPatch from "./AdequacyPatch"; import AdvancedParameters from "./AdvancedParameters"; import General from "./General"; import Optimization from "./Optimization"; import TimeSeriesManagement from "./TimeSeriesManagement"; -import TableMode from "../../../../common/TableMode"; -import SplitView from "../../../../common/SplitView"; -import ViewWrapper from "../../../../common/page/ViewWrapper"; function Configuration() { const { study } = useOutletContext<{ study: StudyMetadata }>(); diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Folder.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Folder.tsx index 88c1aaea1e..0f640f205d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Folder.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Folder.tsx @@ -12,6 +12,14 @@ * This file is part of the Antares project. */ +import { Fragment, useState } from "react"; +import { useSnackbar } from "notistack"; +import { useTranslation } from "react-i18next"; +import { useOutletContext } from "react-router"; + +import DeleteIcon from "@mui/icons-material/Delete"; +import FolderIcon from "@mui/icons-material/Folder"; +import MoreVertIcon from "@mui/icons-material/MoreVert"; import { Divider, IconButton, @@ -24,30 +32,26 @@ import { Menu, MenuItem, } from "@mui/material"; -import FolderIcon from "@mui/icons-material/Folder"; -import MoreVertIcon from "@mui/icons-material/MoreVert"; -import DeleteIcon from "@mui/icons-material/Delete"; + +import type { StudyMetadata } from "@/common/types"; +import UploadFileButton from "@/components/common/buttons/UploadFileButton"; +import ConfirmationDialog from "@/components/common/dialogs/ConfirmationDialog"; +import EmptyView from "@/components/common/page/SimpleContent"; +import useConfirm from "@/hooks/useConfirm"; +import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; +import { deleteFile } from "@/services/api/studies/raw"; +import { toError } from "@/utils/fnUtils"; + import { + canEditFile, + DataCompProps, getFileIcon, getFileType, - type TreeFolder, - type DataCompProps, isFolder, - canEditFile, + TreeFolder, } from "../utils"; -import { Fragment, useState } from "react"; -import EmptyView from "../../../../../common/page/SimpleContent"; -import { useTranslation } from "react-i18next"; + import { Filename, Menubar } from "./styles"; -import UploadFileButton from "../../../../../common/buttons/UploadFileButton"; -import ConfirmationDialog from "../../../../../common/dialogs/ConfirmationDialog"; -import useConfirm from "../../../../../../hooks/useConfirm"; -import { deleteFile } from "../../../../../../services/api/studies/raw"; -import useEnqueueErrorSnackbar from "../../../../../../hooks/useEnqueueErrorSnackbar"; -import { toError } from "../../../../../../utils/fnUtils"; -import { useOutletContext } from "react-router"; -import type { StudyMetadata } from "../../../../../../common/types"; -import { useSnackbar } from "notistack"; function Folder(props: DataCompProps) { const { diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Image.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Image.tsx index 23aa34e993..2e8986be2c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Image.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Image.tsx @@ -13,10 +13,14 @@ */ import { useTranslation } from "react-i18next"; -import EmptyView from "../../../../../common/page/SimpleContent"; + import ImageIcon from "@mui/icons-material/Image"; + +import EmptyView from "@/components/common/page/SimpleContent"; + +import { DataCompProps } from "../utils"; + import { Filename, Flex, Menubar } from "./styles"; -import type { DataCompProps } from "../utils"; function Image({ filename }: DataCompProps) { const { t } = useTranslation(); diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx index 1a8eb2fce5..0b538a2aa7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx @@ -12,18 +12,21 @@ * This file is part of the Antares project. */ -import { useTranslation } from "react-i18next"; -import { useSnackbar } from "notistack"; -import { editStudy, getStudyData } from "../../../../../../services/api/study"; -import JSONEditor, { JSONEditorProps } from "../../../../../common/JSONEditor"; -import usePromiseWithSnackbarError from "../../../../../../hooks/usePromiseWithSnackbarError"; -import UsePromiseCond from "../../../../../common/utils/UsePromiseCond"; -import type { DataCompProps } from "../utils"; -import DownloadButton from "../../../../../common/buttons/DownloadButton"; -import { downloadFile } from "../../../../../../utils/fileUtils"; import { useEffect, useState } from "react"; +import { useSnackbar } from "notistack"; +import { useTranslation } from "react-i18next"; + +import DownloadButton from "@/components/common/buttons/DownloadButton"; +import UploadFileButton from "@/components/common/buttons/UploadFileButton"; +import JSONEditor, { JSONEditorProps } from "@/components/common/JSONEditor"; +import UsePromiseCond from "@/components/common/utils/UsePromiseCond"; +import usePromiseWithSnackbarError from "@/hooks/usePromiseWithSnackbarError"; +import { editStudy, getStudyData } from "@/services/api/study"; +import { downloadFile } from "@/utils/fileUtils"; + +import { DataCompProps } from "../utils"; + import { Filename, Flex, Menubar } from "./styles"; -import UploadFileButton from "../../../../../common/buttons/UploadFileButton"; function Json({ filePath, filename, studyId, canEdit }: DataCompProps) { const [t] = useTranslation(); diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx index 8c791964ab..d4348d5b34 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx @@ -12,8 +12,9 @@ * This file is part of the Antares project. */ -import Matrix from "../../../../../common/Matrix"; -import type { DataCompProps } from "../utils"; +import Matrix from "@/components/common/Matrix"; + +import { DataCompProps } from "../utils"; function DebugMatrix({ studyId, filename, filePath, canEdit }: DataCompProps) { return ; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx index 4cf121b951..658e23c92f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx @@ -13,24 +13,28 @@ */ import { useTranslation } from "react-i18next"; -import { Box, useTheme } from "@mui/material"; -import { getStudyData } from "../../../../../../services/api/study"; -import usePromiseWithSnackbarError from "../../../../../../hooks/usePromiseWithSnackbarError"; -import UsePromiseCond from "../../../../../common/utils/UsePromiseCond"; import { Light as SyntaxHighlighter, type SyntaxHighlighterProps, } from "react-syntax-highlighter"; -import xml from "react-syntax-highlighter/dist/esm/languages/hljs/xml"; -import plaintext from "react-syntax-highlighter/dist/esm/languages/hljs/plaintext"; import ini from "react-syntax-highlighter/dist/esm/languages/hljs/ini"; +import plaintext from "react-syntax-highlighter/dist/esm/languages/hljs/plaintext"; import properties from "react-syntax-highlighter/dist/esm/languages/hljs/properties"; +import xml from "react-syntax-highlighter/dist/esm/languages/hljs/xml"; import { atomOneDark } from "react-syntax-highlighter/dist/esm/styles/hljs"; -import type { DataCompProps } from "../utils"; -import DownloadButton from "../../../../../common/buttons/DownloadButton"; -import { downloadFile } from "../../../../../../utils/fileUtils"; + +import { Box, useTheme } from "@mui/material"; + +import DownloadButton from "@/components/common/buttons/DownloadButton"; +import UploadFileButton from "@/components/common/buttons/UploadFileButton"; +import UsePromiseCond from "@/components/common/utils/UsePromiseCond"; +import usePromiseWithSnackbarError from "@/hooks/usePromiseWithSnackbarError"; +import { getStudyData } from "@/services/api/study"; +import { downloadFile } from "@/utils/fileUtils"; + +import { DataCompProps } from "../utils"; + import { Filename, Flex, Menubar } from "./styles"; -import UploadFileButton from "../../../../../common/buttons/UploadFileButton"; SyntaxHighlighter.registerLanguage("xml", xml); SyntaxHighlighter.registerLanguage("plaintext", plaintext); diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx index f387b7ef9c..a79924323e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx @@ -12,15 +12,16 @@ * This file is part of the Antares project. */ -import Text from "./Text"; +import type { StudyMetadata } from "@/common/types"; +import ViewWrapper from "@/components/common/page/ViewWrapper"; + +import { canEditFile, DataCompProps, FileInfo, FileType } from "../utils"; + +import Folder from "./Folder"; import Image from "./Image"; import Json from "./Json"; import Matrix from "./Matrix"; -import Folder from "./Folder"; -import { canEditFile, type FileInfo, type FileType } from "../utils"; -import type { DataCompProps } from "../utils"; -import ViewWrapper from "../../../../../common/page/ViewWrapper"; -import type { StudyMetadata } from "../../../../../../common/types"; +import Text from "./Text"; interface Props extends FileInfo { study: StudyMetadata; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts b/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts index 4e10130ef9..83940c035f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts +++ b/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts @@ -13,8 +13,10 @@ */ import { createContext } from "react"; + +import { voidFn } from "@/utils/fnUtils"; + import type { FileInfo } from "./utils"; -import { voidFn } from "../../../../../utils/fnUtils"; const initialDebugContextValue = { setSelectedFile: voidFn<[FileInfo]>, diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx index dbc52c5a9f..e52e5d160d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx @@ -12,11 +12,14 @@ * This file is part of the Antares project. */ +import { useContext } from "react"; + import { Box } from "@mui/material"; -import { TreeData, getFileType, getFileIcon, isFolder } from "../utils"; + +import TreeItemEnhanced from "@/components/common/TreeItemEnhanced"; + import DebugContext from "../DebugContext"; -import { useContext } from "react"; -import TreeItemEnhanced from "../../../../../common/TreeItemEnhanced"; +import { getFileIcon, getFileType, isFolder, TreeData } from "../utils"; interface Props { name: string; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx index 417ef33b4f..54d7893566 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx @@ -13,9 +13,12 @@ */ import { SimpleTreeView } from "@mui/x-tree-view/SimpleTreeView"; + +import { getParentPaths } from "@/utils/pathUtils"; + +import { TreeFolder } from "../utils"; + import FileTreeItem from "./FileTreeItem"; -import type { TreeFolder } from "../utils"; -import { getParentPaths } from "../../../../../../utils/pathUtils"; interface Props { data: TreeFolder; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx index 96f8de8e91..742217f135 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx @@ -13,25 +13,28 @@ */ import { useMemo, useState } from "react"; +import * as R from "ramda"; import { useTranslation } from "react-i18next"; import { useOutletContext, useSearchParams } from "react-router-dom"; +import { useUpdateEffect } from "react-use"; + import { Box } from "@mui/material"; -import Tree from "./Tree"; + +import { StudyMetadata } from "@/common/types"; +import SplitView from "@/components/common/SplitView"; +import UsePromiseCond from "@/components/common/utils/UsePromiseCond"; +import usePromiseWithSnackbarError from "@/hooks/usePromiseWithSnackbarError"; +import { getStudyData } from "@/services/api/study"; + import Data from "./Data"; -import { StudyMetadata } from "../../../../../common/types"; -import UsePromiseCond from "../../../../common/utils/UsePromiseCond"; -import usePromiseWithSnackbarError from "../../../../../hooks/usePromiseWithSnackbarError"; -import { getStudyData } from "../../../../../services/api/study"; import DebugContext from "./DebugContext"; +import Tree from "./Tree"; import { + type FileInfo, getFileType, type TreeData, - type FileInfo, type TreeFolder, } from "./utils"; -import * as R from "ramda"; -import SplitView from "../../../../common/SplitView"; -import { useUpdateEffect } from "react-use"; function Debug() { const [t] = useTranslation(); diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts b/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts index b1d8653f07..bbe0e031f4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts @@ -12,14 +12,16 @@ * This file is part of the Antares project. */ +import * as RA from "ramda-adjunct"; + +import { SvgIconComponent } from "@mui/icons-material"; import DataObjectIcon from "@mui/icons-material/DataObject"; -import TextSnippetIcon from "@mui/icons-material/TextSnippet"; -import ImageIcon from "@mui/icons-material/Image"; -import FolderIcon from "@mui/icons-material/Folder"; import DatasetIcon from "@mui/icons-material/Dataset"; -import { SvgIconComponent } from "@mui/icons-material"; -import * as RA from "ramda-adjunct"; -import type { StudyMetadata } from "../../../../../common/types"; +import FolderIcon from "@mui/icons-material/Folder"; +import ImageIcon from "@mui/icons-material/Image"; +import TextSnippetIcon from "@mui/icons-material/TextSnippet"; + +import type { StudyMetadata } from "@/common/types"; //////////////////////////////////////////////////////////////// // Types diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx index feb39df236..51209d9469 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx @@ -13,12 +13,14 @@ */ import { useEffect, useState } from "react"; -import { Area } from "../../../../../../common/types"; -import PropertiesView from "../../../../../common/PropertiesView"; -import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; -import { getAreas } from "../../../../../../redux/selectors"; + +import { Area } from "@/common/types"; +import PropertiesView from "@/components/common/PropertiesView"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getAreas } from "@/redux/selectors"; +import { transformNameToId } from "@/services/utils"; + import ListElement from "../../common/ListElement"; -import { transformNameToId } from "../../../../../../services/utils"; interface PropsType { studyId: string; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx index 508e75705a..74566d37a1 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx @@ -13,12 +13,14 @@ */ import { useEffect, useMemo } from "react"; -import { useLocation, useNavigate, useOutletContext } from "react-router-dom"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../../common/types"; +import { useLocation, useNavigate, useOutletContext } from "react-router-dom"; + +import { StudyMetadata } from "@/common/types"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getCurrentAreaId } from "@/redux/selectors"; + import TabWrapper from "../../TabWrapper"; -import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; -import { getCurrentAreaId } from "../../../../../../redux/selectors"; interface Props { renewablesClustering: boolean; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx index b95d995a48..c392a839a4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx @@ -12,13 +12,16 @@ * This file is part of the Antares project. */ -import { Typography, Grid } from "@mui/material"; import { FieldArrayWithId } from "react-hook-form"; -import NumberFE from "../../../../../../../common/fieldEditors/NumberFE"; -import { useFormContextPlus } from "../../../../../../../common/Form"; -import { AllocationFormFields } from "./utils"; + +import { Grid, Typography } from "@mui/material"; + +import NumberFE from "@/components/common/fieldEditors/NumberFE"; +import { useFormContextPlus } from "@/components/common/Form"; import { validateNumber } from "@/utils/validation/number"; +import { AllocationFormFields } from "./utils"; + interface Props { field: FieldArrayWithId; index: number; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx index ce708a4771..ba710f6228 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx @@ -14,15 +14,18 @@ import { useFieldArray } from "react-hook-form"; import { useOutletContext } from "react-router"; -import { useFormContextPlus } from "../../../../../../../common/Form"; -import { AllocationFormFields } from "./utils"; -import AllocationField from "./AllocationField"; -import DynamicList from "../../../../../../../common/DynamicList"; -import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; -import { getAreasById } from "../../../../../../../../redux/selectors"; -import { StudyMetadata } from "../../../../../../../../common/types"; + +import { StudyMetadata } from "@/common/types"; +import DynamicList from "@/components/common/DynamicList"; +import { useFormContextPlus } from "@/components/common/Form"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getAreasById } from "@/redux/selectors"; + import { useAreasOptions } from "../hooks/useAreasOptions"; +import AllocationField from "./AllocationField"; +import { AllocationFormFields } from "./utils"; + function Fields() { const { study: { id: studyId }, diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx index fc50dff4a8..c23a275dec 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx @@ -12,24 +12,28 @@ * This file is part of the Antares project. */ -import { Grid } from "@mui/material"; -import { useOutletContext } from "react-router"; import { useState } from "react"; -import Form from "../../../../../../../common/Form"; +import { useOutletContext } from "react-router"; + +import { Grid } from "@mui/material"; + +import { StudyMetadata } from "@/common/types"; +import Form from "@/components/common/Form"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getCurrentAreaId } from "@/redux/selectors"; + +import HydroMatrixDialog from "../HydroMatrixDialog"; +import { FormBox, FormPaper } from "../style"; +import { HydroMatrix } from "../utils"; +import ViewMatrixButton from "../ViewMatrixButton"; + import Fields from "./Fields"; -import { StudyMetadata } from "../../../../../../../../common/types"; -import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; -import { getCurrentAreaId } from "../../../../../../../../redux/selectors"; import { AllocationFormFields, getAllocationFormFields, setAllocationFormFields, } from "./utils"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; -import HydroMatrixDialog from "../HydroMatrixDialog"; -import { HydroMatrix } from "../utils"; -import { FormBox, FormPaper } from "../style"; -import ViewMatrixButton from "../ViewMatrixButton"; function Allocation() { const { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts index 5d5d054a11..3710c71570 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts @@ -12,9 +12,10 @@ * This file is part of the Antares project. */ -import { StudyMetadata, Area } from "../../../../../../../../common/types"; -import client from "../../../../../../../../services/api/client"; -import { MatrixDataDTO } from "../../../../../../../common/Matrix/shared/types"; +import { Area, StudyMetadata } from "@/common/types"; +import { MatrixDataDTO } from "@/components/common/Matrix/shared/types"; +import client from "@/services/api/client"; + import { AreaCoefficientItem } from "../utils"; //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx index 0dd9f41016..0f0d2fc9b2 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx @@ -12,16 +12,19 @@ * This file is part of the Antares project. */ -import { Typography, Grid } from "@mui/material"; import { FieldArrayWithId } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import NumberFE from "../../../../../../../common/fieldEditors/NumberFE"; -import { CorrelationFormFields } from "./utils"; -import { useFormContextPlus } from "../../../../../../../common/Form"; -import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; -import { getCurrentArea } from "../../../../../../../../redux/selectors"; + +import { Grid, Typography } from "@mui/material"; + +import NumberFE from "@/components/common/fieldEditors/NumberFE"; +import { useFormContextPlus } from "@/components/common/Form"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getCurrentArea } from "@/redux/selectors"; import { validateNumber } from "@/utils/validation/number"; +import { CorrelationFormFields } from "./utils"; + interface Props { field: FieldArrayWithId; index: number; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx index 60a99464c7..3e2bc3eb6d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx @@ -14,15 +14,15 @@ import { useFieldArray } from "react-hook-form"; import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../../common/types"; -import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; -import { - getAreasById, - getCurrentArea, -} from "../../../../../../../../redux/selectors"; -import DynamicList from "../../../../../../../common/DynamicList"; -import { useFormContextPlus } from "../../../../../../../common/Form"; + +import { StudyMetadata } from "@/common/types"; +import DynamicList from "@/components/common/DynamicList"; +import { useFormContextPlus } from "@/components/common/Form"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getAreasById, getCurrentArea } from "@/redux/selectors"; + import { useAreasOptions } from "../hooks/useAreasOptions"; + import CorrelationField from "./CorrelationField"; import { CorrelationFormFields } from "./utils"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx index df566ba68d..6fe7249272 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx @@ -12,24 +12,28 @@ * This file is part of the Antares project. */ -import { Grid } from "@mui/material"; -import { useOutletContext } from "react-router"; import { useState } from "react"; -import Form from "../../../../../../../common/Form"; -import { StudyMetadata } from "../../../../../../../../common/types"; -import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; -import { getCurrentAreaId } from "../../../../../../../../redux/selectors"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; +import { useOutletContext } from "react-router"; + +import { Grid } from "@mui/material"; + +import { StudyMetadata } from "@/common/types"; +import Form from "@/components/common/Form"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getCurrentAreaId } from "@/redux/selectors"; + +import HydroMatrixDialog from "../HydroMatrixDialog"; +import { FormBox, FormPaper } from "../style"; +import { HydroMatrix } from "../utils"; +import ViewMatrixButton from "../ViewMatrixButton"; + +import Fields from "./Fields"; import { CorrelationFormFields, getCorrelationFormFields, setCorrelationFormFields, } from "./utils"; -import Fields from "./Fields"; -import HydroMatrixDialog from "../HydroMatrixDialog"; -import { HydroMatrix } from "../utils"; -import { FormBox, FormPaper } from "../style"; -import ViewMatrixButton from "../ViewMatrixButton"; function Correlation() { const { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts index 253963b1c6..48eb9986dd 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts @@ -12,9 +12,10 @@ * This file is part of the Antares project. */ -import { StudyMetadata, Area } from "../../../../../../../../common/types"; -import client from "../../../../../../../../services/api/client"; -import { MatrixDataDTO } from "../../../../../../../common/Matrix/shared/types"; +import { Area, StudyMetadata } from "@/common/types"; +import { MatrixDataDTO } from "@/components/common/Matrix/shared/types"; +import client from "@/services/api/client"; + import { AreaCoefficientItem } from "../utils"; //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx index 372ae3cfce..69f9ddae07 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx @@ -12,12 +12,14 @@ * This file is part of the Antares project. */ -import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; -import { getCurrentAreaId } from "../../../../../../../redux/selectors"; -import { MATRICES, HydroMatrixType } from "./utils"; -import Matrix from "../../../../../../common/Matrix"; import { Box } from "@mui/material"; +import Matrix from "@/components/common/Matrix"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getCurrentAreaId } from "@/redux/selectors"; + +import { HydroMatrixType, MATRICES } from "./utils"; + interface Props { type: HydroMatrixType; } diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx index 73b109f7dc..d23206cb7f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx @@ -12,21 +12,24 @@ * This file is part of the Antares project. */ -import { Button, Box, Skeleton } from "@mui/material"; +import { useEffect, useState } from "react"; +import { AxiosError } from "axios"; import { useTranslation } from "react-i18next"; -import { useState, useEffect } from "react"; +import { useOutletContext } from "react-router"; + +import { Box, Button, Skeleton } from "@mui/material"; + +import { StudyMetadata } from "@/common/types"; import BasicDialog, { BasicDialogProps, -} from "../../../../../../common/dialogs/BasicDialog"; -import Matrix from "../../../../../../common/Matrix"; -import { HydroMatrixType } from "./utils"; -import { getAllocationMatrix } from "./Allocation/utils"; -import { getCorrelationMatrix } from "./Correlation/utils"; -import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../common/types"; +} from "@/components/common/dialogs/BasicDialog"; +import Matrix from "@/components/common/Matrix"; import { MatrixDataDTO } from "@/components/common/Matrix/shared/types"; import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; -import { AxiosError } from "axios"; + +import { getAllocationMatrix } from "./Allocation/utils"; +import { getCorrelationMatrix } from "./Correlation/utils"; +import { HydroMatrixType } from "./utils"; interface AdaptedMatrixData { data: number[][]; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx index d63487a116..fb384ecc84 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx @@ -12,19 +12,21 @@ * This file is part of the Antares project. */ +import { useTranslation } from "react-i18next"; import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../../common/types"; -import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; -import { getCurrentAreaId } from "../../../../../../../../redux/selectors"; -import Form from "../../../../../../../common/Form"; + +import { StudyMetadata } from "@/common/types"; +import NumberFE from "@/components/common/fieldEditors/NumberFE"; +import Form from "@/components/common/Form"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getCurrentAreaId } from "@/redux/selectors"; + import { - type InflowStructureFields, getInflowStructureFields, + type InflowStructureFields, updateInflowStructureFields, } from "./utils"; -import NumberFE from "../../../../../../../common/fieldEditors/NumberFE"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; -import { useTranslation } from "react-i18next"; function InflowStructure() { const [t] = useTranslation(); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts index 0c0525059a..ee4adbe39f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts @@ -12,8 +12,8 @@ * This file is part of the Antares project. */ -import { type StudyMetadata } from "../../../../../../../../common/types"; -import client from "../../../../../../../../services/api/client"; +import { type StudyMetadata } from "@/common/types"; +import client from "@/services/api/client"; //////////////////////////////////////////////////////////////// // Types diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx index 91d3cdb6ee..b9d852bf18 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx @@ -12,12 +12,13 @@ * This file is part of the Antares project. */ -import NumberFE from "../../../../../../../common/fieldEditors/NumberFE"; -import SelectFE from "../../../../../../../common/fieldEditors/SelectFE"; -import SwitchFE from "../../../../../../../common/fieldEditors/SwitchFE"; -import Fieldset from "../../../../../../../common/Fieldset"; -import { useFormContextPlus } from "../../../../../../../common/Form"; -import { INITIALIZE_RESERVOIR_DATE_OPTIONS, HydroFormFields } from "./utils"; +import NumberFE from "@/components/common/fieldEditors/NumberFE"; +import SelectFE from "@/components/common/fieldEditors/SelectFE"; +import SwitchFE from "@/components/common/fieldEditors/SwitchFE"; +import Fieldset from "@/components/common/Fieldset"; +import { useFormContextPlus } from "@/components/common/Form"; + +import { HydroFormFields, INITIALIZE_RESERVOIR_DATE_OPTIONS } from "./utils"; function Fields() { const { control, watch } = useFormContextPlus(); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/index.tsx index 6b778d69da..c03b0ecb17 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/index.tsx @@ -13,11 +13,13 @@ */ import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../../common/types"; -import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; -import { getCurrentAreaId } from "../../../../../../../../redux/selectors"; -import Form from "../../../../../../../common/Form"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; + +import { StudyMetadata } from "@/common/types"; +import Form from "@/components/common/Form"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getCurrentAreaId } from "@/redux/selectors"; + import Fields from "./Fields"; import { getManagementOptionsFormFields, diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/utils.ts index ebb3a34512..0d72a4c6a0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/utils.ts @@ -12,8 +12,8 @@ * This file is part of the Antares project. */ -import { Area, StudyMetadata } from "../../../../../../../../common/types"; -import client from "../../../../../../../../services/api/client"; +import { Area, StudyMetadata } from "@/common/types"; +import client from "@/services/api/client"; //////////////////////////////////////////////////////////////// // Enums diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx index 1adbc4e2b9..1c14ed286b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx @@ -13,7 +13,9 @@ */ import { Box } from "@mui/material"; -import SplitView, { SplitViewProps } from "../../../../../../common/SplitView"; + +import SplitView, { SplitViewProps } from "@/components/common/SplitView"; + import HydroMatrix from "./HydroMatrix"; import { HydroMatrixType } from "./utils"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx index e049eec4c2..421084cdb5 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx @@ -12,9 +12,10 @@ * This file is part of the Antares project. */ -import { Button } from "@mui/material"; import { useTranslation } from "react-i18next"; +import { Button } from "@mui/material"; + interface Props { label: string; onClick: () => void; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts index 611c671625..bfa979dba9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts @@ -14,10 +14,12 @@ import { useMemo } from "react"; import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../../common/types"; -import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; -import { getAreas } from "../../../../../../../../redux/selectors"; -import { DynamicListProps } from "../../../../../../../common/DynamicList"; + +import { StudyMetadata } from "@/common/types"; +import { DynamicListProps } from "@/components/common/DynamicList"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getAreas } from "@/redux/selectors"; + import { AreaCoefficientItem } from "../utils"; export function useAreasOptions( diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx index 215b3b5954..b9477abb3f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx @@ -14,10 +14,12 @@ import { useMemo } from "react"; import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../common/types"; + +import { StudyMetadata } from "@/common/types"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getCurrentAreaId } from "@/redux/selectors"; + import TabWrapper from "../../../TabWrapper"; -import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; -import { getCurrentAreaId } from "../../../../../../../redux/selectors"; function Hydro() { const { study } = useOutletContext<{ study: StudyMetadata }>(); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts index b329679cc6..733e373eb0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts @@ -12,7 +12,7 @@ * This file is part of the Antares project. */ -import { styled, Box, Paper } from "@mui/material"; +import { Box, Paper, styled } from "@mui/material"; export const FormBox = styled(Box)(({ theme }) => ({ width: "100%", diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts index db3d8802a0..1d35a00bc3 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts @@ -13,10 +13,11 @@ */ import { - MatrixDataDTO, AggregateConfig, -} from "../../../../../../common/Matrix/shared/types"; -import { SplitViewProps } from "../../../../../../common/SplitView"; + MatrixDataDTO, +} from "@/components/common/Matrix/shared/types"; +import { SplitViewProps } from "@/components/common/SplitView"; + import { getAllocationMatrix } from "./Allocation/utils"; import { getCorrelationMatrix } from "./Correlation/utils"; import InflowStructure from "./InflowStructure"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx index 9581fae79d..9644786a6b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx @@ -12,9 +12,9 @@ * This file is part of the Antares project. */ -import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; -import { getCurrentAreaId } from "../../../../../../redux/selectors"; -import Matrix from "../../../../../common/Matrix"; +import Matrix from "@/components/common/Matrix"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getCurrentAreaId } from "@/redux/selectors"; function Load() { const currentArea = useAppSelector(getCurrentAreaId); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx index 8cdf4946af..1fad04d338 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx @@ -12,9 +12,9 @@ * This file is part of the Antares project. */ -import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; -import { getCurrentAreaId } from "../../../../../../redux/selectors"; -import Matrix from "../../../../../common/Matrix"; +import Matrix from "@/components/common/Matrix"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getCurrentAreaId } from "@/redux/selectors"; function MiscGen() { const currentArea = useAppSelector(getCurrentAreaId); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx index 7055f2e792..52b0f72dab 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx @@ -12,16 +12,18 @@ * This file is part of the Antares project. */ +import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { useOutletContext } from "react-router"; -import { useMemo } from "react"; -import SelectFE from "../../../../../../common/fieldEditors/SelectFE"; -import Fieldset from "../../../../../../common/Fieldset"; -import SwitchFE from "../../../../../../common/fieldEditors/SwitchFE"; -import NumberFE from "../../../../../../common/fieldEditors/NumberFE"; -import { useFormContextPlus } from "../../../../../../common/Form"; + +import { StudyMetadata } from "@/common/types"; +import NumberFE from "@/components/common/fieldEditors/NumberFE"; +import SelectFE from "@/components/common/fieldEditors/SelectFE"; +import SwitchFE from "@/components/common/fieldEditors/SwitchFE"; +import Fieldset from "@/components/common/Fieldset"; +import { useFormContextPlus } from "@/components/common/Form"; + import { ADEQUACY_PATCH_OPTIONS, PropertiesFormFields } from "./utils"; -import { StudyMetadata } from "../../../../../../../common/types"; function Fields() { const { t } = useTranslation(); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx index d654ba80c7..69bdc8bbee 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx @@ -12,19 +12,22 @@ * This file is part of the Antares project. */ -import { Paper } from "@mui/material"; import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../common/types"; -import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; -import { getCurrentAreaId } from "../../../../../../../redux/selectors"; -import Form from "../../../../../../common/Form"; + +import { Paper } from "@mui/material"; + +import { StudyMetadata } from "@/common/types"; +import Form from "@/components/common/Form"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getCurrentAreaId } from "@/redux/selectors"; + +import Fields from "./Fields"; import { - PropertiesFormFields, getPropertiesFormFields, + PropertiesFormFields, setPropertiesFormFields, } from "./utils"; -import Fields from "./Fields"; -import { SubmitHandlerPlus } from "../../../../../../common/Form/types"; function Properties() { const { study } = useOutletContext<{ study: StudyMetadata }>(); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts index 5eef82d3f7..842704d514 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts @@ -17,8 +17,9 @@ //////////////////////////////////////////////////////////////// import { DeepPartial } from "redux"; -import { Area, StudyMetadata } from "../../../../../../../common/types"; -import client from "../../../../../../../services/api/client"; + +import { Area, StudyMetadata } from "@/common/types"; +import client from "@/services/api/client"; enum AdequacyPatchMode { Outside = "outside", diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx index 0ee371d7fa..629d593175 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx @@ -13,12 +13,14 @@ */ import { useTranslation } from "react-i18next"; -import NumberFE from "../../../../../../common/fieldEditors/NumberFE"; -import SelectFE from "../../../../../../common/fieldEditors/SelectFE"; -import StringFE from "../../../../../../common/fieldEditors/StringFE"; -import SwitchFE from "../../../../../../common/fieldEditors/SwitchFE"; -import Fieldset from "../../../../../../common/Fieldset"; -import { useFormContextPlus } from "../../../../../../common/Form"; + +import NumberFE from "@/components/common/fieldEditors/NumberFE"; +import SelectFE from "@/components/common/fieldEditors/SelectFE"; +import StringFE from "@/components/common/fieldEditors/StringFE"; +import SwitchFE from "@/components/common/fieldEditors/SwitchFE"; +import Fieldset from "@/components/common/Fieldset"; +import { useFormContextPlus } from "@/components/common/Form"; + import { RENEWABLE_GROUPS, RenewableCluster, diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx index a180b0fe05..c321f30f1a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Form.tsx @@ -13,24 +13,27 @@ */ import { useCallback } from "react"; -import { Box, Button } from "@mui/material"; -import { useParams, useOutletContext, useNavigate } from "react-router-dom"; -import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../../../common/types"; -import Form from "../../../../../../common/Form"; +import { useNavigate, useOutletContext, useParams } from "react-router-dom"; + +import ArrowBackIcon from "@mui/icons-material/ArrowBack"; +import { Box, Button } from "@mui/material"; + +import { StudyMetadata } from "@/common/types"; +import Form from "@/components/common/Form"; +import { SubmitHandlerPlus } from "@/components/common/Form/types"; +import useNavigateOnCondition from "@/hooks/useNavigateOnCondition"; +import useAppSelector from "@/redux/hooks/useAppSelector"; +import { getCurrentAreaId } from "@/redux/selectors"; +import { nameToId } from "@/services/utils"; + import Fields from "./Fields"; import Matrix from "./Matrix"; import { - RenewableCluster, getRenewableCluster, + RenewableCluster, updateRenewableCluster, } from "./utils"; -import { SubmitHandlerPlus } from "../../../../../../common/Form/types"; -import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; -import { getCurrentAreaId } from "../../../../../../../redux/selectors"; -import useNavigateOnCondition from "../../../../../../../hooks/useNavigateOnCondition"; -import { nameToId } from "../../../../../../../services/utils"; function Renewables() { const { t } = useTranslation(); @@ -41,7 +44,7 @@ function Renewables() { useNavigateOnCondition({ deps: [areaId], - to: "../renewables", + to: "@/renewables", }); // prevent re-fetch while useNavigateOnCondition event occurs @@ -69,7 +72,7 @@ function Renewables() {