Skip to content

Commit

Permalink
[MonitorExt] display only AMPs, Semaphores and Regulatory areas
Browse files Browse the repository at this point in the history
  • Loading branch information
claire2212 committed Jun 7, 2024
1 parent 9b5f0dd commit dfcb029
Show file tree
Hide file tree
Showing 4 changed files with 113 additions and 87 deletions.
50 changes: 25 additions & 25 deletions frontend/src/features/map/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ import { StationOverlay } from '../Station/components/StationOverlay'

// TODO Either use HOC to get proprer typings inference or migrate to vanilla JS.
// https://legacy.reactjs.org/docs/higher-order-components.html#convention-pass-unrelated-props-through-to-the-wrapped-component
export function Map() {
export function Map({ isSuperUser }) {
return (
<BaseMap
// BaseMap forwards map & mapClickEvent as props to children
Expand Down Expand Up @@ -77,65 +77,65 @@ export function Map() {

{/* MAP */}
{/* @ts-ignore */}
<MeasurementLayer />
{isSuperUser && <MeasurementLayer />}
{/* @ts-ignore */}
<InterestPointLayer />
{isSuperUser && <InterestPointLayer />}
{/* @ts-ignore */}
<MapExtentController />
{/* @ts-ignore */}
<MapHistory />
{/* @ts-ignore */}
<DrawLayer />
{isSuperUser && <DrawLayer />}

{/* MISSION */}
{/* @ts-ignore */}
<MissionsLayer />
{isSuperUser && <MissionsLayer />}
{/* @ts-ignore */}
<SelectedMissionLayer />
{isSuperUser && <SelectedMissionLayer />}
{/* @ts-ignore */}
<EditingMissionLayer />
{isSuperUser && <EditingMissionLayer />}
{/* @ts-ignore */}
<HoveredMissionLayer />
{isSuperUser && <HoveredMissionLayer />}
{/* @ts-ignore */}
<MissionOverlays />
{isSuperUser && <MissionOverlays />}
{/* @ts-ignore */}
<ActionOverlay />
{isSuperUser && <ActionOverlay />}
{/* @ts-ignore */}
<ReportingToAttachLayer />
{isSuperUser && <ReportingToAttachLayer />}
{/* @ts-ignore */}
<HoveredReportingToAttachLayer />
{isSuperUser && <HoveredReportingToAttachLayer />}
{/* @ts-ignore */}
<ReportingToAttachOverlays />
{isSuperUser && <ReportingToAttachOverlays />}

{/* SEMAPHORE */}
{/* @ts-ignore */}
<SemaphoresLayer />
{/* @ts-ignore */}
<SemaphoreOverlay />
<SemaphoreOverlay isSuperUser={isSuperUser} />

{/* REPORTING */}
{/* @ts-ignore */}
<EditingReportingLayer />
{isSuperUser && <EditingReportingLayer />}
{/* @ts-ignore */}
<SelectedReportingLayer />
{isSuperUser && <SelectedReportingLayer />}
{/* @ts-ignore */}
<HoveredReportingLayer />
{isSuperUser && <HoveredReportingLayer />}
{/* @ts-ignore */}
<ReportingsLayer />
{isSuperUser && <ReportingsLayer />}
{/* @ts-ignore */}
<ReportingOverlay />
{isSuperUser && <ReportingOverlay />}
{/* @ts-ignore */}
<StationLayer />
{isSuperUser && <StationLayer />}
{/* @ts-ignore */}
<StationOverlay />
{isSuperUser && <StationOverlay />}
{/* @ts-ignore */}
<MissionToAttachLayer />
{isSuperUser && <MissionToAttachLayer />}
{/* @ts-ignore */}
<HoveredMissionToAttachLayer />
{isSuperUser && <HoveredMissionToAttachLayer />}
{/* @ts-ignore */}
<SelectedMissionToAttachLayer />
{isSuperUser && <SelectedMissionToAttachLayer />}
{/* @ts-ignore */}
<MissionToAttachOverlays />
{isSuperUser && <MissionToAttachOverlays />}
</BaseMap>
)
}
107 changes: 58 additions & 49 deletions frontend/src/features/map/overlays/semaphores/SemaphoreCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,15 @@ const MAIL_TOOLTIP_STATE = {
}
const hoverTooltip = (text, className) => <StyledTooltip className={className}>{text}</StyledTooltip>

export function SemaphoreCard({ feature, selected = false }: { feature: any; selected?: boolean }) {
type SemaphoreCardProps = {
feature: any
isSuperUser: boolean
selected?: boolean
}

export function SemaphoreCard({ feature, isSuperUser, selected = false }: SemaphoreCardProps) {
const dispatch = useAppDispatch()

const displaySemaphoresLayer = useAppSelector(state => state.global.displaySemaphoresLayer)
const hasMapInteraction = useHasMapInteraction()

Expand Down Expand Up @@ -91,54 +98,56 @@ export function SemaphoreCard({ feature, selected = false }: { feature: any; sel
/>
</StyledHeader>

<StyledContactContainer>
{phoneNumber && (
<StyledContactLine>
<Whisper
controlId="phone-tooltip"
onClick={onCopyPhone}
placement="left"
speaker={hoverTooltip(tooltipPhoneState.text, tooltipPhoneState.className)}
trigger={tooltipPhoneState.trigger as OverlayTriggerType}
>
<span>
<StyledCopyButton
accent={Accent.TERTIARY}
color={THEME.color.slateGray}
Icon={Icon.Duplicate}
iconSize={20}
/>
</span>
</Whisper>
<span>Contact&nbsp;:&nbsp;{phoneNumber}</span>
</StyledContactLine>
)}
{email && (
<StyledContactLine>
<Whisper
controlId="mail-tooltip"
onClick={onCopyMail}
placement="left"
speaker={hoverTooltip(tooltipMailState.text, tooltipMailState.className)}
trigger={tooltipMailState.trigger as OverlayTriggerType}
>
<span>
<StyledCopyButton
accent={Accent.TERTIARY}
color={THEME.color.slateGray}
Icon={Icon.Duplicate}
iconSize={20}
/>
</span>
</Whisper>
<span>{email}</span>
</StyledContactLine>
)}

<StyledButton Icon={Icon.Plus} isFullWidth onClick={createSemaphoreReporting}>
Cr茅er un signalement
</StyledButton>
</StyledContactContainer>
{isSuperUser && (
<StyledContactContainer>
{phoneNumber && (
<StyledContactLine>
<Whisper
controlId="phone-tooltip"
onClick={onCopyPhone}
placement="left"
speaker={hoverTooltip(tooltipPhoneState.text, tooltipPhoneState.className)}
trigger={tooltipPhoneState.trigger as OverlayTriggerType}
>
<span>
<StyledCopyButton
accent={Accent.TERTIARY}
color={THEME.color.slateGray}
Icon={Icon.Duplicate}
iconSize={20}
/>
</span>
</Whisper>
<span>Contact&nbsp;:&nbsp;{phoneNumber}</span>
</StyledContactLine>
)}
{email && (
<StyledContactLine>
<Whisper
controlId="mail-tooltip"
onClick={onCopyMail}
placement="left"
speaker={hoverTooltip(tooltipMailState.text, tooltipMailState.className)}
trigger={tooltipMailState.trigger as OverlayTriggerType}
>
<span>
<StyledCopyButton
accent={Accent.TERTIARY}
color={THEME.color.slateGray}
Icon={Icon.Duplicate}
iconSize={20}
/>
</span>
</Whisper>
<span>{email}</span>
</StyledContactLine>
)}

<StyledButton Icon={Icon.Plus} isFullWidth onClick={createSemaphoreReporting}>
Cr茅er un signalement
</StyledButton>
</StyledContactContainer>
)}
</Wrapper>
)
}
Expand Down
24 changes: 18 additions & 6 deletions frontend/src/features/map/overlays/semaphores/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,27 @@ import { OverlayPositionOnCentroid } from '../OverlayPositionOnCentroid'
import type { VectorLayerWithName } from '../../../../domain/types/layer'
import type { BaseMapChildrenProps } from '../../BaseMap'

const MARGINS = {
const SUPER_USER_MARGINS = {
xLeft: 50,
xMiddle: 30,
xRight: -55,
yBottom: 50,
yMiddle: 100,
yTop: -170
}
export function SemaphoreOverlay({ currentFeatureOver, map }: BaseMapChildrenProps) {

const MARGINS = {
...SUPER_USER_MARGINS,
yBottom: 10,
yMiddle: 10,
yTop: -70
}

type SemaphoreOverlayProps = BaseMapChildrenProps & {
isSuperUser: boolean
}

export function SemaphoreOverlay({ currentFeatureOver, isSuperUser, map }: SemaphoreOverlayProps) {
const selectedSemaphoreId = useAppSelector(state => state.semaphoresSlice.selectedSemaphoreId)
const displaySemaphoreOverlay = useAppSelector(state => state.global.displaySemaphoreOverlay)

Expand Down Expand Up @@ -44,19 +56,19 @@ export function SemaphoreOverlay({ currentFeatureOver, map }: BaseMapChildrenPro
feature={displaySemaphoreOverlay ? selectedFeature : undefined}
featureIsShowed
map={map}
options={{ margins: MARGINS }}
options={{ margins: isSuperUser ? SUPER_USER_MARGINS : MARGINS }}
zIndex={3000}
>
<SemaphoreCard feature={selectedFeature} selected />
<SemaphoreCard feature={selectedFeature} isSuperUser={isSuperUser} selected />
</OverlayPositionOnCentroid>
<OverlayPositionOnCentroid
appClassName="overlay-semaphore-hover"
feature={displaySemaphoreOverlay && displayHoveredFeature ? hoveredFeature : undefined}
map={map}
options={{ margins: MARGINS }}
options={{ margins: isSuperUser ? SUPER_USER_MARGINS : MARGINS }}
zIndex={3000}
>
<SemaphoreCard feature={hoveredFeature} />
<SemaphoreCard feature={hoveredFeature} isSuperUser={isSuperUser} />
</OverlayPositionOnCentroid>
</>
)
Expand Down
19 changes: 12 additions & 7 deletions frontend/src/pages/HomePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { BannerStack } from '@features/MainWindow/components/BannerStack'
import { REPORTING_EVENT_UNSYNCHRONIZED_PROPERTIES } from '@features/Reportings/ReportingForm/constants'
import { useListenReportingEventUpdates } from '@features/Reportings/ReportingForm/hooks/useListenReportingEventUpdates'
import { useAppDispatch } from '@hooks/useAppDispatch'
import { useGetCurrentUserAuthorizationQueryOverride } from '@hooks/useGetCurrentUserAuthorizationQueryOverride'
import { reportingActions } from 'domain/shared_slices/reporting'
import { omit } from 'lodash'
import { useCallback, useEffect, useMemo } from 'react'
Expand Down Expand Up @@ -33,6 +34,10 @@ import { useAppSelector } from '../hooks/useAppSelector'
export function HomePage() {
const dispatch = useAppDispatch()

const { data: user } = useGetCurrentUserAuthorizationQueryOverride(undefined, {})

const isSuperUser = useMemo(() => user?.isSuperUser, [user])

const displayDrawModal = useAppSelector(state => state.global.displayDrawModal)
const displayInterestPoint = useAppSelector(state => state.global.displayInterestPoint)
const displayLocateOnMap = useAppSelector(state => state.global.displayLocateOnMap)
Expand Down Expand Up @@ -94,22 +99,22 @@ export function HomePage() {
<Healthcheck />
<BannerStack />

<Map />
<Map isSuperUser={isSuperUser} />
<LayersSidebar />
<RightMenuOnHoverArea />
{displayDrawModal && <DrawModal />}
<AttachMissionToReportingModal />
<AttachReportingToMissionModal />
{displayLocateOnMap && <LocateOnMap />}
{isControlUnitDialogVisible && <ControlUnitDialog />}
{isControlUnitDialogVisible && isSuperUser && <ControlUnitDialog />}

{displayMissionMenuButton && <MissionsMenu />}
{displayReportingsButton && <ReportingsButton />}
{displayMissionMenuButton && isSuperUser && <MissionsMenu />}
{displayReportingsButton && isSuperUser && <ReportingsButton />}
{displaySearchSemaphoreButton && <SearchSemaphoreButton />}
{isRightMenuControlUnitListButtonVisible && <ControlUnitListButton />}
{isRightMenuControlUnitListButtonVisible && isSuperUser && <ControlUnitListButton />}

{displayMeasurement && <MeasurementMapButton />}
{displayInterestPoint && <InterestPointMapButton />}
{displayMeasurement && isSuperUser && <MeasurementMapButton />}
{displayInterestPoint && isSuperUser && <InterestPointMapButton />}
{displayAccountButton && <Account />}

<Reportings key="reportings-on-map" context={ReportingContext.MAP} />
Expand Down

0 comments on commit dfcb029

Please sign in to comment.