Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,14 @@ export default function GlobalFilterProvider({
filterCategories,
genericFiltersStrictMode = false,
equipmentTypes = undefined,
onAfterChange,
}: PropsWithChildren & {
onChange: (globalFilters: GlobalFilter[]) => void;
filterCategories: string[];
preloadedGlobalFilters?: GlobalFilter[];
genericFiltersStrictMode: boolean;
equipmentTypes: string[] | undefined;
onAfterChange?: () => void;
}) {
const dispatch = useDispatch<AppDispatch>();
const { snackError } = useSnackMessage();
Expand Down Expand Up @@ -111,9 +113,10 @@ export default function GlobalFilterProvider({
setSelectedGlobalFilters(validSelectedGlobalFilters);
// propagate only valid selected filters
handleChange(validSelectedGlobalFilters);
onAfterChange?.();
});
},
[checkSelectedFiltersPromise, setSelectedGlobalFilters, handleChange]
[checkSelectedFiltersPromise, setSelectedGlobalFilters, handleChange, onAfterChange]
);

const value = useMemo(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export type GlobalFilterSelectorProps = GlobalFilterAutocompleteProps & {
preloadedGlobalFilters?: GlobalFilter[];
genericFiltersStrictMode: boolean;
disableGenericFilters?: boolean;
onAfterChange?: () => void;
};
export default function GlobalFilterSelector({
onChange,
Expand All @@ -25,6 +26,7 @@ export default function GlobalFilterSelector({
//If this parameter is enabled, only generic filters of the same type as those provided in filterableEquipmentTypes will be available
genericFiltersStrictMode = false,
disableGenericFilters = false,
onAfterChange,
}: Readonly<GlobalFilterSelectorProps>) {
// Global filter autocomplete displayed categories are dynamically provided from the on hand filters, GENERIC_FILTER gets manually added
const filterCategories = useMemo(() => {
Expand All @@ -41,6 +43,7 @@ export default function GlobalFilterSelector({
return (
<GlobalFilterProvider
onChange={onChange}
onAfterChange={onAfterChange}
filterCategories={filterCategories}
preloadedGlobalFilters={preloadedGlobalFilters}
genericFiltersStrictMode={genericFiltersStrictMode}
Expand Down
12 changes: 11 additions & 1 deletion src/components/results/pccmin/pcc-min-result-tab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ import { useGlobalFilterOptions } from '../common/global-filter/use-global-filte
import { PccMinResultTabProps } from './pcc-min-result.type';
import { PccMinResult } from './pcc-min-result';
import { useComputationGlobalFilters } from '../common/global-filter/use-computation-global-filters';
import { FilterType as AgGridFilterType } from '../../../types/custom-aggrid-types';
import { FilterType as AgGridFilterType, PaginationType } from '../../../types/custom-aggrid-types';
import { usePaginationSelector } from '../../../hooks/use-pagination-selector';
import { PCCMIN_RESULT } from '../../../utils/store-sort-filter-fields';

export const PccMinResultTab: FunctionComponent<PccMinResultTabProps> = ({
studyUuid,
Expand All @@ -39,6 +41,13 @@ export const PccMinResultTab: FunctionComponent<PccMinResultTabProps> = ({
const { globalFiltersFromState, updateGlobalFilters } = useComputationGlobalFilters(AgGridFilterType.PccMin);
const { countriesFilter, voltageLevelsFilter, propertiesFilter } = useGlobalFilterOptions();

const { pagination, dispatchPagination } = usePaginationSelector(PaginationType.PccMin, PCCMIN_RESULT);
const { rowsPerPage } = pagination;

const resetPagination = useCallback(() => {
dispatchPagination({ page: 0, rowsPerPage });
}, [dispatchPagination, rowsPerPage]);

const handleSubTabChange = useCallback((event: SyntheticEvent, newIndex: number) => {
setResultOrLogIndex(newIndex);
}, []);
Expand Down Expand Up @@ -68,6 +77,7 @@ export const PccMinResultTab: FunctionComponent<PccMinResultTabProps> = ({
<Box sx={{ flex: 1 }}>
<GlobalFilterSelector
onChange={updateGlobalFilters}
onAfterChange={resetPagination}
filters={globalFilterOptions}
filterableEquipmentTypes={filterableEquipmentTypes}
preloadedGlobalFilters={globalFiltersFromState}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,12 @@ export const SecurityAnalysisResultTab: FunctionComponent<SecurityAnalysisTabPro
dispatchPagination({ ...pagination, page: 0 });
}, [pagination, dispatchPagination]);

const resetPaginationIfNKResults = useCallback(() => {
if (tabIndex === NMK_RESULTS_TAB_INDEX) {
dispatchPagination({ page: 0, rowsPerPage });
}
}, [dispatchPagination, tabIndex, rowsPerPage]);

const queryParams: SecurityAnalysisQueryParams = useMemo(() => {
const params: SecurityAnalysisQueryParams = {
resultType,
Expand Down Expand Up @@ -302,6 +308,7 @@ export const SecurityAnalysisResultTab: FunctionComponent<SecurityAnalysisTabPro
<Box sx={{ display: 'flex', flexGrow: 0 }}>
<GlobalFilterSelector
onChange={updateGlobalFilters}
onAfterChange={resetPaginationIfNKResults}
filters={globalFilterOptions}
filterableEquipmentTypes={filterableEquipmentTypes}
disableGenericFilters={tabIndex === N_RESULTS_TAB_INDEX}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

import { SyntheticEvent, useMemo, useState } from 'react';
import { SyntheticEvent, useCallback, useMemo, useState } from 'react';
import { Box, LinearProgress, Tab, Tabs } from '@mui/material';
import SensitivityAnalysisTabs from './sensitivity-analysis-tabs.js';
import PagedSensitivityAnalysisResult from './paged-sensitivity-analysis-result';
Expand All @@ -27,9 +27,10 @@ import GlobalFilterSelector from '../common/global-filter/global-filter-selector
import { EQUIPMENT_TYPES } from '../../utils/equipment-types';
import { useGlobalFilterOptions } from '../common/global-filter/use-global-filter-options';
import { SensitivityExportButton } from './sensitivity-analysis-export-button.js';
import { isSensiKind, SensitivityResultTabs } from './sensitivity-analysis-result-utils.js';
import { isSensiKind, mappingTabs, SensitivityResultTabs } from './sensitivity-analysis-result-utils.js';
import { useComputationGlobalFilters } from '../common/global-filter/use-computation-global-filters';
import { FilterType as AgGridFilterType } from '../../../types/custom-aggrid-types';
import { FilterType as AgGridFilterType, PaginationType } from '../../../types/custom-aggrid-types';
import { usePaginationSelector } from '../../../hooks/use-pagination-selector';

export type SensitivityAnalysisResultTabProps = {
studyUuid: UUID;
Expand All @@ -56,6 +57,19 @@ function SensitivityAnalysisResultTab({
setNOrNkIndex(newNOrNKIndex);
};

const sensiKindForPagination = isSensiKind(sensiTab) ? sensiTab : SENSITIVITY_IN_DELTA_MW;

const { pagination, dispatchPagination } = usePaginationSelector(
PaginationType.SensitivityAnalysis,
mappingTabs(sensiKindForPagination, nOrNkIndex)
);

const { rowsPerPage } = pagination;

const resetPagination = useCallback(() => {
dispatchPagination({ page: 0, rowsPerPage });
}, [dispatchPagination, rowsPerPage]);

const openLoader = useOpenLoaderShortWait({
isLoading: sensitivityAnalysisStatus === RunningStatus.RUNNING,
delay: RESULTS_LOADING_DELAY,
Expand Down Expand Up @@ -97,6 +111,7 @@ function SensitivityAnalysisResultTab({
<Box sx={{ display: 'flex', flexGrow: 0 }}>
<GlobalFilterSelector
onChange={updateGlobalFilters}
onAfterChange={resetPagination}
filters={globalFilterOptions}
filterableEquipmentTypes={filterableEquipmentTypes}
preloadedGlobalFilters={globalFiltersFromState}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
SENSITIVITY_IN_DELTA_A,
SENSITIVITY_IN_DELTA_MW,
} from './sensitivity-analysis-result.type';
import { SensitivityAnalysisTab } from '../../../types/custom-aggrid-types';

export const SensitivityResultTabs = [
{ id: 'N', label: 'N' },
Expand Down Expand Up @@ -63,16 +64,14 @@ export const DATA_KEY_TO_SORT_KEY = {
functionReferenceAfter: 'POST_REFERENCE',
valueAfter: 'POST_SENSITIVITY',
};
export const mappingTabs = (sensiResultKind: SensiKind, nOrNkIndex: number) => {
export const mappingTabs = (sensiResultKind: SensiKind, nOrNkIndex: number): SensitivityAnalysisTab => {
switch (sensiResultKind) {
case SENSITIVITY_IN_DELTA_MW:
return nOrNkIndex === 0 ? SENSITIVITY_IN_DELTA_MW_N : SENSITIVITY_IN_DELTA_MW_N_K;
case SENSITIVITY_IN_DELTA_A:
return nOrNkIndex === 0 ? SENSITIVITY_IN_DELTA_A_N : SENSITIVITY_IN_DELTA_A_N_K;
case SENSITIVITY_AT_NODE:
return nOrNkIndex === 0 ? SENSITIVITY_AT_NODE_N : SENSITIVITY_AT_NODE_N_K;
default:
return '';
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,13 @@ import GlobalFilterSelector from '../common/global-filter/global-filter-selector
import { EQUIPMENT_TYPES } from '../../utils/equipment-types';
import { useGlobalFilterOptions } from '../common/global-filter/use-global-filter-options';
import { useComputationGlobalFilters } from '../common/global-filter/use-computation-global-filters';
import { FilterType as AgGridFilterType } from '../../../types/custom-aggrid-types';
import {
FilterType as AgGridFilterType,
PaginationType,
ShortcircuitAnalysisTab,
} from '../../../types/custom-aggrid-types';
import { usePaginationSelector } from '../../../hooks/use-pagination-selector';
import { mappingTabs } from './shortcircuit-analysis-result-content';

interface ShortCircuitAnalysisResultTabProps {
studyUuid: UUID;
Expand Down Expand Up @@ -69,6 +75,28 @@ export const ShortCircuitAnalysisResultTab: FunctionComponent<ShortCircuitAnalys

const [resultOrLogIndex, setResultOrLogIndex] = useState(0);

const { pagination, dispatchPagination } = usePaginationSelector(
PaginationType.ShortcircuitAnalysis,
mappingTabs(tabIndex) as ShortcircuitAnalysisTab
);
const { page, rowsPerPage } = pagination;

const RESULTS_TAB_INDEX = 0;
const LOGS_TAB_INDEX = 1;

const resetPaginationIfAllBuses = useCallback(() => {
if (tabIndex !== ShortCircuitAnalysisResultTabs.ALL_BUSES) {
return;
}
if (resultOrLogIndex !== RESULTS_TAB_INDEX) {
return;
}
if (page === 0) {
return;
}
dispatchPagination({ page: 0, rowsPerPage });
}, [tabIndex, resultOrLogIndex, page, dispatchPagination, rowsPerPage]);

const AllBusesShortCircuitStatus = useSelector(
(state: AppState) => state.computingStatus[ComputingType.SHORT_CIRCUIT]
);
Expand All @@ -87,9 +115,6 @@ export const ShortCircuitAnalysisResultTab: FunctionComponent<ShortCircuitAnalys
[setTabIndex, setRedirectionLock]
);

const RESULTS_TAB_INDEX = 0;
const LOGS_TAB_INDEX = 1;

const { globalFiltersFromState, updateGlobalFilters } = useComputationGlobalFilters(
AgGridFilterType.ShortcircuitAnalysis
);
Expand Down Expand Up @@ -171,6 +196,7 @@ export const ShortCircuitAnalysisResultTab: FunctionComponent<ShortCircuitAnalys
{resultOrLogIndex === RESULTS_TAB_INDEX && tabIndex === ShortCircuitAnalysisResultTabs.ALL_BUSES && (
<GlobalFilterSelector
onChange={updateGlobalFilters}
onAfterChange={resetPaginationIfAllBuses}
filters={globalFilterOptions}
filterableEquipmentTypes={filterableEquipmentTypes}
preloadedGlobalFilters={globalFiltersFromState}
Expand Down
Loading