Skip to content

Commit 17e5040

Browse files
committed
feat(networks): centralize hooks in context
1 parent 0d8d18d commit 17e5040

File tree

39 files changed

+252
-202
lines changed

39 files changed

+252
-202
lines changed

client/src/pages/networks/components/clusters/analytics.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@ import { Container, Row, Col, Accordion } from "@dataesr/dsfr-plus"
22
import AnalyticsSkeleton from "../../../../components/skeleton/analytics-skeleton"
33
import { useIntl } from "react-intl"
44
import AnalyticsGraph from "../../../../components/analytics-graph"
5-
import useSearchData from "../../hooks/useSearchData"
65
import getHorizontalBarChartOptions from "../charts/hbar"
76
import getYearsChartOptions from "../charts/years"
87
import useScreenSize from "../../../../hooks/useScreenSize"
98
import useIntegration from "../../hooks/useIntegration"
109
import useOptions from "../../hooks/useOptions"
1110
import ClustersButton from "./button"
11+
import { useNetworkContext } from "../../context"
1212

1313
export default function NetworkAnalytics() {
1414
const intl = useIntl()
1515
const { screen } = useScreenSize()
1616
const { integrationOptions } = useIntegration()
1717
const { currentSource, currentModel, parameters } = useOptions()
18-
const { search } = useSearchData()
18+
const { search } = useNetworkContext()
1919
const clusters = search.data?.network?.clusters
2020

2121
if (Boolean(search.error) || !parameters.clusters || integrationOptions.showClustersAnalytics === false)
@@ -63,15 +63,15 @@ export default function NetworkAnalytics() {
6363
tab: intl.formatMessage({
6464
id: `networks.model.of.${currentModel}`,
6565
}),
66-
}
66+
},
6767
)}
6868
description={intl.formatMessage(
6969
{ id: "networks.analytics.clusters.size.description" },
7070
{
7171
tab: intl.formatMessage({
7272
id: `networks.model.of.${currentModel}`,
7373
}),
74-
}
74+
},
7575
)}
7676
options={sizeChartOptions}
7777
/>
@@ -119,7 +119,7 @@ export default function NetworkAnalytics() {
119119
</Col>
120120
)}
121121
</Row>
122-
);
122+
)
123123

