Skip to content

Commit

Permalink
Limit resources to selected base in base overlay card
Browse files Browse the repository at this point in the history
  • Loading branch information
ivangabriele committed Nov 20, 2023
1 parent d97d00c commit c91beaa
Show file tree
Hide file tree
Showing 8 changed files with 157 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,19 +53,21 @@ VALUES
SELECT setval('control_unit_contacts_id_seq', 3, true);

INSERT INTO public.control_unit_resources
( id, control_unit_id, name, base_id, type)
( id, control_unit_id, name, base_id, type, is_archived)
VALUES
( 1, 10000, 'Semi-rigide 1', 1, 'BARGE'),
( 2, 10000, 'Semi-rigide 2', 1, 'BARGE'),
( 3, 10002, 'Semi-rigide 1', 2, 'BARGE'),
( 4, 10002, 'Semi-rigide 2', 2, 'BARGE'),
( 5, 10002, 'Voiture', 3, 'CAR'),
( 6, 10003, 'AR VECHEN', 2, 'FRIGATE'),
( 7, 10003, 'Semi-rigide', 3, 'BARGE'),
( 8, 10121, 'PAM Jeanne Barret', 3, 'FRIGATE'),
( 9, 10080, 'PAM Themis', 3, 'FRIGATE'),
( 10, 10018, 'ALTAIR', 3, 'FRIGATE'),
( 11, 10018, 'PHEROUSA', 3, 'FRIGATE'),
( 12, 10018, 'ARIOLA', 3, 'FRIGATE');
( 1, 10000, 'Semi-rigide 1', 1, 'BARGE', false),
( 2, 10000, 'Semi-rigide 2', 1, 'BARGE', false),
( 3, 10002, 'Semi-rigide 1', 2, 'BARGE', false),
( 4, 10002, 'Semi-rigide 2', 2, 'BARGE', false),
( 5, 10002, 'Voiture', 3, 'CAR', false),
( 6, 10003, 'AR VECHEN', 2, 'FRIGATE', false),
( 7, 10003, 'Semi-rigide', 3, 'BARGE', false),
( 8, 10121, 'PAM Jeanne Barret', 3, 'FRIGATE', false),
( 9, 10080, 'PAM Themis', 3, 'FRIGATE', false),
( 10, 10018, 'ALTAIR', 3, 'FRIGATE', false),
( 11, 10018, 'PHEROUSA', 3, 'FRIGATE', false),
( 12, 10018, 'ARIOLA', 3, 'FRIGATE', false),
( 13, 10000, 'Voiture', 1, 'CAR', true),
( 14, 10000, 'Drône', 2, 'DRONE', false);

