chart.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import type { ChartData } from '@/types/slides'
  2. import { lang } from '@/main'
  3. export const getChartTypeMap = (): { [key: string]: string } => ({
  4. bar: lang.ssChartColumn,
  5. column: lang.ssChartBar,
  6. line: lang.ssChartLine,
  7. area: lang.ssChartArea,
  8. scatter: lang.ssChartScatter,
  9. pie: lang.ssChartPie,
  10. ring: lang.ssChartRing,
  11. radar: lang.ssChartRadar,
  12. })
  13. const makeSeq = (pattern: string, n: number) =>
  14. Array.from({ length: n }, (_, i) => pattern.replace(/\*/g, String(i + 1)))
  15. export const getChartDefaultData = (): { [key: string]: ChartData } => {
  16. const cat = makeSeq(lang.ssChartCat, 5)
  17. const ser = makeSeq(lang.ssChartSer, 2)
  18. const coord = makeSeq(lang.ssCoord, 5)
  19. return {
  20. bar: {
  21. labels: cat,
  22. legends: ser,
  23. series: [[12, 19, 5, 2, 18], [7, 11, 13, 21, 9]],
  24. },
  25. column: {
  26. labels: cat,
  27. legends: ser,
  28. series: [[12, 19, 5, 2, 18], [7, 11, 13, 21, 9]],
  29. },
  30. line: {
  31. labels: cat,
  32. legends: ser,
  33. series: [[12, 19, 5, 2, 18], [7, 11, 13, 21, 9]],
  34. },
  35. pie: {
  36. labels: cat,
  37. legends: [lang.ssValue],
  38. series: [[12, 19, 5, 2, 18]],
  39. },
  40. ring: {
  41. labels: cat,
  42. legends: [lang.ssValue],
  43. series: [[12, 19, 5, 2, 18]],
  44. },
  45. area: {
  46. labels: cat,
  47. legends: ser,
  48. series: [[12, 19, 5, 2, 18], [7, 11, 13, 21, 9]],
  49. },
  50. radar: {
  51. labels: cat,
  52. legends: ser,
  53. series: [[12, 19, 5, 2, 18], [7, 11, 13, 21, 9]],
  54. },
  55. scatter: {
  56. labels: coord,
  57. legends: [lang.ssX, lang.ssY],
  58. series: [[12, 19, 5, 2, 18], [7, 11, 13, 21, 9]],
  59. },
  60. }
  61. }
  62. export const CHART_PRESET_THEMES = [
  63. ['#d87c7c', '#919e8b', '#d7ab82', '#6e7074', '#61a0a8', '#efa18d'],
  64. ['#dd6b66', '#759aa0', '#e69d87', '#8dc1a9', '#ea7e53', '#eedd78'],
  65. ['#516b91', '#59c4e6', '#edafda', '#93b7e3', '#a5e7f0', '#cbb0e3'],
  66. ['#893448', '#d95850', '#eb8146', '#ffb248', '#f2d643', '#ebdba4'],
  67. ['#4ea397', '#22c3aa', '#7bd9a5', '#d0648a', '#f58db2', '#f2b3c9'],
  68. ['#3fb1e3', '#6be6c1', '#626c91', '#a0a7e6', '#c4ebad', '#96dee8'],
  69. ['#fc97af', '#87f7cf', '#f7f494', '#72ccff', '#f7c5a0', '#d4a4eb'],
  70. ['#c1232b', '#27727b', '#fcce10', '#e87c25', '#b5c334', '#fe8463'],
  71. ['#2ec7c9', '#b6a2de', '#5ab1ef', '#ffb980', '#d87a80', '#8d98b3'],
  72. ['#e01f54', '#001852', '#f5e8c8', '#b8d2c7', '#c6b38e', '#a4d8c2'],
  73. ['#c12e34', '#e6b600', '#0098d9', '#2b821d', '#005eaa', '#339ca8'],
  74. ['#8a7ca8', '#e098c7', '#8fd3e8', '#71669e', '#cc70af', '#7cb4cc'],
  75. ]