124124
if (["xs", "sm"].includes(screen)) {
125125
return (

client/src/pages/networks/components/clusters/button.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { useIntl } from "react-intl"
22
import { Button, ButtonGroup } from "@dataesr/dsfr-plus"
3-
import useSearchData from "../../hooks/useSearchData"
43
import useOptions from "../../hooks/useOptions"
4+
import { useNetworkContext } from "../../context"
55

66
export default function ClustersButton() {
77
const intl = useIntl()
88
const { parameters, handleParameterChange } = useOptions()
9-
const { search } = useSearchData()
9+
const { search } = useNetworkContext()
1010

1111
return (
1212
<ButtonGroup size="md">

client/src/pages/networks/components/clusters/index.tsx

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,9 @@ export default function NetworkClusters() {
2727
))}
2828
</Container>
2929
<Container className="clusters-tabs__content">
30-
<div className={cn("clusters-tabs__pane", clustersTab === "items" && "clusters-tabs__pane--active")}>
31-
<NetworkClustersItems />
32-
</div>
33-
<div className={cn("clusters-tabs__pane", clustersTab === "analytics" && "clusters-tabs__pane--active")}>
34-
<NetworkAnalytics />
35-
</div>
36-
<div className={cn("clusters-tabs__pane", clustersTab === "quadrants" && "clusters-tabs__pane--active")}>
37-
<NetworkQuadrants />
38-
</div>
30+
{clustersTab === "items" && <NetworkClustersItems />}
31+
{clustersTab === "analytics" && <NetworkAnalytics />}
32+
{clustersTab === "quadrants" && <NetworkQuadrants />}
3933
</Container>
4034
</Container>
4135
</Container>

client/src/pages/networks/components/clusters/items.tsx

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { useState } from "react"
22
import { useIntl } from "react-intl"
33
import { Container, Row, Button, Link, Text, Modal, ModalContent, ModalTitle, ButtonGroup, Tag } from "@dataesr/dsfr-plus"
44
import { NetworkCommunity, NetworkData } from "../../../../types/network"
5-
import useSearchData from "../../hooks/useSearchData"
65
import useOptions from "../../hooks/useOptions"
76
import BaseSkeleton from "../../../../components/skeleton/base-skeleton"
87
import Separator from "../../../../components/separator"
@@ -22,10 +21,11 @@ interface ClusterItemArgs {
2221
function ClusterItem({ currentModel, community, isFetching }: ClusterItemArgs) {
2322
const intl = useIntl()
2423
const currentYear = new Date().getFullYear()
25-
const { currentSource } = useOptions()
24+
const {
25+
options: { currentSource, setFocusItem },
26+
} = useNetworkContext()
2627
const [showNodesModal, setShowNodesModal] = useState(false)
2728
const [showDocumentsModal, setShowDocumentsModal] = useState(false)
28-
const { setFocusItem } = useNetworkContext()
2929
const metadata = community.metadata
3030

3131
const oaColor = (percent: number) =>
@@ -79,7 +79,7 @@ function ClusterItem({ currentModel, community, isFetching }: ClusterItemArgs) {
7979
<Text as="span" size="sm">
8080
{`${intl.formatMessage(
8181
{ id: "networks.section.clusters.citations" },
82-
{ count: metadata.citationsRecent }
82+
{ count: metadata.citationsRecent },
8383
)} (${currentYear - 1}-${currentYear})`}
8484
</Text>
8585
</div>
@@ -182,11 +182,9 @@ function ClusterItem({ currentModel, community, isFetching }: ClusterItemArgs) {
182182
export default function NetworkClustersItems() {
183183
const intl = useIntl()
184184
const { currentModel, parameters } = useOptions()
185-
const { search } = useSearchData()
185+
const { search } = useNetworkContext()
186186
const [seeMore, setSeeMore] = useState(false)
187187

188-
console.log("search", search)
189-
190188
const network = search?.data?.network as NetworkData
191189
const communities = network?.clusters
192190

@@ -231,7 +229,7 @@ export default function NetworkClustersItems() {
231229
})
232230
: intl.formatMessage(
233231
{ id: "networks.section.clusters.see-more" },
234-
{ count: communities?.length - SEE_MORE_AFTER }
232+
{ count: communities?.length - SEE_MORE_AFTER },
235233
)}
236234
</Button>
237235
</Separator>

client/src/pages/networks/components/clusters/quadrants.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import { useState } from "react"
22
import getQuadrantChartsOptions from "../charts/quadran"
3-
import useSearchData from "../../hooks/useSearchData"
43
import AnalyticsGraph from "../../../../components/analytics-graph"
54
import { Container, Select, SelectOption, Text, Link } from "@dataesr/dsfr-plus"
65
import { NetworkCommunities, NetworkItems } from "../../../../types/network"
76
import { isInProduction } from "../../../../utils/helpers"
87
import useOptions from "../../hooks/useOptions"
98
import BaseSkeleton from "../../../../components/skeleton/base-skeleton"
109
import { useIntl } from "react-intl"
10+
import { useNetworkContext } from "../../context"
1111

1212
function NetworkNodesQuadrants({ nodes }: { nodes: NetworkItems }) {
1313
const [selectedCentrality, setSelectedCentrality] = useState("degreeCentrality")
@@ -105,7 +105,7 @@ function NetworkClustersQuadrants({ clusters }: { clusters: NetworkCommunities }
105105
)
106106
}
107107
export default function NetworkQuadrants() {
108-
const { search } = useSearchData()
108+
const { search } = useNetworkContext()
109109
const intl = useIntl()
110110

111111
if (!search?.data && search?.isFetching) return <BaseSkeleton width="100%" height="30rem" className="fr-my-1v" />

client/src/pages/networks/components/clusters/styles.scss

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,6 @@
5151
padding-right: 1rem;
5252
overflow-y: auto;
5353
}
54-
55-
&__pane {
56-
display: none;
57-
58-
&--active {
59-
display: block;
60-
animation: fadeIn 0.4s ease-out;
61-
}
62-
}
6354
}
6455

6556
@keyframes fadeIn {

client/src/pages/networks/components/exports/button.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
import { MenuButton, MenuItem } from "@dataesr/dsfr-plus"
22
import { useIntl } from "react-intl"
3-
import useSearchData from "../../hooks/useSearchData"
43
import useExportData from "../../hooks/useExportData"
5-
import useIntegration from "../../hooks/useIntegration"
64
import useScreenSize from "../../../../hooks/useScreenSize"
5+
import { useNetworkContext } from "../../context"
76

87
export default function NetworkExportsButton() {
98
const intl = useIntl()
109
const { screen } = useScreenSize()
11-
const { integrationOptions } = useIntegration()
12-
const { search } = useSearchData()
10+
const {
11+
search,
12+
integration: { integrationOptions },
13+
} = useNetworkContext()
1314
const { isExporting, exportFile } = useExportData()
1415

1516
if (integrationOptions?.showExports === false) return null
@@ -26,8 +27,8 @@ export default function NetworkExportsButton() {
2627
["xs", "sm", "mg", "lg"].includes(screen)
2728
? ""
2829
: isExporting
29-
? intl.formatMessage({ id: "networks.exports.is-exporting" })
30-
: intl.formatMessage({ id: "networks.exports.title" })
30+
? intl.formatMessage({ id: "networks.exports.is-exporting" })
31+
: intl.formatMessage({ id: "networks.exports.title" })
3132
}
3233
className="fr-mt-1w"
3334
size="md"

client/src/pages/networks/components/exports/index.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import { Row, Title, MenuButton, MenuItem } from "@dataesr/dsfr-plus"
22
import { useIntl } from "react-intl"
3-
import useSearchData from "../../hooks/useSearchData"
43
import useExportData from "../../hooks/useExportData"
5-
import useIntegration from "../../hooks/useIntegration"
4+
import { useNetworkContext } from "../../context"
65

76
export default function NetworkExports() {
87
const intl = useIntl()
9-
const { integrationOptions } = useIntegration()
10-
const { search, currentQuery } = useSearchData()
8+
const {
9+
search,
10+
currentQuery,
11+
integration: { integrationOptions },
12+
} = useNetworkContext()
1113
const { isExporting, exportFile } = useExportData()
1214

1315
if (integrationOptions?.showExports === false) return null

client/src/pages/networks/components/filters/button.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import { useIntl } from "react-intl"
22
import { Badge, Button } from "@dataesr/dsfr-plus"
33
import useScreenSize from "../../../../hooks/useScreenSize"
4-
import useUrl from "../../../search/hooks/useUrl"
5-
import useIntegration from "../../hooks/useIntegration"
4+
import { useNetworkContext } from "../../context"
65

76
export default function NetworkFiltersButton() {
87
const intl = useIntl()
98
const { screen } = useScreenSize()
10-
const { integrationOptions } = useIntegration()
11-
const { currentFilters } = useUrl()
9+
const {
10+
filters,
11+
integration: { integrationOptions },
12+
} = useNetworkContext()
1213

1314
if (integrationOptions.showFilters === false) return null
1415

@@ -24,7 +25,7 @@ export default function NetworkFiltersButton() {
2425
>
2526
{["xs", "sm", "mg"].includes(screen) ? null : intl.formatMessage({ id: "networks.filters.button.label" })}
2627
<Badge className="fr-ml-1w" size="md" color="blue-ecume">
27-
{`${Object.keys(currentFilters)?.length}`}
28+
{`${Object.keys(filters)?.length}`}
2829
</Badge>
2930
</Button>
3031
)

client/src/pages/networks/components/filters/modal.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import useOptions from "../../hooks/useOptions"
1+
import { useNetworkContext } from "../../context"
22
import NetworkFiltersPatentsModal from "./patents"
33
import NetworkFiltersProjectsModal from "./projects"
44
import NetworkFiltersPublicationsModal from "./publications"
@@ -10,7 +10,9 @@ const SOURCES_MAPPING = {
1010
}
1111

1212
export default function NetworkFiltersModal() {
13-
const { currentSource } = useOptions()
13+
const {
14+
options: { currentSource },
15+
} = useNetworkContext()
1416

1517
return SOURCES_MAPPING[currentSource]
1618
}

0 commit comments

Comments
 (0)