billboard.js
Version:
Re-usable easy interface JavaScript chart library, based on D3 v4+
168 lines (149 loc) • 3.26 kB
text/typescript
/**
* Copyright (c) 2017 ~ present NAVER Corp.
* billboard.js project is licensed under the MIT license
*/
/**
* State class.
* @class State
* @ignore
* @private
*/
export default class State {
constructor() {
return {
// chart drawn area dimension, excluding axes
width: 0,
width2: 0,
height: 0,
height2: 0,
margin: {
top: 0,
bottom: 0,
left: 0,
right: 0
},
margin2: {
top: 0,
bottom: 0,
left: 0,
right: 0
},
margin3: {
top: 0,
bottom: 0,
left: 0,
right: 0
},
arcWidth: 0,
arcHeight: 0,
xAxisHeight: 0,
hasAxis: false,
hasFunnel: false,
hasRadar: false,
hasTreemap: false,
// for data CSS rule index (used when boost.useCssRule is true)
cssRule: {},
current: {
// current domain value. Assigned when is zoom is called
domain: undefined,
// chart whole dimension
width: 0,
height: 0,
dataMax: 0,
maxTickSize: {
x: {
width: 0,
height: 0,
ticks: <(number | string)[]>[],
clipPath: 0,
domain: ""
},
y: {width: 0, height: 0, domain: ""},
y2: {width: 0, height: 0, domain: ""}
},
// current used chart type list
types: <string[]>[],
needle: undefined // arc needle current value
},
// legend
isLegendRight: false,
isLegendInset: false,
isLegendTop: false,
isLegendLeft: false,
legendStep: 0,
legendItemWidth: 0,
legendItemHeight: 0,
legendHasRendered: false,
eventReceiver: {
currentIdx: -1, // current event interaction index
rect: {}, // event rect's clientBoundingRect
data: [], // event data bound of previoous eventRect
coords: [] // coordination value of previous eventRect
},
axis: {
x: {
padding: {left: 0, right: 0},
tickCount: 0
}
},
rotatedPadding: {
left: 30,
right: 0,
top: 5
},
withoutFadeIn: {},
inputType: "",
datetimeId: "",
// clip id string
clip: {
id: "",
idXAxis: "",
idYAxis: "",
idXAxisTickTexts: "",
idGrid: "",
idSubchart: "", // clipIdForSubchart
path: "",
pathXAxis: "",
pathYAxis: "",
pathXAxisTickTexts: "",
pathGrid: ""
},
// state
event: null, // event object
dragStart: null,
dragging: false,
flowing: false,
cancelClick: false,
mouseover: false,
rendered: false,
transiting: false,
redrawing: false, // if redraw() is on process
resizing: false, // resize event called
toggling: false, // legend toggle
zooming: false,
hasNegativeValue: false,
hasPositiveValue: true,
orgAreaOpacity: "0.2",
orgConfig: {}, // user original genration config
// ID strings
hiddenTargetIds: <string[]>[],
hiddenLegendIds: <string[]>[],
focusedTargetIds: <string[]>[],
defocusedTargetIds: <string[]>[],
// value for Arc
radius: 0,
innerRadius: <{[key: string]: number} | number>0,
outerRadius: <{[key: string]: number} | number | undefined>undefined,
innerRadiusRatio: 0,
gaugeArcWidth: 0,
radiusExpanded: 0,
// xgrid attribute
xgridAttr: {
x1: <number | null>null,
x2: <number | null>null,
y1: <number | null>null,
y2: <number | null>null
}
};
}
}