@visactor/taro-vchart 1.13.6 → 1.13.7
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.
|
@@ -96,7 +96,8 @@ class GeneralChart extends react_1.default.Component {
|
|
|
96
96
|
force: !0,
|
|
97
97
|
canvasIdLists: canvasIdLists,
|
|
98
98
|
freeCanvasIdx: 2,
|
|
99
|
-
component: void 0
|
|
99
|
+
component: void 0,
|
|
100
|
+
forceUpdate: !0
|
|
100
101
|
}));
|
|
101
102
|
}
|
|
102
103
|
domref.id = this.props.canvasId, this.ttCanvas = new utils_1.TTCanvas({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/general-chart/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import React from 'react';\nimport { View, Canvas } from '@tarojs/components';\nimport Taro from '@tarojs/taro';\nimport {\n TTCanvas,\n style_cs_canvas,\n style_cs_canvas_hidden,\n style_cs_tooltip_canvas,\n style_container\n} from '../../utils';\n\nimport { IChartProps, IVChart, IDomRef, RenderMode } from '../../typings';\n\nexport interface GeneralChartProps extends IChartProps {\n /**\n * vchart 的环境参数\n */\n mode?: RenderMode;\n}\n\nexport class GeneralChart extends React.Component<GeneralChartProps> {\n ttCanvas: TTCanvas;\n\n async componentDidMount() {\n if (!this.props.chartConstructor) {\n console.error('props.chartConstructor is not found');\n }\n if (!this.props.spec || !this.props.canvasId) {\n if (!this.props.spec) console.warn('props.spec are not found');\n if (!this.props.canvasId) console.warn('props.canvasId are not found');\n return;\n }\n\n // 获取domRef\n const getDomRef = async () => {\n return new Promise<IDomRef>(resolve => {\n Taro.nextTick(() => {\n Taro.createSelectorQuery()\n .select(`#${this.props.canvasId}_draw_canvas`)\n .boundingClientRect(domref => {\n resolve(domref as any as IDomRef);\n })\n .exec();\n });\n });\n };\n\n /**\n * TODO:\n * 这里是一个很不优雅的写法\n * 具体背景为: 用户在加载页面后, 立刻创建图表, 会报取不domRef的错误.\n * 具体原因是Taro.nextTick()仅执行一次时, 在飞书小程序无法正确取到Dom节点. 经过测试, 调用2次就可以保持正确.\n * 因此在这里被迫做了一个for循环, 多次尝试. 至多取100次.\n *\n * 此外, 这里也无法使用onReady进行操作, 具体请参考: http://taro-docs.jd.com/taro/docs/react-page#onready-\n * 此问题目前仅出现在飞书小程序, 字节小程序正常.\n */\n const MAX_TIMES = 100;\n for (let i = 0; i < MAX_TIMES; i++) {\n // 获取domRef\n const domref: IDomRef = await getDomRef();\n\n if (domref === null || domref === undefined) {\n // 如果不存在, 则重复循环, 最多尝试100次. 确保不会死循环.\n continue;\n }\n\n // 初始化图表\n Taro.getSystemInfo({\n success: res => {\n this.init({ domref, dpr: res.pixelRatio });\n },\n fail: res => {\n console.error(new Error('taro 暂不支持该环境'));\n console.log(res);\n }\n });\n break;\n }\n }\n\n componentDidUpdate(prevProps: GeneralChartProps) {\n if (\n this.ttCanvas &&\n this.ttCanvas.chartInstance &&\n JSON.stringify(prevProps.spec) !== JSON.stringify(this.props.spec)\n ) {\n this.ttCanvas.updateSpec(this.props);\n }\n }\n\n componentWillUnmount() {\n this.ttCanvas && this.ttCanvas.release();\n }\n\n async init({ domref, dpr = 2 }: { domref: IDomRef; dpr: number }) {\n if (!domref) {\n console.error(`未找到 #${this.props.canvasId} 组件`);\n return;\n }\n\n if (this.props.mode === 'wx' || this.props.mode === 'tt') {\n // 微信小程序和TT小程序环境特殊处理\n const canvasIdLists = [\n `${this.props.canvasId}_draw_canvas`,\n `${this.props.canvasId}_tooltip_canvas`,\n `${this.props.canvasId}_hidden_canvas`\n ];\n\n const { chartConstructor } = this.props;\n const { vglobal } = chartConstructor as any;\n if (vglobal) {\n await vglobal.setEnv(this.props.mode, {\n domref,\n force: true,\n canvasIdLists,\n freeCanvasIdx: 2,\n component: undefined\n });\n }\n }\n\n domref.id = this.props.canvasId;\n this.ttCanvas = new TTCanvas({\n chartConstructor: this.props.chartConstructor,\n dpr: dpr,\n domref,\n spec: this.props.spec,\n events: this.props.events,\n options: this.props.options,\n mode: this.props.mode,\n onChartInit: (chart: IVChart) => {\n this.props?.onChartInit && this.props.onChartInit(chart);\n },\n onChartReady: (chart: IVChart) => {\n this.props?.onChartReady && this.props.onChartReady(chart);\n },\n onChartUpdate: (chart: IVChart) => {\n this.props?.onChartUpdate && this.props.onChartUpdate(chart);\n }\n });\n }\n\n render() {\n const handleEvent = (event: any) => {\n if (this.ttCanvas && this.ttCanvas.chartInstance) {\n const chartInstance = this.ttCanvas.chartInstance;\n\n Object.defineProperty(event, 'target', {\n writable: false,\n value: chartInstance.getCanvas() // Tip: 必须设置\n });\n chartInstance.getStage().window.dispatchEvent(event);\n }\n };\n const { canvasId, style = {} } = this.props;\n const type = this.props.mode === 'wx' || this.props.mode === 'tt' ? '2d' : undefined;\n return (\n <View key={canvasId} style={{ ...style_container, ...style, padding: 0 }}>\n <Canvas\n type={type}\n style={{\n ...style_cs_tooltip_canvas\n }}\n onTouchStart={handleEvent}\n onTouchMove={handleEvent}\n onTouchEnd={handleEvent}\n id={`${canvasId}_tooltip_canvas`}\n canvasId={`${canvasId}_tooltip_canvas`}\n ></Canvas>\n <Canvas\n type={type}\n style={style_cs_canvas}\n id={`${canvasId}_draw_canvas`}\n canvasId={`${canvasId}_draw_canvas`}\n ></Canvas>\n <Canvas\n type={type}\n style={{\n ...style_cs_canvas,\n ...style_cs_canvas_hidden\n }}\n id={`${canvasId}_hidden_canvas`}\n canvasId={`${canvasId}_hidden_canvas`}\n ></Canvas>\n </View>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/general-chart/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iCAA0B;AAC1B,mDAAkD;AAClD,uCAAgC;AAChC,uCAMqB;AAWrB,MAAa,YAAa,SAAQ,eAAK,CAAC,SAA4B;IAG5D,iBAAiB;;YACrB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;gBAChC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;aACtD;YACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;oBAAE,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAC/D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;oBAAE,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;gBACvE,OAAO;aACR;YAED,WAAW;YACX,MAAM,SAAS,GAAG,GAAS,EAAE;gBAC3B,OAAO,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE;oBACpC,cAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;wBACjB,cAAI,CAAC,mBAAmB,EAAE;6BACvB,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,cAAc,CAAC;6BAC7C,kBAAkB,CAAC,MAAM,CAAC,EAAE;4BAC3B,OAAO,CAAC,MAAwB,CAAC,CAAC;wBACpC,CAAC,CAAC;6BACD,IAAI,EAAE,CAAC;oBACZ,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAA,CAAC;YAEF;;;;;;;;;eASG;YACH,MAAM,SAAS,GAAG,GAAG,CAAC;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;gBAClC,WAAW;gBACX,MAAM,MAAM,GAAY,MAAM,SAAS,EAAE,CAAC;gBAE1C,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE;oBAC3C,mCAAmC;oBACnC,SAAS;iBACV;gBAED,QAAQ;gBACR,cAAI,CAAC,aAAa,CAAC;oBACjB,OAAO,EAAE,GAAG,CAAC,EAAE;wBACb,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;oBAC7C,CAAC;oBACD,IAAI,EAAE,GAAG,CAAC,EAAE;wBACV,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;wBACzC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACnB,CAAC;iBACF,CAAC,CAAC;gBACH,MAAM;aACP;QACH,CAAC;KAAA;IAED,kBAAkB,CAAC,SAA4B;QAC7C,IACE,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,QAAQ,CAAC,aAAa;YAC3B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAClE;YACA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACtC;IACH,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC3C,CAAC;IAEK,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,EAAoC;;YAC9D,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC;gBAChD,OAAO;aACR;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;gBACxD,oBAAoB;gBACpB,MAAM,aAAa,GAAG;oBACpB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,cAAc;oBACpC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,iBAAiB;oBACvC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,gBAAgB;iBACvC,CAAC;gBAEF,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;gBACxC,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAuB,CAAC;gBAC5C,IAAI,OAAO,EAAE;oBACX,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;wBACpC,MAAM;wBACN,KAAK,EAAE,IAAI;wBACX,aAAa;wBACb,aAAa,EAAE,CAAC;wBAChB,SAAS,EAAE,SAAS;wBACpB,WAAW,EAAE,IAAI;qBAClB,CAAC,CAAC;iBACJ;aACF;YAED,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAQ,CAAC;gBAC3B,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;gBAC7C,GAAG,EAAE,GAAG;gBACR,MAAM;gBACN,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBACrB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBACzB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBAC3B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBACrB,WAAW,EAAE,CAAC,KAAc,EAAE,EAAE;;oBAC9B,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW,KAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC3D,CAAC;gBACD,YAAY,EAAE,CAAC,KAAc,EAAE,EAAE;;oBAC/B,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,KAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC7D,CAAC;gBACD,aAAa,EAAE,CAAC,KAAc,EAAE,EAAE;;oBAChC,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,KAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC/D,CAAC;aACF,CAAC,CAAC;QACL,CAAC;KAAA;IAED,MAAM;QACJ,MAAM,WAAW,GAAG,CAAC,KAAU,EAAE,EAAE;YACjC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;gBAChD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAElD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE;oBACrC,QAAQ,EAAE,KAAK;oBACf,KAAK,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,YAAY;iBAC9C,CAAC,CAAC;gBACH,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACtD;QACH,CAAC,CAAC;QACF,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACrF,OAAO,CACL,8BAAC,iBAAI,IAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,gDAAO,uBAAe,GAAK,KAAK,KAAE,OAAO,EAAE,CAAC;YACpE,8BAAC,mBAAM,IACL,IAAI,EAAE,IAAI,EACV,KAAK,oBACA,+BAAuB,GAE5B,YAAY,EAAE,WAAW,EACzB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,WAAW,EACvB,EAAE,EAAE,GAAG,QAAQ,iBAAiB,EAChC,QAAQ,EAAE,GAAG,QAAQ,iBAAiB,GAC9B;YACV,8BAAC,mBAAM,IACL,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,uBAAe,EACtB,EAAE,EAAE,GAAG,QAAQ,cAAc,EAC7B,QAAQ,EAAE,GAAG,QAAQ,cAAc,GAC3B;YACV,8BAAC,mBAAM,IACL,IAAI,EAAE,IAAI,EACV,KAAK,kCACA,uBAAe,GACf,8BAAsB,GAE3B,EAAE,EAAE,GAAG,QAAQ,gBAAgB,EAC/B,QAAQ,EAAE,GAAG,QAAQ,gBAAgB,GAC7B,CACL,CACR,CAAC;IACJ,CAAC;CACF;AAzKD,oCAyKC","file":"index.js","sourcesContent":["import React from 'react';\nimport { View, Canvas } from '@tarojs/components';\nimport Taro from '@tarojs/taro';\nimport {\n TTCanvas,\n style_cs_canvas,\n style_cs_canvas_hidden,\n style_cs_tooltip_canvas,\n style_container\n} from '../../utils';\n\nimport { IChartProps, IVChart, IDomRef, RenderMode } from '../../typings';\n\nexport interface GeneralChartProps extends IChartProps {\n /**\n * vchart 的环境参数\n */\n mode?: RenderMode;\n}\n\nexport class GeneralChart extends React.Component<GeneralChartProps> {\n ttCanvas: TTCanvas;\n\n async componentDidMount() {\n if (!this.props.chartConstructor) {\n console.error('props.chartConstructor is not found');\n }\n if (!this.props.spec || !this.props.canvasId) {\n if (!this.props.spec) console.warn('props.spec are not found');\n if (!this.props.canvasId) console.warn('props.canvasId are not found');\n return;\n }\n\n // 获取domRef\n const getDomRef = async () => {\n return new Promise<IDomRef>(resolve => {\n Taro.nextTick(() => {\n Taro.createSelectorQuery()\n .select(`#${this.props.canvasId}_draw_canvas`)\n .boundingClientRect(domref => {\n resolve(domref as any as IDomRef);\n })\n .exec();\n });\n });\n };\n\n /**\n * TODO:\n * 这里是一个很不优雅的写法\n * 具体背景为: 用户在加载页面后, 立刻创建图表, 会报取不domRef的错误.\n * 具体原因是Taro.nextTick()仅执行一次时, 在飞书小程序无法正确取到Dom节点. 经过测试, 调用2次就可以保持正确.\n * 因此在这里被迫做了一个for循环, 多次尝试. 至多取100次.\n *\n * 此外, 这里也无法使用onReady进行操作, 具体请参考: http://taro-docs.jd.com/taro/docs/react-page#onready-\n * 此问题目前仅出现在飞书小程序, 字节小程序正常.\n */\n const MAX_TIMES = 100;\n for (let i = 0; i < MAX_TIMES; i++) {\n // 获取domRef\n const domref: IDomRef = await getDomRef();\n\n if (domref === null || domref === undefined) {\n // 如果不存在, 则重复循环, 最多尝试100次. 确保不会死循环.\n continue;\n }\n\n // 初始化图表\n Taro.getSystemInfo({\n success: res => {\n this.init({ domref, dpr: res.pixelRatio });\n },\n fail: res => {\n console.error(new Error('taro 暂不支持该环境'));\n console.log(res);\n }\n });\n break;\n }\n }\n\n componentDidUpdate(prevProps: GeneralChartProps) {\n if (\n this.ttCanvas &&\n this.ttCanvas.chartInstance &&\n JSON.stringify(prevProps.spec) !== JSON.stringify(this.props.spec)\n ) {\n this.ttCanvas.updateSpec(this.props);\n }\n }\n\n componentWillUnmount() {\n this.ttCanvas && this.ttCanvas.release();\n }\n\n async init({ domref, dpr = 2 }: { domref: IDomRef; dpr: number }) {\n if (!domref) {\n console.error(`未找到 #${this.props.canvasId} 组件`);\n return;\n }\n\n if (this.props.mode === 'wx' || this.props.mode === 'tt') {\n // 微信小程序和TT小程序环境特殊处理\n const canvasIdLists = [\n `${this.props.canvasId}_draw_canvas`,\n `${this.props.canvasId}_tooltip_canvas`,\n `${this.props.canvasId}_hidden_canvas`\n ];\n\n const { chartConstructor } = this.props;\n const { vglobal } = chartConstructor as any;\n if (vglobal) {\n await vglobal.setEnv(this.props.mode, {\n domref,\n force: true,\n canvasIdLists,\n freeCanvasIdx: 2,\n component: undefined,\n forceUpdate: true\n });\n }\n }\n\n domref.id = this.props.canvasId;\n this.ttCanvas = new TTCanvas({\n chartConstructor: this.props.chartConstructor,\n dpr: dpr,\n domref,\n spec: this.props.spec,\n events: this.props.events,\n options: this.props.options,\n mode: this.props.mode,\n onChartInit: (chart: IVChart) => {\n this.props?.onChartInit && this.props.onChartInit(chart);\n },\n onChartReady: (chart: IVChart) => {\n this.props?.onChartReady && this.props.onChartReady(chart);\n },\n onChartUpdate: (chart: IVChart) => {\n this.props?.onChartUpdate && this.props.onChartUpdate(chart);\n }\n });\n }\n\n render() {\n const handleEvent = (event: any) => {\n if (this.ttCanvas && this.ttCanvas.chartInstance) {\n const chartInstance = this.ttCanvas.chartInstance;\n\n Object.defineProperty(event, 'target', {\n writable: false,\n value: chartInstance.getCanvas() // Tip: 必须设置\n });\n chartInstance.getStage().window.dispatchEvent(event);\n }\n };\n const { canvasId, style = {} } = this.props;\n const type = this.props.mode === 'wx' || this.props.mode === 'tt' ? '2d' : undefined;\n return (\n <View key={canvasId} style={{ ...style_container, ...style, padding: 0 }}>\n <Canvas\n type={type}\n style={{\n ...style_cs_tooltip_canvas\n }}\n onTouchStart={handleEvent}\n onTouchMove={handleEvent}\n onTouchEnd={handleEvent}\n id={`${canvasId}_tooltip_canvas`}\n canvasId={`${canvasId}_tooltip_canvas`}\n ></Canvas>\n <Canvas\n type={type}\n style={style_cs_canvas}\n id={`${canvasId}_draw_canvas`}\n canvasId={`${canvasId}_draw_canvas`}\n ></Canvas>\n <Canvas\n type={type}\n style={{\n ...style_cs_canvas,\n ...style_cs_canvas_hidden\n }}\n id={`${canvasId}_hidden_canvas`}\n canvasId={`${canvasId}_hidden_canvas`}\n ></Canvas>\n </View>\n );\n }\n}\n"]}
|
|
@@ -96,7 +96,8 @@ export class GeneralChart extends React.Component {
|
|
|
96
96
|
force: !0,
|
|
97
97
|
canvasIdLists: canvasIdLists,
|
|
98
98
|
freeCanvasIdx: 2,
|
|
99
|
-
component: void 0
|
|
99
|
+
component: void 0,
|
|
100
|
+
forceUpdate: !0
|
|
100
101
|
}));
|
|
101
102
|
}
|
|
102
103
|
domref.id = this.props.canvasId, this.ttCanvas = new TTCanvas({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/general-chart/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import React from 'react';\nimport { View, Canvas } from '@tarojs/components';\nimport Taro from '@tarojs/taro';\nimport {\n TTCanvas,\n style_cs_canvas,\n style_cs_canvas_hidden,\n style_cs_tooltip_canvas,\n style_container\n} from '../../utils';\n\nimport { IChartProps, IVChart, IDomRef, RenderMode } from '../../typings';\n\nexport interface GeneralChartProps extends IChartProps {\n /**\n * vchart 的环境参数\n */\n mode?: RenderMode;\n}\n\nexport class GeneralChart extends React.Component<GeneralChartProps> {\n ttCanvas: TTCanvas;\n\n async componentDidMount() {\n if (!this.props.chartConstructor) {\n console.error('props.chartConstructor is not found');\n }\n if (!this.props.spec || !this.props.canvasId) {\n if (!this.props.spec) console.warn('props.spec are not found');\n if (!this.props.canvasId) console.warn('props.canvasId are not found');\n return;\n }\n\n // 获取domRef\n const getDomRef = async () => {\n return new Promise<IDomRef>(resolve => {\n Taro.nextTick(() => {\n Taro.createSelectorQuery()\n .select(`#${this.props.canvasId}_draw_canvas`)\n .boundingClientRect(domref => {\n resolve(domref as any as IDomRef);\n })\n .exec();\n });\n });\n };\n\n /**\n * TODO:\n * 这里是一个很不优雅的写法\n * 具体背景为: 用户在加载页面后, 立刻创建图表, 会报取不domRef的错误.\n * 具体原因是Taro.nextTick()仅执行一次时, 在飞书小程序无法正确取到Dom节点. 经过测试, 调用2次就可以保持正确.\n * 因此在这里被迫做了一个for循环, 多次尝试. 至多取100次.\n *\n * 此外, 这里也无法使用onReady进行操作, 具体请参考: http://taro-docs.jd.com/taro/docs/react-page#onready-\n * 此问题目前仅出现在飞书小程序, 字节小程序正常.\n */\n const MAX_TIMES = 100;\n for (let i = 0; i < MAX_TIMES; i++) {\n // 获取domRef\n const domref: IDomRef = await getDomRef();\n\n if (domref === null || domref === undefined) {\n // 如果不存在, 则重复循环, 最多尝试100次. 确保不会死循环.\n continue;\n }\n\n // 初始化图表\n Taro.getSystemInfo({\n success: res => {\n this.init({ domref, dpr: res.pixelRatio });\n },\n fail: res => {\n console.error(new Error('taro 暂不支持该环境'));\n console.log(res);\n }\n });\n break;\n }\n }\n\n componentDidUpdate(prevProps: GeneralChartProps) {\n if (\n this.ttCanvas &&\n this.ttCanvas.chartInstance &&\n JSON.stringify(prevProps.spec) !== JSON.stringify(this.props.spec)\n ) {\n this.ttCanvas.updateSpec(this.props);\n }\n }\n\n componentWillUnmount() {\n this.ttCanvas && this.ttCanvas.release();\n }\n\n async init({ domref, dpr = 2 }: { domref: IDomRef; dpr: number }) {\n if (!domref) {\n console.error(`未找到 #${this.props.canvasId} 组件`);\n return;\n }\n\n if (this.props.mode === 'wx' || this.props.mode === 'tt') {\n // 微信小程序和TT小程序环境特殊处理\n const canvasIdLists = [\n `${this.props.canvasId}_draw_canvas`,\n `${this.props.canvasId}_tooltip_canvas`,\n `${this.props.canvasId}_hidden_canvas`\n ];\n\n const { chartConstructor } = this.props;\n const { vglobal } = chartConstructor as any;\n if (vglobal) {\n await vglobal.setEnv(this.props.mode, {\n domref,\n force: true,\n canvasIdLists,\n freeCanvasIdx: 2,\n component: undefined\n });\n }\n }\n\n domref.id = this.props.canvasId;\n this.ttCanvas = new TTCanvas({\n chartConstructor: this.props.chartConstructor,\n dpr: dpr,\n domref,\n spec: this.props.spec,\n events: this.props.events,\n options: this.props.options,\n mode: this.props.mode,\n onChartInit: (chart: IVChart) => {\n this.props?.onChartInit && this.props.onChartInit(chart);\n },\n onChartReady: (chart: IVChart) => {\n this.props?.onChartReady && this.props.onChartReady(chart);\n },\n onChartUpdate: (chart: IVChart) => {\n this.props?.onChartUpdate && this.props.onChartUpdate(chart);\n }\n });\n }\n\n render() {\n const handleEvent = (event: any) => {\n if (this.ttCanvas && this.ttCanvas.chartInstance) {\n const chartInstance = this.ttCanvas.chartInstance;\n\n Object.defineProperty(event, 'target', {\n writable: false,\n value: chartInstance.getCanvas() // Tip: 必须设置\n });\n chartInstance.getStage().window.dispatchEvent(event);\n }\n };\n const { canvasId, style = {} } = this.props;\n const type = this.props.mode === 'wx' || this.props.mode === 'tt' ? '2d' : undefined;\n return (\n <View key={canvasId} style={{ ...style_container, ...style, padding: 0 }}>\n <Canvas\n type={type}\n style={{\n ...style_cs_tooltip_canvas\n }}\n onTouchStart={handleEvent}\n onTouchMove={handleEvent}\n onTouchEnd={handleEvent}\n id={`${canvasId}_tooltip_canvas`}\n canvasId={`${canvasId}_tooltip_canvas`}\n ></Canvas>\n <Canvas\n type={type}\n style={style_cs_canvas}\n id={`${canvasId}_draw_canvas`}\n canvasId={`${canvasId}_draw_canvas`}\n ></Canvas>\n <Canvas\n type={type}\n style={{\n ...style_cs_canvas,\n ...style_cs_canvas_hidden\n }}\n id={`${canvasId}_hidden_canvas`}\n canvasId={`${canvasId}_hidden_canvas`}\n ></Canvas>\n </View>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/general-chart/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import React from 'react';\nimport { View, Canvas } from '@tarojs/components';\nimport Taro from '@tarojs/taro';\nimport {\n TTCanvas,\n style_cs_canvas,\n style_cs_canvas_hidden,\n style_cs_tooltip_canvas,\n style_container\n} from '../../utils';\n\nimport { IChartProps, IVChart, IDomRef, RenderMode } from '../../typings';\n\nexport interface GeneralChartProps extends IChartProps {\n /**\n * vchart 的环境参数\n */\n mode?: RenderMode;\n}\n\nexport class GeneralChart extends React.Component<GeneralChartProps> {\n ttCanvas: TTCanvas;\n\n async componentDidMount() {\n if (!this.props.chartConstructor) {\n console.error('props.chartConstructor is not found');\n }\n if (!this.props.spec || !this.props.canvasId) {\n if (!this.props.spec) console.warn('props.spec are not found');\n if (!this.props.canvasId) console.warn('props.canvasId are not found');\n return;\n }\n\n // 获取domRef\n const getDomRef = async () => {\n return new Promise<IDomRef>(resolve => {\n Taro.nextTick(() => {\n Taro.createSelectorQuery()\n .select(`#${this.props.canvasId}_draw_canvas`)\n .boundingClientRect(domref => {\n resolve(domref as any as IDomRef);\n })\n .exec();\n });\n });\n };\n\n /**\n * TODO:\n * 这里是一个很不优雅的写法\n * 具体背景为: 用户在加载页面后, 立刻创建图表, 会报取不domRef的错误.\n * 具体原因是Taro.nextTick()仅执行一次时, 在飞书小程序无法正确取到Dom节点. 经过测试, 调用2次就可以保持正确.\n * 因此在这里被迫做了一个for循环, 多次尝试. 至多取100次.\n *\n * 此外, 这里也无法使用onReady进行操作, 具体请参考: http://taro-docs.jd.com/taro/docs/react-page#onready-\n * 此问题目前仅出现在飞书小程序, 字节小程序正常.\n */\n const MAX_TIMES = 100;\n for (let i = 0; i < MAX_TIMES; i++) {\n // 获取domRef\n const domref: IDomRef = await getDomRef();\n\n if (domref === null || domref === undefined) {\n // 如果不存在, 则重复循环, 最多尝试100次. 确保不会死循环.\n continue;\n }\n\n // 初始化图表\n Taro.getSystemInfo({\n success: res => {\n this.init({ domref, dpr: res.pixelRatio });\n },\n fail: res => {\n console.error(new Error('taro 暂不支持该环境'));\n console.log(res);\n }\n });\n break;\n }\n }\n\n componentDidUpdate(prevProps: GeneralChartProps) {\n if (\n this.ttCanvas &&\n this.ttCanvas.chartInstance &&\n JSON.stringify(prevProps.spec) !== JSON.stringify(this.props.spec)\n ) {\n this.ttCanvas.updateSpec(this.props);\n }\n }\n\n componentWillUnmount() {\n this.ttCanvas && this.ttCanvas.release();\n }\n\n async init({ domref, dpr = 2 }: { domref: IDomRef; dpr: number }) {\n if (!domref) {\n console.error(`未找到 #${this.props.canvasId} 组件`);\n return;\n }\n\n if (this.props.mode === 'wx' || this.props.mode === 'tt') {\n // 微信小程序和TT小程序环境特殊处理\n const canvasIdLists = [\n `${this.props.canvasId}_draw_canvas`,\n `${this.props.canvasId}_tooltip_canvas`,\n `${this.props.canvasId}_hidden_canvas`\n ];\n\n const { chartConstructor } = this.props;\n const { vglobal } = chartConstructor as any;\n if (vglobal) {\n await vglobal.setEnv(this.props.mode, {\n domref,\n force: true,\n canvasIdLists,\n freeCanvasIdx: 2,\n component: undefined,\n forceUpdate: true\n });\n }\n }\n\n domref.id = this.props.canvasId;\n this.ttCanvas = new TTCanvas({\n chartConstructor: this.props.chartConstructor,\n dpr: dpr,\n domref,\n spec: this.props.spec,\n events: this.props.events,\n options: this.props.options,\n mode: this.props.mode,\n onChartInit: (chart: IVChart) => {\n this.props?.onChartInit && this.props.onChartInit(chart);\n },\n onChartReady: (chart: IVChart) => {\n this.props?.onChartReady && this.props.onChartReady(chart);\n },\n onChartUpdate: (chart: IVChart) => {\n this.props?.onChartUpdate && this.props.onChartUpdate(chart);\n }\n });\n }\n\n render() {\n const handleEvent = (event: any) => {\n if (this.ttCanvas && this.ttCanvas.chartInstance) {\n const chartInstance = this.ttCanvas.chartInstance;\n\n Object.defineProperty(event, 'target', {\n writable: false,\n value: chartInstance.getCanvas() // Tip: 必须设置\n });\n chartInstance.getStage().window.dispatchEvent(event);\n }\n };\n const { canvasId, style = {} } = this.props;\n const type = this.props.mode === 'wx' || this.props.mode === 'tt' ? '2d' : undefined;\n return (\n <View key={canvasId} style={{ ...style_container, ...style, padding: 0 }}>\n <Canvas\n type={type}\n style={{\n ...style_cs_tooltip_canvas\n }}\n onTouchStart={handleEvent}\n onTouchMove={handleEvent}\n onTouchEnd={handleEvent}\n id={`${canvasId}_tooltip_canvas`}\n canvasId={`${canvasId}_tooltip_canvas`}\n ></Canvas>\n <Canvas\n type={type}\n style={style_cs_canvas}\n id={`${canvasId}_draw_canvas`}\n canvasId={`${canvasId}_draw_canvas`}\n ></Canvas>\n <Canvas\n type={type}\n style={{\n ...style_cs_canvas,\n ...style_cs_canvas_hidden\n }}\n id={`${canvasId}_hidden_canvas`}\n canvasId={`${canvasId}_hidden_canvas`}\n ></Canvas>\n </View>\n );\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visactor/taro-vchart",
|
|
3
|
-
"version": "1.13.
|
|
3
|
+
"version": "1.13.7",
|
|
4
4
|
"description": "Taro VChart 图表组件",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "esm/index.js",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
},
|
|
33
33
|
"license": "MIT",
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@visactor/vchart": "1.13.
|
|
35
|
+
"@visactor/vchart": "1.13.7"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@rushstack/eslint-patch": "~1.1.4",
|