UNPKG

realmap

Version:

Wooritech map chart component library

2,145 lines (2,126 loc) 283 kB
declare const PI_2: number; declare const ORG_ANGLE: number; declare const RAD_DEG: number; type Path = string | any[]; declare function fixnum(value: number): number; declare function pixel(v: number): string; /** * 123, '10%' 형식으로 크기를 지정한다. */ type PercentSize = string | number; interface IPercentSize { size: number; fixed: boolean; } declare function parsePercentSize(sv: PercentSize, enableNull: boolean): IPercentSize; declare function calcPercent(size: IPercentSize, domain: number, def?: number): number; /** * SVG 스타일 속성.<br/> * {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute SVG 속성}을 참조한다.<br/> */ interface SVGStyles { transform?: string; /** * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill fill} 스타일 속성.<br/> */ fill?: string; /** * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-opacity fill-opacity} 스타일 속성.<br/> */ fillOpacity?: string; /** * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke stroke} 스타일 속성.<br/> */ stroke?: string; /** * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-width stroke-width} 스타일 속성.<br/> */ strokeWidth?: string; /** * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray stroke-dasharray} 스타일 속성.<br/> */ strokeDasharray?: string; /** * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/font-family font-family} 스타일 속성.<br/> */ fontFamily?: string; /** * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/font-size font-size} 스타일 속성.<br/> */ fontSize?: string; /** * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/font-weight font-weight} 스타일 속성.<br/> */ fontWeight?: string; /** * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/font-style font-style} 스타일 속성.<br/> */ fontStyle?: string; /** * SVG에 적용되는 css {@page https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/rx rx} 스타일 속성.<br/> * {@page config.seires.bar 'bar'} 시리즈의 데이터포인트 bar의 모서리를 지정하는 데 사용된다. */ rx?: string; /** * 텍스트 정렬을 지정한다.<br/> * **SVG에 적용되는 정식 css style 속성이 아니다.** * 즉, HTML이나 realmap-style.css 등의 외부 css 파일에서 사용할 수 없고, * RealMap 내부에서 {@page config.title} 등의 inline 스타일 속성으로 지정할 수 있다. * * ```js * const config = { * subtitle: { * style: { * textAlign: 'left', * }, * }, * }; * ``` */ textAlign?: Align; /** * **SVG에 적용되는 정식 css style 속성이 아니다.**<br/> * 데이터포인트 라벨등 몇 요소의 배경 간격 설정으로 사용할 수 있다. */ padding?: string; } /** @dummy */ type SVGStyleOrClass = SVGStyles | string; /** * CSS 선언 블록을 나타내는 객체로, 스타일 정보뿐만 아니라 다양한 스타일 관련 메서드와 속성들을 제공한다. <br/> * https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration */ interface CSSStyles extends Partial<CSSStyleDeclaration> { } interface ISides { left: number; right: number; top: number; bottom: number; horz?: number; vert?: number; } /** * 스와이프 제스처 등의 진행 방향. * <br> * * @see {@link RtListControl.onRowSwipe} */ declare enum RtDirection { /** * 위쪽으로 진행. */ UP = "up", /** * 아래쪽으로 진행. */ DOWN = "down", /** * 왼쪽으로 진행. */ LEFT = "left", /** * 오른쪽으로 진행. */ RIGHT = "right" } /** * 수평 정렬. * @enum */ declare const _Align: { /** * 왼쪽으로 정렬한다. */ readonly LEFT: "left"; /** * 영역 가운데로 정렬한다. */ readonly CENTER: "center"; /** * 오른쪽으로 정렬한다. */ readonly RIGHT: "right"; }; /** @dummy */ type Align = typeof _Align[keyof typeof _Align]; /** * 수직 정렬. * @enum */ declare const _VerticalAlign: { /** @config */ readonly TOP: "top"; /** @config */ readonly MIDDLE: "middle"; /** @config */ readonly BOTTOM: "bottom"; }; /** @dummy */ type VerticalAlign = typeof _VerticalAlign[keyof typeof _VerticalAlign]; /** * @enum */ declare const _AlignBase: { /** * @config */ readonly CHART: "chart"; /** * @config */ readonly MAP: "map"; /** * 상위 모델이 존재하는 경우 상위 모델 영역 기준.\ * 상위가 없으면 기본값(대부분 'body')과 동일. * ex) subtitle인 경우 title 기준. * * @config */ readonly PARENT: "parent"; }; /** @dummy */ type AlignBase = typeof _AlignBase[keyof typeof _AlignBase]; /** * @enum */ declare const _WritingMode: { /** @config */ readonly HORIZONTAL_TB: "horizontal-tb"; /** @config */ readonly VERTICAL_LR: "vertical-lr"; /** @config */ readonly VERTICAL_RL: "vertical-rl"; }; /** @dummy */ type WritingMode = typeof _WritingMode[keyof typeof _WritingMode]; /** * @enum */ declare const _TextOrientation: { /** @config */ readonly MIXED: "mixed"; /** @config */ readonly UPRIGHT: "upright"; }; /** @dummy */ type TextOrientation = typeof _TextOrientation[keyof typeof _TextOrientation]; interface ColorRange { minValue?: number; maxValue?: number; minColor?: string; maxColor?: string; /** * 2 이상의 값으로 지정하면, * 데이터포인트 값들을 이 속성값을 base로 하는 log 값으로 변환해서 표시한다.<br/> */ logBase?: number; } interface IPaddings { l: number; r: number; t: number; b: number; } /** * @enum * * Legend나 ColorScale 등 차트 구성 요소들의 표시 위치.<br/> * 위치를 지정한 후 다른 속성들로 정렬시킬 수 있다. */ declare const _ChartItemLocation: { /** * 차트 본체 아래 표시한다. * */ readonly BOTTOM: "bottom"; /** * 차트 타이틀 아래 표시한다. * */ readonly TOP: "top"; /** * 차트 본체 오른쪽에 표시한다. * */ readonly RIGHT: "right"; /** * 차트 본체 왼쪽에 표시한다. * */ readonly LEFT: "left"; /** * 차트 본체 영역 내부에 표시한다. * */ readonly BODY: "body"; }; /** @dummy */ type ChartItemLocation = typeof _ChartItemLocation[keyof typeof _ChartItemLocation]; interface ConfigObject { [key: string]: any; } type MapCoord = [number, number]; type MapPolygon = MapCoord[][]; type MapProps = any; /** * RealReport-Chart 라이브러리 클래스 모델의 최상위 base 클래스. * <br> * * @see concepts.dev_guide 개발 가이드 * @see concepts.about RealTouch 개요 */ declare abstract class RmObject { private $_hash; private $_destroyed; private $_destroying; constructor(noHash?: boolean); /** * 객체가 소유한 참조 등을 해제하고 null을 리턴한다. * * ``` * list = lis.destroy(); * ``` * * @returns null */ destroy(): null; protected _doDestory(): void; get destroying(): boolean; get orphaned(): boolean; get hash(): string; isMe(hash: string): boolean; toString(): string; /** * @internal * * template param으로부터 생성되는 값은 문자열일 수 있다. */ toBool(v: any): boolean; toNum(v: any, def?: number): number; } declare abstract class RmEventProvider<T> extends RmObject { private _listeners; _addListener(listener: T): void; _removeListener(listener: T): void; /** * event로 지정한 함수가 정의된 모든 리스너에 대해 실행한다. * 리스너 scope으로 실행하고, 첫번째 매개변수로 이 객체가 전달된다. * 다만, 리스너들 중 하나라도 undefined가 아닌 값을 리턴하면, * 그 값을 리턴하면서 멈춘다. */ protected _fireEvent(event: string, ...args: any[]): any; } interface MapInsetDisplay { /** * inset area 확대 비율.<br/> * 지정하지 않으면 1. * 0보다 큰 값이어야 한다. */ scale?: number; /** * inset area의 [왼쪽, 위쪽] 기준으로, 표시 위치 [경도, 위도]를 도(°) 단위로 지정한다.<br/> * [주의] {@page children}으로 적용될 때는 이 값 대신 {@page offset}을 반드시 지정해야 한다. */ coord?: MapCoord; /** * coord로 지정한 inset 위치에 더 추가되는 [경도, 위도] 값이거나 * coord가 지정되지 않은 경우 원래 위치에서 떨어진 위치 값.<br/> * 라이브러리에서 제공하는 미리 정의된 inset 위치를 조정하는 값으로 사용할 수 있다. * [주의] {@page children}으로 적용될 때는 {@page coord} 대신 반듯 이 값을 지정해야 한다. */ offset?: MapCoord; /** * inset을 구분하는 경계선을 도(°)단위로 지정한다.<br/> * 값들은 space나 ','로 분리해서 x, y 순서대로 위치를 지정하고, * 닫힌 다각형으로 지정하고 싶은 경우 마지막에 'z'나 'Z'을 추가한다. * 또, {@page frame}이 지정되면 이 값은 무시된다.<br/> * 값들은 각각 area 전체를 감싸는 가상의 사각형을 기준으로 작성하는데, * 아래 값들을 상수로 사용할 수 있고, +,- 연산자로 offset을 지정할 수 있다. * x값은 사각형 왼쪽(경도 시작접), y값은 사각형 아래쪽(위도 시작점)이 원점이 된다. * w와 h는 각각 사각형의 너비와 높이다. * x값은 원점에서 오른쪽으로 증가하고, y값은 원점에서 위쪽으로 증가한다.<br/> * ex) '-0.1 h+0.05 +0.1 h+0.1 w+0.2 h' // 제주도 위쪽에 꺽인 line을 표시한다. * '-0.2 -0.1 -0.2 h+0.1' // 울릉도 좌측에 직선으로 표시한다. */ border?: MapCoord[] | string; /** * inset을 감싸서 구분하는 사각형을 도(°)단위로 지정한다.<br/> * 이 값이 지정되면 {@page border}는 무시된다.<br/> * css padding이나 margin 지정 방식과 동일하게 지정한댜. * 지정된 값은 area의 전체를 포함하는 가상의 사각형과 frame 사이의 간격으로 표시된다.<br/> * ex) '0.05' // 좌위상하 0.05° * '0.05 0.01' // 상하 0.05°, 좌우 0.01° * '0.05 0.01 0.03' // 상 0.05°, 우 0.01°, 하 0.03, 좌 0.01° * '0.05 0.01 0.03 0.02' // 상, 우, 하, 좌 */ frame?: string; /** * border나 frame에 적용할 스타일셋.<br/> * 기본으로 'rm-map-series-inset' 클래스 선택자가 적용된다. */ style?: SVGStyleOrClass; } /** * 본토에서 멀리 떨어진 영역들을 당겨서 표시하는 설정.<br/> * * @css 'rm-map-series-inset' */ interface MapInset extends MapInsetDisplay { /** * inset시킬 area id.<br/> * 이 area가 존재하지 않고, * {@page parent}가 지정되지 않으면 * 자식들을 모두 함께 이동시킨다. */ area: string; /** * 이 area가 존재하지 않고, * {@page parent}가 지정되지 않으면 * 이 속성에 지정된 자식들을 모두 함께 이동시킨다.<br/> * [주의] {@page frame}이나 {@page border}의 기준이 되는 child area의 id를 첫번째 항목으로 설정해야 한다. * [주의] parent 하나에 한 번만 지정할 수 있다. */ children?: string[]; /** * {@page area}가 존재하지 않을 때, * 이 속서에 해당하는 area를 찾아서 {@page polygons}에 해당하는 영역들을 이동시킨다.<br/> * 콤마로 분리해서 둘 이상의 area를 지정할 수 있는데, 순서대로 해당되는 영역이 존재하면 사용한다. */ parent?: string; /** * {@page area}가 존재하지 않고, {@page parent}가 지정됐을 때, * 이 속서에 지정하는 영역덜을 동시에 이동시킨다.<br/> * [주의] {@page frame}이나 {@page border}의 기준이 되는 polygon의 index를 첫번째 항목으로 설정해야 한다. * [주의] {@page parent}가 복수개로 지정되면 이 속성도 [[], [],..] 형태로 복수 개 지정해야 한다. * [주의] parent 하나에 한 번만 지정할 수 있다. */ polygons?: number[] | number[][] | number; } type MapSourceMeta = { license?: { license?: string; author?: string; url?: string; etc?: "차트 최적화를 위해 좌표계 변환 및 Feature Polygon 수정"; }; dokdo?: { group?: string; parent?: number; index?: number; }; dummies?: string[]; }; /** * 맵시리즈에서 사용할 기본 맵을 지정한다.<br/> */ interface MapSource { /** * 맵 이름.<br/> * 차트에 여러 개 맵이 지정될 수 있으며, * 차트 시리즈 등에서 맵을 참조할 때 사용된다. */ name?: string; /** * 명시적 false로 지정하면 차트에서 맵으로 사용되지 않는다.<br/> * * @default true */ enabled?: boolean; /** * @deprecated use {@page source} **/ map?: any; /** * 영역들의 정보가 포함된 지도 데이터 소스.<br/> */ source: any; /** * 외부 {@page source}를 가져올 위치.<br/> */ url?: string; /** * 맵 모델의 area를 구성할 때 area id로 사용할 소스의 속성 이름.<br/> */ idKey?: string; /** * 맵 모델의 area를 구성할 때 area name으로 사용할 소스의 속성 이름.<br/> */ nameKey?: string; /** * 차트 맵 모델을 구성할 때 제외시킬 영역들의 id 목록.<br/> */ exclude?: string[]; insets?: MapInset[]; /** * 맵 상하좌우 주변에 추가할 영역의 크기를 도(°) 단위로 지정한다.<br/> * css padding이나 margin 지정 방식과 동일하게 지정한댜.<br/> */ padding?: string; /** * 지도에 독도에 대한 meta 정보가 있는 경우, * 독도와 울릉도 사이의 거리를 지정한 비율만큼으로 줄이거나 늘여서 표시한다.<br/> * 0 ~ 1 사이의 값으로 원래 간격에 대한 상대 거리를 지정한다. * 0 이하의 값으로 지정하면 dokdo를 표시하지 않는다. * [lon, lat] 형식으로 지정할 수도 있다. */ dokdo?: number | MapCoord; /** * dummy 영역들을 표시할지 여부. */ showDummies?: boolean; /** * @ignore * 로컬 지도가 글로벌 투영좌표계 중앙으로 배치할지 여부. */ useOffset?: boolean | MapCoord; } declare abstract class MapSourceItem { id: string; props: MapProps; constructor(id: string, props: MapProps); } declare class AreaItem extends MapSourceItem { polygon: MapPolygon; polygons: MapPolygon[]; dummy: boolean; } declare abstract class MapSourceImpl extends RmObject { static createStockInset(area: string, display?: MapInsetDisplay): MapInset; readonly name: string; readonly enabled: boolean; readonly idKey: string; readonly nameKey: string; readonly meta: MapSourceMeta; readonly dokdo: number; readonly dummies: string[]; readonly useOffset: boolean | MapCoord; items: MapSourceItem[]; insets: { [area: string]: MapInset; }; paddings: IPaddings; private _excludes; constructor(src: MapSource); included(area: string): boolean; private $_load; protected abstract _doLoad(source: object): MapSourceItem[]; } interface IPoint { x: number; y: number; } interface ISize { width: number; height: number; } /** @internal */ declare class Size { width: number; height: number; static readonly EMPTY: Size; static empty(): Size; static create(w?: number, h?: number): Size; constructor(width?: number, height?: number); /** isEmpty */ get isEmpty(): boolean; clone(): Size; equals(sz: Size): boolean; setEmpty(): Size; set(width: number, height: number): Size; round(): Size; toString(): string; } /** * 기본 설정. <br/> */ interface ChartItemOptions { /** * 표시 여부. * * @default true */ visible?: boolean; /** * 스타일셋 혹은 class selector. * */ style?: SVGStyleOrClass; } /** * 텍스트 표시 효과. * * @enum */ declare const ChartTextEffects: { /** * 효과 없음. */ readonly NONE: "none"; /** * 텍스트 색상과 대조되는 색상으로 텍스트 외곽을 구분 표시한다. */ readonly OUTLINE: "outline"; /** * 텍스트 배경 상자를 표시한다.<br/> * 배경 상자에 {@link backgroundStyle}이 적용된다. * 스타일이 적용되지 않으면 기본 'rm-text-background'이 적용된다. */ readonly BACKGROUND: "background"; }; /** @dummy */ type ChartTextEffect = typeof ChartTextEffects[keyof typeof ChartTextEffects]; interface ChartTextOptions extends ChartItemOptions { /** */ effect?: ChartTextEffect; /** */ lightStyle?: SVGStyleOrClass; /** */ darkStyle?: SVGStyleOrClass; /** */ backgroundStyle?: SVGStyleOrClass; /** * 텍스트가 data point 내부에 표시되는 경우 포인트 색상과 대조되도록 표시한다. * <br> * 밝게 표시할 때는 {@link lightStyle}을 적용하고, * 어둡게 표시할 때는 {@link darkStyle}이 적용된다. * lightStyle이 지정되지 않으면 'rm-text-light'이, * darkStyle이 지정되지 않으면 'rm-text-dark'가 기본 적용된다. * */ autoContrast?: boolean; outlineThickness?: number; /** * label 문자열 앞에 추가되는 문자열. * */ prefix?: string; /** * label 문자열 끝에 추가되는 문자열. * */ suffix?: string; /** * 축의 tick 간격이 1000 이상인 큰 수를 표시할 때 * 이 속성에 지정한 symbol을 이용해서 축약형으로 표시한다. * */ numberSymbols?: string; /** * label이 숫자일 때 표시 형식. * */ numberFormat?: string; /** * rich text format을 지정할 수 있다. * */ text?: string; lineHeight?: number; } /** * @enum */ declare const IconPostions: { readonly DEFAULT: "default"; readonly LEFT: "left"; readonly RIGHT: "right"; readonly TOP: "top"; readonly BOTTOM: "bottom"; }; /** @dummy */ type IconPosition = typeof IconPostions[keyof typeof IconPostions]; interface IconedTextOptions extends ChartTextOptions { /** * @default 'default' */ iconPosition?: IconPosition; imageList?: string; iconRoot?: string; /** * @default 2 */ iconGap?: number; width?: number; height?: number; } /** * DataPointCallbackArgs */ interface DataPointCallbackArgs { series: object; count: number; vcount: number; yMin: number; yMax: number; xMin: number; xMax: number; zMin: number; zMax: number; index: number; vindex: number; x: any; y: any; z: any; xValue: any; yValue: any; zValue: any; labelIndex: number; source: any; } interface AnimationOptions { duration: number; end: () => void; } interface ZoomToAreaOptions { /** * 최소 확대 비율. */ minimumZoom?: number; /** * 최대 확대 비율. */ maximumZoom?: number; } /** * 어노테이션 배치 기준.<br/> * [주의]body에 설정된 annoation에는 적용되지 않는다. * @enum */ declare const _AnnotationScope: { /** * container에서 padding을 적용한 영역을 기준으로 표시한다. * * @config */ readonly CHART: "chart"; /** * container 전체 영역을 기준으로 표시한다. * * @config */ readonly CONTAINER: "container"; }; /** @dummy */ type AnnotationScope = typeof _AnnotationScope[keyof typeof _AnnotationScope]; interface AnnotationAnimationOptions { type: string; duration?: number; } type AnnotationType = 'image' | 'shape' | 'text'; /** * Annotation 모델.<br/> * * @config chart.annotation[base] */ interface AnnotationOptions extends ChartItemOptions { type?: AnnotationType; /** * true로 지정하면 시리즈들 위에 표시된다. * * @default false */ front?: boolean; /** * 어노테이션 이름.<br/> * 동적으로 어노테이션을 다루기 위해서는 반드시 지정해야 한다. */ name?: string; /** * 어노테이션 배치 기준이 되는 차트 구성 요소.<br/> * 현재, 같은 영역(body 혹은 chart)에 포함된 {@link config.base.gauge 게이지}나 다른 어노테이션의 {@link name 이름}을 지정할 수 있다. * */ anchor?: string; /** * 수평 배치.<br/> * * @default 'left' anchor가 지정되면 'center', 아니면 'left' */ align?: Align; /** * 수직 배치.<br/> * * @default top */ verticalAlign?: VerticalAlign; /** * {@link align}과 {@link verticalAlign}으로 지정된 위치에서 실제 표시될 위치의 수평 간격.<br/> * 값이 양수일 때, {@link anchor}가 지정된 경우 anchor 아이템으 밖으로 멀어지고, 아니면 영역 경계 안쪽으로 멀어진다. * 또, {@link anchor}가 지정된 경우 **'0.5w'** 등으로 이 어노테이션의 너비를 기준으로 한 크기로 지정할 수 있다. * * @default 0 */ offsetX?: number | string; /** * {@link align}과 {@link verticalAlign}으로 지정된 위치에서 실제 표시될 위치의 수직 간격.<br/> * 값이 양수일 때, {@link anchor}가 지정된 경우 anchor 아이템으 밖으로 멀어지고, 아니면 영역 경계 안쪽으로 멀어진다. * 또, {@link anchor}가 지정된 경우 **'0.5h'**처럼 이 어노테이션의 너비를 기준으로 한 크기로 지정할 수 있다. * * @default 0 */ offsetY?: number | string; /** * 회전 각도.<br/> * 0 ~ 360 사이의 값으로 지정한다. * */ rotation?: number; /** * 어노테이션 배치 기준.<br/> * [주의]body에 설정된 annoation에는 적용되지 않는다. * * @default 'chart' */ scope?: AnnotationScope; /** * 배경 스타일.<br/> * 경계 및 배경 색, padding 스타일을 지정할 수 있다. * [주의] padding을 style이 아니라 여기서 지정하는 이유: background가 표시되지 않으면 사용자가 padding여부를 알 수 없다. */ backgroundStyle?: SVGStyleOrClass; /** * true로 지정하면 상위 영역을 벗어난 부분도 표시되게 한다.<br/> * body에 포함된 경우 body 영역, * chart에 포함되고 scope이 'chart'일 때 chart 영역. * */ noClip?: boolean; /** * body 어노테이션일 경우, * x 축을 기준으로 지정하는 수평(inverted일 때 수직) 위치.<br/> * chart에 지정된 어노테이션에서는 무시된다. * */ x1?: number | Date; /** * body 어노테이션일 경우, * x 축을 기준으로 지정하는 수평(inverted일 때 수직) 위치.<br/> * chart에 지정된 어노테이션에서는 무시된다. * */ x2?: number | Date; /** * body 어노테이션일 경우, * y 축을 기준으로 지정하는 수직(inverted일 때 수평) 위치.<br/> * chart에 지정된 어노테이션에서는 무시된다. * */ y1?: number | Date; /** * body 어노테이션일 경우, * y 축을 기준으로 지정하는 수직(inverted일 때 수평) 위치.<br/> * chart에 지정된 어노테이션에서는 무시된다. * */ y2?: number | Date; /** * Annotation 너비.<br/> * 픽셀 단위의 고정 값이나, plot 영역에 대한 상태 크기롤 지정할 수 있다. * */ width?: PercentSize; /** * Annotation 높이.<br/> * 픽셀 단위의 고정 값이나, plot 영역에 대한 상태 크기롤 지정할 수 있다. * */ height?: PercentSize; } declare const ImageAnnotationType = "image"; /** * 이미지 어노테이션.<br/> * {@page op.AnnotationOptions#type}은 'image'이다.<br/> * * // TODO #fiddle annotation/image-annotation Image Annotation * @css 'rm-image-annotation' * @config chart.annotation[type=image] */ interface ImageAnnotationOptions extends AnnotationOptions { type?: typeof ImageAnnotationType; /** * true로 설정되고 {@link url}이 설정된 경우에만 표시된다. * * @default true */ visible?: boolean; /** * 이미지 경로. * */ imageUrl?: string; } declare const ShapeAnnotationType = "shape"; /** * Shape Annotation 모델. * {@page op.AnnotationOptions#type}은 'shape'이다.<br/> * {@page shape} 속성에 표시할 도형 모양을 지정하거나, * {@page path}에 SVG path를 직접 지정할 수 있다. * * // TODO #fiddle annotation/shape-annotation Shape Annotation * @css 'rm-shape-annotation' * @config chart.annotation[type=shape] */ interface ShapeAnnotationOptions extends AnnotationOptions { type?: typeof ShapeAnnotationType; /** * @default 64 */ width?: number; /** * @default 64 */ height?: number; /** * Shape 종류. * * circle: 원 * diamond: 다아이몬드 * square: 정사각형 * triangle: 삼각형 * star: 별 모양 * itriangle: * rectangle: 사각형 * * @default 'square' */ shape?: 'circle' | 'diamond' | 'square' | 'triangle' | 'star' | 'itriangle' | 'rectangle'; /** * Shape path. * 이 속성이 지정되면 {@link shape}는 무시된다. */ path?: string; series?: string; xRange?: number[]; yRange?: number[]; } declare const TextAnnotationType = "text"; /** * 텍스트 어노테이션.<br/> * {@page op.AnnotationOptions#type}은 'text'이다.<br/> * * // TODO #fiddle annotation/text-annotation Text Annotation * @css 'rm-text-annotation' * @config chart.annotation[type=text] */ interface TextAnnotationOptions extends AnnotationOptions { type?: typeof TextAnnotationType; /** * true로 설정되고 {@link text}가 설정된 경우에만 표시된다. * * @default true */ visible?: boolean; /** * 표시할 텍스트. * * @default 'Text' */ text?: string; /** * {@link text}에 동적으로 전달되는 값이 숫자일 때 사용되는 표시 형식. * */ numberFormat?: string; /** * {@link text}에 동적으로 전달되는 값이 Date일 때 사용되는 표시 형식. * */ timeFormat?: string; /** * 텍스트를 가로 또는 세로로 배치할지 여부와 블록이 진행되는 방향을 지정한다. * * @config */ writingMode?: WritingMode; /** * 텍스트 문자 방향을 지정한다. * 세로 모드의 텍스트에만 적용된다. * * @config */ textOrientation?: TextOrientation; } type AnnotationOptionsType = ImageAnnotationOptions | ShapeAnnotationOptions | TextAnnotationOptions; /** @internal */ declare class Color { private static readonly COLORS; static create(color?: string): Color | undefined; static isBright(color: string): boolean; static getContrast(color: string, darkColor?: string, brightColor?: string): string; static interpolate(color1: Color, color2: Color, rate: number): Color; private r; private g; private b; private a; constructor(color?: string); get rgba(): string; isBright(): boolean; getContrast(darkColor: string, brightColor: string): string; brighten(rate: number, color?: Color): Color; toString(): string; private $_parseRgb; private $_parseNumber; } /** * @internal * * //TODO: Intl.DateTimeFormat 사용할 것. */ declare class DatetimeFormatter { private static readonly Formatters; static getFormatter(format: string): DatetimeFormatter; static get Default(): DatetimeFormatter; private _format; private _baseYear; private _preserveTime; private _tokens; private _hasAmPm; private _formatString; constructor(format: string); /** format */ get format(): string; /** formatString */ get formatString(): string; set formatString(value: string); toStr(date: Date, startOfWeek: number): string; private parseDateFormatTokens; private parse; } /** * @internal * * 'as,0.0#' * NOTE: 'a'는 bigint에 사용할 수 없다. */ declare class NumberFormatter { static readonly DEFAULT_FORMAT = ""; private static readonly Formatters; static getFormatter(format: string): NumberFormatter; static get Default(): NumberFormatter; private _format; private _options; constructor(format: string); get format(): string; toStr(value: number | bigint): string; toStrEx(value: number | bigint, roundingMode: 'trunc' | 'ceil'): string; private $_parse; } interface IRect { x: number; y: number; width: number; height: number; } declare const createRect: (x: number, y: number, width: number, height: number) => IRect; declare function rectToSize(r: IRect): ISize; declare function isEmptyRect(r: IRect): boolean; /** @internal */ declare class Rectangle { x: number; y: number; width: number; height: number; static readonly Empty: Rectangle; static Temp: Rectangle; static create(x: any, y?: number, width?: number, height?: number): Rectangle; constructor(x?: number, y?: number, width?: number, height?: number); /** left */ get left(): number; set left(value: number); /** right */ get right(): number; set right(value: number); /** top */ get top(): number; set top(value: number); /** bottom */ get bottom(): number; set bottom(value: number); /** isEmpty */ get isEmpty(): boolean; get isValid(): boolean; clone(): Rectangle; getInner(): Rectangle; equals(r: Rectangle): boolean; leftBy(delta: number): Rectangle; rightBy(delta: number): Rectangle; topBy(delta: number): Rectangle; bottomBy(delta: number): Rectangle; shrink(dx: number, dy: number): Rectangle; expand(dx: number, dy: number): Rectangle; contains(x: number, y: number): boolean; setEmpty(): Rectangle; move(x?: number, y?: number): Rectangle; set(x: number, y: number, width: number, height: number): Rectangle; setWidth(value: number): Rectangle; copy(r: Rectangle): Rectangle; copyHorz(r: Rectangle): Rectangle; copyVert(r: Rectangle): Rectangle; inflate(left?: number, top?: number, right?: number, bottom?: number): Rectangle; offset(dx: number, dy: number): Rectangle; round(): Rectangle; union(r: Rectangle): Rectangle; normalize(): Rectangle; toString(): string; } /** @internal */ declare class Sides { top: number; bottom: number; left: number; right: number; static readonly Empty: Readonly<Sides>; static Temp: Sides; static create(top: number, bottom?: number, left?: number, right?: number): Sides; static createFrom(value: string): Sides; constructor(top?: number, bottom?: number, left?: number, right?: number); clone(): Sides; applyPadding(cs: CSSStyleDeclaration): Sides; applyMargin(cs: CSSStyleDeclaration): Sides; shrink(r: IRect): IRect; toString(): string; } /** * @internal * * 값이 문자형일 때 텍스트 변경 형식. * 세미콜론(;)으로 구분되는 형식. 두개의 문자열은 각각 String.prototype.replace의 매개변수가 된다. * 예) 사업자번호: '(\\d{3})(\\d{2})(\\d{5});$1-$2-$3' */ declare class TextFormatter { private static readonly Formatters; static getFormatter(format: string): TextFormatter; private _format; private _pattern; private _replace; constructor(format: string); get format(): string; toStr(text: string): string; $_parse(fmt: string): void; } /** * 차트 내보내기 설정 모델 * @config chart.exporting */ interface ExporterOptions extends ChartItemOptions { /** * 내보내기 버튼 표시 여부 지정 */ visible?: boolean; /** * 내보내기 버튼을 사용해 내보낸 차트에 사용할 확장자 없는 파일 이름.\ * 'export' 함수를 호출할 때 fileName을 지정하지 않을 경우 이 속성이 적용된다. * fileName을 지정하지 않을 경우 realmap.type으로 다운로드 된다. * */ fileName?: string; /** * 내보내기를 라이브러리를 사용하여 진행할지 여부 지정 */ useLibrary?: boolean; /** * 내보내기 메뉴에 포함할 export types */ menus?: ExportType[]; /** * 너비, 지정한 너비에 맞춰 높이가 결정된다. */ width?: number; /** * 이미지의 scale */ scale?: number; /** * 내보내기 도중 에러가 발생했을 때 처리할 서버 URL.\ * 지정하지 않을경우 realmap 서버에서 처리한다. */ url?: string; /** * true로 지정하면 내보내기 결과에 {@page config.axis.scrollBar AxisScrollBarOptions}가 포함되지 않는다. */ hideScrollbar?: boolean; /** * true로 지정하면 내보내기 결과에 {@page config.seriesNavigator SeriesNavigator}가 포함되지 않는다. */ hideNavigator?: boolean; /** * true로 지정하면 내보내기 결과에 {@page config.body.zoomButton ZoomButtonOptions}가 포함되지 않는다. */ hideZoomButton?: boolean; } /** * @enum */ declare const _ExportType: { /** @config */ readonly PNG: "png"; /** @config */ readonly JPEG: "jpeg"; /** @config */ readonly SVG: "svg"; /** @config */ readonly PDF: "pdf"; /** @config */ readonly PRINT: "print"; }; /** @dummy */ type ExportType = typeof _ExportType[keyof typeof _ExportType]; /** * 내보내기 옵션. */ interface ExportOptions { /** * 내보낸 차트에 사용할 확장자.\ * type을 지정하지 않을 경우 png로 내보내기 된다.\ * @config * // @TODO https://github.com/realgrid/realreport-chart/issues/549 */ type?: ExportType; /** * 내보낸 차트에 사용할 확장자 없는 파일명. * fileName을 지정하지 않을 경우 realmap.type으로 다운로드 된다. * @config */ fileName?: string; } /** * 외부 모듈로 구현되는 차트 내보내기 기능 명세. */ interface ChartExporter { exportToImage: (dom: HTMLElement, options: ExportOptions, config: ExporterOptions) => void; exportToPrint: (dom: HTMLElement, options: ExportOptions) => void; isContextMenuVisible: () => boolean; toggleContextMenu: () => void; } /** * @enum */ declare const _Shapes: { /** * 원 */ readonly CIRCLE: "circle"; /** * 다아이몬드 */ readonly DIAMOND: "diamond"; /** * 정사각형 */ readonly SQUARE: "square"; /** * 삼각형 */ readonly TRIANGLE: "triangle"; /** * 별 모양 */ readonly STAR: "star"; /** * 역삼각형 */ readonly ITRIANGLE: "itriangle"; /** * 사각형 */ readonly RECTANGLE: "rectangle"; }; /** @dummy */ type Shape = typeof _Shapes[keyof typeof _Shapes]; type AssetTypes = 'colors' | 'images' | 'lineargradient' | 'radialgradient'; interface AssetItemOptions { type?: AssetTypes; /** * 에셋 id.<br/> * 시리즈나 축에서 이 에셋 항목을 참조할 때 사용하는 키로서 * 차트 내에서 유일한 문자열로 반드시 지정해야 한다. * */ id: string; } interface GradientOptions extends AssetItemOptions { /** * 색을 배열로 지정하거나, * 끝 값을 'white'로 전제하고 시작 색 값 하나만 지정할 수 있다. * */ color: string[] | string; /** * 0에서 1사이의 불투명도.<br/> * 지정하지 않거나 타당한 값이 아니면 1(완전 불투명)로 적용한다. * 또는, 불투명도를 배열로 지정할 수도 있다. * */ opacity?: number[] | number; } /** * 시작점과 끝점 사이에 색상이 서서히 변경되는 효과를 표시한다.<br/> * 채우기 색이나 선 색으로 사용될 수 있다. * * @config chart.asset[type=lineargradient] */ interface LinearGradientOptions extends GradientOptions { /** * * @default 'down' */ dir?: 'down' | 'up' | 'right' | 'left'; } /** * 원 중심에서 바깥으로 색상이 변해가는 효과를 표시한다.<br/> * 채우기 색이나 선 색으로 사용될 수 있다. * * @config chart.asset[type=radialgradient] */ interface RadialGradientOptions extends GradientOptions { /** * gradient가 끝나는 원의 x 좌표. */ cx?: number | string; /** * gradient가 끝나는 원의 y 좌표. */ cy?: number | string; /** * gradient가 끝나는 원의 반지름. */ r?: number | string; } /** * 도형 패턴을 지정해서 채우기(fill) 색상 대신 사용할 수 있다.<br/> */ interface PatternOptions extends AssetItemOptions { /** * 문자열로 지정하면 path 'd', 숫자로 지정하면 stock pattern index. */ pattern: string | number; /** * 지정하지 않으면 {@link height}나 20 pixels. */ width?: number; /** * 지정하지 않으면 {@link widths}나 20 pixels. */ height?: number; style?: SVGStyles; backgroundStyle?: SVGStyles; transform?: string; } interface Image { name?: string; url: string; } interface ImageListOptions extends AssetItemOptions { rootUrl?: string; width?: number; height?: number; images: (Image | string)[]; } /** * normal: 순서대로 가져오고 끝에 도달하면 처음으로 돌아간다. * * shuffle: 첫 색상을 가져오기 전 항목들을 섞는다. * * random: 임의 위치의 색상을 가져온다. * */ type PaletteMode = 'normal' | 'shuffle' | 'random'; /** * 색상 목록을 미리 지정하고 {@link config.base.series#pointcolors} 등에 적용할 수 있다.<br/> * 목록에서 색상을 꺼내오는 방식은 {@link mode} 속성으로 지정한다. * * @config chart.asset[type=colors] */ interface ColorListOptions extends AssetItemOptions { /** * 색상 목록에서 색을 꺼내오는 방식. * * @default PaletteMode.NORMAL */ mode?: PaletteMode; /** * 색상 목록. * */ colors?: string[]; } type AssetOptionsType = LinearGradientOptions | RadialGradientOptions | PatternOptions | ColorListOptions | ImageListOptions; /** * @enum */ declare const _ClickAction: { readonly NONE: "none"; readonly SELECT: "select"; /** * 차트가 zoom 가능한 상태일 때 zoom-in 한다. */ readonly ZOOM: "zoom"; /** * 표시된 지도 크기가 표시 영역보다 클 때, * 클릭한 위치가 표시 중앙이 되도록 한다. */ readonly CENTER: "center"; /** * 클릭한 영역이 포함된 맵시리즈가 drilldown 가능한 상태일 때, * drilldown을 실해하고 클릭한 영역의 상세가 표시되도록 한다.<br/> */ readonly DRILLDOWN: "drilldown"; /** * drilldow이 가능한 상태면 drilldown하거나, * 아니면 zoom-in 한다. */ readonly DRILL_OR_ZOOM: "drillOrZoom"; }; /** @dummy */ type ClickAction = typeof _ClickAction[keyof typeof _ClickAction]; /** * @enum */ declare const _DblClickAction: { readonly NONE: "none"; readonly SELECT: "select"; /** * 차트가 zoom 가능한 상태일 때 zoom-in 한다. */ readonly ZOOM: "zoom"; /** * 표시된 지도 크기가 표시 영역보다 클 때, * 클릭한 위치가 표시 중앙이 되도록 한다. */ readonly CENTER: "center"; /** * 더블클릭한 영역이 포함된 맵시리즈가 drilldown 가능한 상태일 때, * drilldown을 실해하고 클릭한 영역의 상세가 표시되도록 한다.<br/> */ readonly DRILLDOWN: "drilldown"; /** * drilldow이 가능한 상태면 drilldown하거나, * 아니면 zoom-in 한다. */ readonly DRILL_OR_ZOOM: "drillOrZoom"; }; /** @dummy */ type DblClickAction = typeof _DblClickAction[keyof typeof _DblClickAction]; declare const _DragAction: { /** * 구 지도이면 회전하고, 스크롤 가능한 세계지도면 스크롤하고, 아니면 지도를 이동(pan) 시킨다.<br/> */ readonly DEFAULT: "default"; /** * 드래그로 결정된 영역에 포함된 area들을 선택한다.<br/> * ctrl/cmd 키가 눌러진 상태가 아니면 기존 선택은 취소된다. */ readonly SELECT: "select"; /** * 드래그로 결정된 영역이 화면을 채우도록 zoom-in 한다.<br/> */ readonly ZOOM: "zoom"; }; type DragAction = typeof _DragAction[keyof typeof _DragAction]; /** * 차트 전체에 영향을 미치는 옵션들.<br /> * * @config chart.chart */ interface ChartOptionsOptions extends ChartItemOptions { /** * false가 아닌 경우 첫번째 시리즈가 'map' 시리즈가 아니면 내부적으로 자동 추가한다.<br/> * * @default true */ alwaysMap?: boolean; /** * 맵 영역 등을 클릭하거나 tap했을 때 실행될 action.<br/> * * @default 'default' */ clickAction?: ClickAction; /** * 맵 영역 등을 더블 클릭하거나 더블 tap했을 때 실행될 action.<br/> * * @default 'zoom' */ dblClickAction?: DblClickAction; /** * 마우스 드래그 시 실행될 action.<br/> * * @default 'none' */ dragAction?: DragAction; /** * 맵차트 컨트롤의 배경 div 속성을 지정한다.<br/> * 스타일 속성은 svg가 아니라 html css 속성들로 지정한다. */ backgroundStyle?: CSSStyles; /** * 선택 변경 시 호출되는 콜백.<br/> */ onSelectionChanged?: (args: any) => void; } /** * 차트 제목(title) 설정 모델.<br/> * 기본적으로 차트 중앙 상단에 표시되지만 {@link align}, {@link verticalAlign} 등으로 위치를 변경할 수 있다.<br/> * * {@page guide.title 타이틀 개요} 페이지를 참조한다. * @config chart.title */ interface TitleOptions extends ChartItemOptions { /** * true로 설정되고 {@page text}가 비어 있지 않은 텍스트로 설정된 경우에 표시된다. * * @default true */ visible?: boolean; /** * 제목 텍스트.<br/> * * @default 'Title' */ text?: string; /** * 정렬 기준.<br/> * 시리즈들이 그려지는 plotting 영역이나, * 차트 전체 영역을 기준으로 할 수 있다. * 또, {@link config.subtitle 부제목}인 경우 제목을 기준으로 위치를 지정할 수 있다. * * @default 'map' */ alignBase?: AlignBase; /** * 수평 정렬.<br/> * * @default 'center' */ align?: Align; /** * 수직 정렬.<br/> * * @default 'middle' */ verticalAlign?: VerticalAlign; /** * 배경 {@page it.SVGStyles 스타일셋} 또는 css {@page https://developer.mozilla.org/ko/docs/Web/CSS/CSS_selectors selector}. */ backgroundStyle?: SVGStyleOrClass; /** * 주 제목과 부 제목이 표시되는 영역과 차트 본체 등 과의 간격을 픽셀 단위로 지정한다.<br/> * 주 제목이 표시되면 (부 제목의 값은 무시되고)주 제목의 값을 사용하고, * 부 제목만 표시될 때는 부 제목의 값을 사용한다. * * @default 10 */ gap?: number; } /** * 부제목 표시 위치. * @enum */ declare const _SubtitlePosition: { /** * 주제목 아래쪽에 표시.<br/> */ readonly BOTTOM: "bottom"; /** * 주제목 오른쪽에 표시.<br/> */ readonly RIGHT: "right"; /** * 주제목 왼쪽에 표시.<br/> */ readonly LEFT: "left"; /** * 주제목 위쪽에 표시.<br/> */ readonly TOP: "top"; }; /** @dummy */ type SubtitlePosition = typeof _SubtitlePosition[keyof typeof _SubtitlePosition]; /** * 차트 제목 주위에 표시되는 부제목 옵션.<br/> * 기본적으로 주제목(title)의 설정을 따르고, 몇가지 속성들이 추가된다.<br/> * 별도 설정이 없으면 표시되지 않는다. * * ```js * const config = { * title: {}, * subtitle: { * visible: true, * text: '출처: UN Data, 2020', * }, * }; * ``` * * {@page guide.title 제목 개요} 페이지를 참조한다. * * @config chart.subtitle */ interface SubtitleOptions extends TitleOptions { /** * 부제목 표시 위치.<br/> * * @default 'bottom' */ position?: SubtitlePosition; /** * 주 제목과 사이의 간격을 픽셀 단위로 지정한다.<br/> * * @default 2 */ titleGap?: number; /** * @default '' */ text?: string; /** * @default 'bottom' */ verticalAlign?: VerticalAlign; } /** * 차트 개발 제작자 등을 표시하는 * 크레딧 영역에 대한 설정 모델. */ interface CreditsOptions extends ChartItemOptions { /** * 제작자 이름 등 표시 텍스트. */ text?: string; /** * 영역을 클릭했을 때 이 속성에 지정한 곳으로 창을 연다. */ url?: string; /** * credits 표시 위치.<br/> * 값을 지정하지 않으면 'bottom'에 표시된다. * * @default 'bottom' */ location?: ChartItemLocation; /** * 수평 배치.<br/> * 값을 지정하지 않으면, 기본값이 {@link location}이 'body'일 때는 'left', * 'top', 'bottom'일 때는 'right'이다. * 그 외는 무시된다. */ align?: Align; /** * 수직 배치.<br/> * 값을 지정하지 않으면, 기본값이 {@link location}이 'body'일 때는 'top', * 'left', 'right'일 때는 'middle'이다. * 그 외는 무시된다. */ verticalAlign?: VerticalAlign; /** * 설정에 따라 정해진 표시 위치에서 떨어진 수평 간격을 픽셀 단위로 지정한다.<br/> * {@page floating}이 true가 아니고, * {@page verticalAlign}이 'middle' 이면서 {@link align}이 'center'가 아닌 경우, * 이 값만큼 수평 영역을 차지한다. * * @default 2 */ offsetX?: number; /** * 설정에 따라 정해진 표시 위치에서 떨어진 수직 간격을 픽셀 단위로 지정한다.<br/> * {@page floating}이 true가 아니고, {@page verticalAlign}이 'middle'이 아닌 경우, * 이 값만큼 수직 영역을 차지한다. * * @default 1 */ offsetY?: number; /** * {@link floating}이 true가 아니고, 중앙이 아닌 곳에 표시될 때, * 차트 나머지 영역과의 간격을 픽셀로 지정한다.<br/> * {@page verticalAlign}이 'middle'이면 수평 간격, 아니면 수직 간격에 적용된다. * * @default 4 */ gap?: number; } /** * 툴팁에 표시할 데이터포인트들을 선택하는 방식.<br/> * * @enum */ declare const TooltipScopes: { readonly HOVER: "hover"; readonly POINT: "point"; readonly GROUP: "group"; readonly AXIS: "axis"; }; /** @dummy */ type TooltipScope = typeof TooltipScopes[keyof typeof TooltipScopes]; /** * 데이터포인트 {@page guide.tooltip Tooltip} 설정 모델. * * @config chart.tooltip */ interface TooltipOptions extends ChartItemOptions { scope?: TooltipScope; html?: string; /** * 툴팁에 표시할 텍스트 형식.<br/> * 시리즈에 {@link config.base.series#tooltiptext tooltipText}가 시리즈 별 tooltip을 제공하지만, * 이 속성이 지정된 경우 우선 사용된다.<br/> * * `${param;default;format}` 형식으로 아래과 같은 변수로 데이터 포인트 및 시리즈 값을 지정할 수 있다. * |변수|설명| * |---|---| * |series|시리즈 이름| * |name|포인트 이름. 포인트가 속한 카테고리 이름이거나, 'x' 속성으로 지정한 값| * |x|'x' 속성으로 지정한 값| * |y|'y' 속성으로 지정한 값| * |xValue|계산된 x값| * |yValue|계산된 y값| * */ text?: string; /** * 목표 지점과 tooltip 사이의 간격. * */ offset?: number; /** * 툴팁이 점진적으로 닫히는 시간을 밀리초 단위로 지정한다. * * @default 700 */ hideDelay?: number; minWidth?: number; minHeight?: number; /** * true이면 툴팁 상자가 마우스 포인터를 따라 다닌다. * <br> * false, true를 명시적으로 지정하지 않으면 시리즈 종류에 따라 자동 설정된다. * ex) pie 시리즈는 true, bar 시리즈는 false가 된다. * */ followPointer?: boolean; /** * 툴팁 텍스트 속 숫자 값이 NaN일 때 대신 표시되는 텍스트. * */ nanText?: string; /** * 툴팁에 표시될 숫자값의 기본 형식.\ * {@link text}예 표시 문자열을 지정할 때 `${yValue;;#,###.0}`와 같은 식으로 숫자 형식을 지정할 수 있다. * */ numberFormat?: string; /** * 툴팁에 표시될 날짜(시간)값의 기본 형식.\ * {@link text}예 표시 문자열을 지정할 때 `${x;;yyyy.MM}`와 같은 식으로 날짜(시간) 형식을 지정할 수 있다. * */ timeFormat?: string; } type ProjectionType = undefined | 'orthographic' | /*'naturealearth' |*/ 'equalearth' | 'miller' | 'mercator'; /** * 실제 지도가 차지한 영역의 background에 표시 설정.<br/> */ interface MapBackgroundOptions extends ChartItemOptions { /** * 표시 여부를 지정한다.<br/> * boolean 값으로 명시적 지정이 없으면 기본값을 따른다. * * @default undefined 구형 프로젝션이면 true, 아니면 false. */ visible?: boolean; /** * 구형 프로젝션일 때 적용할 기본 radial gradient의 색상.<br/> * {@page style} 속성으로 다르게 지정할 수 있다. * * @default 'lightblue' */ globeFill?: string; } /** * zoom, drilldown 패널 base 모델.<br/> */ interface BodyPanelOptions extends ChartItemOptions { /** * body 영역 내에서 panel의 수평 정렬.<br/> * * @default 'left' */ align?: Align; /** * body 영역 내에서 panel의 수직 정렬.<br/> * * @default 'top' */ verticalAlign?: VerticalAlign; /** * body 영역 경계와 panel 사이의 수평 간격.<br/> * * @default 8 픽셀 */ offsetX?: number; /** * body 영역 경계와 panel 사이의 수직 간격.<br/> * * @default 8 픽셀 */ offsetY?: number; /** * 패널에 표시되는 버튼이나 label들 사이의 간격.<br/> * * @default 3 pixel */ itemGap?: number; } interface ZoomButton { label?: string; icon?: string; } /** * zoom 버튼들이 표시되는 패널 설정 모델.<br/> * * @config chart.zoomPanel */ interface ZoomPanelOptions extends BodyPanelOptions { buttons?: ZoomButton[]; /** * 버튼 배치 방향.<br/> * * @default 'vertical' */ direction?: 'vertical' | 'horizontal'; /** * 버튼 클릭 시 증감될 zoom 변경량을 백분율로 지정한다.<br/> * * @default 20 */ zoomStep?: number; /** * 버튼 너비.<br/> * {@page buttonHeight}가 지정되지 않으면 이 속성값과 동일하게 표시된다. * * @default 28 픽셀 */ buttonWidth?: number; /** * 버튼 높이.<br/> * {@page buttonWidth}가 지정되지 않으면 이 속성값과 동일하게 표시된다. * * @default 28 픽셀 */ buttonHeight?: number; /** * 원래 크기 상태로 변경하는 버튼 표시 여부.<br/> * * @default true */ showReset?: boolean; /** * 버튼들에 적용할 스타일셋.<br/> */ buttonStyle?: SVGStyleOrClass; /** * @default 'left' */ align?: Align; /** * @default 'bottom' */ verticalAlign?: VerticalAlign; /** * true로 지정하면 맵이 zoom되지 않은 상태일 때도 표시한다.<br/> * 물론 {@page visible}이 false이면 이 속성과 무관하게 표시되지 않는다. * * @default true */ showAlways?: boolean; } /** * @enum */ declare const _DrilldownPanelType: { /** * 전후 이동 버튼을 표시한다. */ readonly BUTTON: "button"; /** * 진행된 시리즈들의 이름을 표시한다. */ readonly TEXT: "text"; }; /** @dummy */ type DrilldownPanelType = typeof _DrilldownPanelType[keyof typeof _DrilldownPanelType]; /** * drilldown 버튼들이 표시되는 패널 설정 모델.<br/> * * @config chart.drilldownPanel */ interface DrilldownPanelOptions extends BodyPanelOptions { /** * @default 'text' */ type?: DrilldownPanelType; /** * @default 'left' */ align?: Align; /** * @default 'top' */ verticalAlign?: VerticalAlign; } type IOnHoverAreaParam = { area: any; oldArea: any; }; type IOnClickAreaParam = { area: any; }; type IOnZoomChanged = { zoom: number; oldZoom: number; }; /** * 차트 본체(body) 설정 모델.<br/> * 투영 옵션과 지도 제어 옵션들을 설정할 수 있다.<br/> * @config chart.body */ interface BodyOptions extends ChartItemOptions { /** * 지도 투영 옵션.<br/> * 투영 기법에 따라 지도 표시 방식이 달라진다.<br/> */ projection?: ProjectionType; mapBackground?: MapBackgroundOptions; /** * zoom 버튼들이 표시되는 패널 설정 모델.<br/> */ zoomPanel?: ZoomPanelOptions | boolean; /** * 드릴다운 경로를 표시하는 panel 설정 모델.<br/> */ drilldownPanel?: DrilldownPanelOptions | boolean; /** * 사용자가 마우스 wheel이나 zoom panel을 이용해 {@page zoom}을 변경할 수 있는 지 여부.<br/> * * @default false */ zoomable?: boolean; /** * zoom 상태를 백분율로 지정한다.<br/> * 100이면 원래 크기대로 표시한다. * * @default 100 */ zoom?: number; /** * 사용자가 zoom 패널 등으로 변경할 수 있는 최대 zoom.<br/> * @default 1000 */ maxZoom?: number; /** * 마우스 휠로 zooming할 때 이 속성에 지정한 값에 따라 wheel 변화량을 계산한다.<br/> * 큰 값을 지정할 수록 작게 변화한다. * * @default 4 */ wheelZoomFactor?: number; /** * 'orthgraphic' 투영이 아닌 경우 true로 지정하면 좌우 스크롤로 지도 중심점을 변경할 수 있다.<br/> * 지도 데이터가 세계 전체 지도일 때만 적용된다. * * @default false */ scrollable?: boolean; /** * {@page scrollable}이 true인 경우 도(°) 단위 좌우 스크롤 크기.<br/> * 0보다 큰 값이면 중점이 아시아쪽으로 이동한다. */ scroll?: number; /** * 지도 중심으로부터 경도상으로 벗어난 지도 단위 크기. 양수이면 왼쪽으로 스크롤 된 상태 */ panX?: number; /** * 지도 중심으로부터 위도상으로 벗어난 지도 단위 크기. 양수이면 아래쪽쪽으로 스크롤 된 상태 */ panY?: number; rotationX?: number; rotationY?: number; fit?: any; points?: ([string, number, number] | { id: string; coord?: MapCoord; lon?: number; lat?: number; })[]; onZoomChanged?: (args: IOnZoomChanged) => void; onHoverArea?: (args: IOnHoverAreaParam) => void; onClickArea?: (args: IOnClickAreaParam) => void; /** * body 영역 내에 표시되는 어노테이션 옵션.<br/> * 옵션 객체 또는 옵션 객체 배열로 여러 어노테이션을 설정할 수 있다.<br/> * [주의] 이전 버전의 설정을 로드하기 위해, 이 속성이 지정되지 않고 'annotations' 설정이 존재하면 load 후 이 속성으로 설정한다. */ annotations?: AnnotationOptionsType | AnnotationOptionsType[]; } interface BackgroundImageOptions extends ChartItemOptions { url?: string; } /** * 컬러, 버블 스케일 등의 스케일 기반 설정.<br/> */ interface ScaleOptions extends ChartItemOptions { /** * 시리즈에서 참조하는 스케일 이름.<br/> */ name?: string; /** * {@page minValue}나 {@page maxValue}를 지정하지 않는 경우 범위 기준값을 계산할 시리즈의 이름.<br /> * 이 속성을 지정하지 않으면 첫 번째 map 시리즈의 범위를 계산한다. */ series?: string; /** * scale 표시 위치.<br/> */ location?: ChartItemLocation; /** * 수평 배치.<br/> * 값을 지정하지 않으면, 기본값이 {@link location}이 'body'일 때는 'left', * 'left', 'right'일 때는 'center'이다. */ align?: Align; /** * 수직 배치.<br/> * 값을 지정하지 않으면, 기본값이 {@link location}이 'body'일 때는 'top', * 'top', 'bottom'일 때는 'middle'이다. */ verticalAlign?: VerticalAlign; /** * 범례와 body 혹은 차트 경계 사이의 수평 간격.<br/> * * @default 0 */ offsetX?: number; /** * 범례와 body 혹은 차트 경계 사이의 수직 간격.<br/> * * @default 0 */ offsetY?: number; } /** * @enum */ declare const _ColorScaleLayout: { /** * color scale이 차트 좌우에 배치되면 item들을 수직으로 배치하고, * color scale이 차트 상하에 배치되면 item들을 수평으로 배치한다. */ readonly AUTO: "auto"; /** * item들을 수평으로 배치한다. */ readonly HORIZONTAL: "horizontal"; /** * item들을 수직으로 배치한다. */ readonly VERTICAL: "vertical"; }; /** @dummy */ type ColorScaleLayout = typeof _ColorScaleLayout[keyof typeof _ColorScaleLayout]; /** * @enum */ declare const ColorScaleDisplays: { /** * scale bar로 표시한다.<br/> */ readonly SCALE: "scale"; /** * legend 항목들로 표시한다.<br/> */ readonly LEGEND: "legend"; /** * scale bar와 legend에 동시 표시한다.<br/> */ readonly BOTH: "both"; }; /** @dummy */ type ColorScaleDisplay = typeof ColorScaleDisplays[keyof typeof ColorScaleDisplays]; /** * 현재 값 위치를 표시하는 color scale 마커 옵션.<br/> */ interface ColorScaleMarkerOptions extends ChartItemOptions { size?: number; label?: ChartTextOptions; } /** * color scale 내부에서 step을 구분하는 라인 옵션<br/> */ interface ColorScaleStepLineOptions extends ChartItemOptions { } /** * 색상 스텝을 구분하는 color scale 틱 라인 옵션.<br/> */ interface ColorScaleTickLineOptions extends ChartItemOptions { /** * @default 6 */ length?: number; } /** * 색상 스텝을 구분하는 color scale 틱 라벨 옵션.<br/> */ interface ColorScaleTickLabelOptions extends IconedTextOptions { /** * 라벨 표시 위치 및 내용.<br/> * - 'tick' - tick 라인 아래 값을 표시한다. * - 'between' - tick 사이의 중간에 해당 stop의 name을 표시한다. scale에 steps가 지정되지 않으면 무시된다. * * @default 'tick' */ position?: 'tick' | 'between'; /** * @default 4 */ offset?: number; minText?: string; maxText?: string; } /** * 색상 스텝을 구분하는 color scale 틱 라인 및 라벨 옵션.<br/> * marker 반대편에 표시된다. */ interface ColorScaleTickOptions extends ChartItemOptions { line?: ColorScaleTickLineOptions; label?: ColorScaleTickLabelOptions; } interface ColorScaleStep { /** * 첫 step인 경우 설정하지 않으면 {@page steps.minValue}로 지정된다.<br /> * 숫자나 '%'로 끝나는 백분율로 지정할 수 있다. */ from?: number | string; /** * 마지막 step인 경우 설정하지 않으면 {@page steps.maxValue}로 지정된다.<br /> * 숫자나 '%'로 끝나는 백분율로 지정할 수 있다. */ to?: number | string; /** * 구간 label.<br/> */ label: string; /** * 구간 색상.<br/> * {@page fromColor}를 지정하면 이 step에 포함된 영역의 값에 따라 두 색상 사이의 중간 색상으로 표시된다.<br/> * '%'로 끝나는 백분율을 지정하면 {@page minColor}와 {@page maxColor} 사이의 중간 색상으로 설정할 수 있다. */ color: string; /** * 이 속성 값이 지정되면 {@page toColor}나 {@page color} 값 사이의 색상으로 데이터포인트의 색상이 결정된다.<br/> * '%'로 끝나는 백분율을 지정하면 {@page minColor}와 {@page maxColor} 사이의 중간 색상으로 설정할 수 있다. */ fromColor?: string; /**