Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
b1dc75c
Feature/3686-draw-on-map (#3785)
Magnusrm Oct 14, 2025
834424e
Merge branch 'main' into feature/3686-draw-on-map
tina-ahm Oct 20, 2025
b703041
Feature/toolbar config (#3810)
tina-ahm Oct 27, 2025
a87803c
Merge branch 'main' into feature/3686-draw-on-map
tina-ahm Oct 27, 2025
efaa8e1
Merge remote-tracking branch 'origin/main' into feature/3686-draw-on-map
Magnusrm Nov 12, 2025
d0a0808
Merge remote-tracking branch 'origin/main' into feature/3686-draw-on-map
Magnusrm Nov 18, 2025
d966b70
Save-to-datamodel (#3855)
Magnusrm Nov 18, 2025
91f88d8
Feat/3686-draw-on-map/edit-geometries (#3865)
Magnusrm Nov 25, 2025
2c0faff
delete geos wip
Magnusrm Nov 27, 2025
65e2e3a
add WKT support, replace deprecated WKT package
Magnusrm Dec 12, 2025
65ca677
Merge remote-tracking branch 'origin/main' into feature/3686-draw-on-map
Magnusrm Dec 12, 2025
b44db26
update yarn.lock
Magnusrm Dec 12, 2025
0a4d69f
remove caret from react-ealfet-draw version
Magnusrm Dec 15, 2025
fa4cb60
fix duplicate geometries being rendered
Magnusrm Dec 16, 2025
8aa4108
Merge branch 'feature/3686-draw-on-map' into feature/3686-draw-on-map…
Magnusrm Dec 17, 2025
a6e22ec
debugging
Magnusrm Dec 17, 2025
243be89
fix editing bug
Magnusrm Dec 23, 2025
971580d
Merge remote-tracking branch 'origin/main' into feature/3686-draw-on-map
Magnusrm Dec 23, 2025
697e216
Add styling and hidden geometry props
tina-ahm Jan 2, 2026
c0b5407
fix coderabbit comments
Magnusrm Jan 5, 2026
fdf69f0
Merge remote-tracking branch 'origin/main' into feature/3686-draw-on-map
Magnusrm Jan 5, 2026
85c6f7e
Merge branch 'feature/3686-draw-on-map' into feature/map-geometry-cus…
tina-ahm Jan 14, 2026
003a480
Merge remote-tracking branch 'origin/main' into feature/map-geometry-…
Magnusrm Feb 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions src/layout/Map/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,22 @@ export const Config = new CG.component({
'Should point to a boolean indicating if this geometry is editable. This has no default value, geometries will not be editable if this is not specified.',
),
),
new CG.prop(
'geometryIsHidden',
new CG.dataModelBinding()
.optional()
.setDescription(
'Should point to a boolean indicating if this geometry is hidden. Geometries will be visible by default if this is not specified.',
),
),
new CG.prop(
'geometryStyle',
new CG.dataModelBinding()
.optional()
.setDescription(
'Should point to a string indicating the style of this geometry. Overrides the default style of the geometry.',
),
),
).exportAs('IDataModelBindingsForMap'),
)
.addProperty(
Expand Down
5 changes: 4 additions & 1 deletion src/layout/Map/features/geometries/fixed/MapGeometries.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,19 @@ export function MapGeometries({ baseComponentId, readOnly }: MapGeometriesProps)
geometries = geometries?.filter((g) => !g.isEditable);
}

geometries = geometries?.filter((g) => !g.isHidden);

return (
<>
{geometries.map(({ altinnRowId, data, label }) => (
{geometries.map(({ altinnRowId, data, label, style }) => (
<GeoJSON
key={altinnRowId}
data={data}
interactive={false}
pointToLayer={(_, position) =>
marker(position, { icon: markerIcon, interactive: false, draggable: false, keyboard: false })
}
style={style ? JSON.parse(style) : undefined}
>
{label && (
<Tooltip
Expand Down
13 changes: 10 additions & 3 deletions src/layout/Map/features/geometries/fixed/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ export function useMapRawGeometries(baseComponentId: string): RawGeometry[] | un
const dataPath = toRelativePath(dataModelBindings?.geometries, dataModelBindings?.geometryData) ?? 'data';
const isEditablePath =
toRelativePath(dataModelBindings?.geometries, dataModelBindings?.geometryIsEditable) ?? 'isEditable';
const isHiddenPath =
toRelativePath(dataModelBindings?.geometries, dataModelBindings?.geometryIsHidden) ?? 'isHidden';
const stylePath = toRelativePath(dataModelBindings?.geometries, dataModelBindings?.geometryStyle) ?? 'style';

return formData.map((item: unknown): RawGeometry => {
if (!item || typeof item !== 'object' || !item[ALTINN_ROW_ID]) {
Expand All @@ -38,13 +41,17 @@ export function useMapRawGeometries(baseComponentId: string): RawGeometry[] | un
data: dot.pick(dataPath, item),
label: dot.pick(labelPath, item),
isEditable: dot.pick(isEditablePath, item),
isHidden: dot.pick(isHiddenPath, item),
style: dot.pick(stylePath, item),
};
});
}, [
dataModelBindings?.geometries,
dataModelBindings?.geometryData,
dataModelBindings?.geometryLabel,
dataModelBindings?.geometryIsEditable,
dataModelBindings?.geometryIsHidden,
dataModelBindings?.geometryStyle,
formData,
]);
}
Expand Down Expand Up @@ -75,13 +82,13 @@ function parseGeometries(geometries: RawGeometry[] | undefined, geometryType?: I
}

const out: Geometry[] = [];
for (const { altinnRowId, data: rawData, label, isEditable } of geometries) {
for (const { altinnRowId, data: rawData, label, isEditable, isHidden, style } of geometries) {
if (geometryType === 'WKT') {
const data = wktToGeoJSON(rawData);
out.push({ altinnRowId, data, label, isEditable });
out.push({ altinnRowId, data, label, isEditable, isHidden, style });
} else {
const data = JSON.parse(rawData) as GeoJSON;
out.push({ altinnRowId, data, label, isEditable });
out.push({ altinnRowId, data, label, isEditable, isHidden, style });
}
}

Expand Down
4 changes: 4 additions & 0 deletions src/layout/Map/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,17 @@ export type RawGeometry = {
data: string;
label?: string;
isEditable?: boolean;
isHidden?: boolean;
style?: string;
};

export type Geometry = {
altinnRowId: string;
data: GeoJSON;
label?: string;
isEditable?: boolean;
isHidden?: boolean;
style?: string;
};

export type Location = {
Expand Down
Loading
Loading