@yoka-ui/ui 1.0.10-test → 1.1.1
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/@Docs-yoka/exports.generated.md +68 -62
- package/LICENSE +21 -0
- package/README.md +40 -189
- package/dist/es/assets/image/skills.zip +0 -0
- package/dist/es/business/AiChat/aichat-logo.svg +1 -0
- package/dist/es/business/AiChat/index.d.ts +3 -3
- package/dist/es/business/AiChat/index.js +322 -137
- package/dist/es/business/AiChat/index.js.map +3 -3
- package/dist/es/business/AiChat/index.module.less +24 -0
- package/dist/es/business/AiChat/intentRecognizer.js.map +1 -1
- package/dist/es/business/AiChat/navigationManager.js +6 -6
- package/dist/es/business/AiChat/navigationManager.js.map +2 -2
- package/dist/es/business/AiChat/sse.d.ts +15 -0
- package/dist/es/business/AiChat/sse.js +118 -7
- package/dist/es/business/AiChat/sse.js.map +2 -2
- package/dist/es/business/AiChat/type.d.ts +22 -23
- package/dist/es/business/AiChat/useAiChat.js +105 -75
- package/dist/es/business/AiChat/useAiChat.js.map +3 -3
- package/dist/es/business/AiChat/useTaskWorkflow.d.ts +1 -2
- package/dist/es/business/AiChat/useTaskWorkflow.js +2 -36
- package/dist/es/business/AiChat/useTaskWorkflow.js.map +2 -2
- package/dist/es/business/DrawerPageInfo/index.js.map +1 -1
- package/dist/es/business/Editor/index.d.ts +1 -1
- package/dist/es/business/Editor/index.js.map +2 -2
- package/dist/es/business/Empty/index.js +1 -1
- package/dist/es/business/Empty/index.js.map +1 -1
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Category.js +2 -2
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Category.js.map +2 -2
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Content.js +3 -3
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Content.js.map +2 -2
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Selected.js +2 -2
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Selected.js.map +2 -2
- package/dist/es/business/ModCommonFilter/index.d.ts +1 -1
- package/dist/es/business/ModCommonFilter/index.js.map +2 -2
- package/dist/es/business/YkCharts/Area.d.ts +18 -0
- package/dist/es/business/YkCharts/Area.js +336 -0
- package/dist/es/business/YkCharts/Area.js.map +7 -0
- package/dist/es/business/YkCharts/Bar.d.ts +21 -0
- package/dist/es/business/YkCharts/Bar.js +316 -0
- package/dist/es/business/YkCharts/Bar.js.map +7 -0
- package/dist/es/business/YkCharts/BarProperty.d.ts +21 -0
- package/dist/es/business/YkCharts/BarProperty.js +357 -0
- package/dist/es/business/YkCharts/BarProperty.js.map +7 -0
- package/dist/es/business/YkCharts/BarTotal.d.ts +21 -0
- package/dist/es/business/YkCharts/BarTotal.js +292 -0
- package/dist/es/business/YkCharts/BarTotal.js.map +7 -0
- package/dist/es/business/YkCharts/Line.d.ts +21 -0
- package/dist/es/business/YkCharts/Line.js +342 -0
- package/dist/es/business/YkCharts/Line.js.map +7 -0
- package/dist/es/business/YkCharts/Pie.d.ts +19 -0
- package/dist/es/business/YkCharts/Pie.js +107 -0
- package/dist/es/business/YkCharts/Pie.js.map +7 -0
- package/dist/es/business/YkCharts/PieProperty.d.ts +18 -0
- package/dist/es/business/YkCharts/PieProperty.js +180 -0
- package/dist/es/business/YkCharts/PieProperty.js.map +7 -0
- package/dist/es/business/YkCharts/Pies.d.ts +26 -0
- package/dist/es/business/YkCharts/Pies.js +352 -0
- package/dist/es/business/YkCharts/Pies.js.map +7 -0
- package/dist/es/business/YkCharts/constants.d.ts +1 -0
- package/dist/es/business/YkCharts/constants.js +47 -0
- package/dist/es/business/YkCharts/constants.js.map +7 -0
- package/dist/es/business/YkCharts/hooks.d.ts +4 -0
- package/dist/es/business/YkCharts/hooks.js +37 -0
- package/dist/es/business/YkCharts/hooks.js.map +7 -0
- package/dist/es/business/YkCharts/index.d.ts +9 -0
- package/dist/es/business/YkCharts/index.js +20 -0
- package/dist/es/business/YkCharts/index.js.map +7 -0
- package/dist/es/business/YkCharts/index.module.less +164 -0
- package/dist/es/business/YkCharts/tooltip.less +92 -0
- package/dist/es/business/YkCharts/transformData.js +16 -0
- package/dist/es/business/YkCharts/transformData.js.map +7 -0
- package/dist/es/business/YkCharts/typing.d.ts +74 -0
- package/dist/es/business/YkCharts/typing.js +1 -0
- package/dist/es/business/YkCharts/typing.js.map +7 -0
- package/dist/es/business/YkCharts/utils.d.ts +4 -0
- package/dist/es/business/YkCharts/utils.js +109 -0
- package/dist/es/business/YkCharts/utils.js.map +7 -0
- package/dist/es/business/YkCharts/variables.less +13 -0
- package/dist/es/business/YkLoginModule/SmsLoginForm.d.ts +25 -0
- package/dist/es/business/YkLoginModule/SmsLoginForm.js +178 -0
- package/dist/es/business/YkLoginModule/SmsLoginForm.js.map +7 -0
- package/dist/es/business/YkLoginModule/index.d.ts +48 -0
- package/dist/es/business/YkLoginModule/index.js +198 -0
- package/dist/es/business/YkLoginModule/index.js.map +7 -0
- package/dist/es/business/YkLoginModule/styles.module.less +169 -0
- package/dist/es/business/YkPorjectSelect/index.d.ts +1 -1
- package/dist/es/business/YkPorjectSelect/index.js +2 -2
- package/dist/es/business/YkPorjectSelect/index.js.map +2 -2
- package/dist/es/business/YkSqlEdit/code-mirror-custom.module.less +154 -0
- package/dist/es/business/YkSqlEdit/index.d.ts +20 -0
- package/dist/es/business/YkSqlEdit/index.js +180 -0
- package/dist/es/business/YkSqlEdit/index.js.map +7 -0
- package/dist/es/business/YkSqlEdit/sql-language.d.ts +11 -0
- package/dist/es/business/YkSqlEdit/sql-language.js +1460 -0
- package/dist/es/business/YkSqlEdit/sql-language.js.map +7 -0
- package/dist/es/components/DebounceInput/index.js.map +2 -2
- package/dist/es/components/MultipleSelect/index.d.ts +14 -0
- package/dist/es/components/MultipleSelect/index.js +1 -1
- package/dist/es/components/MultipleSelect/index.js.map +2 -2
- package/dist/es/components/RefreshButton/index.js.map +2 -2
- package/dist/es/components/SearchWithHistory/index.js +1 -1
- package/dist/es/components/SearchWithHistory/index.js.map +2 -2
- package/dist/es/components/TextWithToolTip/index.d.ts +1 -1
- package/dist/es/components/TextWithToolTip/index.js.map +2 -2
- package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.d.ts +1 -24
- package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.js +2 -2
- package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.js.map +2 -2
- package/dist/es/components/TreeTransfer/index.d.ts +1 -24
- package/dist/es/components/TreeTransfer/index.js +8 -8
- package/dist/es/components/TreeTransfer/index.js.map +2 -2
- package/dist/es/components/TreeTransfer/utils/index.d.ts +1 -1
- package/dist/es/components/TreeTransfer/utils/index.js.map +2 -2
- package/dist/es/components/YKMarkdown/index.d.ts +11 -0
- package/dist/es/components/YKMarkdown/index.js +236 -0
- package/dist/es/components/YKMarkdown/index.js.map +7 -0
- package/dist/es/components/YKMarkdown/index.module.less +83 -0
- package/dist/es/components/YkDateRangePicker/YkDateRangePicker.mdx +194 -0
- package/dist/es/components/YkDateRangePicker/index.d.ts +9 -1
- package/dist/es/components/YkDateRangePicker/index.js +127 -61
- package/dist/es/components/YkDateRangePicker/index.js.map +2 -2
- package/dist/es/components/YkDateRangePicker/index.module.less +33 -9
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.d.ts +1 -1
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js +3 -2
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js.map +2 -2
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSRange.d.ts +1 -1
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js +23 -3
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js.map +2 -2
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.d.ts +1 -1
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js.map +2 -2
- package/dist/es/components/YkRangeDateWithVS/index.d.ts +2 -2
- package/dist/es/components/YkRangeDateWithVS/index.js.map +2 -2
- package/dist/es/components/YkRangeDateWithVS/index.module.less +22 -4
- package/dist/es/components/YkRangeTimeWithRecent/index.d.ts +1 -1
- package/dist/es/components/YkRangeTimeWithRecent/index.js.map +2 -2
- package/dist/es/creative/ArcCheckbox/index.d.ts +12 -0
- package/dist/es/creative/ArcCheckbox/index.js +49 -0
- package/dist/es/creative/ArcCheckbox/index.js.map +7 -0
- package/dist/es/creative/ArcCheckbox/index.module.less +102 -0
- package/dist/es/creative/ButtonRadioWithInfo/index.js.map +1 -1
- package/dist/es/creative/ButtonWithProgress/index.d.ts +1 -1
- package/dist/es/creative/ButtonWithProgress/index.js.map +2 -2
- package/dist/es/creative/GlassSegmentedRadio/index.d.ts +24 -0
- package/dist/es/creative/GlassSegmentedRadio/index.js +75 -0
- package/dist/es/creative/GlassSegmentedRadio/index.js.map +7 -0
- package/dist/es/creative/GlassSegmentedRadio/index.module.less +241 -0
- package/dist/es/creative/SkillsWriter/index.d.ts +3 -0
- package/dist/es/creative/SkillsWriter/index.js +191 -0
- package/dist/es/creative/SkillsWriter/index.js.map +7 -0
- package/dist/es/creative/SkillsWriter/index.module.less +21 -0
- package/dist/es/index.d.ts +32 -24
- package/dist/es/index.js +90 -80
- package/dist/es/index.js.map +2 -2
- package/dist/es/index.less +45 -0
- package/dist/es/layout/FlexGrid/index.d.ts +1 -1
- package/dist/es/layout/FlexGrid/index.js.map +2 -2
- package/dist/es/layout/YkContainer/index.js.map +1 -1
- package/dist/es/layout/YkDrawer/index.d.ts +1 -1
- package/dist/es/layout/YkDrawer/index.js.map +2 -2
- package/dist/es/ui/LabelSelect/demo.js +1 -1
- package/dist/es/ui/LabelSelect/demo.js.map +2 -2
- package/dist/es/ui/LabelSelect/index.d.ts +1 -1
- package/dist/es/ui/LabelSelect/index.js +1 -1
- package/dist/es/ui/LabelSelect/index.js.map +2 -2
- package/dist/es/ui/LogicOperator/index.d.ts +1 -1
- package/dist/es/ui/LogicOperator/index.js.map +2 -2
- package/dist/es/ui/YkButton/index.d.ts +1 -1
- package/dist/es/ui/YkButton/index.js.map +2 -2
- package/dist/es/ui/YkCard/index.d.ts +1 -1
- package/dist/es/ui/YkCard/index.js +1 -1
- package/dist/es/ui/YkCard/index.js.map +2 -2
- package/dist/es/ui/YkCheckbox/index.d.ts +1 -1
- package/dist/es/ui/YkCheckbox/index.js.map +2 -2
- package/dist/es/ui/YkDescriptions/index.d.ts +1 -1
- package/dist/es/ui/YkDescriptions/index.js.map +2 -2
- package/dist/es/ui/YkPagination/index.d.ts +1 -1
- package/dist/es/ui/YkPagination/index.js.map +2 -2
- package/dist/es/ui/YkRadio/index.d.ts +1 -1
- package/dist/es/ui/YkRadio/index.js.map +2 -2
- package/dist/es/ui/YkSegmented/index.d.ts +1 -1
- package/dist/es/ui/YkSegmented/index.js.map +2 -2
- package/dist/es/ui/YkSelect/index.d.ts +1 -1
- package/dist/es/ui/YkSelect/index.js.map +2 -2
- package/dist/es/ui/YkSpin/index.d.ts +1 -1
- package/dist/es/ui/YkSpin/index.js.map +2 -2
- package/dist/es/ui/YkStatistic/index.d.ts +1 -1
- package/dist/es/ui/YkStatistic/index.js.map +2 -2
- package/dist/es/ui/YkSwitch/index.d.ts +1 -1
- package/dist/es/ui/YkSwitch/index.js.map +2 -2
- package/dist/es/ui/YkTabs/index.d.ts +1 -1
- package/dist/es/ui/YkTabs/index.js.map +2 -2
- package/dist/es/ui/YkTooltip/index.d.ts +1 -1
- package/dist/es/ui/YkTooltip/index.js.map +2 -2
- package/dist/es/utils/styleUtils.js.map +2 -2
- package/dist/es/utils/ykStorybookDoc.d.ts +15 -0
- package/dist/es/utils/ykStorybookDoc.js +24 -2
- package/dist/es/utils/ykStorybookDoc.js.map +2 -2
- package/dist/lib/assets/image/skills.zip +0 -0
- package/dist/lib/business/AiChat/aichat-logo.svg +1 -0
- package/dist/lib/business/AiChat/index.d.ts +3 -3
- package/dist/lib/business/AiChat/index.js +311 -129
- package/dist/lib/business/AiChat/index.js.map +3 -3
- package/dist/lib/business/AiChat/index.module.less +24 -0
- package/dist/lib/business/AiChat/intentRecognizer.js.map +1 -1
- package/dist/lib/business/AiChat/navigationManager.js +6 -6
- package/dist/lib/business/AiChat/navigationManager.js.map +2 -2
- package/dist/lib/business/AiChat/sse.d.ts +15 -0
- package/dist/lib/business/AiChat/sse.js +117 -7
- package/dist/lib/business/AiChat/sse.js.map +2 -2
- package/dist/lib/business/AiChat/type.d.ts +22 -23
- package/dist/lib/business/AiChat/type.js.map +1 -1
- package/dist/lib/business/AiChat/useAiChat.js +104 -74
- package/dist/lib/business/AiChat/useAiChat.js.map +3 -3
- package/dist/lib/business/AiChat/useTaskWorkflow.d.ts +1 -2
- package/dist/lib/business/AiChat/useTaskWorkflow.js +0 -34
- package/dist/lib/business/AiChat/useTaskWorkflow.js.map +2 -2
- package/dist/lib/business/DrawerPageInfo/index.js.map +1 -1
- package/dist/lib/business/Editor/index.d.ts +1 -1
- package/dist/lib/business/Editor/index.js.map +2 -2
- package/dist/lib/business/Empty/index.js +1 -1
- package/dist/lib/business/Empty/index.js.map +1 -1
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Category.js +3 -3
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Category.js.map +2 -2
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Content.js +4 -4
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Content.js.map +2 -2
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Selected.js +3 -3
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Selected.js.map +2 -2
- package/dist/lib/business/ModCommonFilter/index.d.ts +1 -1
- package/dist/lib/business/ModCommonFilter/index.js.map +2 -2
- package/dist/lib/business/YkCharts/Area.d.ts +18 -0
- package/dist/lib/business/YkCharts/Area.js +346 -0
- package/dist/lib/business/YkCharts/Area.js.map +7 -0
- package/dist/lib/business/YkCharts/Bar.d.ts +21 -0
- package/dist/lib/business/YkCharts/Bar.js +323 -0
- package/dist/lib/business/YkCharts/Bar.js.map +7 -0
- package/dist/lib/business/YkCharts/BarProperty.d.ts +21 -0
- package/dist/lib/business/YkCharts/BarProperty.js +370 -0
- package/dist/lib/business/YkCharts/BarProperty.js.map +7 -0
- package/dist/lib/business/YkCharts/BarTotal.d.ts +21 -0
- package/dist/lib/business/YkCharts/BarTotal.js +298 -0
- package/dist/lib/business/YkCharts/BarTotal.js.map +7 -0
- package/dist/lib/business/YkCharts/Line.d.ts +21 -0
- package/dist/lib/business/YkCharts/Line.js +349 -0
- package/dist/lib/business/YkCharts/Line.js.map +7 -0
- package/dist/lib/business/YkCharts/Pie.d.ts +19 -0
- package/dist/lib/business/YkCharts/Pie.js +117 -0
- package/dist/lib/business/YkCharts/Pie.js.map +7 -0
- package/dist/lib/business/YkCharts/PieProperty.d.ts +18 -0
- package/dist/lib/business/YkCharts/PieProperty.js +193 -0
- package/dist/lib/business/YkCharts/PieProperty.js.map +7 -0
- package/dist/lib/business/YkCharts/Pies.d.ts +26 -0
- package/dist/lib/business/YkCharts/Pies.js +341 -0
- package/dist/lib/business/YkCharts/Pies.js.map +7 -0
- package/dist/lib/business/YkCharts/constants.d.ts +1 -0
- package/dist/lib/business/YkCharts/constants.js +71 -0
- package/dist/lib/business/YkCharts/constants.js.map +7 -0
- package/dist/lib/business/YkCharts/hooks.d.ts +4 -0
- package/dist/lib/business/YkCharts/hooks.js +62 -0
- package/dist/lib/business/YkCharts/hooks.js.map +7 -0
- package/dist/lib/business/YkCharts/index.d.ts +9 -0
- package/dist/lib/business/YkCharts/index.js +61 -0
- package/dist/lib/business/YkCharts/index.js.map +7 -0
- package/dist/lib/business/YkCharts/index.module.less +164 -0
- package/dist/lib/business/YkCharts/tooltip.less +92 -0
- package/dist/lib/business/YkCharts/transformData.js +40 -0
- package/dist/lib/business/YkCharts/transformData.js.map +7 -0
- package/dist/lib/business/YkCharts/typing.d.ts +74 -0
- package/dist/lib/business/YkCharts/typing.js +18 -0
- package/dist/lib/business/YkCharts/typing.js.map +7 -0
- package/dist/lib/business/YkCharts/utils.d.ts +4 -0
- package/dist/lib/business/YkCharts/utils.js +143 -0
- package/dist/lib/business/YkCharts/utils.js.map +7 -0
- package/dist/lib/business/YkCharts/variables.less +13 -0
- package/dist/lib/business/YkLoginModule/SmsLoginForm.d.ts +25 -0
- package/dist/lib/business/YkLoginModule/SmsLoginForm.js +171 -0
- package/dist/lib/business/YkLoginModule/SmsLoginForm.js.map +7 -0
- package/dist/lib/business/YkLoginModule/index.d.ts +48 -0
- package/dist/lib/business/YkLoginModule/index.js +206 -0
- package/dist/lib/business/YkLoginModule/index.js.map +7 -0
- package/dist/lib/business/YkLoginModule/styles.module.less +169 -0
- package/dist/lib/business/YkPorjectSelect/index.d.ts +1 -1
- package/dist/lib/business/YkPorjectSelect/index.js +3 -3
- package/dist/lib/business/YkPorjectSelect/index.js.map +2 -2
- package/dist/lib/business/YkSqlEdit/code-mirror-custom.module.less +154 -0
- package/dist/lib/business/YkSqlEdit/index.d.ts +20 -0
- package/dist/lib/business/YkSqlEdit/index.js +202 -0
- package/dist/lib/business/YkSqlEdit/index.js.map +7 -0
- package/dist/lib/business/YkSqlEdit/sql-language.d.ts +11 -0
- package/dist/lib/business/YkSqlEdit/sql-language.js +1493 -0
- package/dist/lib/business/YkSqlEdit/sql-language.js.map +7 -0
- package/dist/lib/components/DebounceInput/index.js.map +2 -2
- package/dist/lib/components/MultipleSelect/index.d.ts +14 -0
- package/dist/lib/components/MultipleSelect/index.js +1 -1
- package/dist/lib/components/MultipleSelect/index.js.map +2 -2
- package/dist/lib/components/RefreshButton/index.js.map +2 -2
- package/dist/lib/components/SearchWithHistory/index.js +1 -1
- package/dist/lib/components/SearchWithHistory/index.js.map +2 -2
- package/dist/lib/components/TextWithToolTip/index.d.ts +1 -1
- package/dist/lib/components/TextWithToolTip/index.js.map +2 -2
- package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.d.ts +1 -24
- package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.js +2 -2
- package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.js.map +2 -2
- package/dist/lib/components/TreeTransfer/index.d.ts +1 -24
- package/dist/lib/components/TreeTransfer/index.js +3 -3
- package/dist/lib/components/TreeTransfer/index.js.map +2 -2
- package/dist/lib/components/TreeTransfer/utils/index.d.ts +1 -1
- package/dist/lib/components/TreeTransfer/utils/index.js.map +2 -2
- package/dist/lib/components/YKMarkdown/index.d.ts +11 -0
- package/dist/lib/components/YKMarkdown/index.js +188 -0
- package/dist/lib/components/YKMarkdown/index.js.map +7 -0
- package/dist/lib/components/YKMarkdown/index.module.less +83 -0
- package/dist/lib/components/YkDateRangePicker/YkDateRangePicker.mdx +194 -0
- package/dist/lib/components/YkDateRangePicker/index.d.ts +9 -1
- package/dist/lib/components/YkDateRangePicker/index.js +127 -61
- package/dist/lib/components/YkDateRangePicker/index.js.map +2 -2
- package/dist/lib/components/YkDateRangePicker/index.module.less +33 -9
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.d.ts +1 -1
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js +3 -2
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js.map +2 -2
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSRange.d.ts +1 -1
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js +22 -2
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js.map +2 -2
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.d.ts +1 -1
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js.map +2 -2
- package/dist/lib/components/YkRangeDateWithVS/index.d.ts +2 -2
- package/dist/lib/components/YkRangeDateWithVS/index.js.map +2 -2
- package/dist/lib/components/YkRangeDateWithVS/index.module.less +22 -4
- package/dist/lib/components/YkRangeTimeWithRecent/index.d.ts +1 -1
- package/dist/lib/components/YkRangeTimeWithRecent/index.js.map +2 -2
- package/dist/lib/creative/ArcCheckbox/index.d.ts +12 -0
- package/dist/lib/creative/ArcCheckbox/index.js +50 -0
- package/dist/lib/creative/ArcCheckbox/index.js.map +7 -0
- package/dist/lib/creative/ArcCheckbox/index.module.less +102 -0
- package/dist/lib/creative/ButtonRadioWithInfo/index.js.map +1 -1
- package/dist/lib/creative/ButtonWithProgress/index.d.ts +1 -1
- package/dist/lib/creative/ButtonWithProgress/index.js.map +2 -2
- package/dist/lib/creative/GlassSegmentedRadio/index.d.ts +24 -0
- package/dist/lib/creative/GlassSegmentedRadio/index.js +78 -0
- package/dist/lib/creative/GlassSegmentedRadio/index.js.map +7 -0
- package/dist/lib/creative/GlassSegmentedRadio/index.module.less +241 -0
- package/dist/lib/creative/SkillsWriter/index.d.ts +3 -0
- package/dist/lib/creative/SkillsWriter/index.js +200 -0
- package/dist/lib/creative/SkillsWriter/index.js.map +7 -0
- package/dist/lib/creative/SkillsWriter/index.module.less +21 -0
- package/dist/lib/index.d.ts +32 -24
- package/dist/lib/index.js +39 -24
- package/dist/lib/index.js.map +2 -2
- package/dist/lib/index.less +45 -0
- package/dist/lib/layout/FlexGrid/index.d.ts +1 -1
- package/dist/lib/layout/FlexGrid/index.js.map +2 -2
- package/dist/lib/layout/YkContainer/index.js.map +1 -1
- package/dist/lib/layout/YkDrawer/index.d.ts +1 -1
- package/dist/lib/layout/YkDrawer/index.js.map +2 -2
- package/dist/lib/ui/LabelSelect/demo.js +1 -1
- package/dist/lib/ui/LabelSelect/demo.js.map +2 -2
- package/dist/lib/ui/LabelSelect/index.d.ts +1 -1
- package/dist/lib/ui/LabelSelect/index.js +1 -1
- package/dist/lib/ui/LabelSelect/index.js.map +2 -2
- package/dist/lib/ui/LogicOperator/index.d.ts +1 -1
- package/dist/lib/ui/LogicOperator/index.js.map +2 -2
- package/dist/lib/ui/YkButton/index.d.ts +1 -1
- package/dist/lib/ui/YkButton/index.js.map +2 -2
- package/dist/lib/ui/YkCard/index.d.ts +1 -1
- package/dist/lib/ui/YkCard/index.js.map +2 -2
- package/dist/lib/ui/YkCheckbox/index.d.ts +1 -1
- package/dist/lib/ui/YkCheckbox/index.js.map +2 -2
- package/dist/lib/ui/YkDescriptions/index.d.ts +1 -1
- package/dist/lib/ui/YkDescriptions/index.js.map +2 -2
- package/dist/lib/ui/YkPagination/index.d.ts +1 -1
- package/dist/lib/ui/YkPagination/index.js.map +2 -2
- package/dist/lib/ui/YkRadio/index.d.ts +1 -1
- package/dist/lib/ui/YkRadio/index.js.map +2 -2
- package/dist/lib/ui/YkSegmented/index.d.ts +1 -1
- package/dist/lib/ui/YkSegmented/index.js.map +2 -2
- package/dist/lib/ui/YkSelect/index.d.ts +1 -1
- package/dist/lib/ui/YkSelect/index.js.map +2 -2
- package/dist/lib/ui/YkSpin/index.d.ts +1 -1
- package/dist/lib/ui/YkSpin/index.js.map +2 -2
- package/dist/lib/ui/YkStatistic/index.d.ts +1 -1
- package/dist/lib/ui/YkStatistic/index.js.map +2 -2
- package/dist/lib/ui/YkSwitch/index.d.ts +1 -1
- package/dist/lib/ui/YkSwitch/index.js.map +2 -2
- package/dist/lib/ui/YkTabs/index.d.ts +1 -1
- package/dist/lib/ui/YkTabs/index.js.map +2 -2
- package/dist/lib/ui/YkTooltip/index.d.ts +1 -1
- package/dist/lib/ui/YkTooltip/index.js.map +2 -2
- package/dist/lib/utils/styleUtils.js.map +2 -2
- package/dist/lib/utils/ykStorybookDoc.d.ts +15 -0
- package/dist/lib/utils/ykStorybookDoc.js +23 -1
- package/dist/lib/utils/ykStorybookDoc.js.map +2 -2
- package/package.json +151 -144
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
|
|
21
|
+
// src/business/YkCharts/BarTotal.tsx
|
|
22
|
+
import { Empty, message } from "antd";
|
|
23
|
+
import classNames from "classnames";
|
|
24
|
+
import Decimal from "decimal.js";
|
|
25
|
+
import * as echarts from "echarts";
|
|
26
|
+
import React, { useEffect, useMemo, useRef } from "react";
|
|
27
|
+
import ReactDOMServer from "react-dom/server";
|
|
28
|
+
import { chartColors } from "./constants";
|
|
29
|
+
import styles from "./index.module.less";
|
|
30
|
+
import { formatNumber, formatValue } from "./utils";
|
|
31
|
+
var MAX_SECTORS = 500;
|
|
32
|
+
var BarTotal = ({
|
|
33
|
+
count,
|
|
34
|
+
// 指标显示数量
|
|
35
|
+
metric,
|
|
36
|
+
// 指标
|
|
37
|
+
groupBys,
|
|
38
|
+
// 维度
|
|
39
|
+
tableData,
|
|
40
|
+
// 表格数据
|
|
41
|
+
baseData,
|
|
42
|
+
// 基础数据
|
|
43
|
+
columnConfigMap,
|
|
44
|
+
// 列配置
|
|
45
|
+
height
|
|
46
|
+
}) => {
|
|
47
|
+
const chartContainerRef = useRef(null);
|
|
48
|
+
const chartInstanceRef = useRef(null);
|
|
49
|
+
const validGroupByKeys = useMemo(() => {
|
|
50
|
+
return groupBys.filter((g) => Array.isArray(g.selected) && g.selected.length > 0).map((g) => g.key);
|
|
51
|
+
}, [groupBys]);
|
|
52
|
+
const seriesData = useMemo(() => {
|
|
53
|
+
if (Array.isArray(groupBys) && groupBys.some((g) => Array.isArray(g.selected) && g.selected.length === 0)) {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
const validGroupBys = groupBys.filter((g) => Array.isArray(g.selected) && g.selected.length > 0);
|
|
57
|
+
if (!baseData || baseData.length === 0) {
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
const filteredBaseData = baseData.filter((item) => {
|
|
61
|
+
return validGroupBys.every((g) => {
|
|
62
|
+
var _a;
|
|
63
|
+
const itemValue = String((_a = item[g.key]) != null ? _a : "");
|
|
64
|
+
return g.selected.includes(itemValue);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
const byGroupBy = /* @__PURE__ */ new Map();
|
|
68
|
+
filteredBaseData.forEach((item) => {
|
|
69
|
+
const groupByValues = validGroupByKeys.map((key) => {
|
|
70
|
+
var _a;
|
|
71
|
+
return String((_a = item[key]) != null ? _a : "");
|
|
72
|
+
}).join("|");
|
|
73
|
+
const name = validGroupByKeys.map((key) => item[key]).join(",");
|
|
74
|
+
if (!byGroupBy.has(groupByValues)) {
|
|
75
|
+
byGroupBy.set(groupByValues, { name, rows: [] });
|
|
76
|
+
}
|
|
77
|
+
byGroupBy.get(groupByValues).rows.push(item);
|
|
78
|
+
});
|
|
79
|
+
const result = Array.from(byGroupBy.entries()).map(([, { name, rows }]) => {
|
|
80
|
+
const data = metric.map((m) => {
|
|
81
|
+
const sum = rows.reduce((s, r) => s + (Number(r[m]) || 0), 0);
|
|
82
|
+
return sum;
|
|
83
|
+
});
|
|
84
|
+
const dataSum = data.reduce((s, v) => s + (Number.isNaN(v) ? 0 : v), 0);
|
|
85
|
+
return {
|
|
86
|
+
name,
|
|
87
|
+
type: "bar",
|
|
88
|
+
barMaxWidth: 20,
|
|
89
|
+
smooth: true,
|
|
90
|
+
showSymbol: false,
|
|
91
|
+
data,
|
|
92
|
+
dataSum
|
|
93
|
+
};
|
|
94
|
+
});
|
|
95
|
+
result.sort((a, b) => b.dataSum - a.dataSum);
|
|
96
|
+
return result;
|
|
97
|
+
}, [baseData, metric, groupBys, validGroupByKeys]);
|
|
98
|
+
const series = useMemo(() => {
|
|
99
|
+
const list = seriesData.length > MAX_SECTORS ? seriesData.slice(0, MAX_SECTORS) : seriesData;
|
|
100
|
+
if (seriesData.length > MAX_SECTORS) {
|
|
101
|
+
message.warning(`数据量过大,仅绘制前 ${MAX_SECTORS} 条数据`);
|
|
102
|
+
}
|
|
103
|
+
return list.map(({ name, data, type, barMaxWidth, smooth, showSymbol }) => ({
|
|
104
|
+
name,
|
|
105
|
+
type,
|
|
106
|
+
barMaxWidth,
|
|
107
|
+
smooth,
|
|
108
|
+
showSymbol,
|
|
109
|
+
data
|
|
110
|
+
}));
|
|
111
|
+
}, [seriesData]);
|
|
112
|
+
const chartData = useMemo(() => {
|
|
113
|
+
return series.map((s) => {
|
|
114
|
+
const obj = {};
|
|
115
|
+
metric.forEach((m, i) => {
|
|
116
|
+
obj[m] = s.data[i];
|
|
117
|
+
});
|
|
118
|
+
return __spreadValues({ name: s.name }, obj);
|
|
119
|
+
});
|
|
120
|
+
}, [series, metric]);
|
|
121
|
+
const yAxisFormatter = useMemo(() => {
|
|
122
|
+
var _a;
|
|
123
|
+
if (metric.length === 1) {
|
|
124
|
+
return (_a = columnConfigMap[metric[0]]) == null ? void 0 : _a.format;
|
|
125
|
+
}
|
|
126
|
+
return null;
|
|
127
|
+
}, [metric, columnConfigMap]);
|
|
128
|
+
const grid = {
|
|
129
|
+
top: 10,
|
|
130
|
+
left: 0,
|
|
131
|
+
right: 10,
|
|
132
|
+
bottom: 40,
|
|
133
|
+
containLabel: true
|
|
134
|
+
};
|
|
135
|
+
const legend = {
|
|
136
|
+
bottom: 0,
|
|
137
|
+
type: "scroll"
|
|
138
|
+
};
|
|
139
|
+
const xAxis = {
|
|
140
|
+
type: "category",
|
|
141
|
+
data: metric,
|
|
142
|
+
axisLine: {
|
|
143
|
+
lineStyle: {
|
|
144
|
+
color: "#EBEEF4"
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
axisLabel: {
|
|
148
|
+
color: "#9CA4B3",
|
|
149
|
+
fontSize: 12
|
|
150
|
+
},
|
|
151
|
+
axisTick: {
|
|
152
|
+
alignWithLabel: true
|
|
153
|
+
},
|
|
154
|
+
boundaryGap: true
|
|
155
|
+
};
|
|
156
|
+
const yAxis = {
|
|
157
|
+
type: "value",
|
|
158
|
+
splitNumber: 4,
|
|
159
|
+
// 设置Y轴坐标点数量
|
|
160
|
+
axisLine: {
|
|
161
|
+
show: true,
|
|
162
|
+
lineStyle: {
|
|
163
|
+
color: "#EBEEF4",
|
|
164
|
+
shadowOffsetY: -10,
|
|
165
|
+
shadowColor: "#EBEEF4"
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
axisLabel: {
|
|
169
|
+
color: "#999999",
|
|
170
|
+
fontSize: 12,
|
|
171
|
+
formatter: (value) => {
|
|
172
|
+
if (yAxisFormatter) {
|
|
173
|
+
if (yAxisFormatter === "currency") {
|
|
174
|
+
const [result2, unit2] = formatNumber(value, true);
|
|
175
|
+
return result2 + unit2;
|
|
176
|
+
}
|
|
177
|
+
if (yAxisFormatter === "percent") {
|
|
178
|
+
return new Decimal(value).mul(100) + "%";
|
|
179
|
+
}
|
|
180
|
+
return formatValue(value, yAxisFormatter);
|
|
181
|
+
}
|
|
182
|
+
const [result, unit] = formatNumber(value, true);
|
|
183
|
+
return result + unit;
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
splitLine: {
|
|
187
|
+
lineStyle: {
|
|
188
|
+
type: [2, 3],
|
|
189
|
+
// 虚线
|
|
190
|
+
color: "#E7E7E7"
|
|
191
|
+
// 背景线颜色
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
axisTick: {
|
|
195
|
+
show: true
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
const tooltipFormatter = (params) => {
|
|
199
|
+
var _a, _b;
|
|
200
|
+
const title = (_b = (_a = params[0]) == null ? void 0 : _a.axisValue) != null ? _b : "";
|
|
201
|
+
const filterParams = params.filter((f) => {
|
|
202
|
+
const { name, seriesName } = f;
|
|
203
|
+
if (name === "合计") {
|
|
204
|
+
return true;
|
|
205
|
+
} else if (chartData.some((dataItem) => {
|
|
206
|
+
return (dataItem == null ? void 0 : dataItem.name) === seriesName;
|
|
207
|
+
})) {
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
return false;
|
|
211
|
+
});
|
|
212
|
+
const tooltipDom = /* @__PURE__ */ React.createElement("div", { className: styles.tooltip }, /* @__PURE__ */ React.createElement("div", { className: styles.title }, title), /* @__PURE__ */ React.createElement("div", { className: styles.content }, filterParams.map((m) => {
|
|
213
|
+
var _a2;
|
|
214
|
+
const columnConfig = columnConfigMap[metric[0]];
|
|
215
|
+
const format = (_a2 = columnConfig == null ? void 0 : columnConfig.format) != null ? _a2 : "string";
|
|
216
|
+
const showValue = format === "currency" ? formatNumber(m.value, true) : formatValue(m.value, format);
|
|
217
|
+
const showValueText = showValue === "" || showValue[0] === "" ? "-" : showValue;
|
|
218
|
+
return /* @__PURE__ */ React.createElement("div", { className: styles.item, key: m.seriesName }, /* @__PURE__ */ React.createElement("div", { className: classNames(styles.point, styles.pointBar), style: { background: m.color } }), /* @__PURE__ */ React.createElement("div", { className: styles.category }, m.seriesName), /* @__PURE__ */ React.createElement("div", { className: styles.value }, showValueText));
|
|
219
|
+
})));
|
|
220
|
+
return ReactDOMServer.renderToStaticMarkup(tooltipDom);
|
|
221
|
+
};
|
|
222
|
+
const tooltip = {
|
|
223
|
+
trigger: "axis",
|
|
224
|
+
padding: 0,
|
|
225
|
+
confine: true,
|
|
226
|
+
enterable: true,
|
|
227
|
+
axisPointer: {
|
|
228
|
+
type: "shadow"
|
|
229
|
+
},
|
|
230
|
+
formatter: tooltipFormatter
|
|
231
|
+
};
|
|
232
|
+
const chartOptions = useMemo(() => {
|
|
233
|
+
return {
|
|
234
|
+
color: chartColors,
|
|
235
|
+
grid,
|
|
236
|
+
legend: __spreadProps(__spreadValues({}, legend), {
|
|
237
|
+
itemWidth: 10,
|
|
238
|
+
itemHeight: 10
|
|
239
|
+
}),
|
|
240
|
+
xAxis,
|
|
241
|
+
yAxis,
|
|
242
|
+
series,
|
|
243
|
+
tooltip
|
|
244
|
+
};
|
|
245
|
+
}, [series]);
|
|
246
|
+
useEffect(() => {
|
|
247
|
+
return () => {
|
|
248
|
+
if (chartInstanceRef.current) {
|
|
249
|
+
chartInstanceRef.current.dispose();
|
|
250
|
+
chartInstanceRef.current = null;
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
}, []);
|
|
254
|
+
useEffect(() => {
|
|
255
|
+
const container = chartContainerRef.current;
|
|
256
|
+
if (!container)
|
|
257
|
+
return;
|
|
258
|
+
let chart = chartInstanceRef.current;
|
|
259
|
+
if (!chart) {
|
|
260
|
+
chart = echarts.init(container);
|
|
261
|
+
chartInstanceRef.current = chart;
|
|
262
|
+
}
|
|
263
|
+
chart.setOption(chartOptions, true);
|
|
264
|
+
}, [chartOptions]);
|
|
265
|
+
useEffect(() => {
|
|
266
|
+
const chartElement = chartContainerRef.current;
|
|
267
|
+
if (!chartElement)
|
|
268
|
+
return;
|
|
269
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
270
|
+
var _a;
|
|
271
|
+
(_a = chartInstanceRef.current) == null ? void 0 : _a.resize();
|
|
272
|
+
});
|
|
273
|
+
resizeObserver.observe(chartElement);
|
|
274
|
+
return () => {
|
|
275
|
+
resizeObserver.unobserve(chartElement);
|
|
276
|
+
resizeObserver.disconnect();
|
|
277
|
+
};
|
|
278
|
+
}, []);
|
|
279
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, chartData.length > 0 ? /* @__PURE__ */ React.createElement(
|
|
280
|
+
"div",
|
|
281
|
+
{
|
|
282
|
+
ref: chartContainerRef,
|
|
283
|
+
className: styles.echarts,
|
|
284
|
+
style: { width: "100%", height: height || "100%", minHeight: 220 }
|
|
285
|
+
}
|
|
286
|
+
) : /* @__PURE__ */ React.createElement(Empty, { className: styles.empty, description: "暂无数据", image: Empty.PRESENTED_IMAGE_SIMPLE }));
|
|
287
|
+
};
|
|
288
|
+
var BarTotal_default = BarTotal;
|
|
289
|
+
export {
|
|
290
|
+
BarTotal_default as default
|
|
291
|
+
};
|
|
292
|
+
//# sourceMappingURL=BarTotal.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/business/YkCharts/BarTotal.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * 基础分析-合计且有维度时的柱状图\n */\n\nimport { Empty, message } from 'antd';\nimport classNames from 'classnames';\nimport Decimal from 'decimal.js';\nimport * as echarts from 'echarts';\nimport React, { type FC, useEffect, useMemo, useRef } from 'react';\nimport ReactDOMServer from 'react-dom/server';\nimport { chartColors } from './constants';\nimport styles from './index.module.less';\nimport type { ColumnConfig, GroupByItem, TableData } from './typing';\nimport { formatNumber, formatValue } from './utils';\n\ntype RowItem = {\n [key: string]: number | string;\n};\n\ntype PageTypes = {\n count?: number;\n metric: string[];\n groupBys: GroupByItem[];\n tableData: TableData;\n baseData: RowItem[];\n columnConfigMap: { [key: string]: ColumnConfig };\n height?: number;\n};\n\nconst MAX_SECTORS = 500;\n\nconst BarTotal: FC<PageTypes> = ({\n count, // 指标显示数量\n metric, // 指标\n groupBys, // 维度\n tableData, // 表格数据\n baseData, // 基础数据\n columnConfigMap, // 列配置\n height,\n}) => {\n const chartContainerRef = useRef<HTMLDivElement | null>(null);\n const chartInstanceRef = useRef<echarts.ECharts | null>(null);\n\n const validGroupByKeys = useMemo(() => {\n return groupBys.filter((g) => Array.isArray(g.selected) && g.selected.length > 0).map((g) => g.key);\n }, [groupBys]);\n\n // 参照 Bar:从 baseData 提取实际存在的维度组合,不做笛卡尔积\n const seriesData = useMemo(() => {\n if (Array.isArray(groupBys) && groupBys.some((g) => Array.isArray(g.selected) && g.selected.length === 0)) {\n return [];\n }\n const validGroupBys = groupBys.filter((g) => Array.isArray(g.selected) && g.selected.length > 0);\n if (!baseData || baseData.length === 0) {\n return [];\n }\n const filteredBaseData = baseData.filter((item) => {\n return validGroupBys.every((g) => {\n const itemValue = String(item[g.key] ?? '');\n return g.selected.includes(itemValue);\n });\n });\n // 按维度组合聚合行(同一组合可能多行,如多日期需汇总指标)\n const byGroupBy = new Map<string, { name: string; rows: RowItem[] }>();\n filteredBaseData.forEach((item) => {\n const groupByValues = validGroupByKeys.map((key) => String(item[key] ?? '')).join('|');\n const name = validGroupByKeys.map((key) => item[key]).join(',');\n if (!byGroupBy.has(groupByValues)) {\n byGroupBy.set(groupByValues, { name, rows: [] });\n }\n byGroupBy.get(groupByValues)!.rows.push(item);\n });\n const result = Array.from(byGroupBy.entries()).map(([, { name, rows }]) => {\n const data = metric.map((m) => {\n const sum = rows.reduce((s, r) => s + (Number(r[m]) || 0), 0);\n return sum;\n });\n const dataSum = data.reduce((s, v) => s + (Number.isNaN(v) ? 0 : v), 0);\n return {\n name,\n type: 'bar' as const,\n barMaxWidth: 20,\n smooth: true,\n showSymbol: false,\n data,\n dataSum,\n };\n });\n result.sort((a, b) => b.dataSum - a.dataSum);\n return result;\n }, [baseData, metric, groupBys, validGroupByKeys]);\n\n const series = useMemo(() => {\n const list = seriesData.length > MAX_SECTORS ? seriesData.slice(0, MAX_SECTORS) : seriesData;\n if (seriesData.length > MAX_SECTORS) {\n message.warning(`数据量过大,仅绘制前 ${MAX_SECTORS} 条数据`);\n }\n return list.map(({ name, data, type, barMaxWidth, smooth, showSymbol }) => ({\n name,\n type,\n barMaxWidth,\n smooth,\n showSymbol,\n data,\n }));\n }, [seriesData]);\n\n // 供 tooltip 使用:由 series 反推 chartData 结构\n const chartData = useMemo(() => {\n return series.map((s) => {\n const obj: Record<string, number> = {};\n metric.forEach((m, i) => {\n obj[m] = s.data[i];\n });\n return { name: s.name, ...obj };\n });\n }, [series, metric]);\n\n // 获取y轴的格式化方式\n const yAxisFormatter = useMemo(() => {\n if (metric.length === 1) {\n return columnConfigMap[metric[0]]?.format;\n }\n return null;\n }, [metric, columnConfigMap]);\n\n const grid = {\n top: 10,\n left: 0,\n right: 10,\n bottom: 40,\n containLabel: true,\n };\n const legend = {\n bottom: 0,\n type: 'scroll',\n };\n const xAxis = {\n type: 'category',\n data: metric,\n axisLine: {\n lineStyle: {\n color: '#EBEEF4',\n },\n },\n axisLabel: {\n color: '#9CA4B3',\n fontSize: 12,\n },\n axisTick: {\n alignWithLabel: true,\n },\n boundaryGap: true,\n };\n const yAxis = {\n type: 'value',\n splitNumber: 4, // 设置Y轴坐标点数量\n axisLine: {\n show: true,\n lineStyle: {\n color: '#EBEEF4',\n shadowOffsetY: -10,\n shadowColor: '#EBEEF4',\n },\n },\n axisLabel: {\n color: '#999999',\n fontSize: 12,\n formatter: (value: number) => {\n // 目前只有一个指标时, Y轴进行格式化\n if (yAxisFormatter) {\n if (yAxisFormatter === 'currency') {\n const [result, unit] = formatNumber(value, true);\n return result + unit;\n }\n if (yAxisFormatter === 'percent') {\n return new Decimal(value).mul(100) + '%';\n }\n return formatValue(value, yAxisFormatter);\n }\n const [result, unit] = formatNumber(value, true);\n return result + unit;\n },\n },\n splitLine: {\n lineStyle: {\n type: [2, 3], // 虚线\n color: '#E7E7E7', // 背景线颜色\n },\n },\n axisTick: {\n show: true,\n },\n };\n const tooltipFormatter = (params: any) => {\n const title = params[0]?.axisValue ?? '';\n const filterParams = params.filter((f: any) => {\n const { name, seriesName } = f;\n if (name === '合计') {\n return true;\n } else if (\n chartData.some((dataItem) => {\n return dataItem?.name === seriesName;\n })\n ) {\n return true;\n }\n return false;\n });\n\n const tooltipDom = (\n <div className={styles.tooltip}>\n <div className={styles.title}>{title}</div>\n <div className={styles.content}>\n {filterParams.map((m: any) => {\n const columnConfig = columnConfigMap[metric[0]];\n const format = columnConfig?.format ?? 'string'; // 使用可选链和默认值\n const showValue = format === 'currency' ? formatNumber(m.value, true) : formatValue(m.value, format);\n const showValueText = showValue === '' || showValue[0] === '' ? '-' : showValue;\n return (\n <div className={styles.item} key={m.seriesName}>\n <div className={classNames(styles.point, styles.pointBar)} style={{ background: m.color }}></div>\n <div className={styles.category}>{m.seriesName}</div>\n <div className={styles.value}>{showValueText}</div>\n </div>\n );\n })}\n </div>\n </div>\n );\n return ReactDOMServer.renderToStaticMarkup(tooltipDom);\n };\n const tooltip = {\n trigger: 'axis',\n padding: 0,\n confine: true,\n enterable: true,\n axisPointer: {\n type: 'shadow',\n },\n formatter: tooltipFormatter,\n };\n\n // 图表配置\n const chartOptions = useMemo(() => {\n return {\n color: chartColors,\n grid,\n legend: {\n ...legend,\n itemWidth: 10,\n itemHeight: 10,\n },\n xAxis,\n yAxis,\n series,\n tooltip,\n };\n }, [series]);\n\n // 仅卸载时销毁实例\n useEffect(() => {\n return () => {\n if (chartInstanceRef.current) {\n chartInstanceRef.current.dispose();\n chartInstanceRef.current = null;\n }\n };\n }, []);\n\n // 配置变化时仅 setOption\n useEffect(() => {\n const container = chartContainerRef.current;\n if (!container) return;\n let chart = chartInstanceRef.current;\n if (!chart) {\n chart = echarts.init(container);\n chartInstanceRef.current = chart;\n }\n chart.setOption(chartOptions, true);\n }, [chartOptions]);\n\n // 监听容器大小变化(仅挂载时注册)\n useEffect(() => {\n const chartElement = chartContainerRef.current;\n if (!chartElement) return;\n const resizeObserver = new ResizeObserver(() => {\n chartInstanceRef.current?.resize();\n });\n resizeObserver.observe(chartElement);\n return () => {\n resizeObserver.unobserve(chartElement);\n resizeObserver.disconnect();\n };\n }, []);\n\n return (\n <>\n {chartData.length > 0 ? (\n <div\n ref={chartContainerRef}\n className={styles.echarts}\n style={{ width: '100%', height: height || '100%', minHeight: 220 }}\n ></div>\n ) : (\n <Empty className={styles.empty} description='暂无数据' image={Empty.PRESENTED_IMAGE_SIMPLE} />\n )}\n </>\n );\n};\n\nexport default BarTotal;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["result", "unit", "_a"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ColumnConfig, GroupByItem, SqlMetaConfig, TableData } from './typing';
|
|
3
|
+
type RowItem = {
|
|
4
|
+
[key: string]: number | string;
|
|
5
|
+
};
|
|
6
|
+
type PageTypes = {
|
|
7
|
+
count?: number;
|
|
8
|
+
metric: string[];
|
|
9
|
+
groupBys: GroupByItem[];
|
|
10
|
+
tableData: TableData;
|
|
11
|
+
baseData: RowItem[];
|
|
12
|
+
columnConfigMap: {
|
|
13
|
+
[key: string]: ColumnConfig;
|
|
14
|
+
};
|
|
15
|
+
sqlFormatMap?: {
|
|
16
|
+
[key: string]: SqlMetaConfig;
|
|
17
|
+
};
|
|
18
|
+
height?: number;
|
|
19
|
+
};
|
|
20
|
+
declare const _default: React.NamedExoticComponent<PageTypes>;
|
|
21
|
+
export default _default;
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
|
|
21
|
+
// src/business/YkCharts/Line.tsx
|
|
22
|
+
import { Empty, message } from "antd";
|
|
23
|
+
import Decimal from "decimal.js";
|
|
24
|
+
import * as echarts from "echarts";
|
|
25
|
+
import { isEmpty } from "lodash";
|
|
26
|
+
import React, { memo, useEffect, useMemo, useRef } from "react";
|
|
27
|
+
import ReactDOMServer from "react-dom/server";
|
|
28
|
+
import { chartColors } from "./constants";
|
|
29
|
+
import styles from "./index.module.less";
|
|
30
|
+
import { formatNumber, formatValue, sqlFormat } from "./utils";
|
|
31
|
+
var MAX_SECTORS = 500;
|
|
32
|
+
var Line = ({
|
|
33
|
+
count,
|
|
34
|
+
// 指标显示数量
|
|
35
|
+
metric,
|
|
36
|
+
// 指标
|
|
37
|
+
groupBys,
|
|
38
|
+
// 维度
|
|
39
|
+
tableData,
|
|
40
|
+
// 表格数据
|
|
41
|
+
baseData,
|
|
42
|
+
// 基础数据
|
|
43
|
+
columnConfigMap,
|
|
44
|
+
// 列配置
|
|
45
|
+
sqlFormatMap,
|
|
46
|
+
// 列配置(用于SQL可视化中的格式化处理,SQL中的格式化走了另一套逻辑)
|
|
47
|
+
height
|
|
48
|
+
}) => {
|
|
49
|
+
const { x = [], x_field, group_by } = tableData;
|
|
50
|
+
const chartContainerRef = useRef(null);
|
|
51
|
+
const chartInstanceRef = useRef(null);
|
|
52
|
+
const onlyOneMetric = useMemo(() => {
|
|
53
|
+
return metric.length === 1;
|
|
54
|
+
}, [metric]);
|
|
55
|
+
const seriesData = useMemo(() => {
|
|
56
|
+
if (Array.isArray(groupBys) && groupBys.some((g) => Array.isArray(g.selected) && g.selected.length === 0)) {
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
const validGroupBys = groupBys.filter((g) => Array.isArray(g.selected) && g.selected.length > 0);
|
|
60
|
+
const validGroupByKeys = validGroupBys.map((g) => g.key);
|
|
61
|
+
if (!baseData || baseData.length === 0) {
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
const filteredBaseData = baseData.filter((item) => {
|
|
65
|
+
return validGroupBys.every((g) => {
|
|
66
|
+
var _a;
|
|
67
|
+
const itemValue = String((_a = item[g.key]) != null ? _a : "");
|
|
68
|
+
return g.selected.includes(itemValue);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
const dataIndexMap = /* @__PURE__ */ new Map();
|
|
72
|
+
const existingCombinations = /* @__PURE__ */ new Map();
|
|
73
|
+
const getName = (category, groupByObj) => {
|
|
74
|
+
if (group_by && group_by.length > 0) {
|
|
75
|
+
if (onlyOneMetric) {
|
|
76
|
+
return group_by.map((g) => groupByObj[g]).join(",");
|
|
77
|
+
}
|
|
78
|
+
return [category, ...group_by.map((g) => groupByObj[g])].join(",");
|
|
79
|
+
}
|
|
80
|
+
return category;
|
|
81
|
+
};
|
|
82
|
+
filteredBaseData.forEach((item) => {
|
|
83
|
+
const groupByValues = validGroupByKeys.map((key) => {
|
|
84
|
+
var _a;
|
|
85
|
+
return String((_a = item[key]) != null ? _a : "");
|
|
86
|
+
}).join("|");
|
|
87
|
+
metric.forEach((cat) => {
|
|
88
|
+
const key = `${item[x_field]}|${groupByValues}|${cat}`;
|
|
89
|
+
dataIndexMap.set(key, item);
|
|
90
|
+
const combinationKey = `${groupByValues}|${cat}`;
|
|
91
|
+
if (!existingCombinations.has(combinationKey)) {
|
|
92
|
+
const groupByObj = { category: cat };
|
|
93
|
+
validGroupByKeys.forEach((gKey) => {
|
|
94
|
+
groupByObj[gKey] = item[gKey];
|
|
95
|
+
});
|
|
96
|
+
const name = getName(cat, groupByObj);
|
|
97
|
+
existingCombinations.set(combinationKey, {
|
|
98
|
+
groupByValues,
|
|
99
|
+
category: cat,
|
|
100
|
+
groupByObj,
|
|
101
|
+
name
|
|
102
|
+
// 预先计算好的 name
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
const result = Array.from(existingCombinations.values()).map(({ groupByValues, category, name }) => {
|
|
108
|
+
const data = new Array(x.length);
|
|
109
|
+
for (let i = 0; i < x.length; i++) {
|
|
110
|
+
const item = x[i];
|
|
111
|
+
const key = `${item}|${groupByValues}|${category}`;
|
|
112
|
+
const itemData = dataIndexMap.get(key);
|
|
113
|
+
data[i] = itemData == null ? void 0 : itemData[category];
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
name,
|
|
117
|
+
type: "line",
|
|
118
|
+
smooth: true,
|
|
119
|
+
showSymbol: true,
|
|
120
|
+
symbol: "emptyCircle",
|
|
121
|
+
symbolSize: 0.8,
|
|
122
|
+
lineStyle: {
|
|
123
|
+
width: 1.5
|
|
124
|
+
},
|
|
125
|
+
emphasis: {
|
|
126
|
+
scale: 8
|
|
127
|
+
},
|
|
128
|
+
data,
|
|
129
|
+
dataSum: data.reduce((sum, val) => {
|
|
130
|
+
const num = typeof val === "number" ? val : 0;
|
|
131
|
+
return sum + (Number.isNaN(num) ? 0 : num);
|
|
132
|
+
}, 0)
|
|
133
|
+
};
|
|
134
|
+
});
|
|
135
|
+
const sortedResult = result.sort((a, b) => {
|
|
136
|
+
const sumA = a.dataSum;
|
|
137
|
+
const sumB = b.dataSum;
|
|
138
|
+
return sumB - sumA;
|
|
139
|
+
});
|
|
140
|
+
return sortedResult;
|
|
141
|
+
}, [baseData, metric, groupBys, x, x_field, group_by, onlyOneMetric]);
|
|
142
|
+
const yAxisFormatter = useMemo(() => {
|
|
143
|
+
var _a, _b;
|
|
144
|
+
if (!isEmpty(sqlFormatMap) && metric.length > 0) {
|
|
145
|
+
const format = (_a = sqlFormatMap[metric[0]]) == null ? void 0 : _a.format;
|
|
146
|
+
if ((format == null ? void 0 : format.type) === "currency") {
|
|
147
|
+
return "number";
|
|
148
|
+
}
|
|
149
|
+
if ((format == null ? void 0 : format.type) === "percent") {
|
|
150
|
+
return "percent";
|
|
151
|
+
}
|
|
152
|
+
if ((format == null ? void 0 : format.decimals) > 0) {
|
|
153
|
+
return "decimal";
|
|
154
|
+
}
|
|
155
|
+
return "number";
|
|
156
|
+
}
|
|
157
|
+
if (metric.length === 1) {
|
|
158
|
+
return (_b = columnConfigMap[metric[0]]) == null ? void 0 : _b.format;
|
|
159
|
+
}
|
|
160
|
+
return null;
|
|
161
|
+
}, [metric, columnConfigMap, sqlFormatMap]);
|
|
162
|
+
const grid = {
|
|
163
|
+
top: 10,
|
|
164
|
+
left: 5,
|
|
165
|
+
right: 10,
|
|
166
|
+
bottom: 40,
|
|
167
|
+
containLabel: true
|
|
168
|
+
};
|
|
169
|
+
const legend = {
|
|
170
|
+
bottom: 0,
|
|
171
|
+
type: "scroll",
|
|
172
|
+
itemWidth: 13,
|
|
173
|
+
itemStyle: {
|
|
174
|
+
opacity: 0
|
|
175
|
+
},
|
|
176
|
+
lineStyle: {
|
|
177
|
+
width: 2,
|
|
178
|
+
type: "solid"
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
const xAxis = {
|
|
182
|
+
type: "category",
|
|
183
|
+
data: x,
|
|
184
|
+
axisLine: {
|
|
185
|
+
lineStyle: {
|
|
186
|
+
color: "#EBEEF4"
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
axisLabel: {
|
|
190
|
+
color: "#9CA4B3",
|
|
191
|
+
fontSize: 12
|
|
192
|
+
},
|
|
193
|
+
axisTick: {
|
|
194
|
+
alignWithLabel: true
|
|
195
|
+
},
|
|
196
|
+
boundaryGap: true
|
|
197
|
+
};
|
|
198
|
+
const yAxis = {
|
|
199
|
+
type: "value",
|
|
200
|
+
splitNumber: 4,
|
|
201
|
+
// 设置Y轴坐标点数量
|
|
202
|
+
axisLine: {
|
|
203
|
+
show: true,
|
|
204
|
+
lineStyle: {
|
|
205
|
+
color: "#EBEEF4",
|
|
206
|
+
shadowOffsetY: -10,
|
|
207
|
+
shadowColor: "#EBEEF4"
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
axisLabel: {
|
|
211
|
+
color: "#999999",
|
|
212
|
+
fontSize: 12,
|
|
213
|
+
padding: [0, 0, 0, 5],
|
|
214
|
+
formatter: (value) => {
|
|
215
|
+
if (yAxisFormatter === "percent") {
|
|
216
|
+
return new Decimal(value).mul(100) + "%";
|
|
217
|
+
}
|
|
218
|
+
if (yAxisFormatter === "decimal") {
|
|
219
|
+
return formatValue(value, yAxisFormatter);
|
|
220
|
+
}
|
|
221
|
+
const [result, unit] = formatNumber(value, true);
|
|
222
|
+
return result + unit;
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
splitLine: {
|
|
226
|
+
lineStyle: {
|
|
227
|
+
type: [2, 3],
|
|
228
|
+
// 虚线
|
|
229
|
+
color: "#E7E7E7"
|
|
230
|
+
// 背景线颜色
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
axisTick: {
|
|
234
|
+
show: true
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
const tooltipFormatter = (params) => {
|
|
238
|
+
var _a, _b;
|
|
239
|
+
const title = (_b = (_a = params[0]) == null ? void 0 : _a.axisValue) != null ? _b : "";
|
|
240
|
+
const tooltipDom = /* @__PURE__ */ React.createElement("div", { className: styles.tooltip }, /* @__PURE__ */ React.createElement("div", { className: styles.title }, /* @__PURE__ */ React.createElement("span", null, title), /* @__PURE__ */ React.createElement("span", { style: { float: "right", paddingRight: 10 } }, onlyOneMetric && metric.length === 1 ? " " + metric[0] : "")), /* @__PURE__ */ React.createElement("div", { className: styles.content }, params.map((m) => {
|
|
241
|
+
var _a2, _b2;
|
|
242
|
+
const metricName = onlyOneMetric && metric.length === 1 ? metric[0] : m.seriesName.split(",")[0];
|
|
243
|
+
const columnConfig = columnConfigMap[metricName];
|
|
244
|
+
const format = (_a2 = columnConfig == null ? void 0 : columnConfig.format) != null ? _a2 : "string";
|
|
245
|
+
let showValue = format === "currency" ? formatNumber(m.value, true) : formatValue(m.value, format);
|
|
246
|
+
if (!isEmpty(sqlFormatMap) && metric.length > 0) {
|
|
247
|
+
const format2 = (_b2 = sqlFormatMap[metricName]) == null ? void 0 : _b2.format;
|
|
248
|
+
showValue = sqlFormat(m.value, format2);
|
|
249
|
+
}
|
|
250
|
+
const showValueText = showValue === "" || showValue[0] === "" ? "-" : showValue;
|
|
251
|
+
return /* @__PURE__ */ React.createElement("div", { className: styles.item, key: m.seriesName }, /* @__PURE__ */ React.createElement("div", { className: styles.point, style: { background: m.color } }), /* @__PURE__ */ React.createElement("div", { className: styles.category }, m.seriesName), /* @__PURE__ */ React.createElement("div", { className: styles.value }, showValueText));
|
|
252
|
+
})));
|
|
253
|
+
return ReactDOMServer.renderToStaticMarkup(tooltipDom);
|
|
254
|
+
};
|
|
255
|
+
const tooltip = {
|
|
256
|
+
trigger: "axis",
|
|
257
|
+
padding: 0,
|
|
258
|
+
confine: true,
|
|
259
|
+
enterable: true,
|
|
260
|
+
axisPointer: {
|
|
261
|
+
type: "line",
|
|
262
|
+
// 设置悬浮指针为线
|
|
263
|
+
lineStyle: {
|
|
264
|
+
color: "#EBEEF4",
|
|
265
|
+
// 设置线的颜色
|
|
266
|
+
type: "dashed"
|
|
267
|
+
// 设置虚线样式
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
formatter: tooltipFormatter
|
|
271
|
+
};
|
|
272
|
+
const chartOptions = useMemo(() => {
|
|
273
|
+
if (seriesData.length > MAX_SECTORS) {
|
|
274
|
+
message.warning(`数据量过大,仅绘制前 ${MAX_SECTORS} 条数据`);
|
|
275
|
+
}
|
|
276
|
+
const result = {
|
|
277
|
+
color: chartColors,
|
|
278
|
+
grid,
|
|
279
|
+
legend: __spreadProps(__spreadValues({}, legend), {
|
|
280
|
+
itemWidth: 13,
|
|
281
|
+
itemStyle: {
|
|
282
|
+
opacity: 0
|
|
283
|
+
},
|
|
284
|
+
lineStyle: {
|
|
285
|
+
width: 2,
|
|
286
|
+
type: "solid"
|
|
287
|
+
}
|
|
288
|
+
}),
|
|
289
|
+
xAxis,
|
|
290
|
+
yAxis,
|
|
291
|
+
// 前端这里做个限制,防止数据量过大导致性能问题
|
|
292
|
+
series: seriesData.length > MAX_SECTORS ? seriesData.slice(0, MAX_SECTORS) : seriesData,
|
|
293
|
+
tooltip
|
|
294
|
+
};
|
|
295
|
+
return result;
|
|
296
|
+
}, [seriesData]);
|
|
297
|
+
useEffect(() => {
|
|
298
|
+
if (!chartContainerRef.current)
|
|
299
|
+
return;
|
|
300
|
+
let chart = chartInstanceRef.current;
|
|
301
|
+
if (!chart) {
|
|
302
|
+
chart = echarts.init(chartContainerRef.current);
|
|
303
|
+
chartInstanceRef.current = chart;
|
|
304
|
+
}
|
|
305
|
+
chart == null ? void 0 : chart.setOption(chartOptions, true);
|
|
306
|
+
return () => {
|
|
307
|
+
if (chartInstanceRef.current) {
|
|
308
|
+
chartInstanceRef.current.dispose();
|
|
309
|
+
chartInstanceRef.current = null;
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
}, [chartOptions]);
|
|
313
|
+
useEffect(() => {
|
|
314
|
+
const chartElement = chartContainerRef.current;
|
|
315
|
+
if (!chartElement)
|
|
316
|
+
return;
|
|
317
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
318
|
+
const chart = chartInstanceRef.current;
|
|
319
|
+
if (chart) {
|
|
320
|
+
chart.resize();
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
resizeObserver.observe(chartElement);
|
|
324
|
+
return () => {
|
|
325
|
+
resizeObserver.unobserve(chartElement);
|
|
326
|
+
resizeObserver.disconnect();
|
|
327
|
+
};
|
|
328
|
+
}, [seriesData]);
|
|
329
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, seriesData.length > 0 ? /* @__PURE__ */ React.createElement(
|
|
330
|
+
"div",
|
|
331
|
+
{
|
|
332
|
+
ref: chartContainerRef,
|
|
333
|
+
className: styles.echarts,
|
|
334
|
+
style: { width: "100%", height: height || "100%", minHeight: 220 }
|
|
335
|
+
}
|
|
336
|
+
) : /* @__PURE__ */ React.createElement(Empty, { className: styles.empty, description: "暂无数据", image: Empty.PRESENTED_IMAGE_SIMPLE }));
|
|
337
|
+
};
|
|
338
|
+
var Line_default = memo(Line);
|
|
339
|
+
export {
|
|
340
|
+
Line_default as default
|
|
341
|
+
};
|
|
342
|
+
//# sourceMappingURL=Line.js.map
|