UNPKG

@util-co/sdg-wheel

Version:

Wheel chart showing positive and negative impact on 17 SDGs (Sustainable Development Goals)

132 lines (131 loc) 3.63 kB
import { Dispatch, MouseEventHandler, SetStateAction } from 'react'; import { Arc, Pie, PieArcDatum } from 'd3'; import { RangeLabel } from './constants'; export interface WheelDataRaw { id: string; scorePositive?: number; scoreNegative?: number; } export interface WheelData { id: string; scorePositive?: number; scoreNegative?: number; label: string; icon: string; } export interface WheelSegmentData { id?: string; score?: number; label?: string; width?: number; color?: string; } export interface WheelProps { data: WheelDataRaw[]; handleSegmentClick?: (e: MouseEventHandler<HTMLElement>, segmentData: WheelSegmentData) => void; handleCenterClick?: (e: MouseEventHandler<HTMLElement>, segmentData: WheelSegmentData) => void; selectSegments?: string[]; } export interface WheelPie { width?: number; icon: string; } export interface WheelDataTransformed extends WheelPie { id?: string; weight?: number; score?: number; color?: string; label?: string; } export type ClassNameType = string; export type RadiusType = number; export type ArcType = Arc<unknown, PieArcDatum<WheelPie>>; export type PieTypeWheel = Pie<unknown, WheelPie>; export type PieTypeTransformed = Pie<unknown, WheelDataTransformed>; export type OnClickType = (e: MouseEventHandler<HTMLElement>, segmentData: WheelSegmentData) => void; export type SetSelectedType = Dispatch<SetStateAction<string | undefined>>; export type SegmentType = { data: WheelSegmentData; }; export interface WheelCirclesProps { className: ClassNameType; radius: RadiusType; strokeColor: string; strokeWidth: number; fill: string; onClick?: OnClickType; setSelected?: SetSelectedType; transform?: string; isCenter?: boolean; selectSegments?: string[]; } export interface WheelIconsProps { className: ClassNameType; pie: PieTypeWheel; data: WheelDataTransformed[]; imageSize: number; offsetAngle: number; radius: RadiusType; arc: ArcType; handleSegmentClick: OnClickType; setSelected: SetSelectedType; transform?: string; } export interface WheelPathsProps { className: ClassNameType; pie: PieTypeTransformed; data: WheelDataTransformed[]; fill: string; stroke: string; arc: ArcType; selectSegments?: string[]; isImages?: boolean; transform?: string; hoverSelected?: string; } export interface WheelRangeLabelsProps { className: ClassNameType; data: RangeLabel[]; fill: string; transform?: string; } export interface WheelSegmentLabelsProps { className: ClassNameType; pie: PieTypeTransformed; data: WheelDataTransformed[]; segmentValuesArc: Arc<unknown, PieArcDatum<WheelDataTransformed>>; selectSegments: string[]; transform?: string; } export interface WheelSegmentsProps { className: ClassNameType; pie: PieTypeWheel; data: WheelDataTransformed[]; onClick: OnClickType; setSelected: SetSelectedType; arc: ArcType; selectSegments: string[]; onMouseOver?: (data: WheelSegmentData | null) => void; hoverSelected?: WheelSegmentData | null; transform?: string; overlay?: boolean; } export declare enum SDG { Sdg01 = "SDG-01", Sdg02 = "SDG-02", Sdg03 = "SDG-03", Sdg04 = "SDG-04", Sdg05 = "SDG-05", Sdg06 = "SDG-06", Sdg07 = "SDG-07", Sdg08 = "SDG-08", Sdg09 = "SDG-09", Sdg10 = "SDG-10", Sdg11 = "SDG-11", Sdg12 = "SDG-12", Sdg13 = "SDG-13", Sdg14 = "SDG-14", Sdg15 = "SDG-15", Sdg16 = "SDG-16", Sdg17 = "SDG-17" }