sea-chart 0.0.1 → 0.0.2

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 (330) hide show
  1. package/README.md +117 -1
  2. package/dist/api/index.js +101 -0
  3. package/{lib → dist}/components/collaborator/index.js +8 -6
  4. package/{lib → dist}/components/icon/index.css +1 -1
  5. package/{lib → dist}/components/icon/index.js +7 -5
  6. package/dist/components/index.js +8 -0
  7. package/{lib → dist}/components/loading/index.js +4 -2
  8. package/dist/components/number-input/index.js +31 -0
  9. package/{lib → dist}/components/pixel-editor/index.css +4 -4
  10. package/{lib → dist}/components/pixel-editor/index.js +11 -15
  11. package/{lib → dist}/components/select-group/index.css +10 -10
  12. package/dist/components/select-group/index.js +52 -0
  13. package/dist/components/types-dialog/index.css +97 -0
  14. package/dist/components/types-dialog/index.js +117 -0
  15. package/{lib → dist}/constants/geolocation.js +3 -3
  16. package/dist/constants/index.js +184 -0
  17. package/{lib → dist}/constants/model.js +25 -5
  18. package/dist/constants/style.js +15 -0
  19. package/dist/constants/type-image.js +59 -0
  20. package/dist/constants/type.js +124 -0
  21. package/dist/context.js +83 -0
  22. package/dist/editor/index.js +41 -0
  23. package/dist/index.js +9 -0
  24. package/dist/intl.js +37 -0
  25. package/dist/locale/index.js +18 -0
  26. package/{lib → dist}/locale/lang/de.js +1 -1
  27. package/{lib → dist}/locale/lang/en.js +1 -1
  28. package/{lib → dist}/locale/lang/es.js +1 -1
  29. package/{lib → dist}/locale/lang/fr.js +1 -1
  30. package/{lib → dist}/locale/lang/pt.js +1 -1
  31. package/{lib → dist}/locale/lang/ru.js +1 -1
  32. package/{lib → dist}/locale/lang/zh_CN.js +1 -1
  33. package/dist/model/area-group.js +41 -0
  34. package/dist/model/area.js +32 -0
  35. package/dist/model/bar-group.js +44 -0
  36. package/dist/model/bar-stack.js +41 -0
  37. package/dist/model/bar.js +38 -0
  38. package/dist/model/base-model.js +9 -0
  39. package/dist/model/basic-number-card.js +22 -0
  40. package/dist/model/chart.js +23 -0
  41. package/dist/model/combination.js +38 -0
  42. package/dist/model/compare-bar.js +39 -0
  43. package/dist/model/completeness-group.js +24 -0
  44. package/dist/model/completeness.js +18 -0
  45. package/dist/model/dashboard.js +16 -0
  46. package/dist/model/generic-model.js +224 -0
  47. package/dist/model/heat-map.js +23 -0
  48. package/dist/model/horizontal-bar.js +38 -0
  49. package/dist/model/horizontal-group-bar.js +43 -0
  50. package/dist/model/index.js +63 -0
  51. package/dist/model/line-group.js +44 -0
  52. package/dist/model/line.js +38 -0
  53. package/dist/model/map-bubble.js +27 -0
  54. package/dist/model/map.js +27 -0
  55. package/dist/model/mirror.js +26 -0
  56. package/dist/model/pie.js +26 -0
  57. package/dist/model/ring.js +26 -0
  58. package/dist/model/scatter.js +19 -0
  59. package/dist/model/stacked-horizontal-bar.js +32 -0
  60. package/dist/model/table.js +23 -0
  61. package/dist/model/tree-map.js +20 -0
  62. package/dist/model/trend.js +24 -0
  63. package/dist/model/user.js +15 -0
  64. package/dist/model/world-map-bubble.js +26 -0
  65. package/dist/model/world-map.js +26 -0
  66. package/{lib/components → dist}/settings/advance-bar-settings/data-settings.js +68 -45
  67. package/dist/settings/advance-bar-settings/style-settings.js +161 -0
  68. package/{lib/components → dist}/settings/bar-settings/data-settings.js +76 -51
  69. package/dist/settings/bar-settings/style-settings.js +179 -0
  70. package/dist/settings/basic-number-card/data-settings.js +126 -0
  71. package/dist/settings/basic-number-card/style-settings.js +42 -0
  72. package/dist/settings/combination-settings/data-settings.js +279 -0
  73. package/dist/settings/combination-settings/style-settings.js +174 -0
  74. package/dist/settings/dashboard-settings/data-settings.js +179 -0
  75. package/{lib/components → dist}/settings/data-settings.js +28 -22
  76. package/dist/settings/horizontal-bar-settings/data-settings.js +55 -0
  77. package/dist/settings/horizontal-bar-settings/style-settings.js +46 -0
  78. package/dist/settings/index.css +85 -0
  79. package/dist/settings/index.js +76 -0
  80. package/{lib/components → dist}/settings/pie-settings/data-settings.js +67 -44
  81. package/{lib/components → dist}/settings/pie-settings/style-settings.js +67 -49
  82. package/dist/settings/style-settings.js +118 -0
  83. package/{lib/components → dist}/settings/table-settings/data-settings.js +269 -208
  84. package/{lib/components → dist}/settings/time-comparison-settings/data-settings.js +82 -67
  85. package/dist/settings/time-comparison-settings/style-settings.js +213 -0
  86. package/dist/settings/widgets/basic-summary/index.css +12 -0
  87. package/dist/settings/widgets/basic-summary/index.js +176 -0
  88. package/{lib/components/settings/widgets/statistic-type → dist/settings/widgets/chart-type}/index.css +5 -5
  89. package/dist/settings/widgets/chart-type/index.js +59 -0
  90. package/{lib/components → dist}/settings/widgets/common-data-settings.js +24 -18
  91. package/dist/settings/widgets/data-filter/index.css +17 -0
  92. package/{lib/components → dist}/settings/widgets/data-filter/index.js +51 -37
  93. package/dist/settings/widgets/data-sort.js +44 -0
  94. package/dist/settings/widgets/date-summary-item.js +111 -0
  95. package/dist/settings/widgets/display-values-settings/index.css +13 -0
  96. package/{lib/components → dist}/settings/widgets/display-values-settings/index.js +19 -14
  97. package/{lib/components → dist}/settings/widgets/divider/index.css +1 -1
  98. package/dist/settings/widgets/divider/index.js +12 -0
  99. package/{lib/components → dist}/settings/widgets/font-settings/font-size-settings.js +14 -12
  100. package/{lib/components → dist}/settings/widgets/font-settings/font-weight-settings.js +14 -16
  101. package/dist/settings/widgets/group-by.js +160 -0
  102. package/{lib/components → dist}/settings/widgets/label-color.js +10 -10
  103. package/dist/settings/widgets/min-max-setting.js +52 -0
  104. package/dist/settings/widgets/mininum-slice-percent.js +63 -0
  105. package/dist/settings/widgets/numeric-summary-item.js +90 -0
  106. package/dist/settings/widgets/select-table/index.js +38 -0
  107. package/dist/settings/widgets/stack.js +50 -0
  108. package/dist/settings/widgets/summary-method-setting.js +66 -0
  109. package/dist/settings/widgets/summary-settings.js +411 -0
  110. package/dist/settings/widgets/switch/index.css +37 -0
  111. package/{lib/components → dist}/settings/widgets/switch/index.js +11 -8
  112. package/{lib/components → dist}/settings/widgets/text-horizontal-settings.js +12 -10
  113. package/dist/settings/widgets/time-picker.js +174 -0
  114. package/{lib/components → dist}/settings/widgets/title-settings/index.js +15 -13
  115. package/dist/settings/widgets/title-settings/title-text.js +25 -0
  116. package/dist/settings/widgets/x-axios.js +0 -0
  117. package/dist/settings/widgets/y-axis-group-settings.js +438 -0
  118. package/dist/utils/cell-format-utils.js +42 -0
  119. package/dist/utils/chart-data-sql.js +606 -0
  120. package/dist/utils/chart-utils.js +1803 -0
  121. package/dist/utils/chart.js +6 -0
  122. package/dist/utils/collaborator-manager.js +24 -0
  123. package/dist/utils/collaborator-utils.js +40 -0
  124. package/dist/utils/column-2-sql-column.js +551 -0
  125. package/dist/utils/column-utils.js +208 -0
  126. package/{lib → dist}/utils/custom-g2.js +11 -11
  127. package/{lib → dist}/utils/date-translate.js +11 -11
  128. package/dist/utils/index.js +48 -0
  129. package/dist/utils/key-generator.js +13 -0
  130. package/dist/utils/object-utils.js +45 -0
  131. package/{lib → dist}/utils/options-utils.js +17 -18
  132. package/dist/view/index.css +53 -0
  133. package/dist/view/index.js +169 -0
  134. package/{lib/layout → dist/view}/title/index.css +1 -1
  135. package/dist/view/title/index.js +46 -0
  136. package/dist/view/wrapper/area.js +150 -0
  137. package/dist/view/wrapper/bar-group.js +148 -0
  138. package/dist/view/wrapper/bar.js +138 -0
  139. package/dist/view/wrapper/basic-number-card.js +127 -0
  140. package/dist/view/wrapper/chart-component.js +261 -0
  141. package/dist/view/wrapper/combination.js +399 -0
  142. package/dist/view/wrapper/dashboard.js +164 -0
  143. package/dist/view/wrapper/horizontal-bar-group.js +149 -0
  144. package/dist/view/wrapper/horizontal-bar.js +140 -0
  145. package/dist/view/wrapper/horizontal-component.js +78 -0
  146. package/{lib/components/formatter → dist/view/wrapper}/index.js +90 -71
  147. package/dist/view/wrapper/line-group.js +145 -0
  148. package/dist/view/wrapper/line.js +157 -0
  149. package/dist/view/wrapper/pie.js +185 -0
  150. package/dist/view/wrapper/ring.js +264 -0
  151. package/{lib/components/formatter → dist/view/wrapper}/table/index.css +18 -18
  152. package/dist/view/wrapper/table/index.js +31 -0
  153. package/dist/view/wrapper/table/one-dimension-table-no-numeric-columns.js +144 -0
  154. package/dist/view/wrapper/table/one-dimension-table-with-numeric-columns.js +198 -0
  155. package/dist/view/wrapper/table/pivot-table-display-name.js +248 -0
  156. package/dist/view/wrapper/table/two-dimension-table.js +249 -0
  157. package/dist/view/wrapper/treemap.js +186 -0
  158. package/package.json +91 -100
  159. package/lib/components/formatter/area.js +0 -162
  160. package/lib/components/formatter/bar-group.js +0 -160
  161. package/lib/components/formatter/bar.js +0 -150
  162. package/lib/components/formatter/basic-number-card.js +0 -138
  163. package/lib/components/formatter/chart-component.js +0 -266
  164. package/lib/components/formatter/combination.js +0 -407
  165. package/lib/components/formatter/dashboard.js +0 -182
  166. package/lib/components/formatter/horizontal-bar-group.js +0 -161
  167. package/lib/components/formatter/horizontal-bar.js +0 -152
  168. package/lib/components/formatter/horizontal-component.js +0 -91
  169. package/lib/components/formatter/line-group.js +0 -157
  170. package/lib/components/formatter/line.js +0 -170
  171. package/lib/components/formatter/pie.js +0 -201
  172. package/lib/components/formatter/ring.js +0 -277
  173. package/lib/components/formatter/table/index.js +0 -42
  174. package/lib/components/formatter/table/one-dimension-table-no-numeric-columns.js +0 -145
  175. package/lib/components/formatter/table/one-dimension-table-with-numeric-columns.js +0 -193
  176. package/lib/components/formatter/table/pivot-table-display-name.js +0 -249
  177. package/lib/components/formatter/table/two-dimension-table.js +0 -241
  178. package/lib/components/formatter/treemap.js +0 -213
  179. package/lib/components/index.js +0 -5
  180. package/lib/components/number-input/index.js +0 -31
  181. package/lib/components/select-group/index.js +0 -63
  182. package/lib/components/settings/advance-bar-settings/style-settings.js +0 -149
  183. package/lib/components/settings/bar-settings/style-settings.js +0 -163
  184. package/lib/components/settings/basic-number-card/data-settings.js +0 -121
  185. package/lib/components/settings/basic-number-card/style-settings.js +0 -42
  186. package/lib/components/settings/combination-settings/data-settings.js +0 -256
  187. package/lib/components/settings/combination-settings/style-settings.js +0 -183
  188. package/lib/components/settings/dashboard-settings/data-settings.js +0 -167
  189. package/lib/components/settings/horizontal-bar-settings/data-settings.js +0 -45
  190. package/lib/components/settings/horizontal-bar-settings/style-settings.js +0 -38
  191. package/lib/components/settings/index.css +0 -73
  192. package/lib/components/settings/index.js +0 -74
  193. package/lib/components/settings/style-settings.js +0 -100
  194. package/lib/components/settings/time-comparison-settings/style-settings.js +0 -191
  195. package/lib/components/settings/widgets/basic-summary/index.css +0 -12
  196. package/lib/components/settings/widgets/basic-summary/index.js +0 -173
  197. package/lib/components/settings/widgets/data-filter/index.css +0 -17
  198. package/lib/components/settings/widgets/data-sort.js +0 -38
  199. package/lib/components/settings/widgets/date-summary-item.js +0 -126
  200. package/lib/components/settings/widgets/display-values-settings/index.css +0 -13
  201. package/lib/components/settings/widgets/divider/index.js +0 -10
  202. package/lib/components/settings/widgets/group-by.js +0 -168
  203. package/lib/components/settings/widgets/min-max-setting.js +0 -64
  204. package/lib/components/settings/widgets/mininum-slice-percent.js +0 -72
  205. package/lib/components/settings/widgets/numeric-summary-item.js +0 -109
  206. package/lib/components/settings/widgets/select-table/index.js +0 -49
  207. package/lib/components/settings/widgets/stack.js +0 -58
  208. package/lib/components/settings/widgets/statistic-type/index.js +0 -54
  209. package/lib/components/settings/widgets/summary-method-setting.js +0 -80
  210. package/lib/components/settings/widgets/summary-settings.js +0 -394
  211. package/lib/components/settings/widgets/switch/index.css +0 -37
  212. package/lib/components/settings/widgets/time-picker.js +0 -182
  213. package/lib/components/settings/widgets/title-settings/title-text.js +0 -31
  214. package/lib/components/settings/widgets/y-axis-group-settings.js +0 -399
  215. package/lib/components/types-dialog/index.css +0 -97
  216. package/lib/components/types-dialog/index.js +0 -127
  217. package/lib/constants/index.js +0 -164
  218. package/lib/constants/style.js +0 -13
  219. package/lib/constants/type-image.js +0 -32
  220. package/lib/constants/type.js +0 -97
  221. package/lib/context.js +0 -49
  222. package/lib/index.js +0 -6
  223. package/lib/intl.js +0 -37
  224. package/lib/layout/index.js +0 -4
  225. package/lib/layout/statistic/index.css +0 -53
  226. package/lib/layout/statistic/index.js +0 -190
  227. package/lib/layout/title/index.js +0 -41
  228. package/lib/locale/index.js +0 -11
  229. package/lib/model/area-group.js +0 -51
  230. package/lib/model/area.js +0 -42
  231. package/lib/model/bar-group.js +0 -54
  232. package/lib/model/bar-stack.js +0 -51
  233. package/lib/model/bar.js +0 -48
  234. package/lib/model/base-model.js +0 -11
  235. package/lib/model/basic-number-card.js +0 -32
  236. package/lib/model/combination.js +0 -48
  237. package/lib/model/compare-bar.js +0 -49
  238. package/lib/model/completeness-group.js +0 -34
  239. package/lib/model/completeness.js +0 -28
  240. package/lib/model/dashboard.js +0 -26
  241. package/lib/model/generic-model.js +0 -235
  242. package/lib/model/heat-map.js +0 -33
  243. package/lib/model/horizontal-bar.js +0 -48
  244. package/lib/model/horizontal-group-bar.js +0 -53
  245. package/lib/model/index.js +0 -36
  246. package/lib/model/line-group.js +0 -54
  247. package/lib/model/line.js +0 -48
  248. package/lib/model/map-bubble.js +0 -37
  249. package/lib/model/map.js +0 -37
  250. package/lib/model/mirror.js +0 -36
  251. package/lib/model/pie.js +0 -36
  252. package/lib/model/ring.js +0 -36
  253. package/lib/model/scatter.js +0 -29
  254. package/lib/model/stacked-horizontal-bar.js +0 -42
  255. package/lib/model/statistic.js +0 -22
  256. package/lib/model/table.js +0 -33
  257. package/lib/model/tree-map.js +0 -30
  258. package/lib/model/trend.js +0 -34
  259. package/lib/model/user.js +0 -22
  260. package/lib/model/world-map-bubble.js +0 -36
  261. package/lib/model/world-map.js +0 -36
  262. package/lib/utils/cell-format-utils.js +0 -41
  263. package/lib/utils/chart.js +0 -6
  264. package/lib/utils/collaborator-utils.js +0 -40
  265. package/lib/utils/column-utils.js +0 -247
  266. package/lib/utils/data-filter/filter-item-utils.js +0 -80
  267. package/lib/utils/data-filter/filters-utils.js +0 -406
  268. package/lib/utils/data-filter/index.js +0 -3
  269. package/lib/utils/index.js +0 -50
  270. package/lib/utils/key-generator.js +0 -13
  271. package/lib/utils/object-utils.js +0 -61
  272. package/lib/utils/statistic-column-2-sql-column-utils.js +0 -499
  273. package/lib/utils/statistic-utils.js +0 -1685
  274. /package/{lib → dist}/assets/icons/area-chart.svg +0 -0
  275. /package/{lib → dist}/assets/icons/bar-chart.svg +0 -0
  276. /package/{lib → dist}/assets/icons/card.svg +0 -0
  277. /package/{lib → dist}/assets/icons/combination-chart.svg +0 -0
  278. /package/{lib → dist}/assets/icons/dtable-logo.svg +0 -0
  279. /package/{lib → dist}/assets/icons/facet-chart.svg +0 -0
  280. /package/{lib → dist}/assets/icons/gauge.svg +0 -0
  281. /package/{lib → dist}/assets/icons/heat-map.svg +0 -0
  282. /package/{lib → dist}/assets/icons/histogram.svg +0 -0
  283. /package/{lib → dist}/assets/icons/line-chart.svg +0 -0
  284. /package/{lib → dist}/assets/icons/map.svg +0 -0
  285. /package/{lib → dist}/assets/icons/pie-chart.svg +0 -0
  286. /package/{lib → dist}/assets/icons/rectangular-tree-diagram.svg +0 -0
  287. /package/{lib → dist}/assets/icons/scatter-chart.svg +0 -0
  288. /package/{lib → dist}/assets/icons/type-change.svg +0 -0
  289. /package/{lib → dist}/assets/img/area-chart.png +0 -0
  290. /package/{lib → dist}/assets/img/area-group-chart.png +0 -0
  291. /package/{lib → dist}/assets/img/bar-group.png +0 -0
  292. /package/{lib → dist}/assets/img/bar-stack.png +0 -0
  293. /package/{lib → dist}/assets/img/bar.png +0 -0
  294. /package/{lib → dist}/assets/img/combination-chart.png +0 -0
  295. /package/{lib → dist}/assets/img/compared-chart.png +0 -0
  296. /package/{lib → dist}/assets/img/completeness-chart.png +0 -0
  297. /package/{lib → dist}/assets/img/custom-bar.png +0 -0
  298. /package/{lib → dist}/assets/img/dashboard-chart.png +0 -0
  299. /package/{lib → dist}/assets/img/group-completeness-chart.png +0 -0
  300. /package/{lib → dist}/assets/img/group_line.png +0 -0
  301. /package/{lib → dist}/assets/img/heat-map.png +0 -0
  302. /package/{lib → dist}/assets/img/horizontal-bar.png +0 -0
  303. /package/{lib → dist}/assets/img/horizontal-group-bar.png +0 -0
  304. /package/{lib → dist}/assets/img/line.png +0 -0
  305. /package/{lib → dist}/assets/img/map-bubble.png +0 -0
  306. /package/{lib → dist}/assets/img/map.png +0 -0
  307. /package/{lib → dist}/assets/img/mirror.png +0 -0
  308. /package/{lib → dist}/assets/img/number-card.png +0 -0
  309. /package/{lib → dist}/assets/img/pie.png +0 -0
  310. /package/{lib → dist}/assets/img/pivot-table.png +0 -0
  311. /package/{lib → dist}/assets/img/ring.png +0 -0
  312. /package/{lib → dist}/assets/img/scatter.png +0 -0
  313. /package/{lib → dist}/assets/img/stacked-horizontal-bar.png +0 -0
  314. /package/{lib → dist}/assets/img/treemap.png +0 -0
  315. /package/{lib → dist}/assets/img/trend-chart.png +0 -0
  316. /package/{lib → dist}/assets/img/world-map-bubble.png +0 -0
  317. /package/{lib → dist}/assets/img/world-map.png +0 -0
  318. /package/{lib → dist}/components/loading/index.css +0 -0
  319. /package/{lib/components/settings/widgets/select-table → dist/editor}/index.css +0 -0
  320. /package/{lib/components → dist}/settings/advance-bar-settings/index.js +0 -0
  321. /package/{lib/components → dist}/settings/bar-settings/index.js +0 -0
  322. /package/{lib/components → dist}/settings/basic-number-card/index.js +0 -0
  323. /package/{lib/components → dist}/settings/combination-settings/index.js +0 -0
  324. /package/{lib/components → dist}/settings/dashboard-settings/index.js +0 -0
  325. /package/{lib/components → dist}/settings/horizontal-bar-settings/index.js +0 -0
  326. /package/{lib/components → dist}/settings/pie-settings/index.js +0 -0
  327. /package/{lib/components → dist}/settings/table-settings/index.js +0 -0
  328. /package/{lib/components → dist}/settings/time-comparison-settings/index.js +0 -0
  329. /package/{lib/components → dist}/settings/widgets/font-settings/index.js +0 -0
  330. /package/{lib/components/settings/widgets/x-axios.js → dist/settings/widgets/select-table/index.css} +0 -0
@@ -0,0 +1,6 @@
1
+ import { GenericModel, CHART_MAP } from '../model';
2
+ export const generateChartConfig = (options, tables) => {
3
+ const genericChart = new GenericModel(options);
4
+ const ChartModel = CHART_MAP[genericChart.type];
5
+ return new ChartModel(genericChart, tables);
6
+ };
@@ -0,0 +1,24 @@
1
+ import { User } from '../model';
2
+ class CollaboratorManager {
3
+ constructor(collaborators) {
4
+ this.collaborators = collaborators || [];
5
+ this.collaboratorsCache = {};
6
+ if (collaborators && Array.isArray(collaborators)) {
7
+ this.collaboratorsCache = collaborators.reduce((cache, item) => {
8
+ cache[item.email] = item;
9
+ return cache;
10
+ }, {});
11
+ }
12
+ }
13
+ getCollaboratorFromCache(email) {
14
+ return this.collaboratorsCache[email];
15
+ }
16
+ getCollaboratorsFromCache() {
17
+ const collaboratorsCache = this.collaboratorsCache;
18
+ return Object.values(collaboratorsCache).filter(item => item.email !== 'anonymous');
19
+ }
20
+ updateCollaboratorsCache(email, collaborator) {
21
+ this.collaboratorsCache[email] = collaborator instanceof User ? collaborator : new User(collaborator);
22
+ }
23
+ }
24
+ export default CollaboratorManager;
@@ -0,0 +1,40 @@
1
+ import { isValidEmail } from 'dtable-utils';
2
+ import { User } from '../model';
3
+ import context from '../context';
4
+ export const getKnownCollaboratorByEmail = email => {
5
+ const defaultUser = generateDefaultUser(email);
6
+ if (email === 'anonymous' || email === 'Automation Rule') {
7
+ const anonymous = new User({
8
+ ...defaultUser,
9
+ loaded: true
10
+ });
11
+ context.updateCollaboratorsCache(email, anonymous);
12
+ return anonymous;
13
+ }
14
+ let creator = context.getCollaboratorFromCache(email);
15
+ if (creator) return creator;
16
+ if (!isValidEmail(email)) {
17
+ creator = new User({
18
+ ...defaultUser,
19
+ loaded: true
20
+ });
21
+ context.updateCollaboratorsCache(email, creator);
22
+ return creator;
23
+ }
24
+ creator = context.getCollaboratorFromCache(email);
25
+ if (creator) return creator;
26
+ return null;
27
+ };
28
+ export const getKnownCollaboratorsByEmails = emails => {
29
+ if (!Array.isArray(emails) || emails.length === 0) return [];
30
+ return emails.map(email => getKnownCollaboratorByEmail(email));
31
+ };
32
+ export const generateDefaultUser = name => {
33
+ const mediaUrl = context.getSetting('mediaUrl');
34
+ const defaultAvatarUrl = "".concat(mediaUrl, "avatars/default.png");
35
+ return {
36
+ name,
37
+ email: name,
38
+ avatar_url: defaultAvatarUrl
39
+ };
40
+ };
@@ -0,0 +1,551 @@
1
+ import { CellType, getTableColumnByKey } from 'dtable-utils';
2
+ import { CHART_SUMMARY_TYPE, CHART_TYPE, DTABLE_DB_SUMMARY_METHOD } from '../constants';
3
+ import ChartUtils from './chart-utils';
4
+ const column2SqlColumn = function (column) {
5
+ let {
6
+ dateGranularity,
7
+ geolocationGranularity
8
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
9
+ const {
10
+ name,
11
+ type,
12
+ key
13
+ } = column;
14
+ const validColumnName = "`".concat(name, "`");
15
+ switch (type) {
16
+ case CellType.DATE:
17
+ case CellType.MTIME:
18
+ case CellType.CTIME:
19
+ {
20
+ const validDateGranularity = dateGranularity && dateGranularity.toUpperCase();
21
+ if (validDateGranularity === 'DAY') {
22
+ const sqlColumnName = "ISODATE(".concat(validColumnName, ")");
23
+ return {
24
+ name: sqlColumnName,
25
+ key: sqlColumnName
26
+ };
27
+ }
28
+ if (validDateGranularity === 'WEEK') {
29
+ const sqlColumnName = "ISODATE(STARTOFWEEK(".concat(validColumnName, ", \"monday\"))");
30
+ return {
31
+ name: sqlColumnName,
32
+ key: sqlColumnName
33
+ };
34
+ }
35
+ if (validDateGranularity === 'MONTH') {
36
+ const sqlColumnName = "ISOMONTH(".concat(validColumnName, ")");
37
+ return {
38
+ name: sqlColumnName,
39
+ key: sqlColumnName
40
+ };
41
+ }
42
+ if (validDateGranularity === 'QUARTER') {
43
+ const sqlColumnName = "CONCATENATE(year(".concat(validColumnName, "), \"-Q\", quarter(").concat(validColumnName, "))");
44
+ return {
45
+ name: sqlColumnName,
46
+ key: sqlColumnName
47
+ };
48
+ }
49
+ if (validDateGranularity === 'YEAR') {
50
+ const sqlColumnName = "YEAR(".concat(validColumnName, ")");
51
+ return {
52
+ name: sqlColumnName,
53
+ key: sqlColumnName
54
+ };
55
+ }
56
+ if (validDateGranularity === 'MAX' || validDateGranularity === 'MIN') {
57
+ const sqlColumnName = "".concat(validDateGranularity, "(").concat(validColumnName, ")");
58
+ return {
59
+ name: sqlColumnName,
60
+ key: sqlColumnName
61
+ };
62
+ }
63
+ const sqlColumnName = "ISOMONTH(".concat(validColumnName, ")");
64
+ return {
65
+ name: sqlColumnName,
66
+ key: sqlColumnName
67
+ };
68
+ }
69
+ case CellType.GEOLOCATION:
70
+ {
71
+ const validGeolocationGranularity = geolocationGranularity && geolocationGranularity.toUpperCase();
72
+ if (validGeolocationGranularity === 'PROVINCE') {
73
+ const sqlColumnName = "PROVINCE(".concat(validColumnName, ")");
74
+ return {
75
+ name: sqlColumnName,
76
+ key: sqlColumnName
77
+ };
78
+ }
79
+ if (validGeolocationGranularity === 'CITY') {
80
+ const sqlColumnName = "CITY(".concat(validColumnName, ")");
81
+ return {
82
+ name: sqlColumnName,
83
+ key: sqlColumnName
84
+ };
85
+ }
86
+ if (validGeolocationGranularity === 'DISTRICT') {
87
+ const sqlColumnName = "DISTRICT(".concat(validColumnName, ")");
88
+ return {
89
+ name: sqlColumnName,
90
+ key: sqlColumnName
91
+ };
92
+ }
93
+ return {
94
+ name: validColumnName,
95
+ key
96
+ };
97
+ }
98
+ default:
99
+ {
100
+ return {
101
+ name: validColumnName,
102
+ key
103
+ };
104
+ }
105
+ }
106
+ };
107
+ export const summaryMethodColumn2SqlColumn = function (summaryMethod) {
108
+ let column = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
109
+ const columnName = column.name || '';
110
+ if (summaryMethod === DTABLE_DB_SUMMARY_METHOD.DISTINCT_VALUES) {
111
+ return {
112
+ name: "".concat(DTABLE_DB_SUMMARY_METHOD.COUNT, "(DISTINCT ").concat(columnName, ")"),
113
+ key: "".concat(DTABLE_DB_SUMMARY_METHOD.COUNT, "(DISTINCT ").concat(columnName, ")")
114
+ };
115
+ }
116
+ return {
117
+ name: "".concat(DTABLE_DB_SUMMARY_METHOD[summaryMethod], "(`").concat(columnName, "`)"),
118
+ key: "".concat(DTABLE_DB_SUMMARY_METHOD[summaryMethod], "(").concat(columnName, ")")
119
+ };
120
+ };
121
+ const oneDimensionStatisticTableColumn2sqlColumn = (chart, table) => {
122
+ const {
123
+ groupby_column_key,
124
+ summary_type,
125
+ summary_column_key,
126
+ groupby_date_granularity,
127
+ groupby_geolocation_granularity,
128
+ summary_method,
129
+ summary_columns
130
+ } = chart;
131
+ if (!summary_method) return {};
132
+ const groupbyColumn = getTableColumnByKey(table, groupby_column_key);
133
+ if (!groupbyColumn) return {};
134
+ const {
135
+ key: sqlGroupbyColumnKey
136
+ } = column2SqlColumn(groupbyColumn, {
137
+ dateGranularity: groupby_date_granularity,
138
+ geolocationGranularity: groupby_geolocation_granularity
139
+ });
140
+ if (summary_type === CHART_SUMMARY_TYPE.COUNT) {
141
+ const {
142
+ key: sqlSummaryColumnKey
143
+ } = summaryMethodColumn2SqlColumn('COUNT', groupbyColumn);
144
+ return {
145
+ sqlGroupbyColumnKey,
146
+ sqlSummaryColumnKey
147
+ };
148
+ }
149
+ let summarySQLColumnName2ColumnKey = {};
150
+ let summaryTableColumnKey2Column = {};
151
+ let summaryTableColumnKey2Method = {};
152
+ const numericColumns = [{
153
+ column_key: summary_column_key,
154
+ summary_method: summary_method
155
+ }, ...summary_columns];
156
+ numericColumns.forEach(item => {
157
+ const {
158
+ column_key,
159
+ summary_method: item_summary_method
160
+ } = item;
161
+ const summaryMethod = item_summary_method.toUpperCase();
162
+ const column = getTableColumnByKey(table, column_key);
163
+ if (column && (ChartUtils.isDateSummaryColumn(column) || ChartUtils.isNumericSummaryColumn(column))) {
164
+ const {
165
+ key: sqlNumericColumnKey
166
+ } = summaryMethodColumn2SqlColumn(summaryMethod, column);
167
+ const {
168
+ key: summaryColumnKey
169
+ } = column;
170
+ summarySQLColumnName2ColumnKey[sqlNumericColumnKey] = summaryColumnKey;
171
+ summaryTableColumnKey2Column[summaryColumnKey] = column;
172
+ summaryTableColumnKey2Method[summaryColumnKey] = summaryMethod;
173
+ }
174
+ });
175
+ return {
176
+ sqlGroupbyColumnKey,
177
+ summarySQLColumnName2ColumnKey,
178
+ summaryTableColumnKey2Column,
179
+ summaryTableColumnKey2Method
180
+ };
181
+ };
182
+ const twoDimensionStatisticTableColumn2sqlColumn = (chart, table) => {
183
+ const {
184
+ groupby_column_key,
185
+ column_groupby_column_key,
186
+ summary_type,
187
+ summary_column_key,
188
+ groupby_date_granularity,
189
+ groupby_geolocation_granularity,
190
+ column_groupby_date_granularity,
191
+ column_groupby_geolocation_granularity,
192
+ summary_method
193
+ } = chart;
194
+ const columnGroupbyColumn = getTableColumnByKey(table, column_groupby_column_key);
195
+ if (!columnGroupbyColumn) return oneDimensionStatisticTableColumn2sqlColumn(chart, table);
196
+ const groupbyColumn = getTableColumnByKey(table, groupby_column_key);
197
+ if (!groupbyColumn) return {};
198
+ const {
199
+ key: sqlGroupbyColumnKey
200
+ } = column2SqlColumn(groupbyColumn, {
201
+ dateGranularity: groupby_date_granularity,
202
+ geolocationGranularity: groupby_geolocation_granularity
203
+ });
204
+ const {
205
+ key: sqlColumnGroupbyColumnKey
206
+ } = column2SqlColumn(columnGroupbyColumn, {
207
+ dateGranularity: column_groupby_date_granularity,
208
+ geolocationGranularity: column_groupby_geolocation_granularity
209
+ });
210
+ let sqlSummaryColumnKey;
211
+ if (summary_type === CHART_SUMMARY_TYPE.COUNT) {
212
+ const {
213
+ key
214
+ } = summaryMethodColumn2SqlColumn('COUNT', groupbyColumn);
215
+ sqlSummaryColumnKey = key;
216
+ } else {
217
+ if (!summary_method) return {};
218
+ const summaryMethod = (summary_method || '').toUpperCase();
219
+ const summaryColumn = getTableColumnByKey(table, summary_column_key) || {};
220
+ const {
221
+ key
222
+ } = summaryMethodColumn2SqlColumn(summaryMethod, summaryColumn);
223
+ sqlSummaryColumnKey = key;
224
+ }
225
+ return {
226
+ sqlGroupbyColumnKey,
227
+ sqlColumnGroupbyColumnKey,
228
+ sqlSummaryColumnKey
229
+ };
230
+ };
231
+ const pieChartStatisticColumn2sqlColumn = (chart, table) => {
232
+ const {
233
+ groupby_column_key,
234
+ summary_type,
235
+ summary_method,
236
+ summary_column_key,
237
+ groupby_date_granularity,
238
+ groupby_geolocation_granularity
239
+ } = chart;
240
+ if (!groupby_column_key) return {};
241
+ const groupbyColumn = getTableColumnByKey(table, groupby_column_key);
242
+ if (!groupbyColumn) return {};
243
+ const {
244
+ key: sqlGroupbyColumnKey
245
+ } = column2SqlColumn(groupbyColumn, {
246
+ dateGranularity: groupby_date_granularity,
247
+ geolocationGranularity: groupby_geolocation_granularity
248
+ });
249
+ let sqlSummaryColumnKey;
250
+ if (summary_type === CHART_SUMMARY_TYPE.COUNT) {
251
+ const {
252
+ key
253
+ } = summaryMethodColumn2SqlColumn('COUNT', groupbyColumn);
254
+ sqlSummaryColumnKey = key;
255
+ } else {
256
+ if (!summary_method) return {};
257
+ const summaryMethod = summary_method.toUpperCase();
258
+ const summaryColumn = getTableColumnByKey(table, summary_column_key) || {};
259
+ if (summaryColumn) {
260
+ const {
261
+ key
262
+ } = summaryMethodColumn2SqlColumn(summaryMethod, summaryColumn);
263
+ sqlSummaryColumnKey = key;
264
+ }
265
+ }
266
+ return {
267
+ sqlGroupbyColumnKey,
268
+ sqlSummaryColumnKey
269
+ };
270
+ };
271
+ const basicChartStatisticColumn2sqlColumn = (chart, table) => {
272
+ const {
273
+ x_axis_column_key,
274
+ y_axis_summary_type,
275
+ y_axis_summary_method,
276
+ y_axis_summary_column_key,
277
+ x_axis_date_granularity,
278
+ x_axis_geolocation_granularity
279
+ } = chart;
280
+ const groupbyColumn = getTableColumnByKey(table, x_axis_column_key);
281
+ if (!groupbyColumn) return {};
282
+ const {
283
+ key: sqlGroupbyColumnKey
284
+ } = column2SqlColumn(groupbyColumn, {
285
+ dateGranularity: x_axis_date_granularity,
286
+ geolocationGranularity: x_axis_geolocation_granularity
287
+ });
288
+ const summaryMethod = y_axis_summary_method && y_axis_summary_method.toUpperCase();
289
+ let sqlSummaryColumnKey;
290
+ if (y_axis_summary_type === CHART_SUMMARY_TYPE.COUNT) {
291
+ const {
292
+ key
293
+ } = summaryMethodColumn2SqlColumn('COUNT', groupbyColumn);
294
+ sqlSummaryColumnKey = key;
295
+ } else {
296
+ const summaryColumn = getTableColumnByKey(table, y_axis_summary_column_key);
297
+ if (summaryColumn) {
298
+ const {
299
+ key
300
+ } = summaryMethodColumn2SqlColumn(summaryMethod, summaryColumn);
301
+ sqlSummaryColumnKey = key;
302
+ }
303
+ }
304
+ return {
305
+ sqlGroupbyColumnKey,
306
+ sqlSummaryColumnKey
307
+ };
308
+ };
309
+ const combinationChartStatisticColumn2sqlColumn = (chart, table) => {
310
+ const {
311
+ x_axis_column_key,
312
+ x_axis_date_granularity,
313
+ x_axis_geolocation_granularity,
314
+ y_axis_left_group_by_multiple_numeric_column,
315
+ y_axis_left_summary_type,
316
+ y_axis_left_summary_column,
317
+ y_axis_left_summary_method,
318
+ y_axis_right_summary_type,
319
+ y_axis_right_summary_column,
320
+ y_axis_right_summary_method,
321
+ y_axis_left_group_by_numeric_columns
322
+ } = chart;
323
+ const groupbyColumn = getTableColumnByKey(table, x_axis_column_key);
324
+ if (!groupbyColumn) return {};
325
+ const {
326
+ key: sqlGroupbyColumnKey
327
+ } = column2SqlColumn(groupbyColumn, {
328
+ dateGranularity: x_axis_date_granularity,
329
+ geolocationGranularity: x_axis_geolocation_granularity
330
+ });
331
+ const summaryLeftMethod = y_axis_left_summary_method && y_axis_left_summary_method.toUpperCase();
332
+ const summaryRightMethod = y_axis_right_summary_method && y_axis_right_summary_method.toUpperCase();
333
+ let sqlLeftSummaryColumnKey, sqlRightSummaryColumnKey;
334
+ if (y_axis_right_summary_type === CHART_SUMMARY_TYPE.COUNT) {
335
+ const {
336
+ key
337
+ } = summaryMethodColumn2SqlColumn('COUNT', groupbyColumn);
338
+ sqlRightSummaryColumnKey = key;
339
+ } else {
340
+ const summaryColumn = getTableColumnByKey(table, y_axis_right_summary_column);
341
+ if (summaryColumn) {
342
+ const {
343
+ key
344
+ } = summaryMethodColumn2SqlColumn(summaryRightMethod, summaryColumn);
345
+ sqlRightSummaryColumnKey = key;
346
+ }
347
+ }
348
+ if (y_axis_left_summary_type === CHART_SUMMARY_TYPE.COUNT) {
349
+ const {
350
+ key
351
+ } = summaryMethodColumn2SqlColumn('COUNT', groupbyColumn);
352
+ sqlLeftSummaryColumnKey = key;
353
+ return {
354
+ sqlGroupbyColumnKey,
355
+ sqlRightSummaryColumnKey,
356
+ sqlLeftSummaryColumnKey
357
+ };
358
+ }
359
+ if (y_axis_left_group_by_multiple_numeric_column) {
360
+ const columnGroupbyNumericColumns = [{
361
+ column_key: y_axis_left_summary_column,
362
+ summary_method: y_axis_left_summary_method
363
+ }, ...y_axis_left_group_by_numeric_columns];
364
+ let summaryColumns = {};
365
+ columnGroupbyNumericColumns.forEach(summaryColumnOption => {
366
+ const {
367
+ column_key,
368
+ summary_method = 'Sum'
369
+ } = summaryColumnOption;
370
+ const column = getTableColumnByKey(table, column_key);
371
+ if (column) {
372
+ const summaryMethod = summary_method.toUpperCase();
373
+ const {
374
+ name: sqlSummaryColumnName,
375
+ key: sqlSummaryColumnKey
376
+ } = summaryMethodColumn2SqlColumn(summaryMethod, column);
377
+ summaryColumns[sqlSummaryColumnName] = {
378
+ sqlSummaryColumnKey,
379
+ columnName: column.name
380
+ };
381
+ }
382
+ });
383
+ return {
384
+ sqlGroupbyColumnKey,
385
+ summaryColumns,
386
+ sqlRightSummaryColumnKey,
387
+ sqlLeftSummaryColumnKey
388
+ };
389
+ }
390
+ const summaryLeftColumn = getTableColumnByKey(table, y_axis_left_summary_column);
391
+ if (summaryLeftColumn) {
392
+ const {
393
+ key
394
+ } = summaryMethodColumn2SqlColumn(summaryLeftMethod, summaryLeftColumn);
395
+ sqlLeftSummaryColumnKey = key;
396
+ }
397
+ return {
398
+ sqlGroupbyColumnKey,
399
+ sqlRightSummaryColumnKey,
400
+ sqlLeftSummaryColumnKey
401
+ };
402
+ };
403
+ const groupingChartStatisticColumn2sqlColumn = (chart, table) => {
404
+ const {
405
+ x_axis_column_key,
406
+ y_axis_summary_type,
407
+ y_axis_summary_method,
408
+ y_axis_summary_column_key,
409
+ x_axis_date_granularity,
410
+ x_axis_geolocation_granularity,
411
+ column_groupby_column_key,
412
+ column_groupby_date_granularity,
413
+ column_groupby_geolocation_granularity,
414
+ column_groupby_multiple_numeric_column,
415
+ summary_columns = []
416
+ } = chart;
417
+ const groupbyColumn = getTableColumnByKey(table, x_axis_column_key);
418
+ if (!groupbyColumn) return {};
419
+ const {
420
+ key: sqlGroupbyColumnKey
421
+ } = column2SqlColumn(groupbyColumn, {
422
+ dateGranularity: x_axis_date_granularity,
423
+ geolocationGranularity: x_axis_geolocation_granularity
424
+ });
425
+ if (y_axis_summary_type === CHART_SUMMARY_TYPE.COUNT) {
426
+ const columnGroupbyColumn = getTableColumnByKey(table, column_groupby_column_key);
427
+ if (!columnGroupbyColumn) return basicChartStatisticColumn2sqlColumn(chart, table);
428
+ const {
429
+ key: sqlColumnGroupbyColumnKey
430
+ } = column2SqlColumn(columnGroupbyColumn, {
431
+ dateGranularity: column_groupby_date_granularity,
432
+ geolocationGranularity: column_groupby_geolocation_granularity
433
+ });
434
+ const {
435
+ key: sqlSummaryColumnKey
436
+ } = summaryMethodColumn2SqlColumn('COUNT', groupbyColumn);
437
+ return {
438
+ sqlGroupbyColumnKey,
439
+ sqlColumnGroupbyColumnKey,
440
+ sqlSummaryColumnKey
441
+ };
442
+ }
443
+ if (column_groupby_multiple_numeric_column) {
444
+ const columnGroupbyNumericColumns = [{
445
+ column_key: y_axis_summary_column_key,
446
+ summary_method: y_axis_summary_method
447
+ }, ...summary_columns];
448
+ let summaryColumns = {};
449
+ columnGroupbyNumericColumns.forEach(summaryColumnOption => {
450
+ const {
451
+ column_key,
452
+ summary_method = 'Sum'
453
+ } = summaryColumnOption;
454
+ const column = getTableColumnByKey(table, column_key);
455
+ if (column) {
456
+ const summaryMethod = summary_method.toUpperCase();
457
+ const {
458
+ name: sqlSummaryColumnName,
459
+ key: sqlSummaryColumnKey
460
+ } = summaryMethodColumn2SqlColumn(summaryMethod, column);
461
+ summaryColumns[sqlSummaryColumnName] = {
462
+ sqlSummaryColumnKey,
463
+ columnName: column.name
464
+ };
465
+ }
466
+ });
467
+ return {
468
+ sqlGroupbyColumnKey,
469
+ summaryColumns
470
+ };
471
+ }
472
+ const columnGroupbyColumn = getTableColumnByKey(table, column_groupby_column_key);
473
+ const summaryMethod = y_axis_summary_method && y_axis_summary_method.toUpperCase();
474
+ const summaryColumn = getTableColumnByKey(table, y_axis_summary_column_key);
475
+ const {
476
+ key: sqlSummaryColumnKey
477
+ } = summaryMethodColumn2SqlColumn(summaryMethod, summaryColumn);
478
+ if (!columnGroupbyColumn) {
479
+ return {
480
+ sqlGroupbyColumnKey,
481
+ sqlSummaryColumnKey
482
+ };
483
+ }
484
+ const {
485
+ key: sqlColumnGroupbyColumnKey
486
+ } = column2SqlColumn(columnGroupbyColumn, {
487
+ dateGranularity: column_groupby_date_granularity,
488
+ geolocationGranularity: column_groupby_geolocation_granularity
489
+ });
490
+ return {
491
+ sqlGroupbyColumnKey,
492
+ sqlColumnGroupbyColumnKey,
493
+ sqlSummaryColumnKey
494
+ };
495
+ };
496
+ const chartColumn2SqlColumn = (chartElement, table) => {
497
+ if (!chartElement || !table) return {};
498
+ const {
499
+ config: chart
500
+ } = chartElement;
501
+ const {
502
+ type
503
+ } = chart;
504
+ switch (type) {
505
+ case CHART_TYPE.TABLE:
506
+ {
507
+ const {
508
+ column_groupby_column_key,
509
+ groupby_column_key
510
+ } = chart;
511
+ if (!groupby_column_key) return {};
512
+ if (!column_groupby_column_key) {
513
+ return oneDimensionStatisticTableColumn2sqlColumn(chart, table);
514
+ }
515
+ return twoDimensionStatisticTableColumn2sqlColumn(chart, table);
516
+ }
517
+ case CHART_TYPE.COMBINATION:
518
+ {
519
+ return combinationChartStatisticColumn2sqlColumn(chart, table);
520
+ }
521
+ case CHART_TYPE.PIE:
522
+ case CHART_TYPE.RING:
523
+ case CHART_TYPE.TREE_MAP:
524
+ {
525
+ return pieChartStatisticColumn2sqlColumn(chart, table);
526
+ }
527
+ case CHART_TYPE.BAR:
528
+ case CHART_TYPE.LINE:
529
+ case CHART_TYPE.HORIZONTAL_BAR:
530
+ case CHART_TYPE.AREA:
531
+ {
532
+ return basicChartStatisticColumn2sqlColumn(chart, table);
533
+ }
534
+ case CHART_TYPE.BAR_GROUP:
535
+ case CHART_TYPE.LINE_GROUP:
536
+ case CHART_TYPE.HORIZONTAL_GROUP_BAR:
537
+ {
538
+ const {
539
+ column_groupby_column_key,
540
+ column_groupby_multiple_numeric_column
541
+ } = chart;
542
+ if (!column_groupby_column_key && !column_groupby_multiple_numeric_column) {
543
+ return basicChartStatisticColumn2sqlColumn(chart, table);
544
+ }
545
+ return groupingChartStatisticColumn2sqlColumn(chart, table);
546
+ }
547
+ default:
548
+ return {};
549
+ }
550
+ };
551
+ export default chartColumn2SqlColumn;