@perses-dev/components 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ECharts.d.ts → EChart.d.ts} +3 -4
- package/dist/EChart.d.ts.map +1 -0
- package/dist/EChart.js +1 -0
- package/dist/GaugeChart.js +1 -1
- package/dist/LineChart.d.ts +1 -1
- package/dist/LineChart.d.ts.map +1 -1
- package/dist/LineChart.js +1 -1
- package/dist/StatChart.d.ts.map +1 -1
- package/dist/StatChart.js +1 -1
- package/dist/cjs/EChart.js +154 -0
- package/dist/cjs/GaugeChart.js +3 -3
- package/dist/cjs/LineChart.js +19 -19
- package/dist/cjs/StatChart.js +7 -5
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/tooltip/Tooltip.js +6 -3
- package/dist/cjs/tooltip/focused-series.js +3 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/tooltip/Tooltip.js +1 -1
- package/dist/tooltip/focused-series.d.ts.map +1 -1
- package/dist/tooltip/focused-series.js +1 -1
- package/package.json +1 -1
- package/dist/ECharts.d.ts.map +0 -1
- package/dist/ECharts.js +0 -1
- package/dist/cjs/ECharts.js +0 -103
|
@@ -49,11 +49,10 @@ export declare type OnEventsType<T> = {
|
|
|
49
49
|
export interface EChartsProps<T> {
|
|
50
50
|
option: EChartsCoreOption;
|
|
51
51
|
sx?: SxProps<Theme>;
|
|
52
|
-
onChartInitialized?: (instance: ECharts) => void;
|
|
53
52
|
onEvents?: OnEventsType<T>;
|
|
54
53
|
_instance?: React.MutableRefObject<ECharts | undefined>;
|
|
55
|
-
|
|
54
|
+
onChartInitialized?: (instance: ECharts) => void;
|
|
56
55
|
}
|
|
57
|
-
export declare
|
|
56
|
+
export declare const EChart: React.MemoExoticComponent<(<T>({ option, sx, onEvents, _instance, onChartInitialized, }: EChartsProps<T>) => JSX.Element)>;
|
|
58
57
|
export {};
|
|
59
|
-
//# sourceMappingURL=
|
|
58
|
+
//# sourceMappingURL=EChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EChart.d.ts","sourceRoot":"","sources":["../src/EChart.tsx"],"names":[],"mappings":"AAaA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAQ,MAAM,cAAc,CAAC;AAChE,OAAO,EAAO,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAIpD,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,aAAK,eAAe,CAAC,CAAC,IAAI,CACxB,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAEhC,QAAQ,CAAC,EAAE,OAAO,KACf,IAAI,CAAC;AAEV,QAAA,MAAM,WAAW,0HAUP,CAAC;AAEX,oBAAY,cAAc,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAGxD,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IAGnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IAEpB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,wBAAwB,EAAE,GAAG,yBAAyB,EAAE,CAAC;CACjE;AAED,aAAK,oBAAoB,GAAG,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAEpE,QAAA,MAAM,WAAW,gDAAiD,CAAC;AAEnE,oBAAY,cAAc,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAExD,aAAK,cAAc,GAAG,UAAU,CAAC;AAIjC,oBAAY,YAAY,CAAC,CAAC,IAAI;KAC3B,cAAc,IAAI,cAAc,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;CACxD,GAAG;KACD,cAAc,IAAI,cAAc,CAAC,CAAC,EAAE,oBAAoB;CAC1D,GAAG;KACD,SAAS,IAAI,cAAc,CAAC,CAAC,EAAE,MAAM,IAAI;CAC3C,CAAC;AAEF,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACxD,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAClD;AAED,eAAO,MAAM,MAAM,4HAgEjB,CAAC"}
|
package/dist/EChart.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import React,{useEffect,useLayoutEffect,useRef}from"react";import debounce from"lodash/debounce";import{init}from"echarts/core";import{Box}from"@mui/material";import{isEqual}from"lodash-es";const mouseEvents=["click","dblclick","mousedown","mousemove","mouseup","mouseover","mouseout","globalout","contextmenu"],batchEvents=["datazoom","downplay","highlight"];export const EChart=React.memo((function({option:e,sx:n,onEvents:t,_instance:r,onChartInitialized:o}){const u=useRef(e),s=useRef(e),c=useRef(null),i=useRef(null);return useLayoutEffect((()=>{if(null!==c.current&&null===i.current)return i.current=init(c.current),i.current.setOption(u.current,!0),null==o||o(i.current),void 0!==r&&(r.current=i.current),()=>{null!==i.current&&(i.current.dispose(),i.current=null)}}),[r,o]),useEffect((()=>{void 0===s.current||isEqual(s.current,e)||null!==i.current&&(i.current.setOption(e,!0),s.current=e)}),[e]),useLayoutEffect((()=>{const e=debounce((()=>{null!==i.current&&i.current.resize()}),200);return window.addEventListener("resize",e),e(),()=>{window.removeEventListener("resize",e)}}),[]),useEffect((()=>{const e=i.current;if(null!==e&&void 0!==t)return bindEvents(e,t),()=>{if(void 0!==e&&!0!==e.isDisposed())for(const n in t)e.off(n)}}),[t]),_jsx(Box,{ref:c,sx:n})}));function bindEvents(e,n){var t;if(void 0!==n)for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e)){const o=null!==(t=n[e])&&void 0!==t?t:null;o&&r(e,o)}function r(n,t){"function"==typeof t&&(isMouseEvent(n)?e.on(n,(n=>t(n,e))):isBatchEvent(n)?e.on(n,(e=>t(e))):e.on(n,(()=>t(null,e))))}}function isMouseEvent(e){return mouseEvents.includes(e)}function isBatchEvent(e){return batchEvents.includes(e)}
|
package/dist/GaugeChart.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as _jsx}from"react/jsx-runtime";import{useMemo}from"react";import{use}from"echarts/core";import{GaugeChart as EChartsGaugeChart}from"echarts/charts";import{GridComponent,TitleComponent,TooltipComponent}from"echarts/components";import{CanvasRenderer}from"echarts/renderers";import{formatValue}from"./model/units";import{
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import{useMemo}from"react";import{use}from"echarts/core";import{GaugeChart as EChartsGaugeChart}from"echarts/charts";import{GridComponent,TitleComponent,TooltipComponent}from"echarts/components";import{CanvasRenderer}from"echarts/renderers";import{formatValue}from"./model/units";import{EChart}from"./EChart";use([EChartsGaugeChart,GridComponent,TitleComponent,TooltipComponent,CanvasRenderer]);const noDataOption={title:{show:!0,textStyle:{color:"grey",fontSize:16,fontWeight:400},text:"No data",left:"center",top:"center"},xAxis:{show:!1},yAxis:{show:!1},series:[]};export function GaugeChart(t){const{width:e,height:o,data:i,unit:r,axisLine:a}=t,s=useMemo((()=>null==i?noDataOption:{title:{show:!1},tooltip:{show:!1},series:[{type:"gauge",center:["50%","65%"],radius:"100%",startAngle:200,endAngle:-20,min:0,max:100,splitNumber:12,silent:!0,progress:{show:!0,width:22,itemStyle:{color:"auto"}},pointer:{show:!1},axisLine:{lineStyle:{color:[[1,"#e1e5e9"]],width:22}},axisTick:{show:!1,distance:-28,splitNumber:5,lineStyle:{width:2,color:"#999"}},splitLine:{show:!1,distance:-32,length:6,lineStyle:{width:2,color:"#999"}},axisLabel:{show:!1,distance:-18,color:"#999",fontSize:12},anchor:{show:!1},title:{show:!1},detail:{show:!1},data:[{value:i}]},{type:"gauge",center:["50%","65%"],radius:"114%",startAngle:200,endAngle:-20,min:0,max:100,pointer:{show:!1,itemStyle:{color:"auto"}},axisLine:a,axisTick:{show:!1},splitLine:{show:!1},axisLabel:{show:!1},detail:{show:!0,valueAnimation:!1,width:"60%",borderRadius:8,offsetCenter:[0,"-9%"],fontSize:20,fontWeight:"bolder",color:"inherit",formatter:t=>formatValue(t,{kind:r.kind,decimal_places:0})},data:[{value:i}]}]}),[i,r,a]);return _jsx(EChart,{sx:{width:e,height:o},option:s})}
|
package/dist/LineChart.d.ts
CHANGED
|
@@ -17,6 +17,6 @@ interface LineChartProps {
|
|
|
17
17
|
dataZoomEnabled?: boolean;
|
|
18
18
|
onDataZoom?: (e: ZoomEventData) => void;
|
|
19
19
|
}
|
|
20
|
-
export declare function LineChart(
|
|
20
|
+
export declare function LineChart({ height, data, grid, legend, toolbox, visualMap, dataZoomEnabled, onDataZoom, }: LineChartProps): JSX.Element;
|
|
21
21
|
export {};
|
|
22
22
|
//# sourceMappingURL=LineChart.d.ts.map
|
package/dist/LineChart.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../src/LineChart.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../src/LineChart.tsx"],"names":[],"mappings":";AAiBA,OAAO,KAAK,EAEV,mBAAmB,EAEnB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,SAAS,CAAC;AAiBjB,OAAO,EAAiC,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAyCvF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,SAAS,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;CACzC;AAED,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,OAAO,EACP,SAAS,EACT,eAAe,EACf,UAAU,GACX,EAAE,cAAc,eAqLhB"}
|
package/dist/LineChart.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{useMemo,useRef,useState}from"react";import{Box,useTheme}from"@mui/material";import merge from"lodash/merge";import{use}from"echarts/core";import{LineChart as EChartsLineChart}from"echarts/charts";import{GridComponent,DataZoomComponent,MarkAreaComponent,MarkLineComponent,MarkPointComponent,TitleComponent,ToolboxComponent,TooltipComponent,LegendComponent,VisualMapComponent}from"echarts/components";import{CanvasRenderer}from"echarts/renderers";import{
|
|
1
|
+
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{useMemo,useRef,useState}from"react";import{useDeepMemo}from"@perses-dev/core";import{Box,useTheme}from"@mui/material";import merge from"lodash/merge";import{use}from"echarts/core";import{LineChart as EChartsLineChart}from"echarts/charts";import{GridComponent,DataZoomComponent,MarkAreaComponent,MarkLineComponent,MarkPointComponent,TitleComponent,ToolboxComponent,TooltipComponent,LegendComponent,VisualMapComponent}from"echarts/components";import{CanvasRenderer}from"echarts/renderers";import{EChart}from"./EChart";import{PROGRESSIVE_MODE_SERIES_LIMIT}from"./model/graph-model";import{abbreviateLargeNumber}from"./model/units";import{emptyTooltipData}from"./tooltip/tooltip-model";import{Tooltip}from"./tooltip/Tooltip";use([EChartsLineChart,GridComponent,DataZoomComponent,MarkAreaComponent,MarkLineComponent,MarkPointComponent,TitleComponent,ToolboxComponent,TooltipComponent,LegendComponent,VisualMapComponent,CanvasRenderer]);const noDataOption={title:{show:!0,textStyle:{color:"grey",fontSize:16,fontWeight:400},text:"No data",left:"center",top:"center"},xAxis:{show:!1},yAxis:{show:!1},series:[]};export function LineChart({height:e,data:t,grid:o,legend:r,toolbox:a,visualMap:n,dataZoomEnabled:i,onDataZoom:m}){const s=useTheme(),p=useRef(),[l,d]=useState(!0),h=useMemo((()=>({datazoom:e=>{var o,r;if(void 0===m||void 0===e.batch[0])return;const a=null!==(o=e.batch[0].startValue)&&void 0!==o?o:0,n=null!==(r=e.batch[0].endValue)&&void 0!==r?r:t.xAxis.length-1,i=t.xAxis[a],s=t.xAxis[n];void 0!==i&&void 0!==s&&m({start:i,end:s,startIndex:a,endIndex:n})}})),[t,m]);void 0!==p.current&&!0===i&&p.current.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:!0});const u=useDeepMemo((()=>{if(void 0===t.timeSeries)return{};if(null===t.timeSeries||0===t.timeSeries.length)return noDataOption;const e=t.timeSeries.length<PROGRESSIVE_MODE_SERIES_LIMIT,m={show:!0,top:10,right:10,iconStyle:{borderColor:s.palette.text.primary},feature:{dataZoom:{icon:i?null:void 0,yAxisIndex:"none"},restore:{}},emphasis:{iconStyle:{textFill:s.palette.text.primary}}};return!1===i&&delete m.feature.dataZoom.icon,{title:{show:!1},grid:merge({top:10,right:20,bottom:5,left:20,containLabel:!0},o),toolbox:merge(m,a),series:t.timeSeries,xAxis:{type:"category",data:t.xAxis,max:e=>e.max,axisLabel:{margin:15,color:s.palette.text.primary,formatter:e=>getFormattedDate(e)},axisTick:{show:!1},axisLine:{lineStyle:{color:s.palette.grey[600]}}},yAxis:{type:"value",boundaryGap:[0,"10%"],axisLabel:{margin:12,color:s.palette.text.primary,formatter:e=>abbreviateLargeNumber(e)},splitLine:{show:!0,lineStyle:{width:.5,color:s.palette.grey[300],opacity:.95}}},animation:!1,tooltip:{show:e,trigger:"axis",showContent:!1,axisPointer:{type:"none"}},legend:r,visualMap:n}}),[t,s,o,r,a,i,n]);return _jsxs(Box,{sx:{height:e},onMouseDown:e=>{e.target instanceof HTMLCanvasElement&&d(!1)},onMouseUp:()=>{d(!0)},onMouseLeave:()=>{d(!1)},onMouseEnter:()=>{d(!0)},children:[!0===l&&_jsx(Tooltip,{chartRef:p,tooltipData:emptyTooltipData,chartData:t,wrapLabels:!0}),_jsx(EChart,{sx:{width:"100%",height:"100%"},option:u,onEvents:h,_instance:p})]})}function getFormattedDate(e){return new Intl.DateTimeFormat(void 0,{hour:"numeric",minute:"numeric",hour12:!1}).format(1e3*e)}
|
package/dist/StatChart.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatChart.d.ts","sourceRoot":"","sources":["../src/StatChart.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"StatChart.d.ts","sourceRoot":"","sources":["../src/StatChart.tsx"],"names":[],"mappings":";AAmBA,OAAO,EAAiC,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGjF,OAAO,EAAe,WAAW,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAiC5D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,UAAU,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,eA+J9C"}
|
package/dist/StatChart.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as _jsx}from"react/jsx-runtime";import{useMemo}from"react";import{merge}from"lodash-es";import{use}from"echarts/core";import{GaugeChart as EChartsGaugeChart}from"echarts/charts";import{LineChart as EChartsLineChart}from"echarts/charts";import{GridComponent,DatasetComponent,TitleComponent,TooltipComponent}from"echarts/components";import{CanvasRenderer}from"echarts/renderers";import{formatValue}from"./model/units";import{
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import{useMemo}from"react";import{useTheme}from"@mui/material";import{merge}from"lodash-es";import{use}from"echarts/core";import{GaugeChart as EChartsGaugeChart}from"echarts/charts";import{LineChart as EChartsLineChart}from"echarts/charts";import{GridComponent,DatasetComponent,TitleComponent,TooltipComponent}from"echarts/components";import{CanvasRenderer}from"echarts/renderers";import{formatValue}from"./model/units";import{EChart}from"./EChart";use([EChartsGaugeChart,EChartsLineChart,GridComponent,DatasetComponent,TitleComponent,TooltipComponent,CanvasRenderer]);const noDataOption={title:{show:!0,textStyle:{color:"grey",fontSize:16,fontWeight:400},text:"No data",left:"center",top:"center"},xAxis:{show:!1},yAxis:{show:!1},series:[]};export function StatChart(t){const{width:e,height:o,data:a,unit:r,backgroundColor:i,sparkline:n}=t,s=useTheme(),h=useMemo((()=>{var t;if(void 0===a.seriesData)return{};if(null===a.seriesData||void 0===a.calculatedValue)return noDataOption;const h=a.seriesData,l=null!==(t=a.calculatedValue)&&void 0!==t?t:0,m=e>250,p=!0===m?a.name:"",u=Math.min(e,1.2*o),c=Math.min(u/4*.65,72),d=.5*c,f=[{type:"gauge",data:[{value:l,name:p}],detail:{show:!0,offsetCenter:["0%","-65%"],formatter:[`{name|${p}}`,`{value|${formatValue(l,r)}}`].join("\n"),rich:{name:{padding:!0===m?[0,0,5,0]:0,fontSize:d,lineHeight:2.5*d,fontWeight:500},value:{}}},center:["50%","60%"],animation:!1,silent:!0,title:{show:!1},progress:{show:!1},pointer:{show:!1},axisLine:{show:!1},axisTick:{show:!1},splitLine:{show:!1},axisLabel:{show:!1},anchor:{show:!1},zlevel:2}];if(void 0!==n){const t={type:"line",data:[...h.values],zlevel:1,symbol:"none",animation:!1,lineStyle:{color:"#FFFFFF",opacity:.6},areaStyle:{color:"#FFFFFF",opacity:.3},silent:!0},e=merge(t,n);f.push(e)}return{title:{show:!1},grid:[{show:!0,backgroundColor:i,top:0,right:0,bottom:0,left:0,containLabel:!1,borderWidth:0},{show:!1,top:"45%",right:0,bottom:0,left:0,containLabel:!1}],xAxis:{type:"time",show:!1,boundaryGap:!1,gridIndex:1},yAxis:{type:"value",show:!1,gridIndex:1},tooltip:{show:!1},series:f,textStyle:{color:"transparent"===i?s.palette.text.primary:"#FFFFFF",fontSize:25,lineHeight:18,fontFamily:'"Lato", sans-serif',fontWeight:"bold"},media:[{query:{maxWidth:150},option:{textStyle:{fontSize:12}}},{query:{minWidth:150},option:{textStyle:{fontSize:`max(14px, ${c}px)`,lineHeight:Math.min(16,1.2*c)}}}]}}),[a,o,s,r,e,n,i]);return _jsx(EChart,{sx:{width:e,height:o},option:h})}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.EChart = void 0;
|
|
30
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
31
|
+
// Copyright 2022 The Perses Authors
|
|
32
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
33
|
+
// you may not use this file except in compliance with the License.
|
|
34
|
+
// You may obtain a copy of the License at
|
|
35
|
+
//
|
|
36
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
37
|
+
//
|
|
38
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
39
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
40
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
41
|
+
// See the License for the specific language governing permissions and
|
|
42
|
+
// limitations under the License.
|
|
43
|
+
const react_1 = __importStar(require("react"));
|
|
44
|
+
const debounce_1 = __importDefault(require("lodash/debounce"));
|
|
45
|
+
const core_1 = require("echarts/core");
|
|
46
|
+
const material_1 = require("@mui/material");
|
|
47
|
+
const lodash_es_1 = require("lodash-es");
|
|
48
|
+
const mouseEvents = [
|
|
49
|
+
'click',
|
|
50
|
+
'dblclick',
|
|
51
|
+
'mousedown',
|
|
52
|
+
'mousemove',
|
|
53
|
+
'mouseup',
|
|
54
|
+
'mouseover',
|
|
55
|
+
'mouseout',
|
|
56
|
+
'globalout',
|
|
57
|
+
'contextmenu',
|
|
58
|
+
];
|
|
59
|
+
const batchEvents = ['datazoom', 'downplay', 'highlight'];
|
|
60
|
+
exports.EChart = react_1.default.memo(function EChart({ option, sx, onEvents, _instance, onChartInitialized, }) {
|
|
61
|
+
const initialOption = (0, react_1.useRef)(option);
|
|
62
|
+
const prevOption = (0, react_1.useRef)(option);
|
|
63
|
+
const containerRef = (0, react_1.useRef)(null);
|
|
64
|
+
const chartElement = (0, react_1.useRef)(null);
|
|
65
|
+
// Initialize chart, dispose on unmount
|
|
66
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
67
|
+
if (containerRef.current === null || chartElement.current !== null)
|
|
68
|
+
return;
|
|
69
|
+
chartElement.current = (0, core_1.init)(containerRef.current);
|
|
70
|
+
chartElement.current.setOption(initialOption.current, true);
|
|
71
|
+
onChartInitialized === null || onChartInitialized === void 0 ? void 0 : onChartInitialized(chartElement.current);
|
|
72
|
+
if (_instance !== undefined) {
|
|
73
|
+
_instance.current = chartElement.current;
|
|
74
|
+
}
|
|
75
|
+
return () => {
|
|
76
|
+
if (chartElement.current === null)
|
|
77
|
+
return;
|
|
78
|
+
chartElement.current.dispose();
|
|
79
|
+
chartElement.current = null;
|
|
80
|
+
};
|
|
81
|
+
}, [_instance, onChartInitialized]);
|
|
82
|
+
// Update chart data when option changes
|
|
83
|
+
(0, react_1.useEffect)(() => {
|
|
84
|
+
if (prevOption.current === undefined || (0, lodash_es_1.isEqual)(prevOption.current, option))
|
|
85
|
+
return;
|
|
86
|
+
if (chartElement.current === null)
|
|
87
|
+
return;
|
|
88
|
+
chartElement.current.setOption(option, true);
|
|
89
|
+
prevOption.current = option;
|
|
90
|
+
}, [option]);
|
|
91
|
+
// Resize chart, cleanup listener on unmount
|
|
92
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
93
|
+
const updateSize = (0, debounce_1.default)(() => {
|
|
94
|
+
if (chartElement.current === null)
|
|
95
|
+
return;
|
|
96
|
+
chartElement.current.resize();
|
|
97
|
+
}, 200);
|
|
98
|
+
window.addEventListener('resize', updateSize);
|
|
99
|
+
updateSize();
|
|
100
|
+
return () => {
|
|
101
|
+
window.removeEventListener('resize', updateSize);
|
|
102
|
+
};
|
|
103
|
+
}, []);
|
|
104
|
+
// Bind and unbind chart events passed as prop
|
|
105
|
+
(0, react_1.useEffect)(() => {
|
|
106
|
+
const chart = chartElement.current;
|
|
107
|
+
if (chart === null || onEvents === undefined)
|
|
108
|
+
return;
|
|
109
|
+
bindEvents(chart, onEvents);
|
|
110
|
+
return () => {
|
|
111
|
+
if (chart === undefined)
|
|
112
|
+
return;
|
|
113
|
+
if (chart.isDisposed() === true)
|
|
114
|
+
return;
|
|
115
|
+
for (const event in onEvents) {
|
|
116
|
+
chart.off(event);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
}, [onEvents]);
|
|
120
|
+
return (0, jsx_runtime_1.jsx)(material_1.Box, { ref: containerRef, sx: sx });
|
|
121
|
+
});
|
|
122
|
+
// Validate event config and bind custom events
|
|
123
|
+
function bindEvents(instance, events) {
|
|
124
|
+
var _a;
|
|
125
|
+
if (events === undefined)
|
|
126
|
+
return;
|
|
127
|
+
function bindEvent(eventName, OnEventFunction) {
|
|
128
|
+
if (typeof OnEventFunction === 'function') {
|
|
129
|
+
if (isMouseEvent(eventName)) {
|
|
130
|
+
instance.on(eventName, (params) => OnEventFunction(params, instance));
|
|
131
|
+
}
|
|
132
|
+
else if (isBatchEvent(eventName)) {
|
|
133
|
+
instance.on(eventName, (params) => OnEventFunction(params));
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
instance.on(eventName, () => OnEventFunction(null, instance));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
for (const eventName in events) {
|
|
141
|
+
if (Object.prototype.hasOwnProperty.call(events, eventName)) {
|
|
142
|
+
const customEvent = (_a = events[eventName]) !== null && _a !== void 0 ? _a : null;
|
|
143
|
+
if (customEvent) {
|
|
144
|
+
bindEvent(eventName, customEvent);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function isMouseEvent(eventName) {
|
|
150
|
+
return mouseEvents.includes(eventName);
|
|
151
|
+
}
|
|
152
|
+
function isBatchEvent(eventName) {
|
|
153
|
+
return batchEvents.includes(eventName);
|
|
154
|
+
}
|
package/dist/cjs/GaugeChart.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GaugeChart = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
// Copyright
|
|
5
|
+
// Copyright 2022 The Perses Authors
|
|
6
6
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
7
|
// you may not use this file except in compliance with the License.
|
|
8
8
|
// You may obtain a copy of the License at
|
|
@@ -20,7 +20,7 @@ const charts_1 = require("echarts/charts");
|
|
|
20
20
|
const components_1 = require("echarts/components");
|
|
21
21
|
const renderers_1 = require("echarts/renderers");
|
|
22
22
|
const units_1 = require("./model/units");
|
|
23
|
-
const
|
|
23
|
+
const EChart_1 = require("./EChart");
|
|
24
24
|
(0, core_1.use)([charts_1.GaugeChart, components_1.GridComponent, components_1.TitleComponent, components_1.TooltipComponent, renderers_1.CanvasRenderer]);
|
|
25
25
|
const noDataOption = {
|
|
26
26
|
title: {
|
|
@@ -170,7 +170,7 @@ function GaugeChart(props) {
|
|
|
170
170
|
],
|
|
171
171
|
};
|
|
172
172
|
}, [data, unit, axisLine]);
|
|
173
|
-
return ((0, jsx_runtime_1.jsx)(
|
|
173
|
+
return ((0, jsx_runtime_1.jsx)(EChart_1.EChart, { sx: {
|
|
174
174
|
width: width,
|
|
175
175
|
height: height,
|
|
176
176
|
}, option: option }));
|
package/dist/cjs/LineChart.js
CHANGED
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.LineChart = void 0;
|
|
7
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
-
// Copyright
|
|
8
|
+
// Copyright 2022 The Perses Authors
|
|
9
9
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
10
|
// you may not use this file except in compliance with the License.
|
|
11
11
|
// You may obtain a copy of the License at
|
|
@@ -18,18 +18,19 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
18
18
|
// See the License for the specific language governing permissions and
|
|
19
19
|
// limitations under the License.
|
|
20
20
|
const react_1 = require("react");
|
|
21
|
+
const core_1 = require("@perses-dev/core");
|
|
21
22
|
const material_1 = require("@mui/material");
|
|
22
23
|
const merge_1 = __importDefault(require("lodash/merge"));
|
|
23
|
-
const
|
|
24
|
+
const core_2 = require("echarts/core");
|
|
24
25
|
const charts_1 = require("echarts/charts");
|
|
25
26
|
const components_1 = require("echarts/components");
|
|
26
27
|
const renderers_1 = require("echarts/renderers");
|
|
27
|
-
const
|
|
28
|
+
const EChart_1 = require("./EChart");
|
|
28
29
|
const graph_model_1 = require("./model/graph-model");
|
|
29
30
|
const units_1 = require("./model/units");
|
|
30
31
|
const tooltip_model_1 = require("./tooltip/tooltip-model");
|
|
31
32
|
const Tooltip_1 = require("./tooltip/Tooltip");
|
|
32
|
-
(0,
|
|
33
|
+
(0, core_2.use)([
|
|
33
34
|
charts_1.LineChart,
|
|
34
35
|
components_1.GridComponent,
|
|
35
36
|
components_1.DataZoomComponent,
|
|
@@ -63,8 +64,7 @@ const noDataOption = {
|
|
|
63
64
|
},
|
|
64
65
|
series: [],
|
|
65
66
|
};
|
|
66
|
-
function LineChart(
|
|
67
|
-
const { height, data, grid, legend, toolbox, dataZoomEnabled, onDataZoom } = props;
|
|
67
|
+
function LineChart({ height, data, grid, legend, toolbox, visualMap, dataZoomEnabled, onDataZoom, }) {
|
|
68
68
|
const theme = (0, material_1.useTheme)();
|
|
69
69
|
const chartRef = (0, react_1.useRef)();
|
|
70
70
|
const [showTooltip, setShowTooltip] = (0, react_1.useState)(true);
|
|
@@ -113,19 +113,16 @@ function LineChart(props) {
|
|
|
113
113
|
const handleOnMouseLeave = () => {
|
|
114
114
|
setShowTooltip(false);
|
|
115
115
|
};
|
|
116
|
-
const option = (0,
|
|
116
|
+
const option = (0, core_1.useDeepMemo)(() => {
|
|
117
117
|
if (data.timeSeries === undefined)
|
|
118
118
|
return {};
|
|
119
119
|
if (data.timeSeries === null || data.timeSeries.length === 0)
|
|
120
120
|
return noDataOption;
|
|
121
121
|
const showPointsOnHover = data.timeSeries.length < graph_model_1.PROGRESSIVE_MODE_SERIES_LIMIT;
|
|
122
122
|
const defaultGrid = {
|
|
123
|
-
show: true,
|
|
124
|
-
backgroundColor: theme.palette.mode === 'dark' ? theme.palette.grey[100] : theme.palette.background.paper,
|
|
125
|
-
borderColor: theme.palette.grey['300'],
|
|
126
123
|
top: 10,
|
|
127
124
|
right: 20,
|
|
128
|
-
bottom:
|
|
125
|
+
bottom: 5,
|
|
129
126
|
left: 20,
|
|
130
127
|
containLabel: true,
|
|
131
128
|
};
|
|
@@ -162,16 +159,16 @@ function LineChart(props) {
|
|
|
162
159
|
xAxis: {
|
|
163
160
|
type: 'category',
|
|
164
161
|
data: data.xAxis,
|
|
162
|
+
max: (value) => value.max,
|
|
165
163
|
axisLabel: {
|
|
164
|
+
margin: 15,
|
|
166
165
|
color: theme.palette.text.primary,
|
|
167
|
-
margin: 12,
|
|
168
166
|
formatter: (value) => {
|
|
169
167
|
return getFormattedDate(value);
|
|
170
168
|
},
|
|
171
169
|
},
|
|
172
170
|
axisTick: {
|
|
173
|
-
show:
|
|
174
|
-
length: 6,
|
|
171
|
+
show: false,
|
|
175
172
|
},
|
|
176
173
|
axisLine: {
|
|
177
174
|
lineStyle: {
|
|
@@ -181,18 +178,20 @@ function LineChart(props) {
|
|
|
181
178
|
},
|
|
182
179
|
yAxis: {
|
|
183
180
|
type: 'value',
|
|
184
|
-
boundaryGap: [
|
|
181
|
+
boundaryGap: [0, '10%'],
|
|
185
182
|
axisLabel: {
|
|
186
|
-
|
|
187
|
-
showMaxLabel: true,
|
|
183
|
+
margin: 12,
|
|
188
184
|
color: theme.palette.text.primary,
|
|
189
185
|
formatter: (value) => {
|
|
190
186
|
return (0, units_1.abbreviateLargeNumber)(value);
|
|
191
187
|
},
|
|
192
188
|
},
|
|
193
189
|
splitLine: {
|
|
190
|
+
show: true,
|
|
194
191
|
lineStyle: {
|
|
192
|
+
width: 0.5,
|
|
195
193
|
color: theme.palette.grey['300'],
|
|
194
|
+
opacity: 0.95,
|
|
196
195
|
},
|
|
197
196
|
},
|
|
198
197
|
},
|
|
@@ -206,12 +205,13 @@ function LineChart(props) {
|
|
|
206
205
|
},
|
|
207
206
|
},
|
|
208
207
|
legend,
|
|
208
|
+
visualMap,
|
|
209
209
|
};
|
|
210
210
|
return option;
|
|
211
|
-
}, [data, theme, grid, legend, toolbox, dataZoomEnabled]);
|
|
211
|
+
}, [data, theme, grid, legend, toolbox, dataZoomEnabled, visualMap]);
|
|
212
212
|
return ((0, jsx_runtime_1.jsxs)(material_1.Box, { sx: {
|
|
213
213
|
height,
|
|
214
|
-
}, onMouseDown: handleOnMouseDown, onMouseUp: handleOnMouseUp, onMouseLeave: handleOnMouseLeave, onMouseEnter: handleOnMouseEnter, children: [showTooltip === true && ((0, jsx_runtime_1.jsx)(Tooltip_1.Tooltip, { chartRef: chartRef, tooltipData: tooltip_model_1.emptyTooltipData, chartData: data, wrapLabels: true })), (0, jsx_runtime_1.jsx)(
|
|
214
|
+
}, onMouseDown: handleOnMouseDown, onMouseUp: handleOnMouseUp, onMouseLeave: handleOnMouseLeave, onMouseEnter: handleOnMouseEnter, children: [showTooltip === true && ((0, jsx_runtime_1.jsx)(Tooltip_1.Tooltip, { chartRef: chartRef, tooltipData: tooltip_model_1.emptyTooltipData, chartData: data, wrapLabels: true })), (0, jsx_runtime_1.jsx)(EChart_1.EChart, { sx: {
|
|
215
215
|
width: '100%',
|
|
216
216
|
height: '100%',
|
|
217
217
|
}, option: option, onEvents: handleEvents, _instance: chartRef })] }));
|
package/dist/cjs/StatChart.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StatChart = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
// Copyright
|
|
5
|
+
// Copyright 2022 The Perses Authors
|
|
6
6
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
7
|
// you may not use this file except in compliance with the License.
|
|
8
8
|
// You may obtain a copy of the License at
|
|
@@ -15,6 +15,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
15
15
|
// See the License for the specific language governing permissions and
|
|
16
16
|
// limitations under the License.
|
|
17
17
|
const react_1 = require("react");
|
|
18
|
+
const material_1 = require("@mui/material");
|
|
18
19
|
const lodash_es_1 = require("lodash-es");
|
|
19
20
|
const core_1 = require("echarts/core");
|
|
20
21
|
const charts_1 = require("echarts/charts");
|
|
@@ -22,7 +23,7 @@ const charts_2 = require("echarts/charts");
|
|
|
22
23
|
const components_1 = require("echarts/components");
|
|
23
24
|
const renderers_1 = require("echarts/renderers");
|
|
24
25
|
const units_1 = require("./model/units");
|
|
25
|
-
const
|
|
26
|
+
const EChart_1 = require("./EChart");
|
|
26
27
|
(0, core_1.use)([
|
|
27
28
|
charts_1.GaugeChart,
|
|
28
29
|
charts_2.LineChart,
|
|
@@ -54,6 +55,7 @@ const noDataOption = {
|
|
|
54
55
|
};
|
|
55
56
|
function StatChart(props) {
|
|
56
57
|
const { width, height, data, unit, backgroundColor, sparkline } = props;
|
|
58
|
+
const theme = (0, material_1.useTheme)();
|
|
57
59
|
const option = (0, react_1.useMemo)(() => {
|
|
58
60
|
var _a;
|
|
59
61
|
if (data.seriesData === undefined)
|
|
@@ -165,7 +167,7 @@ function StatChart(props) {
|
|
|
165
167
|
},
|
|
166
168
|
series: statSeries,
|
|
167
169
|
textStyle: {
|
|
168
|
-
color: backgroundColor === 'transparent' ?
|
|
170
|
+
color: backgroundColor === 'transparent' ? theme.palette.text.primary : '#FFFFFF',
|
|
169
171
|
fontSize: 25,
|
|
170
172
|
lineHeight: 18,
|
|
171
173
|
fontFamily: '"Lato", sans-serif',
|
|
@@ -196,8 +198,8 @@ function StatChart(props) {
|
|
|
196
198
|
],
|
|
197
199
|
};
|
|
198
200
|
return option;
|
|
199
|
-
}, [data, height, unit, width, sparkline, backgroundColor]);
|
|
200
|
-
return ((0, jsx_runtime_1.jsx)(
|
|
201
|
+
}, [data, height, theme, unit, width, sparkline, backgroundColor]);
|
|
202
|
+
return ((0, jsx_runtime_1.jsx)(EChart_1.EChart, { sx: {
|
|
201
203
|
width: width,
|
|
202
204
|
height: height,
|
|
203
205
|
}, option: option }));
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright
|
|
2
|
+
// Copyright 2022 The Perses Authors
|
|
3
3
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
// you may not use this file except in compliance with the License.
|
|
5
5
|
// You may obtain a copy of the License at
|
|
@@ -26,7 +26,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
26
26
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
__exportStar(require("./
|
|
29
|
+
__exportStar(require("./EChart"), exports);
|
|
30
30
|
__exportStar(require("./ErrorAlert"), exports);
|
|
31
31
|
__exportStar(require("./ErrorBoundary"), exports);
|
|
32
32
|
__exportStar(require("./GaugeChart"), exports);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Tooltip = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
// Copyright
|
|
5
|
+
// Copyright 2022 The Perses Authors
|
|
6
6
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
7
|
// you may not use this file except in compliance with the License.
|
|
8
8
|
// You may obtain a copy of the License at
|
|
@@ -50,8 +50,7 @@ function Tooltip(props) {
|
|
|
50
50
|
position: 'absolute',
|
|
51
51
|
top: 0,
|
|
52
52
|
left: 0,
|
|
53
|
-
|
|
54
|
-
backgroundColor: '#000',
|
|
53
|
+
backgroundColor: '#2E313E',
|
|
55
54
|
borderRadius: '6px',
|
|
56
55
|
color: '#fff',
|
|
57
56
|
fontSize: '11px',
|
|
@@ -59,6 +58,10 @@ function Tooltip(props) {
|
|
|
59
58
|
opacity: 1,
|
|
60
59
|
transition: 'all 0.1s ease-out',
|
|
61
60
|
zIndex: theme.zIndex.tooltip,
|
|
61
|
+
overflow: 'hidden',
|
|
62
|
+
'&:hover': {
|
|
63
|
+
overflowY: 'auto',
|
|
64
|
+
},
|
|
62
65
|
}), style: {
|
|
63
66
|
transform: cursorTransform,
|
|
64
67
|
}, onMouseEnter: () => handleMouseEnter(), onMouseLeave: () => handleMouseLeave(), children: (0, jsx_runtime_1.jsx)(TooltipContent_1.TooltipContent, { focusedSeries: focusedSeries, wrapLabels: props.wrapLabels }) }) }));
|
|
@@ -40,7 +40,9 @@ function getNearbySeries(data, pointInGrid, yBuffer) {
|
|
|
40
40
|
const yValue = (_e = currentSeries.data[datumIdx]) !== null && _e !== void 0 ? _e : 0;
|
|
41
41
|
if (focusedX === datumIdx) {
|
|
42
42
|
if (yValue !== '-' && focusedY <= yValue + yBuffer && focusedY >= yValue - yBuffer) {
|
|
43
|
-
|
|
43
|
+
// determine whether to convert timestamp to ms, see: https://stackoverflow.com/a/23982005/17575201
|
|
44
|
+
const xValueMilliSeconds = xValue > 99999999999 ? xValue : xValue * 1000;
|
|
45
|
+
const formattedDate = tooltip_model_1.TOOLTIP_DATE_FORMAT.format(xValueMilliSeconds);
|
|
44
46
|
currentFocusedData.push({
|
|
45
47
|
seriesIdx: seriesIdx,
|
|
46
48
|
datumIdx: datumIdx,
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./
|
|
1
|
+
export*from"./EChart";export*from"./ErrorAlert";export*from"./ErrorBoundary";export*from"./GaugeChart";export*from"./LineChart";export*from"./StatChart";export*from"./utils/combine-sx";export*from"./model/graph-model";export*from"./model/units";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../src/tooltip/Tooltip.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAGL,WAAW,EAIZ,MAAM,iBAAiB,CAAC;AAGzB,UAAU,YAAY;IACpB,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAC9D,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../src/tooltip/Tooltip.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAGL,WAAW,EAIZ,MAAM,iBAAiB,CAAC;AAGzB,UAAU,YAAY;IACpB,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAC9D,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,sBA4D1C"}
|
package/dist/tooltip/Tooltip.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as _jsx}from"react/jsx-runtime";import{useState}from"react";import{Box,Portal}from"@mui/material";import{getFocusedSeriesData}from"./focused-series";import{TOOLTIP_MAX_HEIGHT,TOOLTIP_MAX_WIDTH,useMousePosition}from"./tooltip-model";import{TooltipContent}from"./TooltipContent";export function Tooltip(t){var o,e;const{chartRef:r,chartData:
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import{useState}from"react";import{Box,Portal}from"@mui/material";import{getFocusedSeriesData}from"./focused-series";import{TOOLTIP_MAX_HEIGHT,TOOLTIP_MAX_WIDTH,useMousePosition}from"./tooltip-model";import{TooltipContent}from"./TooltipContent";export function Tooltip(t){var o,e;const{chartRef:r,chartData:n}=t,[l,i]=useState(null),s=useMousePosition();if(null===s)return null;const a=r.current,u=getFocusedSeriesData(s,n,l,a),p=null!==(o=null==a?void 0:a.getWidth())&&void 0!==o?o:750,T=null!==(e=null==a?void 0:a.getHeight())&&void 0!==e?e:230,d=assembleTransform(s,u.length,p,T,l);return 0===u.length?null:_jsx(Portal,{children:_jsx(Box,{sx:t=>({maxWidth:TOOLTIP_MAX_WIDTH,maxHeight:TOOLTIP_MAX_HEIGHT,position:"absolute",top:0,left:0,backgroundColor:"#2E313E",borderRadius:"6px",color:"#fff",fontSize:"11px",visibility:"visible",opacity:1,transition:"all 0.1s ease-out",zIndex:t.zIndex.tooltip,overflow:"hidden","&:hover":{overflowY:"auto"}}),style:{transform:d},onMouseEnter:()=>{null!==s&&i(s)},onMouseLeave:()=>{null!==l&&i(null)},children:_jsx(TooltipContent,{focusedSeries:u,wrapLabels:t.wrapLabels})})})}function assembleTransform(t,o,e,r,n){if(null===t)return"translate3d(0, 0)";null!==n&&(t=n);const l=t.viewport.x;let i=t.viewport.y+16;const s=.75*r;!0==t.viewport.y>.8*window.innerHeight?i=o>6?.65*t.viewport.y:.75*t.viewport.y:t.plotCanvas.y>s&&(i=.85*t.viewport.y);const a=e-.9*(o>1?TOOLTIP_MAX_WIDTH:TOOLTIP_MAX_WIDTH/2);return t.plotCanvas.x>a&&l>TOOLTIP_MAX_WIDTH?`translate3d(${l-32}px, ${i}px, 0) translateX(-100%)`:`translate3d(${l+32}px, ${i}px, 0)`}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focused-series.d.ts","sourceRoot":"","sources":["../../src/tooltip/focused-series.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,UAAU,EAA0C,MAAM,iBAAiB,CAAC;AAErF,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,oBAAY,kBAAkB,GAAG,iBAAiB,EAAE,CAAC;AAErD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"focused-series.d.ts","sourceRoot":"","sources":["../../src/tooltip/focused-series.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,UAAU,EAA0C,MAAM,iBAAiB,CAAC;AAErF,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,oBAAY,kBAAkB,GAAG,iBAAiB,EAAE,CAAC;AAErD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,kBAAkB,CA0CnH;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,EAC9B,SAAS,EAAE,iBAAiB,EAC5B,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,EAC/B,KAAK,CAAC,EAAE,eAAe,sBA2CxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{TOOLTIP_DATE_FORMAT,TOOLTIP_MAX_ITEMS}from"./tooltip-model";export function getNearbySeries(e,t,r){var i,n,l,o,a;const s=[],u=null!==(i=t[0])&&void 0!==i?i:null,d=null!==(n=t[1])&&void 0!==n?n:null;if(null===u||null===d)return s;if(Array.isArray(e.xAxis)&&Array.isArray(e.timeSeries))for(let t=0;t<e.timeSeries.length;t++){const i=e.timeSeries[t];if(s.length>TOOLTIP_MAX_ITEMS)break;if(void 0!==i){const n=i.name?i.name.toString():"",m=null!==(l=i.color)&&void 0!==l?l:"#000";if(Array.isArray(i.data))for(let l=0;l<i.data.length;l++){const f=null!==(o=e.xAxis[l])&&void 0!==o?o:0,v=null!==(a=i.data[l])&&void 0!==a?a:0;if(u===l&&"-"!==v&&d<=v+r&&d>=v-r){const e=TOOLTIP_DATE_FORMAT.format(
|
|
1
|
+
import{TOOLTIP_DATE_FORMAT,TOOLTIP_MAX_ITEMS}from"./tooltip-model";export function getNearbySeries(e,t,r){var i,n,l,o,a;const s=[],u=null!==(i=t[0])&&void 0!==i?i:null,d=null!==(n=t[1])&&void 0!==n?n:null;if(null===u||null===d)return s;if(Array.isArray(e.xAxis)&&Array.isArray(e.timeSeries))for(let t=0;t<e.timeSeries.length;t++){const i=e.timeSeries[t];if(s.length>TOOLTIP_MAX_ITEMS)break;if(void 0!==i){const n=i.name?i.name.toString():"",m=null!==(l=i.color)&&void 0!==l?l:"#000";if(Array.isArray(i.data))for(let l=0;l<i.data.length;l++){const f=null!==(o=e.xAxis[l])&&void 0!==o?o:0,v=null!==(a=i.data[l])&&void 0!==a?a:0;if(u===l&&"-"!==v&&d<=v+r&&d>=v-r){const e=f>99999999999?f:1e3*f,r=TOOLTIP_DATE_FORMAT.format(e);s.push({seriesIdx:t,datumIdx:l,seriesName:n,date:r,x:f,y:v,markerColor:m.toString()})}}}}return s}export function getFocusedSeriesData(e,t,r,i){var n,l;if(void 0===i||null===e)return[];let o=!1;if(null!==e.target){const t=e.target.parentElement;if(null!==t){const e=t.parentElement;null!==e&&i.getDom()===e&&(o=!0)}}if(null!==r&&(e=r,o=!0),!1===o)return[];if(void 0===i._model)return[];const a=i._model.getComponent("yAxis").axis.scale._interval,s=t.timeSeries.length>TOOLTIP_MAX_ITEMS?.5*a:2*a,u=[null!==(n=e.plotCanvas.x)&&void 0!==n?n:0,null!==(l=e.plotCanvas.y)&&void 0!==l?l:0];if(i.containPixel("grid",u)){const e=i.convertFromPixel("grid",u);if(void 0!==e[0]&&void 0!==e[1])return getNearbySeries(t,e,s)}return[]}
|
package/package.json
CHANGED
package/dist/ECharts.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ECharts.d.ts","sourceRoot":"","sources":["../src/ECharts.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAQ,MAAM,cAAc,CAAC;AAChE,OAAO,EAAO,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,qBAAqB,CAAC,CAAC;IAGtC,aAAa,EAAE,MAAM,CAAC;IAGtB,UAAU,EAAE,MAAM,CAAC;IAEnB,WAAW,EAAE,MAAM,CAAC;IAEpB,UAAU,EAAE,MAAM,CAAC;IAEnB,IAAI,EAAE,MAAM,CAAC;IAEb,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAOlC,QAAQ,EAAE,MAAM,CAAC;IAEjB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEzB,KAAK,EAAE,MAAM,CAAC;IAId,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,aAAK,eAAe,CAAC,CAAC,IAAI,CACxB,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAGhC,QAAQ,CAAC,EAAE,OAAO,KACf,IAAI,CAAC;AAEV,QAAA,MAAM,WAAW,0HAUP,CAAC;AAEX,oBAAY,cAAc,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAGxD,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IAGnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IAEpB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,wBAAwB,EAAE,GAAG,yBAAyB,EAAE,CAAC;CACjE;AAED,aAAK,oBAAoB,GAAG,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAEpE,QAAA,MAAM,WAAW,gDAAiD,CAAC;AAEnE,oBAAY,cAAc,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAGxD,aAAK,cAAc,GAAG,UAAU,CAAC;AAIjC,oBAAY,YAAY,CAAC,CAAC,IAAI;KAC3B,cAAc,IAAI,cAAc,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;CACxD,GAAG;KACD,cAAc,IAAI,cAAc,CAAC,CAAC,EAAE,oBAAoB;CAC1D,GAAG;KACD,SAAS,IAAI,cAAc,CAAC,CAAC,EAAE,MAAM,IAAI;CAC3C,CAAC;AAEF,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACxD,eAAe,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACzC;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,eAqClG"}
|
package/dist/ECharts.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as _jsx}from"react/jsx-runtime";import{useState,useLayoutEffect}from"react";import debounce from"lodash/debounce";import{init}from"echarts/core";import{Box}from"@mui/material";const mouseEvents=["click","dblclick","mousedown","mousemove","mouseup","mouseover","mouseout","globalout","contextmenu"],batchEvents=["datazoom","downplay","highlight"];export function ECharts({sx:e,_instance:t,onChartInitialized:n,option:o,onEvents:s}){const[i,u]=useState(null),[r,c]=useState(void 0);return useLayoutEffect((()=>{if(null===i)return;const e=init(i);return c(e),void 0!==t&&(t.current=e),bindEvents(e,s),null==n||n(e),()=>{e.dispose()}}),[i,t,n,s]),useLayoutEffect((()=>{void 0!==r&&r.setOption(o)}),[r,o]),useLayoutEffect((()=>{const e=debounce((()=>{null==r||r.resize()}),200);return window.addEventListener("resize",e),e(),()=>window.removeEventListener("resize",e)}),[r]),_jsx(Box,{ref:u,sx:e})}function bindEvents(e,t){var n;if(void 0!==t)for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e)){const s=null!==(n=t[e])&&void 0!==n?n:null;s&&o(e,s)}function o(t,n){"function"==typeof n&&(isMouseEvent(t)?e.on(t,(t=>n(t,e))):isBatchEvent(t)?e.on(t,(e=>n(e))):e.on(t,(()=>n(null,e))))}}function isMouseEvent(e){return mouseEvents.includes(e)}function isBatchEvent(e){return batchEvents.includes(e)}
|
package/dist/cjs/ECharts.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ECharts = void 0;
|
|
7
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
-
// Copyright 2021 The Perses Authors
|
|
9
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
-
// you may not use this file except in compliance with the License.
|
|
11
|
-
// You may obtain a copy of the License at
|
|
12
|
-
//
|
|
13
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
-
//
|
|
15
|
-
// Unless required by applicable law or agreed to in writing, software
|
|
16
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
-
// See the License for the specific language governing permissions and
|
|
19
|
-
// limitations under the License.
|
|
20
|
-
const react_1 = require("react");
|
|
21
|
-
const debounce_1 = __importDefault(require("lodash/debounce"));
|
|
22
|
-
const core_1 = require("echarts/core");
|
|
23
|
-
const material_1 = require("@mui/material");
|
|
24
|
-
const mouseEvents = [
|
|
25
|
-
'click',
|
|
26
|
-
'dblclick',
|
|
27
|
-
'mousedown',
|
|
28
|
-
'mousemove',
|
|
29
|
-
'mouseup',
|
|
30
|
-
'mouseover',
|
|
31
|
-
'mouseout',
|
|
32
|
-
'globalout',
|
|
33
|
-
'contextmenu',
|
|
34
|
-
];
|
|
35
|
-
const batchEvents = ['datazoom', 'downplay', 'highlight'];
|
|
36
|
-
function ECharts({ sx, _instance, onChartInitialized, option, onEvents }) {
|
|
37
|
-
const [containerRef, setContainerRef] = (0, react_1.useState)(null);
|
|
38
|
-
const [echart, setChart] = (0, react_1.useState)(undefined);
|
|
39
|
-
// Create a chart instance in the container
|
|
40
|
-
(0, react_1.useLayoutEffect)(() => {
|
|
41
|
-
if (containerRef === null)
|
|
42
|
-
return;
|
|
43
|
-
const chart = (0, core_1.init)(containerRef);
|
|
44
|
-
setChart(chart);
|
|
45
|
-
if (_instance !== undefined) {
|
|
46
|
-
_instance.current = chart;
|
|
47
|
-
}
|
|
48
|
-
bindEvents(chart, onEvents);
|
|
49
|
-
onChartInitialized === null || onChartInitialized === void 0 ? void 0 : onChartInitialized(chart);
|
|
50
|
-
return () => {
|
|
51
|
-
chart.dispose();
|
|
52
|
-
};
|
|
53
|
-
}, [containerRef, _instance, onChartInitialized, onEvents]);
|
|
54
|
-
// Sync options with chart instance
|
|
55
|
-
(0, react_1.useLayoutEffect)(() => {
|
|
56
|
-
if (echart === undefined)
|
|
57
|
-
return;
|
|
58
|
-
echart.setOption(option);
|
|
59
|
-
}, [echart, option]);
|
|
60
|
-
(0, react_1.useLayoutEffect)(() => {
|
|
61
|
-
const updateSize = (0, debounce_1.default)(() => {
|
|
62
|
-
echart === null || echart === void 0 ? void 0 : echart.resize();
|
|
63
|
-
}, 200);
|
|
64
|
-
window.addEventListener('resize', updateSize);
|
|
65
|
-
updateSize();
|
|
66
|
-
return () => window.removeEventListener('resize', updateSize);
|
|
67
|
-
}, [echart]);
|
|
68
|
-
return (0, jsx_runtime_1.jsx)(material_1.Box, { ref: setContainerRef, sx: sx });
|
|
69
|
-
}
|
|
70
|
-
exports.ECharts = ECharts;
|
|
71
|
-
// Validate event config and bind custom events
|
|
72
|
-
function bindEvents(instance, events) {
|
|
73
|
-
var _a;
|
|
74
|
-
if (events === undefined)
|
|
75
|
-
return;
|
|
76
|
-
function bindEvent(eventName, onEventFunction) {
|
|
77
|
-
if (typeof onEventFunction === 'function') {
|
|
78
|
-
if (isMouseEvent(eventName)) {
|
|
79
|
-
instance.on(eventName, (param) => onEventFunction(param, instance));
|
|
80
|
-
}
|
|
81
|
-
else if (isBatchEvent(eventName)) {
|
|
82
|
-
instance.on(eventName, (param) => onEventFunction(param));
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
instance.on(eventName, () => onEventFunction(null, instance));
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
for (const eventName in events) {
|
|
90
|
-
if (Object.prototype.hasOwnProperty.call(events, eventName)) {
|
|
91
|
-
const customEvent = (_a = events[eventName]) !== null && _a !== void 0 ? _a : null;
|
|
92
|
-
if (customEvent) {
|
|
93
|
-
bindEvent(eventName, customEvent);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
function isMouseEvent(eventName) {
|
|
99
|
-
return mouseEvents.includes(eventName);
|
|
100
|
-
}
|
|
101
|
-
function isBatchEvent(eventName) {
|
|
102
|
-
return batchEvents.includes(eventName);
|
|
103
|
-
}
|