SELECT setval('control_unit_resources_id_seq', 12, true);
SELECT setval('control_unit_resources_id_seq', 14, true);
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,16 @@ class JpaBaseRepositoryITests : AbstractDBTests() {
photo = null,
type = ControlUnitResourceType.BARGE,
),
ControlUnitResourceEntity(
id = 13,
controlUnitId = 10000,
isArchived = true,
name = "Voiture",
note = null,
photo = null,
stationId = 1,
type = ControlUnitResourceType.CAR,
),
),
),
)
Expand Down Expand Up @@ -181,6 +191,16 @@ class JpaBaseRepositoryITests : AbstractDBTests() {
photo = null,
type = ControlUnitResourceType.FRIGATE,
),
ControlUnitResourceEntity(
id = 14,
controlUnitId = 10000,
isArchived = false,
name = "Drône",
note = null,
photo = null,
stationId = 2,
type = ControlUnitResourceType.DRONE
),
),
),
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,33 @@ class JpaControlUnitRepositoryITests : AbstractDBTests() {
),
controlUnitResources = listOf(
FullControlUnitResourceDTO(
controlUnit = ControlUnitEntity(
id = 10000,
administrationId = 1005,
areaNote = null,
departmentAreaInseeCode = null,
isArchived = false,
name = "Cultures marines – DDTM 40",
termsNote = null,
),
controlUnitResource = ControlUnitResourceEntity(
id = 1,
stationId = 1,
controlUnitId = 10000,
isArchived = false,
name = "Semi-rigide 1",
note = null,
photo = null,
type = ControlUnitResourceType.BARGE,
),
station = StationEntity(
id = 1,
latitude = 43.295765,
longitude = 5.375486,
name = "Marseille",
),
),
FullControlUnitResourceDTO(
controlUnit = ControlUnitEntity(
id = 10000,
administrationId = 1005,
Expand All @@ -88,23 +109,50 @@ class JpaControlUnitRepositoryITests : AbstractDBTests() {
termsNote = null,
),
controlUnitResource = ControlUnitResourceEntity(
id = 1,
id = 2,
stationId = 1,
controlUnitId = 10000,
isArchived = false,
name = "Semi-rigide 1",
name = "Semi-rigide 2",
note = null,
photo = null,
type = ControlUnitResourceType.BARGE,
),
station = StationEntity(
id = 1,
latitude = 43.295765,
longitude = 5.375486,
name = "Marseille",
),
),
FullControlUnitResourceDTO(
controlUnit = ControlUnitEntity(
id = 10000,
administrationId = 1005,
areaNote = null,
departmentAreaInseeCode = null,
isArchived = false,
name = "Cultures marines – DDTM 40",
termsNote = null,
),
controlUnitResource = ControlUnitResourceEntity(
id = 13,
controlUnitId = 10000,
isArchived = true,
name = "Voiture",
note = null,
photo = null,
stationId = 1,
type = ControlUnitResourceType.CAR,
),
station = StationEntity(
id = 1,
latitude = 43.295765,
longitude = 5.375486,
name = "Marseille",
),
),
FullControlUnitResourceDTO(
controlUnit = ControlUnitEntity(
id = 10000,
administrationId = 1005,
Expand All @@ -115,14 +163,20 @@ class JpaControlUnitRepositoryITests : AbstractDBTests() {
termsNote = null,
),
controlUnitResource = ControlUnitResourceEntity(
id = 2,
stationId = 1,
id = 14,
controlUnitId = 10000,
isArchived = false,
name = "Semi-rigide 2",
name = "Drône",
note = null,
photo = null,
type = ControlUnitResourceType.BARGE,
stationId = 2,
type = ControlUnitResourceType.DRONE,
),
station = StationEntity(
id = 2,
latitude = 48.648105,
longitude = -2.013144,
name = "Saint-Malo",
),
),
),
Expand Down Expand Up @@ -270,6 +324,55 @@ class JpaControlUnitRepositoryITests : AbstractDBTests() {
type = ControlUnitResourceType.BARGE,
),
),
FullControlUnitResourceDTO(
controlUnit = ControlUnitEntity(
id = 10000,
administrationId = 1005,
areaNote = null,
departmentAreaInseeCode = null,
isArchived = false,
name = "Cultures marines – DDTM 40",
termsNote = null,
),
controlUnitResource = ControlUnitResourceEntity(
id = 13,
controlUnitId = 10000,
isArchived = true,
name = "Voiture",
note = null,
photo = null,
stationId = 1,
type = ControlUnitResourceType.CAR,
),
station = StationEntity(id = 1, latitude = 43.295765, longitude = 5.375486, name = "Marseille"),
),
FullControlUnitResourceDTO(
controlUnit = ControlUnitEntity(
id = 10000,
administrationId = 1005,
areaNote = null,
departmentAreaInseeCode = null,
isArchived = false,
name = "Cultures marines – DDTM 40",
termsNote = null,
),
controlUnitResource = ControlUnitResourceEntity(
id = 14,
controlUnitId = 10000,
isArchived = false,
name = "Drône",
note = null,
photo = null,
stationId = 2,
type = ControlUnitResourceType.DRONE,
),
station = StationEntity(
id = 2,
latitude = 48.648105,
longitude = -2.013144,
name = "Saint-Malo",
),
),
),
),
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class JpaControlUnitResourceRepositoryITests : AbstractDBTests() {
val foundFullControlUnitResources =
jpaControlUnitResourceRepository.findAll().sortedBy { requireNotNull(it.controlUnitResource.id) }

assertThat(foundFullControlUnitResources).hasSize(12)
assertThat(foundFullControlUnitResources).hasSize(14)

assertThat(foundFullControlUnitResources[0]).isEqualTo(
FullControlUnitResourceDTO(
Expand Down Expand Up @@ -153,13 +153,13 @@ class JpaControlUnitResourceRepositoryITests : AbstractDBTests() {

val createdControlUnitResource = jpaControlUnitResourceRepository.save(newControlUnitResource)

assertThat(createdControlUnitResource).isEqualTo(newControlUnitResource.copy(id = 13))
assertThat(createdControlUnitResource).isEqualTo(newControlUnitResource.copy(id = 15))

// ---------------------------------------------------------------------
// Update

val nextControlUnitResource = ControlUnitResourceEntity(
id = 13,
id = 15,
stationId = 2,
controlUnitId = 10001,
isArchived = false,
Expand All @@ -176,11 +176,11 @@ class JpaControlUnitResourceRepositoryITests : AbstractDBTests() {
// ---------------------------------------------------------------------
// Delete

jpaControlUnitResourceRepository.deleteById(13)
jpaControlUnitResourceRepository.deleteById(15)

val controlUnitResourceIds =
jpaControlUnitResourceRepository.findAll().map { requireNotNull(it.controlUnitResource.id) }.sorted()

assertThat(controlUnitResourceIds).doesNotContain(13)
assertThat(controlUnitResourceIds).doesNotContain(15)
}
}
2 changes: 1 addition & 1 deletion frontend/src/domain/entities/controlUnit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ export namespace ControlUnit {
/** Base64 Data URI. */
photo: string | undefined
station: Station.StationData
stationId: number | undefined
stationId: number
type: ControlUnitResourceType
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ import type { ControlUnit } from '../../../../../domain/entities/controlUnit'

type ItemProps = {
controlUnit: ControlUnit.ControlUnit
stationId: number
}
export function Item({ controlUnit }: ItemProps) {
export function Item({ controlUnit, stationId }: ItemProps) {
const dispatch = useAppDispatch()

const edit = () => {
Expand All @@ -27,7 +28,7 @@ export function Item({ controlUnit }: ItemProps) {
<Wrapper onClick={edit}>
<NameText title={controlUnit.administration.name}>{controlUnit.name}</NameText>
<AdministrationText title={controlUnit.administration.name}>{controlUnit.administration.name}</AdministrationText>
<ResourcesBar>{displayControlUnitResourcesFromControlUnit(controlUnit)}</ResourcesBar>
<ResourcesBar>{displayControlUnitResourcesFromControlUnit(controlUnit, stationId)}</ResourcesBar>
</Wrapper>
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ export function StationCard({ feature, selected = false }: { feature: Feature; s
>
<StyledMapMenuDialogBody>
{controlUnitsRef.current.map(controlUnit => (
<Item key={controlUnit.id} controlUnit={controlUnit} />
<Item key={controlUnit.id} controlUnit={controlUnit} stationId={featureProperties.station.id} />
))}
</StyledMapMenuDialogBody>
</OverlayCard>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@ import { Tag, pluralize } from '@mtes-mct/monitor-ui'
import { isEmpty } from 'lodash/fp'

import { ControlUnit } from '../../../../../domain/entities/controlUnit'
import { isNotArchived } from '../../../../../utils/isNotArchived'
import { getIconFromControlUnitResourceType } from '../../../../ControlUnit/components/ControlUnitDialog/ControlUnitResourceList/utils'

export function displayControlUnitResourcesFromControlUnit(controlUnit: ControlUnit.ControlUnit) {
export function displayControlUnitResourcesFromControlUnit(controlUnit: ControlUnit.ControlUnit, stationId: number) {
const controlUnitResourceTypeCounts = controlUnit.controlUnitResources
.filter(isNotArchived)
.filter(controlUnitResource => controlUnitResource.stationId === stationId && !controlUnitResource.isArchived)
.reduce((previousControlUnitResourceTypeCounts, controlUnitResource) => {
const controlUnitResourceTypeCount = previousControlUnitResourceTypeCounts[controlUnitResource.type]
if (!controlUnitResourceTypeCount) {
Expand Down

0 comments on commit c91beaa

Please sign in to comment.