Skip to content

Commit

Permalink
Draw voie line on voie context
Browse files Browse the repository at this point in the history
  • Loading branch information
tmerlier committed Sep 8, 2020
1 parent 4ee47d4 commit 2d6d88e
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 25 deletions.
20 changes: 12 additions & 8 deletions components/bal/voie-editor.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ function VoieEditor({initialValue, onSubmit, onCancel, isEnabledComplement}) {
const [error, setError] = useState()
const setRef = useFocus()

const {data, setModeId, setData} = useContext(DrawContext)
const {data, enableDraw, disableDraw, setModeId, setData} = useContext(DrawContext)
const {
enabled,
marker,
Expand All @@ -36,9 +36,8 @@ function VoieEditor({initialValue, onSubmit, onCancel, isEnabledComplement}) {

const onUnmount = useCallback(() => {
disableMarker()
setData(null)
setModeId(null)
}, [disableMarker, setData, setModeId])
disableDraw()
}, [disableDraw, disableMarker])

const onFormSubmit = useCallback(async e => {
e.preventDefault()
Expand Down Expand Up @@ -71,7 +70,7 @@ function VoieEditor({initialValue, onSubmit, onCancel, isEnabledComplement}) {
setIsLoading(false)
setError(error.message)
}
}, [nom, isMetric, complement, data, marker, positionType, onSubmit, onUnmount])
}, [nom, isMetric, complement, data, initialValue.lineVoie, marker, positionType, onSubmit, onUnmount])

const onFormCancel = useCallback(e => {
e.preventDefault()
Expand Down Expand Up @@ -106,8 +105,13 @@ function VoieEditor({initialValue, onSubmit, onCancel, isEnabledComplement}) {
useEffect(() => {
if (isMetric) {
onIsToponymeChange({target: {checked: false}})

setModeId(data ? 'editing' : 'drawLineString')
enableDraw()
} else {
disableDraw()
}
}, [isMetric, onIsToponymeChange])
}, [data, disableDraw, enableDraw, isMetric, onIsToponymeChange, setData, setModeId])

useEffect(() => {
if (isToponyme) {
Expand All @@ -117,9 +121,9 @@ function VoieEditor({initialValue, onSubmit, onCancel, isEnabledComplement}) {

useEffect(() => {
return () => {
console.log('UNMOUNT')
disableDraw()
}
}, [])
}, [disableDraw])

return (
<Pane is='form' onSubmit={onFormSubmit}>
Expand Down
4 changes: 2 additions & 2 deletions components/map/draw.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const MODES = {
}

const Draw = ({hoverPos}) => {
const {modeId, data, hint, setHint, setData} = useContext(DrawContext)
const {drawEnabled, modeId, data, hint, setHint, setData} = useContext(DrawContext)

const _onUpdate = useCallback(({data, editType}) => {
if (editType === 'addTentativePosition') {
Expand All @@ -30,7 +30,7 @@ const Draw = ({hoverPos}) => {
return Mode ? new Mode() : null
}, [modeId])

if (!mode) {
if (!drawEnabled || !mode) {
return null
}

Expand Down
5 changes: 2 additions & 3 deletions contexts/bal-data.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,8 @@ export const BalDataContextProvider = React.memo(({balId, codeCommune, idVoie, .

const editingItem = useMemo(() => {
if (editingId) {
return numeros ?
numeros.find(numero => numero._id === editingId) :
voies.find(voie => voie._id === editingId)
const voie = voies.find(voie => voie._id === editingId)
return voie || numeros.find(numero => numero._id === editingId)
}
}, [editingId, numeros, voies])

Expand Down
13 changes: 12 additions & 1 deletion contexts/draw.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import BalDataContext from './bal-data'
const DrawContext = React.createContext()

export function DrawContextProvider(props) {
const [drawEnabled, setDrawEnabled] = useState(false)
const [modeId, setModeId] = useState(null)
const [hint, setHint] = useState(null)
const [data, setData] = useState(null)
Expand All @@ -25,7 +26,7 @@ export function DrawContextProvider(props) {
}, [data, setModeId])

useEffect(() => {
if (editingItem) {
if (editingItem && editingItem.typeNumerotation === 'metric') {
if (editingItem.lineVoie) {
setData(editingItem.lineVoie)
setModeId('editing')
Expand All @@ -35,9 +36,19 @@ export function DrawContextProvider(props) {
}
}, [editingItem])

useEffect(() => {
if (!drawEnabled) {
setData(null)
setModeId(null)
}
}, [drawEnabled])

return (
<DrawContext.Provider
value={{
drawEnabled,
enableDraw: () => setDrawEnabled(true),
disableDraw: () => setDrawEnabled(false),
modeId,
setModeId,
hint,
Expand Down
2 changes: 1 addition & 1 deletion pages/bal/commune.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ const Commune = React.memo(({commune, defaultVoies}) => {
const [toRemove, setToRemove] = useState(null)

const {token} = useContext(TokenContext)
const {baseLocale} = useContext(BalDataContext)

const {
baseLocale,
voies,
reloadVoies,
editingId,
Expand Down
20 changes: 10 additions & 10 deletions pages/bal/voie.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import VoieEditor from '../../components/bal/voie-editor'
import NumeroEditor from '../../components/bal/numero-editor'

const Voie = React.memo(({voie, defaultNumeros}) => {
const [editedVoie, setEditedVoie] = useState(null)
const [editedVoie, setEditedVoie] = useState(voie)
const [isEdited, setEdited] = useState(false)
const [hovered, setHovered] = useState(false)
const [isAdding, setIsAdding] = useState(false)
Expand Down Expand Up @@ -69,8 +69,6 @@ const Voie = React.memo(({voie, defaultNumeros}) => {
await reloadVoies()

setEditedVoie(editedVoie)

setEdited(false)
}, [reloadVoies, token, voie])

const onEnableAdding = useCallback(() => {
Expand All @@ -82,6 +80,11 @@ const Voie = React.memo(({voie, defaultNumeros}) => {
setEditingId(idNumero)
}, [setEditingId])

const onEnableVoieEditing = useCallback(() => {
setEditingId(voie._id)
setHovered(false)
}, [setEditingId, voie._id])

const onEdit = useCallback(async ({numero, voie, suffixe, comment, positions}) => {
await editNumero(editingId, {
numero,
Expand Down Expand Up @@ -132,20 +135,17 @@ const Voie = React.memo(({voie, defaultNumeros}) => {
background='tint1'
padding={16}
>
{isEdited ? (
{editingId === voie._id ? (
<VoieEditor
initialValue={{...currentVoie}}
isEnabledComplement={Boolean(baseLocale.enableComplement)}
onSubmit={onEditVoie}
onCancel={() => setEdited(false)}
onCancel={() => setEditingId(null)}
/>
) : (
<Heading
style={{cursor: hovered ? 'text' : 'default'}}
onClick={() => {
setEdited(true)
setHovered(false)
}}
onClick={onEnableVoieEditing}
onMouseEnter={() => setHovered(true)}
onMouseLeave={() => setHovered(false)}
>
Expand Down Expand Up @@ -216,7 +216,7 @@ const Voie = React.memo(({voie, defaultNumeros}) => {
</Table.TextCell>
</Table.Row>
)}
{editingId ? (
{editingId && editingId !== voie._id ? (
<Table.Row height='auto'>
<Table.Cell display='block' paddingY={12} background='tint1'>
<NumeroEditor
Expand Down

0 comments on commit 2d6d88e

Please sign in to comment.