More FE changes
This commit is contained in:
parent
f114ada255
commit
a48eb945e0
48 changed files with 4127 additions and 1751 deletions
|
|
@ -56,6 +56,15 @@ function distToRatios(dist: unknown): number[] {
|
|||
return r;
|
||||
}
|
||||
|
||||
function requireEnumPalette(
|
||||
palette: [number, number, number][] | null
|
||||
): [number, number, number][] {
|
||||
if (!palette) {
|
||||
throw new Error('Enum layer requested without an enum color palette');
|
||||
}
|
||||
return palette;
|
||||
}
|
||||
|
||||
export function useDeckLayers({
|
||||
data,
|
||||
postcodeData,
|
||||
|
|
@ -127,9 +136,12 @@ export function useDeckLayers({
|
|||
? colorFeatureMeta.values.length
|
||||
: 0;
|
||||
|
||||
// Per-feature color palette (uses overrides when defined)
|
||||
const enumPaletteRef = useRef(getEnumPaletteForFeature(viewFeature, colorFeatureMeta?.values));
|
||||
enumPaletteRef.current = getEnumPaletteForFeature(viewFeature, colorFeatureMeta?.values);
|
||||
const enumPalette =
|
||||
viewFeature && colorFeatureMeta?.type === 'enum' && colorFeatureMeta.values
|
||||
? getEnumPaletteForFeature(viewFeature, colorFeatureMeta.values)
|
||||
: null;
|
||||
const enumPaletteRef = useRef(enumPalette);
|
||||
enumPaletteRef.current = enumPalette;
|
||||
|
||||
const countRange = useMemo(() => {
|
||||
if (data.length === 0) return { min: 0, max: 1, total: 0 };
|
||||
|
|
@ -256,27 +268,27 @@ export function useDeckLayers({
|
|||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const pieProps: any = isEnum
|
||||
? {
|
||||
extensions: [new PieHexExtension(enumPaletteRef.current)],
|
||||
getCenter: (d: HexagonData) => [d.lon, d.lat],
|
||||
getRatios0: (d: HexagonData) => {
|
||||
const r = distToRatios(d[distKey]);
|
||||
return [r[0], r[1], r[2], r[3]];
|
||||
},
|
||||
getRatios1: (d: HexagonData) => {
|
||||
const r = distToRatios(d[distKey]);
|
||||
return [r[4], r[5], r[6], r[7]];
|
||||
},
|
||||
getRatios2: (d: HexagonData) => {
|
||||
const r = distToRatios(d[distKey]);
|
||||
return [r[8], r[9]];
|
||||
},
|
||||
updateTriggers: {
|
||||
getCenter: [colorTrigger, data],
|
||||
getRatios0: [colorTrigger, data],
|
||||
getRatios1: [colorTrigger, data],
|
||||
getRatios2: [colorTrigger, data],
|
||||
},
|
||||
}
|
||||
extensions: [new PieHexExtension(requireEnumPalette(enumPaletteRef.current))],
|
||||
getCenter: (d: HexagonData) => [d.lon, d.lat],
|
||||
getRatios0: (d: HexagonData) => {
|
||||
const r = distToRatios(d[distKey]);
|
||||
return [r[0], r[1], r[2], r[3]];
|
||||
},
|
||||
getRatios1: (d: HexagonData) => {
|
||||
const r = distToRatios(d[distKey]);
|
||||
return [r[4], r[5], r[6], r[7]];
|
||||
},
|
||||
getRatios2: (d: HexagonData) => {
|
||||
const r = distToRatios(d[distKey]);
|
||||
return [r[8], r[9]];
|
||||
},
|
||||
updateTriggers: {
|
||||
getCenter: [colorTrigger, data],
|
||||
getRatios0: [colorTrigger, data],
|
||||
getRatios1: [colorTrigger, data],
|
||||
getRatios2: [colorTrigger, data],
|
||||
},
|
||||
}
|
||||
: {};
|
||||
|
||||
return new H3HexagonLayer<HexagonData>({
|
||||
|
|
@ -568,11 +580,15 @@ export function useDeckLayers({
|
|||
|
||||
const layers = useMemo(() => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const baseLayers: any[] = usePostcodeView
|
||||
? zoom >= 16
|
||||
? [postcodeLayer, postcodeLabelsLayer, ...poiLayers]
|
||||
: [postcodeLayer, ...poiLayers]
|
||||
: [hexLayer, ...poiLayers];
|
||||
const baseLayers: any[] = [];
|
||||
if (usePostcodeView) {
|
||||
baseLayers.push(postcodeLayer);
|
||||
if (zoom >= 16) baseLayers.push(postcodeLabelsLayer);
|
||||
baseLayers.push(...poiLayers);
|
||||
} else {
|
||||
baseLayers.push(hexLayer);
|
||||
baseLayers.push(...poiLayers);
|
||||
}
|
||||
if (marchingAntsLayer) baseLayers.push(marchingAntsLayer);
|
||||
if (currentLocationLayer) baseLayers.push(currentLocationLayer);
|
||||
return baseLayers;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue