@formant/ava 3.4.1-formant

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.
Files changed (534) hide show
  1. package/README.md +72 -0
  2. package/dist/ava.min.js +1 -0
  3. package/esm/advisor/advise-pipeline/advicesForChart.js +68 -0
  4. package/esm/advisor/advise-pipeline/data-to-advices.js +241 -0
  5. package/esm/advisor/advise-pipeline/index.js +1 -0
  6. package/esm/advisor/advise-pipeline/spec-mapping.js +500 -0
  7. package/esm/advisor/advisor.js +35 -0
  8. package/esm/advisor/constants.js +13 -0
  9. package/esm/advisor/index.js +2 -0
  10. package/esm/advisor/lint-pipeline/check-rules.js +43 -0
  11. package/esm/advisor/lint-pipeline/getChartType.js +109 -0
  12. package/esm/advisor/lint-pipeline/index.js +0 -0
  13. package/esm/advisor/lint-pipeline/lintRules.js +32 -0
  14. package/esm/advisor/ruler/index.js +74 -0
  15. package/esm/advisor/ruler/rules/aggregation-single-row.js +21 -0
  16. package/esm/advisor/ruler/rules/all-can-be-table.js +17 -0
  17. package/esm/advisor/ruler/rules/bar-series-qty.js +36 -0
  18. package/esm/advisor/ruler/rules/bar-without-axis-min.js +41 -0
  19. package/esm/advisor/ruler/rules/constants.js +6 -0
  20. package/esm/advisor/ruler/rules/data-check.js +40 -0
  21. package/esm/advisor/ruler/rules/data-field-qty.js +26 -0
  22. package/esm/advisor/ruler/rules/diff-pie-sector.js +33 -0
  23. package/esm/advisor/ruler/rules/index.js +68 -0
  24. package/esm/advisor/ruler/rules/landscape-or-portrait.js +40 -0
  25. package/esm/advisor/ruler/rules/limit-series.js +47 -0
  26. package/esm/advisor/ruler/rules/line-field-time-ordinal.js +25 -0
  27. package/esm/advisor/ruler/rules/no-redundant-field.js +32 -0
  28. package/esm/advisor/ruler/rules/nominal-enum-combinatorial.js +54 -0
  29. package/esm/advisor/ruler/rules/purpose-check.js +27 -0
  30. package/esm/advisor/ruler/rules/series-qty-limit.js +34 -0
  31. package/esm/advisor/ruler/rules/x-axis-line-fading.js +41 -0
  32. package/esm/advisor/ruler/types.js +1 -0
  33. package/esm/advisor/ruler/utils.js +54 -0
  34. package/esm/advisor/types.js +1 -0
  35. package/esm/advisor/utils/clone.js +32 -0
  36. package/esm/advisor/utils/compare.js +14 -0
  37. package/esm/advisor/utils/computeScore.js +25 -0
  38. package/esm/advisor/utils/deep-mix.js +76 -0
  39. package/esm/advisor/utils/hasSubset.js +3 -0
  40. package/esm/advisor/utils/index.js +8 -0
  41. package/esm/advisor/utils/inferDataType.js +70 -0
  42. package/esm/advisor/utils/intersects.js +3 -0
  43. package/esm/advisor/utils/isNil.js +4 -0
  44. package/esm/ckb/base.js +1310 -0
  45. package/esm/ckb/ckb.js +55 -0
  46. package/esm/ckb/constants.js +197 -0
  47. package/esm/ckb/i18n/index.js +23 -0
  48. package/esm/ckb/i18n/types.js +1 -0
  49. package/esm/ckb/i18n/zh-CN.js +525 -0
  50. package/esm/ckb/index.js +14 -0
  51. package/esm/ckb/types.js +1 -0
  52. package/esm/common/types.js +1 -0
  53. package/esm/data/analysis/field/index.js +336 -0
  54. package/esm/data/analysis/field/types.js +1 -0
  55. package/esm/data/analysis/graph/index.js +170 -0
  56. package/esm/data/analysis/graph/types.js +1 -0
  57. package/esm/data/analysis/index.js +1 -0
  58. package/esm/data/analysis/types.js +1 -0
  59. package/esm/data/dataset/field/baseFrame.js +76 -0
  60. package/esm/data/dataset/field/dataFrame.js +556 -0
  61. package/esm/data/dataset/field/index.js +3 -0
  62. package/esm/data/dataset/field/series.js +149 -0
  63. package/esm/data/dataset/field/types.js +1 -0
  64. package/esm/data/dataset/field/utils.js +58 -0
  65. package/esm/data/dataset/graph/index.js +186 -0
  66. package/esm/data/dataset/graph/types.js +1 -0
  67. package/esm/data/dataset/graph/utils.js +15 -0
  68. package/esm/data/dataset/index.js +1 -0
  69. package/esm/data/dataset/types.js +1 -0
  70. package/esm/data/index.js +5 -0
  71. package/esm/data/statistics/IQR.js +49 -0
  72. package/esm/data/statistics/base.js +248 -0
  73. package/esm/data/statistics/bayesian.js +25 -0
  74. package/esm/data/statistics/buishand-u.js +19 -0
  75. package/esm/data/statistics/caches.js +28 -0
  76. package/esm/data/statistics/cdf.js +25 -0
  77. package/esm/data/statistics/constants.js +12 -0
  78. package/esm/data/statistics/index.js +7 -0
  79. package/esm/data/statistics/lowess.js +80 -0
  80. package/esm/data/statistics/mannkendall-test.js +50 -0
  81. package/esm/data/statistics/maxabs.js +9 -0
  82. package/esm/data/statistics/pcorrtest.js +76 -0
  83. package/esm/data/statistics/pettitt-test.js +33 -0
  84. package/esm/data/statistics/quantile.js +56 -0
  85. package/esm/data/statistics/types.js +1 -0
  86. package/esm/data/statistics/vector.js +67 -0
  87. package/esm/data/statistics/window.js +55 -0
  88. package/esm/data/types.js +2 -0
  89. package/esm/data/utils/common.js +58 -0
  90. package/esm/data/utils/index.js +5 -0
  91. package/esm/data/utils/isType/constants.js +24 -0
  92. package/esm/data/utils/isType/index.js +2 -0
  93. package/esm/data/utils/isType/isDateString.js +104 -0
  94. package/esm/data/utils/isType/isType.js +78 -0
  95. package/esm/index.js +11 -0
  96. package/esm/insight/algorithms/base/compare.js +40 -0
  97. package/esm/insight/algorithms/categoryOutlier.js +4 -0
  98. package/esm/insight/algorithms/changePoint.js +10 -0
  99. package/esm/insight/algorithms/index.js +3 -0
  100. package/esm/insight/algorithms/trendDirection.js +4 -0
  101. package/esm/insight/chart/constants.js +25 -0
  102. package/esm/insight/chart/generator/homogeneous.js +70 -0
  103. package/esm/insight/chart/generator/index.js +2 -0
  104. package/esm/insight/chart/generator/insights.js +16 -0
  105. package/esm/insight/chart/index.js +4 -0
  106. package/esm/insight/chart/strategy/augmentedMarks/categoryOutlier.js +30 -0
  107. package/esm/insight/chart/strategy/augmentedMarks/changePoint.js +42 -0
  108. package/esm/insight/chart/strategy/augmentedMarks/correlation.js +6 -0
  109. package/esm/insight/chart/strategy/augmentedMarks/homogeneous.js +5 -0
  110. package/esm/insight/chart/strategy/augmentedMarks/index.js +8 -0
  111. package/esm/insight/chart/strategy/augmentedMarks/lowVariance.js +23 -0
  112. package/esm/insight/chart/strategy/augmentedMarks/majority.js +5 -0
  113. package/esm/insight/chart/strategy/augmentedMarks/timeSeriesOutlier.js +82 -0
  114. package/esm/insight/chart/strategy/augmentedMarks/trend.js +26 -0
  115. package/esm/insight/chart/strategy/chart.js +45 -0
  116. package/esm/insight/chart/strategy/commonMarks/areaMark.js +12 -0
  117. package/esm/insight/chart/strategy/commonMarks/index.js +5 -0
  118. package/esm/insight/chart/strategy/commonMarks/intervalMark.js +14 -0
  119. package/esm/insight/chart/strategy/commonMarks/lineMark.js +34 -0
  120. package/esm/insight/chart/strategy/commonMarks/pointMark.js +17 -0
  121. package/esm/insight/chart/strategy/commonMarks/textMark.js +28 -0
  122. package/esm/insight/chart/strategy/index.js +4 -0
  123. package/esm/insight/chart/strategy/viewSpec.js +16 -0
  124. package/esm/insight/chart/types.js +1 -0
  125. package/esm/insight/chart/utils.js +4 -0
  126. package/esm/insight/constant.js +21 -0
  127. package/esm/insight/index.js +5 -0
  128. package/esm/insight/insights/checkers.js +97 -0
  129. package/esm/insight/insights/extractors/categoryOutlier.js +90 -0
  130. package/esm/insight/insights/extractors/changePoint.js +55 -0
  131. package/esm/insight/insights/extractors/correlation.js +38 -0
  132. package/esm/insight/insights/extractors/homogeneous.js +98 -0
  133. package/esm/insight/insights/extractors/lowVariance.js +49 -0
  134. package/esm/insight/insights/extractors/majority.js +66 -0
  135. package/esm/insight/insights/extractors/timeSeriesOutlier.js +61 -0
  136. package/esm/insight/insights/extractors/trend.js +49 -0
  137. package/esm/insight/insights/index.js +28 -0
  138. package/esm/insight/insights/util.js +77 -0
  139. package/esm/insight/narrative/factory.js +22 -0
  140. package/esm/insight/narrative/index.js +14 -0
  141. package/esm/insight/narrative/strategy/base.js +6 -0
  142. package/esm/insight/narrative/strategy/categoryOutlier.js +74 -0
  143. package/esm/insight/narrative/strategy/changePoint.js +52 -0
  144. package/esm/insight/narrative/strategy/commonness.js +45 -0
  145. package/esm/insight/narrative/strategy/correlation.js +51 -0
  146. package/esm/insight/narrative/strategy/exception.js +70 -0
  147. package/esm/insight/narrative/strategy/helpers.js +25 -0
  148. package/esm/insight/narrative/strategy/index.js +13 -0
  149. package/esm/insight/narrative/strategy/lowVariance.js +48 -0
  150. package/esm/insight/narrative/strategy/majority.js +62 -0
  151. package/esm/insight/narrative/strategy/timeSeriesOutlier.js +92 -0
  152. package/esm/insight/narrative/strategy/trend.js +57 -0
  153. package/esm/insight/pipeline/extract.js +236 -0
  154. package/esm/insight/pipeline/index.js +11 -0
  155. package/esm/insight/pipeline/insight.js +81 -0
  156. package/esm/insight/pipeline/preprocess.js +33 -0
  157. package/esm/insight/pipeline/specificInsight.js +71 -0
  158. package/esm/insight/pipeline/util.js +14 -0
  159. package/esm/insight/pipeline/visualize.js +41 -0
  160. package/esm/insight/types.js +1 -0
  161. package/esm/insight/utils/aggregate.js +87 -0
  162. package/esm/insight/utils/common.js +35 -0
  163. package/esm/ntv/generate/generateTextSpec.js +157 -0
  164. package/esm/ntv/generate/index.js +5 -0
  165. package/esm/ntv/generate/types.js +1 -0
  166. package/esm/ntv/generate/utils.js +86 -0
  167. package/esm/ntv/index.js +4 -0
  168. package/esm/ntv/schema/common.js +1 -0
  169. package/esm/ntv/schema/index.js +4 -0
  170. package/esm/ntv/schema/paragraph.js +1 -0
  171. package/esm/ntv/schema/phrase.js +52 -0
  172. package/esm/ntv/schema/structure.js +1 -0
  173. package/esm/ntv/types.js +1 -0
  174. package/esm/ntv/utils/index.js +1 -0
  175. package/esm/ntv/utils/isSpecType.js +58 -0
  176. package/esm/utils/arr2map.js +7 -0
  177. package/esm/utils/dataFormat.js +32 -0
  178. package/esm/utils/index.js +3 -0
  179. package/esm/utils/isType.js +14 -0
  180. package/lib/advisor/advise-pipeline/advicesForChart.d.ts +13 -0
  181. package/lib/advisor/advise-pipeline/advicesForChart.js +73 -0
  182. package/lib/advisor/advise-pipeline/data-to-advices.d.ts +22 -0
  183. package/lib/advisor/advise-pipeline/data-to-advices.js +245 -0
  184. package/lib/advisor/advise-pipeline/index.d.ts +1 -0
  185. package/lib/advisor/advise-pipeline/index.js +5 -0
  186. package/lib/advisor/advise-pipeline/spec-mapping.d.ts +14 -0
  187. package/lib/advisor/advise-pipeline/spec-mapping.js +504 -0
  188. package/lib/advisor/advisor.d.ts +18 -0
  189. package/lib/advisor/advisor.js +38 -0
  190. package/lib/advisor/constants.d.ts +1 -0
  191. package/lib/advisor/constants.js +16 -0
  192. package/lib/advisor/index.d.ts +2 -0
  193. package/lib/advisor/index.js +7 -0
  194. package/lib/advisor/lint-pipeline/check-rules.d.ts +4 -0
  195. package/lib/advisor/lint-pipeline/check-rules.js +47 -0
  196. package/lib/advisor/lint-pipeline/getChartType.d.ts +7 -0
  197. package/lib/advisor/lint-pipeline/getChartType.js +113 -0
  198. package/lib/advisor/lint-pipeline/index.d.ts +0 -0
  199. package/lib/advisor/lint-pipeline/index.js +0 -0
  200. package/lib/advisor/lint-pipeline/lintRules.d.ts +5 -0
  201. package/lib/advisor/lint-pipeline/lintRules.js +36 -0
  202. package/lib/advisor/ruler/index.d.ts +21 -0
  203. package/lib/advisor/ruler/index.js +80 -0
  204. package/lib/advisor/ruler/rules/aggregation-single-row.d.ts +2 -0
  205. package/lib/advisor/ruler/rules/aggregation-single-row.js +24 -0
  206. package/lib/advisor/ruler/rules/all-can-be-table.d.ts +2 -0
  207. package/lib/advisor/ruler/rules/all-can-be-table.js +20 -0
  208. package/lib/advisor/ruler/rules/bar-series-qty.d.ts +2 -0
  209. package/lib/advisor/ruler/rules/bar-series-qty.js +39 -0
  210. package/lib/advisor/ruler/rules/bar-without-axis-min.d.ts +2 -0
  211. package/lib/advisor/ruler/rules/bar-without-axis-min.js +44 -0
  212. package/lib/advisor/ruler/rules/constants.d.ts +6 -0
  213. package/lib/advisor/ruler/rules/constants.js +9 -0
  214. package/lib/advisor/ruler/rules/data-check.d.ts +2 -0
  215. package/lib/advisor/ruler/rules/data-check.js +43 -0
  216. package/lib/advisor/ruler/rules/data-field-qty.d.ts +2 -0
  217. package/lib/advisor/ruler/rules/data-field-qty.js +29 -0
  218. package/lib/advisor/ruler/rules/diff-pie-sector.d.ts +2 -0
  219. package/lib/advisor/ruler/rules/diff-pie-sector.js +36 -0
  220. package/lib/advisor/ruler/rules/index.d.ts +19 -0
  221. package/lib/advisor/ruler/rules/index.js +71 -0
  222. package/lib/advisor/ruler/rules/landscape-or-portrait.d.ts +2 -0
  223. package/lib/advisor/ruler/rules/landscape-or-portrait.js +43 -0
  224. package/lib/advisor/ruler/rules/limit-series.d.ts +2 -0
  225. package/lib/advisor/ruler/rules/limit-series.js +50 -0
  226. package/lib/advisor/ruler/rules/line-field-time-ordinal.d.ts +2 -0
  227. package/lib/advisor/ruler/rules/line-field-time-ordinal.js +28 -0
  228. package/lib/advisor/ruler/rules/no-redundant-field.d.ts +2 -0
  229. package/lib/advisor/ruler/rules/no-redundant-field.js +35 -0
  230. package/lib/advisor/ruler/rules/nominal-enum-combinatorial.d.ts +2 -0
  231. package/lib/advisor/ruler/rules/nominal-enum-combinatorial.js +57 -0
  232. package/lib/advisor/ruler/rules/purpose-check.d.ts +2 -0
  233. package/lib/advisor/ruler/rules/purpose-check.js +30 -0
  234. package/lib/advisor/ruler/rules/series-qty-limit.d.ts +2 -0
  235. package/lib/advisor/ruler/rules/series-qty-limit.js +37 -0
  236. package/lib/advisor/ruler/rules/x-axis-line-fading.d.ts +2 -0
  237. package/lib/advisor/ruler/rules/x-axis-line-fading.js +44 -0
  238. package/lib/advisor/ruler/types.d.ts +125 -0
  239. package/lib/advisor/ruler/types.js +2 -0
  240. package/lib/advisor/ruler/utils.d.ts +10 -0
  241. package/lib/advisor/ruler/utils.js +61 -0
  242. package/lib/advisor/types.d.ts +218 -0
  243. package/lib/advisor/types.js +4 -0
  244. package/lib/advisor/utils/clone.d.ts +2 -0
  245. package/lib/advisor/utils/clone.js +34 -0
  246. package/lib/advisor/utils/compare.d.ts +3 -0
  247. package/lib/advisor/utils/compare.js +17 -0
  248. package/lib/advisor/utils/computeScore.d.ts +7 -0
  249. package/lib/advisor/utils/computeScore.js +27 -0
  250. package/lib/advisor/utils/deep-mix.d.ts +2 -0
  251. package/lib/advisor/utils/deep-mix.js +78 -0
  252. package/lib/advisor/utils/hasSubset.d.ts +1 -0
  253. package/lib/advisor/utils/hasSubset.js +7 -0
  254. package/lib/advisor/utils/index.d.ts +5 -0
  255. package/lib/advisor/utils/index.js +19 -0
  256. package/lib/advisor/utils/inferDataType.d.ts +6 -0
  257. package/lib/advisor/utils/inferDataType.js +75 -0
  258. package/lib/advisor/utils/intersects.d.ts +1 -0
  259. package/lib/advisor/utils/intersects.js +7 -0
  260. package/lib/advisor/utils/isNil.d.ts +2 -0
  261. package/lib/advisor/utils/isNil.js +6 -0
  262. package/lib/ckb/base.d.ts +2 -0
  263. package/lib/ckb/base.js +1313 -0
  264. package/lib/ckb/ckb.d.ts +8 -0
  265. package/lib/ckb/ckb.js +59 -0
  266. package/lib/ckb/constants.d.ts +79 -0
  267. package/lib/ckb/constants.js +200 -0
  268. package/lib/ckb/i18n/index.d.ts +10 -0
  269. package/lib/ckb/i18n/index.js +27 -0
  270. package/lib/ckb/i18n/types.d.ts +52 -0
  271. package/lib/ckb/i18n/types.js +2 -0
  272. package/lib/ckb/i18n/zh-CN.d.ts +7 -0
  273. package/lib/ckb/i18n/zh-CN.js +528 -0
  274. package/lib/ckb/index.d.ts +4 -0
  275. package/lib/ckb/index.js +20 -0
  276. package/lib/ckb/types.d.ts +185 -0
  277. package/lib/ckb/types.js +2 -0
  278. package/lib/common/types.d.ts +14 -0
  279. package/lib/common/types.js +2 -0
  280. package/lib/data/analysis/field/index.d.ts +79 -0
  281. package/lib/data/analysis/field/index.js +355 -0
  282. package/lib/data/analysis/field/types.d.ts +99 -0
  283. package/lib/data/analysis/field/types.js +2 -0
  284. package/lib/data/analysis/graph/index.d.ts +28 -0
  285. package/lib/data/analysis/graph/index.js +178 -0
  286. package/lib/data/analysis/graph/types.d.ts +62 -0
  287. package/lib/data/analysis/graph/types.js +2 -0
  288. package/lib/data/analysis/index.d.ts +1 -0
  289. package/lib/data/analysis/index.js +5 -0
  290. package/lib/data/analysis/types.d.ts +1 -0
  291. package/lib/data/analysis/types.js +2 -0
  292. package/lib/data/dataset/field/baseFrame.d.ts +30 -0
  293. package/lib/data/dataset/field/baseFrame.js +78 -0
  294. package/lib/data/dataset/field/dataFrame.d.ts +35 -0
  295. package/lib/data/dataset/field/dataFrame.js +558 -0
  296. package/lib/data/dataset/field/index.d.ts +3 -0
  297. package/lib/data/dataset/field/index.js +8 -0
  298. package/lib/data/dataset/field/series.d.ts +18 -0
  299. package/lib/data/dataset/field/series.js +151 -0
  300. package/lib/data/dataset/field/types.d.ts +54 -0
  301. package/lib/data/dataset/field/types.js +2 -0
  302. package/lib/data/dataset/field/utils.d.ts +13 -0
  303. package/lib/data/dataset/field/utils.js +68 -0
  304. package/lib/data/dataset/graph/index.d.ts +18 -0
  305. package/lib/data/dataset/graph/index.js +188 -0
  306. package/lib/data/dataset/graph/types.d.ts +35 -0
  307. package/lib/data/dataset/graph/types.js +2 -0
  308. package/lib/data/dataset/graph/utils.d.ts +1 -0
  309. package/lib/data/dataset/graph/utils.js +19 -0
  310. package/lib/data/dataset/index.d.ts +1 -0
  311. package/lib/data/dataset/index.js +4 -0
  312. package/lib/data/dataset/types.d.ts +1 -0
  313. package/lib/data/dataset/types.js +4 -0
  314. package/lib/data/index.d.ts +5 -0
  315. package/lib/data/index.js +8 -0
  316. package/lib/data/statistics/IQR.d.ts +21 -0
  317. package/lib/data/statistics/IQR.js +53 -0
  318. package/lib/data/statistics/base.d.ts +106 -0
  319. package/lib/data/statistics/base.js +271 -0
  320. package/lib/data/statistics/bayesian.d.ts +5 -0
  321. package/lib/data/statistics/bayesian.js +30 -0
  322. package/lib/data/statistics/buishand-u.d.ts +7 -0
  323. package/lib/data/statistics/buishand-u.js +23 -0
  324. package/lib/data/statistics/caches.d.ts +13 -0
  325. package/lib/data/statistics/caches.js +33 -0
  326. package/lib/data/statistics/cdf.d.ts +7 -0
  327. package/lib/data/statistics/cdf.js +29 -0
  328. package/lib/data/statistics/constants.d.ts +5 -0
  329. package/lib/data/statistics/constants.js +15 -0
  330. package/lib/data/statistics/index.d.ts +7 -0
  331. package/lib/data/statistics/index.js +14 -0
  332. package/lib/data/statistics/lowess.d.ts +10 -0
  333. package/lib/data/statistics/lowess.js +87 -0
  334. package/lib/data/statistics/mannkendall-test.d.ts +15 -0
  335. package/lib/data/statistics/mannkendall-test.js +54 -0
  336. package/lib/data/statistics/maxabs.d.ts +5 -0
  337. package/lib/data/statistics/maxabs.js +13 -0
  338. package/lib/data/statistics/pcorrtest.d.ts +3 -0
  339. package/lib/data/statistics/pcorrtest.js +80 -0
  340. package/lib/data/statistics/pettitt-test.d.ts +9 -0
  341. package/lib/data/statistics/pettitt-test.js +38 -0
  342. package/lib/data/statistics/quantile.d.ts +16 -0
  343. package/lib/data/statistics/quantile.js +61 -0
  344. package/lib/data/statistics/types.d.ts +70 -0
  345. package/lib/data/statistics/types.js +2 -0
  346. package/lib/data/statistics/vector.d.ts +15 -0
  347. package/lib/data/statistics/vector.js +78 -0
  348. package/lib/data/statistics/window.d.ts +12 -0
  349. package/lib/data/statistics/window.js +60 -0
  350. package/lib/data/types.d.ts +2 -0
  351. package/lib/data/types.js +5 -0
  352. package/lib/data/utils/common.d.ts +26 -0
  353. package/lib/data/utils/common.js +67 -0
  354. package/lib/data/utils/index.d.ts +2 -0
  355. package/lib/data/utils/index.js +8 -0
  356. package/lib/data/utils/isType/constants.d.ts +15 -0
  357. package/lib/data/utils/isType/constants.js +27 -0
  358. package/lib/data/utils/isType/index.d.ts +2 -0
  359. package/lib/data/utils/isType/index.js +5 -0
  360. package/lib/data/utils/isType/isDateString.d.ts +18 -0
  361. package/lib/data/utils/isType/isDateString.js +111 -0
  362. package/lib/data/utils/isType/isType.d.ts +13 -0
  363. package/lib/data/utils/isType/isType.js +94 -0
  364. package/lib/index.d.ts +10 -0
  365. package/lib/index.js +75 -0
  366. package/lib/insight/algorithms/base/compare.d.ts +14 -0
  367. package/lib/insight/algorithms/base/compare.js +45 -0
  368. package/lib/insight/algorithms/categoryOutlier.d.ts +4 -0
  369. package/lib/insight/algorithms/categoryOutlier.js +7 -0
  370. package/lib/insight/algorithms/changePoint.d.ts +10 -0
  371. package/lib/insight/algorithms/changePoint.js +13 -0
  372. package/lib/insight/algorithms/index.d.ts +3 -0
  373. package/lib/insight/algorithms/index.js +6 -0
  374. package/lib/insight/algorithms/trendDirection.d.ts +4 -0
  375. package/lib/insight/algorithms/trendDirection.js +7 -0
  376. package/lib/insight/chart/constants.d.ts +13 -0
  377. package/lib/insight/chart/constants.js +28 -0
  378. package/lib/insight/chart/generator/homogeneous.d.ts +3 -0
  379. package/lib/insight/chart/generator/homogeneous.js +75 -0
  380. package/lib/insight/chart/generator/index.d.ts +2 -0
  381. package/lib/insight/chart/generator/index.js +5 -0
  382. package/lib/insight/chart/generator/insights.d.ts +3 -0
  383. package/lib/insight/chart/generator/insights.js +20 -0
  384. package/lib/insight/chart/index.d.ts +4 -0
  385. package/lib/insight/chart/index.js +7 -0
  386. package/lib/insight/chart/strategy/augmentedMarks/categoryOutlier.d.ts +5 -0
  387. package/lib/insight/chart/strategy/augmentedMarks/categoryOutlier.js +35 -0
  388. package/lib/insight/chart/strategy/augmentedMarks/changePoint.d.ts +5 -0
  389. package/lib/insight/chart/strategy/augmentedMarks/changePoint.js +47 -0
  390. package/lib/insight/chart/strategy/augmentedMarks/correlation.d.ts +3 -0
  391. package/lib/insight/chart/strategy/augmentedMarks/correlation.js +10 -0
  392. package/lib/insight/chart/strategy/augmentedMarks/homogeneous.d.ts +3 -0
  393. package/lib/insight/chart/strategy/augmentedMarks/homogeneous.js +9 -0
  394. package/lib/insight/chart/strategy/augmentedMarks/index.d.ts +8 -0
  395. package/lib/insight/chart/strategy/augmentedMarks/index.js +24 -0
  396. package/lib/insight/chart/strategy/augmentedMarks/lowVariance.d.ts +5 -0
  397. package/lib/insight/chart/strategy/augmentedMarks/lowVariance.js +28 -0
  398. package/lib/insight/chart/strategy/augmentedMarks/majority.d.ts +3 -0
  399. package/lib/insight/chart/strategy/augmentedMarks/majority.js +9 -0
  400. package/lib/insight/chart/strategy/augmentedMarks/timeSeriesOutlier.d.ts +5 -0
  401. package/lib/insight/chart/strategy/augmentedMarks/timeSeriesOutlier.js +87 -0
  402. package/lib/insight/chart/strategy/augmentedMarks/trend.d.ts +5 -0
  403. package/lib/insight/chart/strategy/augmentedMarks/trend.js +31 -0
  404. package/lib/insight/chart/strategy/chart.d.ts +7 -0
  405. package/lib/insight/chart/strategy/chart.js +49 -0
  406. package/lib/insight/chart/strategy/commonMarks/areaMark.d.ts +3 -0
  407. package/lib/insight/chart/strategy/commonMarks/areaMark.js +16 -0
  408. package/lib/insight/chart/strategy/commonMarks/index.d.ts +5 -0
  409. package/lib/insight/chart/strategy/commonMarks/index.js +13 -0
  410. package/lib/insight/chart/strategy/commonMarks/intervalMark.d.ts +5 -0
  411. package/lib/insight/chart/strategy/commonMarks/intervalMark.js +18 -0
  412. package/lib/insight/chart/strategy/commonMarks/lineMark.d.ts +3 -0
  413. package/lib/insight/chart/strategy/commonMarks/lineMark.js +38 -0
  414. package/lib/insight/chart/strategy/commonMarks/pointMark.d.ts +5 -0
  415. package/lib/insight/chart/strategy/commonMarks/pointMark.js +21 -0
  416. package/lib/insight/chart/strategy/commonMarks/textMark.d.ts +5 -0
  417. package/lib/insight/chart/strategy/commonMarks/textMark.js +32 -0
  418. package/lib/insight/chart/strategy/index.d.ts +4 -0
  419. package/lib/insight/chart/strategy/index.js +10 -0
  420. package/lib/insight/chart/strategy/viewSpec.d.ts +3 -0
  421. package/lib/insight/chart/strategy/viewSpec.js +20 -0
  422. package/lib/insight/chart/types.d.ts +60 -0
  423. package/lib/insight/chart/types.js +2 -0
  424. package/lib/insight/chart/utils.d.ts +3 -0
  425. package/lib/insight/chart/utils.js +8 -0
  426. package/lib/insight/constant.d.ts +12 -0
  427. package/lib/insight/constant.js +24 -0
  428. package/lib/insight/index.d.ts +6 -0
  429. package/lib/insight/index.js +13 -0
  430. package/lib/insight/insights/checkers.d.ts +16 -0
  431. package/lib/insight/insights/checkers.js +107 -0
  432. package/lib/insight/insights/extractors/categoryOutlier.d.ts +12 -0
  433. package/lib/insight/insights/extractors/categoryOutlier.js +95 -0
  434. package/lib/insight/insights/extractors/changePoint.d.ts +8 -0
  435. package/lib/insight/insights/extractors/changePoint.js +60 -0
  436. package/lib/insight/insights/extractors/correlation.d.ts +9 -0
  437. package/lib/insight/insights/extractors/correlation.js +43 -0
  438. package/lib/insight/insights/extractors/homogeneous.d.ts +4 -0
  439. package/lib/insight/insights/extractors/homogeneous.js +103 -0
  440. package/lib/insight/insights/extractors/lowVariance.d.ts +8 -0
  441. package/lib/insight/insights/extractors/lowVariance.js +54 -0
  442. package/lib/insight/insights/extractors/majority.d.ts +10 -0
  443. package/lib/insight/insights/extractors/majority.js +71 -0
  444. package/lib/insight/insights/extractors/timeSeriesOutlier.d.ts +2 -0
  445. package/lib/insight/insights/extractors/timeSeriesOutlier.js +65 -0
  446. package/lib/insight/insights/extractors/trend.d.ts +9 -0
  447. package/lib/insight/insights/extractors/trend.js +54 -0
  448. package/lib/insight/insights/index.d.ts +12 -0
  449. package/lib/insight/insights/index.js +32 -0
  450. package/lib/insight/insights/util.d.ts +13 -0
  451. package/lib/insight/insights/util.js +87 -0
  452. package/lib/insight/narrative/factory.d.ts +6 -0
  453. package/lib/insight/narrative/factory.js +25 -0
  454. package/lib/insight/narrative/index.d.ts +3 -0
  455. package/lib/insight/narrative/index.js +18 -0
  456. package/lib/insight/narrative/strategy/base.d.ts +9 -0
  457. package/lib/insight/narrative/strategy/base.js +9 -0
  458. package/lib/insight/narrative/strategy/categoryOutlier.d.ts +9 -0
  459. package/lib/insight/narrative/strategy/categoryOutlier.js +76 -0
  460. package/lib/insight/narrative/strategy/changePoint.d.ts +8 -0
  461. package/lib/insight/narrative/strategy/changePoint.js +54 -0
  462. package/lib/insight/narrative/strategy/commonness.d.ts +9 -0
  463. package/lib/insight/narrative/strategy/commonness.js +47 -0
  464. package/lib/insight/narrative/strategy/correlation.d.ts +8 -0
  465. package/lib/insight/narrative/strategy/correlation.js +53 -0
  466. package/lib/insight/narrative/strategy/exception.d.ts +10 -0
  467. package/lib/insight/narrative/strategy/exception.js +72 -0
  468. package/lib/insight/narrative/strategy/helpers.d.ts +5 -0
  469. package/lib/insight/narrative/strategy/helpers.js +31 -0
  470. package/lib/insight/narrative/strategy/index.d.ts +9 -0
  471. package/lib/insight/narrative/strategy/index.js +28 -0
  472. package/lib/insight/narrative/strategy/lowVariance.d.ts +8 -0
  473. package/lib/insight/narrative/strategy/lowVariance.js +50 -0
  474. package/lib/insight/narrative/strategy/majority.d.ts +8 -0
  475. package/lib/insight/narrative/strategy/majority.js +64 -0
  476. package/lib/insight/narrative/strategy/timeSeriesOutlier.d.ts +8 -0
  477. package/lib/insight/narrative/strategy/timeSeriesOutlier.js +94 -0
  478. package/lib/insight/narrative/strategy/trend.d.ts +8 -0
  479. package/lib/insight/narrative/strategy/trend.js +59 -0
  480. package/lib/insight/pipeline/extract.d.ts +13 -0
  481. package/lib/insight/pipeline/extract.js +243 -0
  482. package/lib/insight/pipeline/index.d.ts +2 -0
  483. package/lib/insight/pipeline/index.js +15 -0
  484. package/lib/insight/pipeline/insight.d.ts +10 -0
  485. package/lib/insight/pipeline/insight.js +86 -0
  486. package/lib/insight/pipeline/preprocess.d.ts +6 -0
  487. package/lib/insight/pipeline/preprocess.js +39 -0
  488. package/lib/insight/pipeline/specificInsight.d.ts +11 -0
  489. package/lib/insight/pipeline/specificInsight.js +79 -0
  490. package/lib/insight/pipeline/util.d.ts +5 -0
  491. package/lib/insight/pipeline/util.js +20 -0
  492. package/lib/insight/pipeline/visualize.d.ts +3 -0
  493. package/lib/insight/pipeline/visualize.js +46 -0
  494. package/lib/insight/types.d.ts +238 -0
  495. package/lib/insight/types.js +2 -0
  496. package/lib/insight/utils/aggregate.d.ts +7 -0
  497. package/lib/insight/utils/aggregate.js +93 -0
  498. package/lib/insight/utils/common.d.ts +3 -0
  499. package/lib/insight/utils/common.js +41 -0
  500. package/lib/ntv/generate/generateTextSpec.d.ts +9 -0
  501. package/lib/ntv/generate/generateTextSpec.js +160 -0
  502. package/lib/ntv/generate/index.d.ts +2 -0
  503. package/lib/ntv/generate/index.js +12 -0
  504. package/lib/ntv/generate/types.d.ts +58 -0
  505. package/lib/ntv/generate/types.js +2 -0
  506. package/lib/ntv/generate/utils.d.ts +29 -0
  507. package/lib/ntv/generate/utils.js +96 -0
  508. package/lib/ntv/index.d.ts +4 -0
  509. package/lib/ntv/index.js +10 -0
  510. package/lib/ntv/schema/common.d.ts +17 -0
  511. package/lib/ntv/schema/common.js +2 -0
  512. package/lib/ntv/schema/index.d.ts +4 -0
  513. package/lib/ntv/schema/index.js +7 -0
  514. package/lib/ntv/schema/paragraph.d.ts +34 -0
  515. package/lib/ntv/schema/paragraph.js +2 -0
  516. package/lib/ntv/schema/phrase.d.ts +70 -0
  517. package/lib/ntv/schema/phrase.js +55 -0
  518. package/lib/ntv/schema/structure.d.ts +18 -0
  519. package/lib/ntv/schema/structure.js +2 -0
  520. package/lib/ntv/types.d.ts +2 -0
  521. package/lib/ntv/types.js +2 -0
  522. package/lib/ntv/utils/index.d.ts +1 -0
  523. package/lib/ntv/utils/index.js +4 -0
  524. package/lib/ntv/utils/isSpecType.d.ts +17 -0
  525. package/lib/ntv/utils/isSpecType.js +76 -0
  526. package/lib/utils/arr2map.d.ts +1 -0
  527. package/lib/utils/arr2map.js +11 -0
  528. package/lib/utils/dataFormat.d.ts +11 -0
  529. package/lib/utils/dataFormat.js +35 -0
  530. package/lib/utils/index.d.ts +3 -0
  531. package/lib/utils/index.js +8 -0
  532. package/lib/utils/isType.d.ts +4 -0
  533. package/lib/utils/isType.js +21 -0
  534. package/package.json +88 -0
@@ -0,0 +1,500 @@
1
+ import { __read, __spreadArray } from "tslib";
2
+ import { CHART_IDS } from '../../ckb';
3
+ import { pearson, isParentChild } from '../../data';
4
+ import { compare, hasSubset, intersects } from '../utils';
5
+ /* !!!START pie_chart & donut_chart ------------------- */
6
+ function splitAngleColor(dataProps) {
7
+ var field4Color = dataProps.find(function (field) { return hasSubset(field.levelOfMeasurements, ['Nominal']); });
8
+ var field4Angle = dataProps.find(function (field) { return hasSubset(field.levelOfMeasurements, ['Interval']); });
9
+ return [field4Color, field4Angle];
10
+ }
11
+ function pieChart(data, dataProps) {
12
+ var _a = __read(splitAngleColor(dataProps), 2), field4Color = _a[0], field4Angle = _a[1];
13
+ if (!field4Angle || !field4Color)
14
+ return null;
15
+ var spec = {
16
+ type: 'interval',
17
+ data: data,
18
+ encode: {
19
+ color: field4Color.name,
20
+ y: field4Angle.name,
21
+ },
22
+ transform: [{ type: 'stackY' }],
23
+ coordinate: { type: 'theta' },
24
+ };
25
+ return spec;
26
+ }
27
+ function donutChart(data, dataProps) {
28
+ var _a = __read(splitAngleColor(dataProps), 2), field4Color = _a[0], field4Angle = _a[1];
29
+ if (!field4Angle || !field4Color)
30
+ return null;
31
+ var spec = {
32
+ type: 'interval',
33
+ data: data,
34
+ encode: {
35
+ color: field4Color.name,
36
+ y: field4Angle.name,
37
+ },
38
+ transform: [{ type: 'stackY' }],
39
+ coordinate: { type: 'theta', innerRadius: 0.6 },
40
+ };
41
+ return spec;
42
+ }
43
+ /* !!!END pie_chart & donut_chart ------------------- */
44
+ /* !!!START line_chart & step_line_chart ------------------- */
45
+ function splitLineXY(dataProps) {
46
+ var field4X = dataProps.find(function (field) { return intersects(field.levelOfMeasurements, ['Time', 'Ordinal']); });
47
+ var field4Y = dataProps.find(function (field) { return hasSubset(field.levelOfMeasurements, ['Interval']); });
48
+ var field4Color = dataProps.find(function (field) { return hasSubset(field.levelOfMeasurements, ['Nominal']); });
49
+ return [field4X, field4Y, field4Color];
50
+ }
51
+ function lineChart(data, dataProps) {
52
+ var _a = __read(splitLineXY(dataProps), 3), field4X = _a[0], field4Y = _a[1], field4Color = _a[2];
53
+ if (!field4X || !field4Y)
54
+ return null;
55
+ var spec = {
56
+ type: 'line',
57
+ data: data,
58
+ encode: {
59
+ x: field4X.name,
60
+ y: field4Y.name,
61
+ },
62
+ };
63
+ if (field4Color) {
64
+ spec.encode.color = field4Color.name;
65
+ }
66
+ return spec;
67
+ }
68
+ function stepLineChart(data, dataProps) {
69
+ var _a = __read(splitLineXY(dataProps), 3), field4X = _a[0], field4Y = _a[1], field4Color = _a[2];
70
+ if (!field4X || !field4Y)
71
+ return null;
72
+ var spec = {
73
+ type: 'line',
74
+ data: data,
75
+ encode: {
76
+ x: field4X.name,
77
+ y: field4Y.name,
78
+ shape: 'hvh',
79
+ },
80
+ };
81
+ if (field4Color) {
82
+ spec.encode.color = field4Color.name;
83
+ }
84
+ return spec;
85
+ }
86
+ /* !!!END line_chart & step_line_chart ------------------- */
87
+ /* !!!START area_chart & stack_area_chart & percent_stacked_area_chart ------------------- */
88
+ function splitAreaXYSeries(dataProps) {
89
+ var field4X = dataProps.find(function (field) { return intersects(field.levelOfMeasurements, ['Time', 'Ordinal']); });
90
+ var field4Series = dataProps.find(function (field) { return hasSubset(field.levelOfMeasurements, ['Nominal']); });
91
+ var field4Y = dataProps.find(function (field) { return hasSubset(field.levelOfMeasurements, ['Interval']); });
92
+ return [field4X, field4Y, field4Series];
93
+ }
94
+ function areaChart(data, dataProps) {
95
+ var field4X = dataProps.find(function (field) { return intersects(field.levelOfMeasurements, ['Time', 'Ordinal']); });
96
+ var field4Y = dataProps.find(function (field) { return hasSubset(field.levelOfMeasurements, ['Interval']); });
97
+ if (!field4X || !field4Y)
98
+ return null;
99
+ var spec = {
100
+ type: 'area',
101
+ data: data,
102
+ encode: {
103
+ x: field4X.name,
104
+ y: field4Y.name,
105
+ },
106
+ };
107
+ return spec;
108
+ }
109
+ function stackedAreaChart(data, dataProps) {
110
+ var _a = __read(splitAreaXYSeries(dataProps), 3), field4X = _a[0], field4Y = _a[1], field4Series = _a[2];
111
+ if (!field4X || !field4Y || !field4Series)
112
+ return null;
113
+ var spec = {
114
+ type: 'area',
115
+ data: data,
116
+ encode: {
117
+ x: field4X.name,
118
+ y: field4Y.name,
119
+ color: field4Series.name,
120
+ },
121
+ transform: [{ type: 'stackY' }],
122
+ };
123
+ return spec;
124
+ }
125
+ function percentStackedAreaChart(data, dataProps) {
126
+ var _a = __read(splitAreaXYSeries(dataProps), 3), field4X = _a[0], field4Y = _a[1], field4Series = _a[2];
127
+ if (!field4X || !field4Y || !field4Series)
128
+ return null;
129
+ var spec = {
130
+ type: 'area',
131
+ data: data,
132
+ encode: {
133
+ x: field4X.name,
134
+ y: field4Y.name,
135
+ color: field4Series.name,
136
+ },
137
+ transform: [{ type: 'stackY' }, { type: 'normalizeY' }],
138
+ };
139
+ return spec;
140
+ }
141
+ /* !!!END area_chart & stack_area_chart & percent_stacked_area_chart ------------------- */
142
+ /* !!!START bar_chart & group_bar_chart & stack_bar_chart & percent_stacked_bar_chart ------------------- */
143
+ function splitBarXYSeries(dataProps) {
144
+ var nominalFields = dataProps.filter(function (field) { return hasSubset(field.levelOfMeasurements, ['Nominal']); });
145
+ var sortedNominalFields = nominalFields.sort(compare);
146
+ var field4Y = sortedNominalFields[0];
147
+ var field4Series = sortedNominalFields[1];
148
+ var field4X = dataProps.find(function (field) { return hasSubset(field.levelOfMeasurements, ['Interval']); });
149
+ return [field4X, field4Y, field4Series];
150
+ }
151
+ // barchart in AVA means: horizontal bar chart
152
+ function barChart(data, dataProps) {
153
+ var _a = __read(splitBarXYSeries(dataProps), 3), field4X = _a[0], field4Y = _a[1], field4Color = _a[2];
154
+ if (!field4X || !field4Y)
155
+ return null;
156
+ var spec = {
157
+ type: 'interval',
158
+ data: data,
159
+ // G2's implementation converts column chart (vertical bar) and bar chart (horizontal bar) by transpose, so the x and y fields need to be swapped.
160
+ // 由于g2的实现是通过transpose来转换 column chart(竖着的bar)和bar chart(横着的bar),所以x和y的字段需要做交换
161
+ encode: {
162
+ x: field4Y.name,
163
+ y: field4X.name,
164
+ },
165
+ coordinate: {
166
+ transform: [{ type: 'transpose' }],
167
+ },
168
+ };
169
+ if (field4Color) {
170
+ spec.encode.color = field4Color.name;
171
+ spec.transform = [{ type: 'stackY' }];
172
+ }
173
+ return spec;
174
+ }
175
+ function groupedBarChart(data, dataProps) {
176
+ var _a = __read(splitBarXYSeries(dataProps), 3), field4X = _a[0], field4Y = _a[1], field4Series = _a[2];
177
+ if (!field4X || !field4Y || !field4Series)
178
+ return null;
179
+ var spec = {
180
+ type: 'interval',
181
+ data: data,
182
+ encode: {
183
+ x: field4Y.name,
184
+ y: field4X.name,
185
+ color: field4Series.name,
186
+ },
187
+ transform: [{ type: 'dodgeX' }],
188
+ coordinate: {
189
+ transform: [{ type: 'transpose' }],
190
+ },
191
+ };
192
+ return spec;
193
+ }
194
+ function stackedBarChart(data, dataProps) {
195
+ var _a = __read(splitBarXYSeries(dataProps), 3), field4X = _a[0], field4Y = _a[1], field4Series = _a[2];
196
+ if (!field4X || !field4Y || !field4Series)
197
+ return null;
198
+ var spec = {
199
+ type: 'interval',
200
+ data: data,
201
+ encode: {
202
+ x: field4Y.name,
203
+ y: field4X.name,
204
+ color: field4Series.name,
205
+ },
206
+ transform: [{ type: 'stackY' }],
207
+ coordinate: {
208
+ transform: [{ type: 'transpose' }],
209
+ },
210
+ };
211
+ return spec;
212
+ }
213
+ function percentStackedBarChart(data, dataProps) {
214
+ var _a = __read(splitBarXYSeries(dataProps), 3), field4X = _a[0], field4Y = _a[1], field4Series = _a[2];
215
+ if (!field4X || !field4Y || !field4Series)
216
+ return null;
217
+ var spec = {
218
+ type: 'interval',
219
+ data: data,
220
+ encode: {
221
+ x: field4Y.name,
222
+ y: field4X.name,
223
+ color: field4Series.name,
224
+ },
225
+ transform: [{ type: 'stackY' }, { type: 'normalizeY' }],
226
+ coordinate: {
227
+ transform: [{ type: 'transpose' }],
228
+ },
229
+ };
230
+ return spec;
231
+ }
232
+ /* !!!END bar_chart & group_bar_chart & stack_bar_chart & percent_stacked_bar_chart ------------------- */
233
+ /* !!!START column_chart & grouped_column_chart & stacked_column_chart & percent_stacked_column_chart ------------------- */
234
+ function splitColumnXYSeries(dataProps) {
235
+ var _a, _b;
236
+ var _c, _d;
237
+ var nominalFields = dataProps.filter(function (field) { return hasSubset(field.levelOfMeasurements, ['Nominal']); });
238
+ var sortedNominalFields = nominalFields.sort(compare);
239
+ var field4X;
240
+ var Field4Series;
241
+ if (isParentChild((_c = sortedNominalFields[1]) === null || _c === void 0 ? void 0 : _c.rawData, (_d = sortedNominalFields[0]) === null || _d === void 0 ? void 0 : _d.rawData)) {
242
+ _a = __read(sortedNominalFields, 2), Field4Series = _a[0], field4X = _a[1];
243
+ }
244
+ else {
245
+ _b = __read(sortedNominalFields, 2), field4X = _b[0], Field4Series = _b[1];
246
+ }
247
+ var field4Y = dataProps.find(function (field) { return hasSubset(field.levelOfMeasurements, ['Interval']); });
248
+ return [field4X, field4Y, Field4Series];
249
+ }
250
+ function columnChart(data, dataProps) {
251
+ var nominalFields = dataProps.filter(function (field) { return hasSubset(field.levelOfMeasurements, ['Nominal']); });
252
+ var sortedNominalFields = nominalFields.sort(compare);
253
+ var field4X = sortedNominalFields[0];
254
+ var field4Color = sortedNominalFields[1];
255
+ var field4Y = dataProps.find(function (field) { return hasSubset(field.levelOfMeasurements, ['Interval']); });
256
+ if (!field4X || !field4Y)
257
+ return null;
258
+ var spec = {
259
+ type: 'interval',
260
+ data: data,
261
+ encode: {
262
+ x: field4X.name,
263
+ y: field4Y.name,
264
+ },
265
+ };
266
+ if (field4Color) {
267
+ spec.encode.color = field4Color.name;
268
+ spec.transform = [{ type: 'stackY' }];
269
+ }
270
+ return spec;
271
+ }
272
+ function groupedColumnChart(data, dataProps) {
273
+ var _a = __read(splitColumnXYSeries(dataProps), 3), field4X = _a[0], field4Y = _a[1], field4Series = _a[2];
274
+ if (!field4X || !field4Y || !field4Series)
275
+ return null;
276
+ var spec = {
277
+ type: 'interval',
278
+ data: data,
279
+ encode: {
280
+ x: field4X.name,
281
+ y: field4Y.name,
282
+ color: field4Series.name,
283
+ },
284
+ transform: [{ type: 'dodgeX' }],
285
+ };
286
+ return spec;
287
+ }
288
+ function stackedColumnChart(data, dataProps) {
289
+ var _a = __read(splitColumnXYSeries(dataProps), 3), field4X = _a[0], field4Y = _a[1], Field4Series = _a[2];
290
+ if (!field4X || !field4Y || !Field4Series)
291
+ return null;
292
+ var spec = {
293
+ type: 'interval',
294
+ data: data,
295
+ encode: {
296
+ x: field4X.name,
297
+ y: field4Y.name,
298
+ color: Field4Series.name,
299
+ },
300
+ transform: [{ type: 'stackY' }],
301
+ };
302
+ return spec;
303
+ }
304
+ function percentStackedColumnChart(data, dataProps) {
305
+ var _a = __read(splitColumnXYSeries(dataProps), 3), field4X = _a[0], field4Y = _a[1], Field4Series = _a[2];
306
+ if (!field4X || !field4Y || !Field4Series)
307
+ return null;
308
+ var spec = {
309
+ type: 'interval',
310
+ data: data,
311
+ encode: {
312
+ x: field4X.name,
313
+ y: field4Y.name,
314
+ color: Field4Series.name,
315
+ },
316
+ transform: [{ type: 'stackY' }, { type: 'normalizeY' }],
317
+ };
318
+ return spec;
319
+ }
320
+ /* !!!END column_chart & grouped_column_chart & stacked_column_chart & percent_stacked_column_chart ------------------- */
321
+ /* !!!START scatter_plot ------------------- */
322
+ function scatterPlot(data, dataProps) {
323
+ var intervalFields = dataProps.filter(function (field) { return hasSubset(field.levelOfMeasurements, ['Interval']); });
324
+ var sortedIntervalFields = intervalFields.sort(compare);
325
+ var field4X = sortedIntervalFields[0];
326
+ var field4Y = sortedIntervalFields[1];
327
+ var field4Color = dataProps.find(function (field) { return hasSubset(field.levelOfMeasurements, ['Nominal']); });
328
+ if (!field4X || !field4Y)
329
+ return null;
330
+ var spec = {
331
+ type: 'point',
332
+ data: data,
333
+ encode: {
334
+ x: field4X.name,
335
+ y: field4Y.name,
336
+ },
337
+ };
338
+ if (field4Color) {
339
+ spec.encode.color = field4Color.name;
340
+ }
341
+ return spec;
342
+ }
343
+ /* !!!END scatter_plot ------------------- */
344
+ /* !!!START bubble_chart ------------------- */
345
+ function bubbleChart(data, dataProps) {
346
+ var intervalFields = dataProps.filter(function (field) { return hasSubset(field.levelOfMeasurements, ['Interval']); });
347
+ var triple = {
348
+ x: intervalFields[0],
349
+ y: intervalFields[1],
350
+ corr: 0,
351
+ size: intervalFields[2],
352
+ };
353
+ var _loop_1 = function (i) {
354
+ var _loop_2 = function (j) {
355
+ var p = pearson(intervalFields[i].rawData, intervalFields[j].rawData);
356
+ if (Math.abs(p) > triple.corr) {
357
+ triple.x = intervalFields[i];
358
+ triple.y = intervalFields[j];
359
+ triple.corr = p;
360
+ triple.size = intervalFields[__spreadArray([], __read(Array(intervalFields.length).keys()), false).find(function (e) { return e !== i && e !== j; }) || 0];
361
+ }
362
+ };
363
+ for (var j = i + 1; j < intervalFields.length; j += 1) {
364
+ _loop_2(j);
365
+ }
366
+ };
367
+ for (var i = 0; i < intervalFields.length; i += 1) {
368
+ _loop_1(i);
369
+ }
370
+ var field4X = triple.x;
371
+ var field4Y = triple.y;
372
+ var field4Size = triple.size;
373
+ var field4Color = dataProps.find(function (field) { return intersects(field.levelOfMeasurements, ['Nominal']); });
374
+ // require x,y,size,color at the same time
375
+ if (!field4X || !field4Y || !field4Size)
376
+ return null;
377
+ var spec = {
378
+ type: 'point',
379
+ data: data,
380
+ encode: {
381
+ x: field4X.name,
382
+ y: field4Y.name,
383
+ size: field4Size.name,
384
+ },
385
+ };
386
+ if (field4Color) {
387
+ spec.encode.color = field4Color.name;
388
+ }
389
+ return spec;
390
+ }
391
+ /* !!!END bubble_chart ------------------- */
392
+ /* !!!START histogram ------------------- */
393
+ function histogram(data, dataProps) {
394
+ var field = dataProps.find(function (field) { return hasSubset(field.levelOfMeasurements, ['Interval']); });
395
+ if (!field)
396
+ return null;
397
+ var spec = {
398
+ type: 'rect',
399
+ data: data,
400
+ encode: {
401
+ x: field.name,
402
+ },
403
+ transform: [{ type: 'binX', y: 'count' }],
404
+ };
405
+ return spec;
406
+ }
407
+ /* !!!END histogram ------------------- */
408
+ /* !!!END heatmap ------------------- */
409
+ function heatmap(data, dataProps) {
410
+ var axisFields = dataProps.filter(function (field) { return intersects(field.levelOfMeasurements, ['Nominal', 'Ordinal']); });
411
+ var sortedFields = axisFields.sort(compare);
412
+ var field4X = sortedFields[0];
413
+ var field4Y = sortedFields[1];
414
+ var field4Color = dataProps.find(function (field) { return hasSubset(field.levelOfMeasurements, ['Interval']); });
415
+ if (!field4X || !field4Y || !field4Color)
416
+ return null;
417
+ var spec = {
418
+ type: 'cell',
419
+ data: data,
420
+ encode: {
421
+ x: field4X.name,
422
+ y: field4Y.name,
423
+ color: field4Color.name,
424
+ },
425
+ };
426
+ return spec;
427
+ }
428
+ /* !!!END heatmap ------------------- */
429
+ /**
430
+ * Convert chartType + data to antv-spec
431
+ * recommend chart with specific data mapping
432
+ *
433
+ * @param chartType chart type
434
+ * @param data input data [ { col1: ..., col2: ... } ]
435
+ * @param dataProps data property for advisor derived by data
436
+ * @param chartKnowledge chart knowledge of a singble chart
437
+ * @returns spec or null
438
+ */
439
+ export function getChartTypeSpec(chartType, data, dataProps, chartKnowledge) {
440
+ // step 0: check whether the chartType is default in `ChartID`
441
+ // if not, use customized `toSpec` function
442
+ if (!CHART_IDS.includes(chartType) && chartKnowledge) {
443
+ if (chartKnowledge.toSpec) {
444
+ var spec = chartKnowledge.toSpec(data, dataProps);
445
+ return spec;
446
+ }
447
+ return null;
448
+ }
449
+ switch (chartType) {
450
+ // pie
451
+ case 'pie_chart':
452
+ return pieChart(data, dataProps);
453
+ case 'donut_chart':
454
+ return donutChart(data, dataProps);
455
+ // line
456
+ case 'line_chart':
457
+ return lineChart(data, dataProps);
458
+ case 'step_line_chart':
459
+ return stepLineChart(data, dataProps);
460
+ // area
461
+ case 'area_chart':
462
+ return areaChart(data, dataProps);
463
+ case 'stacked_area_chart':
464
+ return stackedAreaChart(data, dataProps);
465
+ case 'percent_stacked_area_chart':
466
+ return percentStackedAreaChart(data, dataProps);
467
+ // bar
468
+ case 'bar_chart':
469
+ return barChart(data, dataProps);
470
+ case 'grouped_bar_chart':
471
+ return groupedBarChart(data, dataProps);
472
+ case 'stacked_bar_chart':
473
+ return stackedBarChart(data, dataProps);
474
+ case 'percent_stacked_bar_chart':
475
+ return percentStackedBarChart(data, dataProps);
476
+ // column
477
+ case 'column_chart':
478
+ return columnChart(data, dataProps);
479
+ case 'grouped_column_chart':
480
+ return groupedColumnChart(data, dataProps);
481
+ case 'stacked_column_chart':
482
+ return stackedColumnChart(data, dataProps);
483
+ case 'percent_stacked_column_chart':
484
+ return percentStackedColumnChart(data, dataProps);
485
+ // scatter
486
+ case 'scatter_plot':
487
+ return scatterPlot(data, dataProps);
488
+ // bubble
489
+ case 'bubble_chart':
490
+ return bubbleChart(data, dataProps);
491
+ // histogram
492
+ case 'histogram':
493
+ return histogram(data, dataProps);
494
+ case 'heatmap':
495
+ return heatmap(data, dataProps);
496
+ // TODO other case 'kpi_panel' & 'table'
497
+ default:
498
+ return null;
499
+ }
500
+ }
@@ -0,0 +1,35 @@
1
+ import { ckb } from '../ckb';
2
+ import { processRuleCfg } from './ruler';
3
+ import { advicesForChart } from './advise-pipeline';
4
+ import { checkRules } from './lint-pipeline/check-rules';
5
+ /*
6
+ * 搬运计划
7
+ * 0. 架构设计
8
+ * 1. Advisor 搬运
9
+ * 2. Linter 搬运
10
+ */
11
+ var Advisor = /** @class */ (function () {
12
+ function Advisor(config) {
13
+ if (config === void 0) { config = {}; }
14
+ this.ckb = ckb(config.ckbCfg);
15
+ this.ruleBase = processRuleCfg(config.ruleCfg);
16
+ }
17
+ Advisor.prototype.advise = function (params) {
18
+ var adviseResult = advicesForChart(params, this.ckb, this.ruleBase);
19
+ return adviseResult.advices;
20
+ };
21
+ Advisor.prototype.adviseWithLog = function (params) {
22
+ var adviseResult = advicesForChart(params, this.ckb, this.ruleBase);
23
+ return adviseResult;
24
+ };
25
+ Advisor.prototype.lint = function (params) {
26
+ var lintResult = checkRules(params, this.ruleBase, this.ckb);
27
+ return lintResult.lints;
28
+ };
29
+ Advisor.prototype.lintWithLog = function (params) {
30
+ var lintResult = checkRules(params, this.ruleBase, this.ckb);
31
+ return lintResult;
32
+ };
33
+ return Advisor;
34
+ }());
35
+ export { Advisor };
@@ -0,0 +1,13 @@
1
+ export var DEFAULT_RULE_WEIGHTS = {
2
+ 'bar-series-qty': 0.5,
3
+ 'data-check': 1.0,
4
+ 'data-field-qty': 1.0,
5
+ 'diff-pie-sector': 0.5,
6
+ 'landscape-or-portrait': 0.3,
7
+ 'limit-series': 1.0,
8
+ 'line-field-time-ordinal': 1.0,
9
+ 'no-redundant-field': 1.0,
10
+ 'nominal-enum-combinatorial': 1.0,
11
+ 'purpose-check': 1.0,
12
+ 'series-qty-limit': 0.8,
13
+ };
@@ -0,0 +1,2 @@
1
+ export { Advisor } from './advisor';
2
+ export * from './types';
@@ -0,0 +1,43 @@
1
+ import { DataFrame } from '../../data';
2
+ import { getChartType } from './getChartType';
3
+ import { lintRules } from './lintRules';
4
+ export function checkRules(params, ruleBase, ckb) {
5
+ var spec = params.spec, options = params.options;
6
+ var dataProps = params.dataProps;
7
+ var purpose = options === null || options === void 0 ? void 0 : options.purpose;
8
+ var preferences = options === null || options === void 0 ? void 0 : options.preferences;
9
+ var chartType = getChartType(spec);
10
+ var lints = [];
11
+ // for log
12
+ var log = [];
13
+ if (!spec || !chartType) {
14
+ return { lints: lints, log: log };
15
+ }
16
+ // step 1: get data in spec and build DataFrame
17
+ if (!dataProps || !dataProps.length) {
18
+ var dataFrame = void 0;
19
+ try {
20
+ dataFrame = new DataFrame(spec.data);
21
+ dataProps = dataFrame.info();
22
+ }
23
+ catch (error) {
24
+ // if the input data cannot be transformed into DataFrame
25
+ // eslint-disable-next-line no-console
26
+ console.error('error: ', error);
27
+ return { lints: lints, log: log };
28
+ }
29
+ }
30
+ var info = { dataProps: dataProps, chartType: chartType, purpose: purpose, preferences: preferences };
31
+ // step 2: lint rules
32
+ // HARD and SOFT rules
33
+ lintRules(ruleBase, 'notDESIGN', info, log, lints, ckb);
34
+ // DESIGN rules
35
+ lintRules(ruleBase, 'DESIGN', info, log, lints, ckb, spec);
36
+ // filter rules with problems (score<1)
37
+ lints = lints.filter(function (record) { return record.score < 1; });
38
+ var result = {
39
+ lints: lints,
40
+ log: log,
41
+ };
42
+ return result;
43
+ }