import { Grid, IconButton } from '@suid/material'; import { Feature } from 'ol'; import { Geometry } from 'ol/geom'; import { Component, createSignal, For } from 'solid-js'; import { unwrap } from 'solid-js/store'; import { useI18n } from '@solid-primitives/i18n'; import CloseIcon from '@suid/icons-material/Close'; import { tree } from '../map'; import { Paper, Stack } from '@suid/material'; import styled from '@suid/material/styles/styled'; import Dialog from '../dialog'; const Item = styled(Paper)(({ theme }) => ({ ...theme.typography.body2, padding: theme.spacing(1), textAlign: 'center', color: theme.palette.text.secondary, })); const [open, setOpen] = createSignal(false); let selectedFeatures: Feature[] = []; export const clickHandler = (event: any) => { const pixel = [event.originalEvent.x, event.originalEvent.y]; const features = event.map.getFeaturesAtPixel(pixel, { hitTolerance: 30 }); console.log({ caller: ' / clickHandler', event, features, tree: unwrap(tree), }); selectedFeatures.map((feature) => feature.set('isSelected', false)); selectedFeatures = features; features.map((feature: Feature) => { const id = feature.get('id'); feature.set('isSelected', true); console.log({ caller: ' / clickHandler / feature', event, feature, id, }); const branch = tree[id]; if (branch?.updateHandler) branch.updateHandler(feature); }); if (features.length > 0) { setOpen(true); } }; const Infos: Component<{}> = (props) => { const [t, { add, locale, dict }] = useI18n(); const handleClick = () => { setOpen(false); }; return ( {(feature) => ( {feature.get('name') ? `${feature.get('name')} (${t(feature.get('type'))})` : t(feature.get('type'))} )} ); }; export default Infos;