Skip to content

Commit

Permalink
Merge pull request #190 from Geoportail-Luxembourg/GITLAB-42-fix_laye…
Browse files Browse the repository at this point in the history
…r_order

wrong layer order in url
  • Loading branch information
rmichaelis authored Feb 7, 2025
2 parents 1abb0a1 + b16fa08 commit fb5ba49
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ describe('StorageLayerMapper', () => {

describe('#layerIdsToLayers', () => {
it('returns the layers corresponding to the given ids', () => {
expect(storageLayerMapper.layerIdsToLayers('10-360')).toStrictEqual([
expect(storageLayerMapper.layerIdsToLayers('360-10')).toStrictEqual([
{
id: 10,
name: 'layer1_name',
Expand All @@ -107,7 +107,7 @@ describe('StorageLayerMapper', () => {
})

it('returns undefined in place of layer not found to keep the order', () => {
expect(storageLayerMapper.layerIdsToLayers('10-89754-360')).toStrictEqual(
expect(storageLayerMapper.layerIdsToLayers('360-89754-10')).toStrictEqual(
[
{
id: 10,
Expand Down Expand Up @@ -135,7 +135,7 @@ describe('StorageLayerMapper', () => {
})

it('cannot read layer with string ids', () => {
expect(storageLayerMapper.layerIdsToLayers('10-AnyId')).toStrictEqual([
expect(storageLayerMapper.layerIdsToLayers('AnyId-10')).toStrictEqual([
{
id: 10,
name: 'layer1_name',
Expand Down Expand Up @@ -175,19 +175,19 @@ describe('StorageLayerMapper', () => {
it('returns the opacities as floats', () => {
expect(
storageLayerMapper.layersOpacitiesToNumbers('0-1-0.25-0.6-1')
).toStrictEqual([0, 1, 0.25, 0.6, 1])
).toStrictEqual([1, 0.6, 0.25, 1, 0])
})
it('returns undefined for an invalid opactiy value', () => {
expect(
storageLayerMapper.layersOpacitiesToNumbers('0-opa-1')
storageLayerMapper.layersOpacitiesToNumbers('1-opa-0')
).toStrictEqual([0, undefined, 1])
})
})

describe('#layersToLayerIds', () => {
it('converts the given layers into ids', () => {
expect(storageLayerMapper.layersToLayerIds([layer360, layerAnyId])).toBe(
'360-AnyId'
'AnyId-360'
)
})
})
Expand All @@ -200,7 +200,7 @@ describe('StorageLayerMapper', () => {
layer360,
layerAnyId,
])
).toBe('0.75-1-0.5')
).toBe('0.5-1-0.75')
})
})

Expand Down
41 changes: 27 additions & 14 deletions src/services/state-persistor/state-persistor-layer.mapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,15 @@ class StorageLayerMapper {
const layers = useLayers()
const layerIds = layerIdsText ? layerIdsText.split(STORAGE_SEPARATOR) : []

return layerIds.map(layerId => {
const layer = remoteLayersService.isRemoteLayer(layerId)
? remoteLayerIdtoLayer(layerId)
: (themes.findById(parseInt(layerId, 10)) as unknown as Layer)

return layer ? layers.initLayer(layer) : void 0
})
return layerIds
.map(layerId => {
const layer = remoteLayersService.isRemoteLayer(layerId)
? remoteLayerIdtoLayer(layerId)
: (themes.findById(parseInt(layerId, 10)) as unknown as Layer)

return layer ? layers.initLayer(layer) : void 0
})
.reverse()
}

layerNamesToLayersV2(layersNamesText: string | null) {
Expand All @@ -36,17 +38,19 @@ class StorageLayerMapper {
? layersNamesText.split(STORAGE_SEPARATOR_V2)
: []

return layersNames.map(layerName => {
const layer = themes.findByName(layerName)
return layer ? layers.initLayer(layer as unknown as Layer) : void 0
})
return layersNames
.map(layerName => {
const layer = themes.findByName(layerName)
return layer ? layers.initLayer(layer as unknown as Layer) : void 0
})
.reverse()
}

layersOpacitiesToNumbers(
opacitiesText: string | null,
separator = STORAGE_SEPARATOR
) {
return stringToNumbers(opacitiesText, separator)
return stringToNumbers(opacitiesText, separator).reverse()
}

/**
Expand All @@ -66,19 +70,28 @@ class StorageLayerMapper {
}

layersToLayerIds(layers: Layer[] | null): string {
return layers?.map(layer => layer.id).join(STORAGE_SEPARATOR) || ''
return (
layers
?.map(layer => layer.id)
.reverse()
.join(STORAGE_SEPARATOR) || ''
)
}

layersToLayerOpacities(layers: Layer[] | null): string {
return (
layers?.map(layer => layer.opacity ?? 1).join(STORAGE_SEPARATOR) || ''
layers
?.map(layer => layer.opacity ?? 1)
.reverse()
.join(STORAGE_SEPARATOR) || ''
)
}

layersToLayerTimes(layers: Layer[] | null): string {
return (
layers
?.map(layer => useLayers().getLayerCurrentTime(layer) ?? '')
.reverse()
.join(STORAGE_TIME_SEPARATOR) || ''
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,9 @@ class StatePersistorLayersService implements StatePersistorService {
storageLayerMapper.layersVisibilitiesToBooleansV2
)

return opacities.map((opacity, index) => (visibility[index] ? opacity : 0))
return opacities
.map((opacity, index) => (visibility[index] ? opacity : 0))
.reverse()
}
}

Expand Down

0 comments on commit fb5ba49

Please sign in to comment.