@urbanos/react-discovery-ui 2.1.43

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 (316) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +118 -0
  3. package/lib/ReactDiscoveryUI.js +103 -0
  4. package/lib/ReactDiscoveryUI.scss +13 -0
  5. package/lib/assets/arrow.svg +6 -0
  6. package/lib/assets/blk-database.svg +48 -0
  7. package/lib/assets/chart.svg +1 -0
  8. package/lib/assets/down.png +0 -0
  9. package/lib/assets/down.svg +1 -0
  10. package/lib/assets/folder_icon.png +0 -0
  11. package/lib/assets/folder_icon.svg +1 -0
  12. package/lib/assets/ic_arrow.svg +15 -0
  13. package/lib/assets/loadingicon.svg +57 -0
  14. package/lib/assets/no_image.png +0 -0
  15. package/lib/assets/plus.png +0 -0
  16. package/lib/assets/plus.svg +1 -0
  17. package/lib/assets/user.svg +1 -0
  18. package/lib/auth/auth0-client-provider.js +37 -0
  19. package/lib/auth/auth0-client-provider.test.js +33 -0
  20. package/lib/auth/auth0-wrapper.js +155 -0
  21. package/lib/auth/auth0-wrapper.test.js +100 -0
  22. package/lib/components/auth0-login-zone/auth0-login-zone.js +147 -0
  23. package/lib/components/auth0-login-zone/auth0-login-zone.test.js +177 -0
  24. package/lib/components/auth0-login-zone/index.js +9 -0
  25. package/lib/components/code-editor/code-editor.css +173 -0
  26. package/lib/components/code-editor/code-editor.js +64 -0
  27. package/lib/components/code-editor/index.js +9 -0
  28. package/lib/components/collapsable-box/collapsable-box.js +81 -0
  29. package/lib/components/collapsable-box/collapsable-box.scss +39 -0
  30. package/lib/components/collapsable-box/collapsable-box.test.js +87 -0
  31. package/lib/components/collapsable-box/index.js +9 -0
  32. package/lib/components/data-card/data-card.js +63 -0
  33. package/lib/components/data-card/data-card.scss +93 -0
  34. package/lib/components/data-card/data-card.test.js +74 -0
  35. package/lib/components/data-card/index.js +9 -0
  36. package/lib/components/data-view/data-view.js +194 -0
  37. package/lib/components/data-view/data-view.scss +39 -0
  38. package/lib/components/data-view/data-view.test.js +155 -0
  39. package/lib/components/data-view/index.js +9 -0
  40. package/lib/components/dataset-api-doc/api-example.js +120 -0
  41. package/lib/components/dataset-api-doc/api-example.scss +84 -0
  42. package/lib/components/dataset-api-doc/api-example.test.js +88 -0
  43. package/lib/components/dataset-api-doc/dataset-api-doc.js +117 -0
  44. package/lib/components/dataset-api-doc/dataset-api-doc.scss +8 -0
  45. package/lib/components/dataset-api-doc/dataset-api-doc.test.js +42 -0
  46. package/lib/components/dataset-api-doc/index.js +9 -0
  47. package/lib/components/dataset-details/dataset-details.js +64 -0
  48. package/lib/components/dataset-details/dataset-details.scss +58 -0
  49. package/lib/components/dataset-details/dataset-details.test.js +38 -0
  50. package/lib/components/dataset-details/index.js +9 -0
  51. package/lib/components/dataset-dictionary/dataset-dictionary.js +127 -0
  52. package/lib/components/dataset-dictionary/dataset-dictionary.scss +42 -0
  53. package/lib/components/dataset-dictionary/dataset-dictionary.test.js +286 -0
  54. package/lib/components/dataset-dictionary/index.js +9 -0
  55. package/lib/components/dataset-list/dataset-list.js +22 -0
  56. package/lib/components/dataset-list/dataset-list.scss +9 -0
  57. package/lib/components/dataset-list/dataset-list.test.js +16 -0
  58. package/lib/components/dataset-list/index.js +9 -0
  59. package/lib/components/dataset-metadata/dataset-metadata.js +169 -0
  60. package/lib/components/dataset-metadata/dataset-metadata.scss +34 -0
  61. package/lib/components/dataset-metadata/dataset-metadata.test.js +24 -0
  62. package/lib/components/dataset-metadata/index.js +9 -0
  63. package/lib/components/dataset-preview/connector.js +26 -0
  64. package/lib/components/dataset-preview/dataset-preview.js +58 -0
  65. package/lib/components/dataset-preview/dataset-preview.scss +24 -0
  66. package/lib/components/dataset-preview/dataset-preview.test.js +34 -0
  67. package/lib/components/dataset-preview/index.js +9 -0
  68. package/lib/components/dataset-quality/dataset-quality.js +56 -0
  69. package/lib/components/dataset-quality/dataset-quality.scss +24 -0
  70. package/lib/components/dataset-quality/dataset-quality.test.js +34 -0
  71. package/lib/components/dataset-quality/index.js +9 -0
  72. package/lib/components/dataset-recommendations/connector.js +24 -0
  73. package/lib/components/dataset-recommendations/dataset-recommendations.js +47 -0
  74. package/lib/components/dataset-recommendations/dataset-recommendations.scss +17 -0
  75. package/lib/components/dataset-recommendations/dataset-recommendations.test.js +37 -0
  76. package/lib/components/dataset-recommendations/index.js +9 -0
  77. package/lib/components/detail-toggle-icon/detail-toggle-icon.js +41 -0
  78. package/lib/components/detail-toggle-icon/detail-toggle-icon.scss +13 -0
  79. package/lib/components/detail-toggle-icon/detail-toggle-icon.test.js +20 -0
  80. package/lib/components/detail-toggle-icon/index.js +9 -0
  81. package/lib/components/facet-list/facet-list.js +47 -0
  82. package/lib/components/facet-list/facet-list.scss +19 -0
  83. package/lib/components/facet-list/facet-list.test.js +94 -0
  84. package/lib/components/facet-list/index.js +9 -0
  85. package/lib/components/facet-sidebar/facet-sidebar.js +101 -0
  86. package/lib/components/facet-sidebar/facet-sidebar.scss +129 -0
  87. package/lib/components/facet-sidebar/facet-sidebar.test.js +93 -0
  88. package/lib/components/facet-sidebar/index.js +9 -0
  89. package/lib/components/generic-elements/alert-component/alert-component.js +51 -0
  90. package/lib/components/generic-elements/alert-component/alert-component.scss +26 -0
  91. package/lib/components/generic-elements/alert-component/alert-component.test.js +26 -0
  92. package/lib/components/generic-elements/alert-component/index.js +9 -0
  93. package/lib/components/generic-elements/arrow-button/arrow-button.js +30 -0
  94. package/lib/components/generic-elements/arrow-button/index.js +9 -0
  95. package/lib/components/generic-elements/auto-anchoring-popover/index.js +61 -0
  96. package/lib/components/generic-elements/back-button/back-button.js +14 -0
  97. package/lib/components/generic-elements/back-button/back-button.scss +14 -0
  98. package/lib/components/generic-elements/back-button/index.js +9 -0
  99. package/lib/components/generic-elements/call-to-action-button/call-to-action-button.js +118 -0
  100. package/lib/components/generic-elements/call-to-action-button/call-to-action-button.scss +19 -0
  101. package/lib/components/generic-elements/call-to-action-button/call-to-action-button.test.js +68 -0
  102. package/lib/components/generic-elements/call-to-action-button/index.js +9 -0
  103. package/lib/components/generic-elements/chart-icon/index.js +23 -0
  104. package/lib/components/generic-elements/checkbox/checkbox.js +50 -0
  105. package/lib/components/generic-elements/checkbox/checkbox.scss +44 -0
  106. package/lib/components/generic-elements/checkbox/checkbox.test.js +71 -0
  107. package/lib/components/generic-elements/checkbox/index.js +9 -0
  108. package/lib/components/generic-elements/error-component/error-component.js +21 -0
  109. package/lib/components/generic-elements/error-component/error-component.scss +16 -0
  110. package/lib/components/generic-elements/error-component/error-component.test.js +12 -0
  111. package/lib/components/generic-elements/error-component/index.js +9 -0
  112. package/lib/components/generic-elements/folder-icon/index.js +23 -0
  113. package/lib/components/generic-elements/generated-link/generated-link.js +25 -0
  114. package/lib/components/generic-elements/generated-link/index.js +13 -0
  115. package/lib/components/generic-elements/loading-element/index.js +9 -0
  116. package/lib/components/generic-elements/loading-element/loading-element.js +22 -0
  117. package/lib/components/generic-elements/loading-element/loading-element.scss +6 -0
  118. package/lib/components/generic-elements/loading-element/loading-element.test.js +11 -0
  119. package/lib/components/generic-elements/paginator/index.js +9 -0
  120. package/lib/components/generic-elements/paginator/paginator.js +84 -0
  121. package/lib/components/generic-elements/paginator/paginator.scss +38 -0
  122. package/lib/components/generic-elements/paginator/paginator.test.js +140 -0
  123. package/lib/components/generic-elements/plus-icon/index.js +21 -0
  124. package/lib/components/generic-elements/save-indicator/index.js +9 -0
  125. package/lib/components/generic-elements/save-indicator/save-indicator.js +39 -0
  126. package/lib/components/generic-elements/save-indicator/save-indicator.scss +31 -0
  127. package/lib/components/generic-elements/save-indicator/save-indicator.test.js +89 -0
  128. package/lib/components/generic-elements/search/index.js +9 -0
  129. package/lib/components/generic-elements/search/search.js +93 -0
  130. package/lib/components/generic-elements/search/search.scss +90 -0
  131. package/lib/components/generic-elements/search/search.test.js +41 -0
  132. package/lib/components/generic-elements/select/index.js +9 -0
  133. package/lib/components/generic-elements/select/select.js +44 -0
  134. package/lib/components/generic-elements/select/select.scss +22 -0
  135. package/lib/components/generic-elements/select/select.test.js +34 -0
  136. package/lib/components/generic-elements/share-link/index.js +9 -0
  137. package/lib/components/generic-elements/share-link/share-link.js +23 -0
  138. package/lib/components/generic-elements/share-link/share-link.scss +17 -0
  139. package/lib/components/generic-elements/share-link/share-link.test.js +28 -0
  140. package/lib/components/generic-elements/sql-icon/index.js +20 -0
  141. package/lib/components/generic-elements/tab-button/index.js +9 -0
  142. package/lib/components/generic-elements/tab-button/tab-button.js +25 -0
  143. package/lib/components/generic-elements/tab-button/tab-button.scss +27 -0
  144. package/lib/components/generic-elements/visualize-button/index.js +9 -0
  145. package/lib/components/generic-elements/visualize-button/visualize-button.js +37 -0
  146. package/lib/components/generic-elements/visualize-button/visualize-button.scss +14 -0
  147. package/lib/components/login-zone/connector.js +25 -0
  148. package/lib/components/login-zone/index.js +9 -0
  149. package/lib/components/login-zone/login-svgs-and-text.js +39 -0
  150. package/lib/components/login-zone/login-zone.js +21 -0
  151. package/lib/components/login-zone/login-zone.scss +115 -0
  152. package/lib/components/login-zone/login-zone.test.js +17 -0
  153. package/lib/components/login-zone/login.js +48 -0
  154. package/lib/components/login-zone/logout.js +39 -0
  155. package/lib/components/network-loading-element/connector.js +17 -0
  156. package/lib/components/network-loading-element/index.js +9 -0
  157. package/lib/components/network-loading-element/network-loading-element.js +23 -0
  158. package/lib/components/network-loading-element/network-loading-element.scss +21 -0
  159. package/lib/components/network-loading-element/network-loading-element.test.js +34 -0
  160. package/lib/components/organization/index.js +9 -0
  161. package/lib/components/organization/organization.js +27 -0
  162. package/lib/components/organization/organization.scss +32 -0
  163. package/lib/components/protected-route/protected-route.js +101 -0
  164. package/lib/components/protected-route/protected-route.scss +4 -0
  165. package/lib/components/protected-route/protected-route.test.js +63 -0
  166. package/lib/components/query-form/index.js +9 -0
  167. package/lib/components/query-form/query-form.js +262 -0
  168. package/lib/components/query-form/query-form.scss +167 -0
  169. package/lib/components/query-form/query-form.test.js +248 -0
  170. package/lib/components/recommendation-list/index.js +9 -0
  171. package/lib/components/recommendation-list/recommendation-list.js +72 -0
  172. package/lib/components/recommendation-list/recommendation-list.scss +61 -0
  173. package/lib/components/recommendation-list/recommendation-list.test.js +38 -0
  174. package/lib/components/remote-toggle/__snapshots__/remote-toggle.test.js.snap +3 -0
  175. package/lib/components/remote-toggle/index.js +13 -0
  176. package/lib/components/remote-toggle/remote-toggle.js +35 -0
  177. package/lib/components/remote-toggle/remote-toggle.scss +0 -0
  178. package/lib/components/remote-toggle/remote-toggle.test.js +10 -0
  179. package/lib/components/share/index.js +9 -0
  180. package/lib/components/share/share.js +109 -0
  181. package/lib/components/share/share.scss +66 -0
  182. package/lib/components/streaming-api-doc/index.js +9 -0
  183. package/lib/components/streaming-api-doc/streaming-api-doc.js +76 -0
  184. package/lib/components/streaming-api-doc/streaming-api-doc.scss +23 -0
  185. package/lib/components/streaming-api-doc/streaming-api-doc.test.js +24 -0
  186. package/lib/components/tooltip/index.js +9 -0
  187. package/lib/components/tooltip/tooltip.js +17 -0
  188. package/lib/components/tooltip/tooltip.scss +16 -0
  189. package/lib/components/tooltip/tooltip.test.js +19 -0
  190. package/lib/components/visualization-list-menu-item/index.js +9 -0
  191. package/lib/components/visualization-list-menu-item/visualization-list-menu-item.js +53 -0
  192. package/lib/components/visualization-list-menu-item/visualization-list-menu-item.scss +21 -0
  193. package/lib/components/visualization-list-menu-item/visualization-list-menu-item.test.js +42 -0
  194. package/lib/components/visualization-save-menu-item/index.js +9 -0
  195. package/lib/components/visualization-save-menu-item/visualization-save-menu-item.js +101 -0
  196. package/lib/components/visualization-save-menu-item/visualization-save-menu-item.scss +37 -0
  197. package/lib/components/visualization-save-menu-item/visualization-save-menu-item.test.js +185 -0
  198. package/lib/components/visualizations/geojson/connector.js +29 -0
  199. package/lib/components/visualizations/geojson/geojson-visualization.js +151 -0
  200. package/lib/components/visualizations/geojson/geojson-visualization.scss +24 -0
  201. package/lib/components/visualizations/geojson/geojson-visualization.test.js +238 -0
  202. package/lib/components/visualizations/geojson/index.js +9 -0
  203. package/lib/pages/apikey-view/apiKey-view.test.js +204 -0
  204. package/lib/pages/apikey-view/apikey-view.js +166 -0
  205. package/lib/pages/apikey-view/apikey-view.scss +340 -0
  206. package/lib/pages/apikey-view/connector.js +31 -0
  207. package/lib/pages/apikey-view/index.js +9 -0
  208. package/lib/pages/chart-view/chart-view.js +92 -0
  209. package/lib/pages/chart-view/chart-view.scss +35 -0
  210. package/lib/pages/chart-view/chart-view.test.js +206 -0
  211. package/lib/pages/chart-view/connector.js +30 -0
  212. package/lib/pages/chart-view/index.js +9 -0
  213. package/lib/pages/dataset-detail-view/connector.js +38 -0
  214. package/lib/pages/dataset-detail-view/dataset-detail-view-connector.test.js +42 -0
  215. package/lib/pages/dataset-detail-view/dataset-detail-view.js +99 -0
  216. package/lib/pages/dataset-detail-view/dataset-detail-view.scss +190 -0
  217. package/lib/pages/dataset-detail-view/dataset-detail-view.test.js +305 -0
  218. package/lib/pages/dataset-detail-view/index.js +9 -0
  219. package/lib/pages/dataset-list-view/connector.js +30 -0
  220. package/lib/pages/dataset-list-view/dataset-list-view.js +132 -0
  221. package/lib/pages/dataset-list-view/dataset-list-view.scss +242 -0
  222. package/lib/pages/dataset-list-view/dataset-list-view.test.js +162 -0
  223. package/lib/pages/dataset-list-view/index.js +9 -0
  224. package/lib/pages/dataset-view/connector.js +55 -0
  225. package/lib/pages/dataset-view/dataset-view-connector.test.js +78 -0
  226. package/lib/pages/dataset-view/dataset-view.js +175 -0
  227. package/lib/pages/dataset-view/dataset-view.scss +95 -0
  228. package/lib/pages/dataset-view/dataset-view.test.js +157 -0
  229. package/lib/pages/dataset-view/index.js +9 -0
  230. package/lib/pages/login-view/connector.js +25 -0
  231. package/lib/pages/login-view/index.js +9 -0
  232. package/lib/pages/login-view/login-view.js +83 -0
  233. package/lib/pages/login-view/login-view.scss +62 -0
  234. package/lib/pages/login-view/login-view.test.js +23 -0
  235. package/lib/pages/oauth-error-view/index.js +9 -0
  236. package/lib/pages/oauth-error-view/oauth-error-view.js +25 -0
  237. package/lib/pages/oauth-error-view/oauth-error-view.scss +13 -0
  238. package/lib/pages/oauth-error-view/oauth-error-view.test.js +13 -0
  239. package/lib/pages/oauth-view/connector.js +22 -0
  240. package/lib/pages/oauth-view/index.js +9 -0
  241. package/lib/pages/oauth-view/oauth-view.js +124 -0
  242. package/lib/pages/oauth-view/oauth-view.scss +7 -0
  243. package/lib/pages/oauth-view/oauth-view.test.js +195 -0
  244. package/lib/pages/query-view/connector.js +40 -0
  245. package/lib/pages/query-view/index.js +9 -0
  246. package/lib/pages/query-view/query-view.js +80 -0
  247. package/lib/pages/query-view/query-view.scss +39 -0
  248. package/lib/pages/query-view/query-view.test.js +104 -0
  249. package/lib/pages/user-profile-view/connector.js +39 -0
  250. package/lib/pages/user-profile-view/index.js +9 -0
  251. package/lib/pages/user-profile-view/user-profile-view.js +154 -0
  252. package/lib/pages/user-profile-view/user-profile-view.scss +81 -0
  253. package/lib/pages/user-profile-view/user-profile-view.test.js +129 -0
  254. package/lib/pages/visualization-view/connector.js +52 -0
  255. package/lib/pages/visualization-view/index.js +9 -0
  256. package/lib/pages/visualization-view/visualization-view-connector.test.js +62 -0
  257. package/lib/pages/visualization-view/visualization-view.js +128 -0
  258. package/lib/pages/visualization-view/visualization-view.scss +115 -0
  259. package/lib/pages/visualization-view/visualization-view.test.js +188 -0
  260. package/lib/routes.js +18 -0
  261. package/lib/search-params/search-params-manager.js +171 -0
  262. package/lib/search-params/search-params-manager.test.js +490 -0
  263. package/lib/store/actions.js +428 -0
  264. package/lib/store/dataset-selectors.js +47 -0
  265. package/lib/store/dataset-selectors.test.js +154 -0
  266. package/lib/store/query-selectors.js +53 -0
  267. package/lib/store/query-selectors.test.js +153 -0
  268. package/lib/store/reducers/index.js +20 -0
  269. package/lib/store/reducers/query-reducer.js +52 -0
  270. package/lib/store/reducers/query-reducer.test.js +89 -0
  271. package/lib/store/reducers/reducers.js +196 -0
  272. package/lib/store/reducers/reducers.test.js +309 -0
  273. package/lib/store/reducers/visualization-reducer.js +167 -0
  274. package/lib/store/reducers/visualization-reducer.test.js +426 -0
  275. package/lib/store/sagas/api-invoker.js +79 -0
  276. package/lib/store/sagas/api-invoker.test.js +139 -0
  277. package/lib/store/sagas/apiKey-saga.js +81 -0
  278. package/lib/store/sagas/apiKey-saga.test.js +57 -0
  279. package/lib/store/sagas/dataset-download-saga.js +43 -0
  280. package/lib/store/sagas/dataset-list-saga.js +49 -0
  281. package/lib/store/sagas/dataset-list-saga.test.js +72 -0
  282. package/lib/store/sagas/dataset-preview-saga.js +44 -0
  283. package/lib/store/sagas/dataset-query-saga.js +43 -0
  284. package/lib/store/sagas/dataset-recommendation-saga.js +40 -0
  285. package/lib/store/sagas/dataset-saga.js +50 -0
  286. package/lib/store/sagas/freestyle-query-saga.js +127 -0
  287. package/lib/store/sagas/freestyle-query-saga.test.js +145 -0
  288. package/lib/store/sagas/index.js +44 -0
  289. package/lib/store/sagas/login-saga.js +85 -0
  290. package/lib/store/sagas/login-saga.test.js +84 -0
  291. package/lib/store/sagas/logout-saga.js +96 -0
  292. package/lib/store/sagas/oauth-saga.js +78 -0
  293. package/lib/store/sagas/oauth-saga.test.js +51 -0
  294. package/lib/store/sagas/process-login-saga.js +62 -0
  295. package/lib/store/sagas/process-login-saga.test.js +83 -0
  296. package/lib/store/sagas/visualization-saga.js +371 -0
  297. package/lib/store/sagas/visualization-saga.test.js +388 -0
  298. package/lib/store/selectors.js +83 -0
  299. package/lib/store/visualization-selectors.js +85 -0
  300. package/lib/store/visualization-selectors.test.js +195 -0
  301. package/lib/styles/mixins.scss +117 -0
  302. package/lib/styles/variables.scss +41 -0
  303. package/lib/utils/file-type-utils.js +18 -0
  304. package/lib/utils/file-type-utils.test.js +29 -0
  305. package/lib/utils/geojson-utils.js +70 -0
  306. package/lib/utils/geojson-utils.test.js +129 -0
  307. package/lib/utils/http-clients.js +218 -0
  308. package/lib/utils/http-clients.test.js +88 -0
  309. package/lib/utils/index.js +34 -0
  310. package/lib/utils/modified-date-string-builder.js +29 -0
  311. package/lib/utils/modified-date-string-builder.test.js +93 -0
  312. package/lib/utils/query-string-builder.js +38 -0
  313. package/lib/utils/query-string-builder.test.js +33 -0
  314. package/lib/utils/recommendation-utils.js +12 -0
  315. package/lib/utils/recommendation-utils.test.js +9 -0
  316. package/package.json +172 -0
@@ -0,0 +1,13 @@
1
+ @import '../../styles/mixins.scss';
2
+ @import '../../styles/variables.scss';
3
+
4
+ oauth-error-view {
5
+ padding-top: 5rem;
6
+ padding-bottom: 5rem;
7
+ padding-left: 4rem;
8
+ padding-right: 4rem;
9
+ text-align: center;
10
+ color: #666666;
11
+ display: block;
12
+
13
+ }
@@ -0,0 +1,13 @@
1
+ import { shallow } from 'enzyme'
2
+ import OAuthErrorView from './oauth-error-view'
3
+
4
+ describe('OAuth error view', () => {
5
+ it('displays the error description from the query string', () => {
6
+ const queryString = '?error_description=testing'
7
+ Object.defineProperty(window, 'location', { value: { search: queryString } })
8
+
9
+ const subject = shallow(<OAuthErrorView />)
10
+
11
+ expect(subject.find('.error-message').text()).toEqual('testing')
12
+ })
13
+ })
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactRedux = require("react-redux");
8
+ var _oauthView = _interopRequireDefault(require("./oauth-view"));
9
+ var _actions = require("../../store/actions");
10
+ var _auth0Wrapper = _interopRequireDefault(require("../../auth/auth0-wrapper"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ var mapDispatchToProps = function mapDispatchToProps(dispatch) {
13
+ return {
14
+ callLoggedIn: function callLoggedIn() {
15
+ return dispatch((0, _actions.oAuthCallLoggedIn)());
16
+ },
17
+ setGlobalErrorState: function setGlobalErrorState(isGlobalError, globalErrorMessage) {
18
+ return dispatch((0, _actions.setGlobalErrorState)(isGlobalError, globalErrorMessage));
19
+ }
20
+ };
21
+ };
22
+ var _default = exports.default = (0, _reactRedux.connect)(null, mapDispatchToProps)((0, _auth0Wrapper.default)(_oauthView.default));
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _connector = _interopRequireDefault(require("./connector"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ var _default = exports.default = _connector.default;
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = require("react");
9
+ var _reactRouter = require("react-router");
10
+ require("./oauth-view.scss");
11
+ var _qs = _interopRequireDefault(require("qs"));
12
+ var _loadingElement = _interopRequireDefault(require("../../components/generic-elements/loading-element"));
13
+ var _propTypes = _interopRequireDefault(require("prop-types"));
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ function _regeneratorRuntime() { "use strict"; var r = _regenerator(), e = r.m(_regeneratorRuntime), t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor; function n(r) { var e = "function" == typeof r && r.constructor; return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name)); } var o = { throw: 1, return: 2, break: 3, continue: 3 }; function a(r) { var e, t; return function (n) { e || (e = { stop: function stop() { return t(n.a, 2); }, catch: function _catch() { return n.v; }, abrupt: function abrupt(r, e) { return t(n.a, o[r], e); }, delegateYield: function delegateYield(r, o, a) { return e.resultName = o, t(n.d, _regeneratorValues(r), a); }, finish: function finish(r) { return t(n.f, r); } }, t = function t(r, _t, o) { n.p = e.prev, n.n = e.next; try { return r(_t, o); } finally { e.next = n.n; } }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n; try { return r.call(this, e); } finally { n.p = e.prev, n.n = e.next; } }; } return (_regeneratorRuntime = function _regeneratorRuntime() { return { wrap: function wrap(e, t, n, o) { return r.w(a(e), t, n, o && o.reverse()); }, isGeneratorFunction: n, mark: r.m, awrap: function awrap(r, e) { return new _OverloadYield(r, e); }, AsyncIterator: _regeneratorAsyncIterator, async: function async(r, e, t, o, u) { return (n(e) ? _regeneratorAsyncGen : _regeneratorAsync)(a(r), e, t, o, u); }, keys: _regeneratorKeys, values: _regeneratorValues }; })(); }
16
+ function _regeneratorValues(e) { if (null != e) { var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], r = 0; if (t) return t.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) return { next: function next() { return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; } }; } throw new TypeError(_typeof(e) + " is not iterable"); }
17
+ function _regeneratorKeys(e) { var n = Object(e), r = []; for (var t in n) r.unshift(t); return function e() { for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; return e.done = !0, e; }; }
18
+ function _regeneratorAsync(n, e, r, t, o) { var a = _regeneratorAsyncGen(n, e, r, t, o); return a.next().then(function (n) { return n.done ? n.value : a.next(); }); }
19
+ function _regeneratorAsyncGen(r, e, t, o, n) { return new _regeneratorAsyncIterator(_regenerator().w(r, e, t, o), n || Promise); }
20
+ function _regeneratorAsyncIterator(t, e) { function n(r, o, i, f) { try { var c = t[r](o), u = c.value; return u instanceof _OverloadYield ? e.resolve(u.v).then(function (t) { n("next", t, i, f); }, function (t) { n("throw", t, i, f); }) : e.resolve(u).then(function (t) { c.value = t, i(c); }, function (t) { return n("throw", t, i, f); }); } catch (t) { f(t); } } var r; this.next || (_regeneratorDefine2(_regeneratorAsyncIterator.prototype), _regeneratorDefine2(_regeneratorAsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () { return this; })), _regeneratorDefine2(this, "_invoke", function (t, o, i) { function f() { return new e(function (e, r) { n(t, i, e, r); }); } return r = r ? r.then(f, f) : f(); }, !0); }
21
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
22
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
23
+ function _OverloadYield(e, d) { this.v = e, this.k = d; }
24
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
25
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
26
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
27
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
28
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
29
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
30
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
31
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
32
+ var hasAuthorizationCodeParameter = function hasAuthorizationCodeParameter(search) {
33
+ return _qs.default.parse(search, {
34
+ ignoreQueryPrefix: true
35
+ }).hasOwnProperty('code');
36
+ };
37
+ var hasError = function hasError(search) {
38
+ return _qs.default.parse(search, {
39
+ ignoreQueryPrefix: true
40
+ }).hasOwnProperty('error');
41
+ };
42
+ var getError = function getError(search) {
43
+ return _qs.default.parse(search, {
44
+ ignoreQueryPrefix: true
45
+ }).error_description;
46
+ };
47
+ var OAuthView = function OAuthView(props) {
48
+ var callLoggedIn = props.callLoggedIn,
49
+ search = props.history.location.search,
50
+ _props$auth = props.auth,
51
+ handleRedirectCallback = _props$auth.handleRedirectCallback,
52
+ isLoading = _props$auth.isLoading,
53
+ setGlobalErrorState = props.setGlobalErrorState;
54
+ var _useState = (0, _react.useState)(false),
55
+ _useState2 = _slicedToArray(_useState, 2),
56
+ handled = _useState2[0],
57
+ setHandled = _useState2[1];
58
+ var _useState3 = (0, _react.useState)({
59
+ path: '/',
60
+ search: ''
61
+ }),
62
+ _useState4 = _slicedToArray(_useState3, 2),
63
+ callbackState = _useState4[0],
64
+ setCallbackState = _useState4[1];
65
+ (0, _react.useEffect)(function () {
66
+ if (hasError(search)) {
67
+ setGlobalErrorState(true, getError(search));
68
+ }
69
+ }, []);
70
+ (0, _react.useEffect)(function () {
71
+ var onMount = /*#__PURE__*/function () {
72
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
73
+ var stateFromCallback;
74
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
75
+ while (1) switch (_context.prev = _context.next) {
76
+ case 0:
77
+ if (!hasAuthorizationCodeParameter(search)) {
78
+ _context.next = 12;
79
+ break;
80
+ }
81
+ _context.prev = 1;
82
+ _context.next = 4;
83
+ return handleRedirectCallback();
84
+ case 4:
85
+ stateFromCallback = _context.sent;
86
+ setCallbackState(stateFromCallback.appState);
87
+ callLoggedIn();
88
+ _context.next = 12;
89
+ break;
90
+ case 9:
91
+ _context.prev = 9;
92
+ _context.t0 = _context["catch"](1);
93
+ setGlobalErrorState(true, 'Login was not successful. Please try again.');
94
+ case 12:
95
+ setHandled(true);
96
+ case 13:
97
+ case "end":
98
+ return _context.stop();
99
+ }
100
+ }, _callee, null, [[1, 9]]);
101
+ }));
102
+ return function onMount() {
103
+ return _ref.apply(this, arguments);
104
+ };
105
+ }();
106
+ onMount();
107
+ }, []);
108
+ return /*#__PURE__*/React.createElement("oauth-view", null, isLoading || !handled ? /*#__PURE__*/React.createElement(_loadingElement.default, null) : /*#__PURE__*/React.createElement(_reactRouter.Redirect, {
109
+ to: {
110
+ pathname: callbackState.path,
111
+ search: callbackState.search
112
+ }
113
+ }));
114
+ };
115
+ OAuthView.propTypes = {
116
+ callLoggedIn: _propTypes.default.func.isRequired,
117
+ history: _propTypes.default.object.isRequired,
118
+ auth: _propTypes.default.shape({
119
+ handleRedirectCallback: _propTypes.default.func.isRequired,
120
+ isLoading: _propTypes.default.bool
121
+ }).isRequired,
122
+ setGlobalErrorState: _propTypes.default.func
123
+ };
124
+ var _default = exports.default = OAuthView;
@@ -0,0 +1,7 @@
1
+ @import '../../styles/mixins.scss';
2
+
3
+ oauth-view {
4
+ loading-element {
5
+ @include default-loading-icon();
6
+ }
7
+ }
@@ -0,0 +1,195 @@
1
+ import { mount } from 'enzyme'
2
+ import { act } from 'react-dom/test-utils'
3
+ import OAuthView from './oauth-view'
4
+ import { Router } from 'react-router'
5
+ import { createMemoryHistory } from 'history'
6
+ import LoadingElement from '../../components/generic-elements/loading-element'
7
+
8
+ describe('OAuth View', () => {
9
+ let subject
10
+ let callLoggedInHandler, handleRedirectCallback, setGlobalErrorStateHandler
11
+ let history
12
+
13
+ beforeEach(() => {
14
+ callLoggedInHandler = jest.fn()
15
+ handleRedirectCallback = jest.fn(() => Promise.resolve({ appState: { path: '/test', search: '?blah' } }))
16
+ history = createMemoryHistory(),
17
+ setGlobalErrorStateHandler = jest.fn()
18
+ })
19
+
20
+ describe('with an auth code in the URL', () => {
21
+ beforeEach(() => {
22
+ history.replace('/oauth?code=someauth0tokenstring')
23
+ subject = createSubject({
24
+ callLoggedIn: callLoggedInHandler,
25
+ history,
26
+ auth: { handleRedirectCallback },
27
+ setGlobalErrorState: setGlobalErrorStateHandler
28
+ })
29
+ })
30
+
31
+ it('calls back to handle the redirect', done => {
32
+ setTimeout(() => {
33
+ expect(handleRedirectCallback).toHaveBeenCalled()
34
+ done()
35
+ })
36
+ })
37
+
38
+ it('calls the logged-in endpoint', done => {
39
+ setTimeout(() => {
40
+ expect(callLoggedInHandler).toHaveBeenCalled()
41
+ done()
42
+ })
43
+ })
44
+
45
+ it('redirects back to page last visited', done => {
46
+ setTimeout(() => {
47
+ expect(history.location.pathname).toBe('/test')
48
+ expect(history.location.search).toBe('?blah')
49
+ done()
50
+ })
51
+ })
52
+ })
53
+
54
+ describe('without an auth code in the url', () => {
55
+ beforeEach(() => {
56
+ history.replace('/oauth')
57
+ subject = createSubject({
58
+ callLoggedIn: callLoggedInHandler,
59
+ history,
60
+ auth: { handleRedirectCallback }
61
+ })
62
+ })
63
+
64
+ it('does not call back to handle the redirect', done => {
65
+ setTimeout(() => {
66
+ expect(handleRedirectCallback).not.toHaveBeenCalled()
67
+ done()
68
+ })
69
+ })
70
+
71
+ it('does not call the logged-in endpoint', done => {
72
+ setTimeout(() => {
73
+ expect(callLoggedInHandler).not.toHaveBeenCalled()
74
+ done()
75
+ })
76
+ })
77
+ })
78
+
79
+ describe('with an error as a return', () => {
80
+ beforeEach(() => {
81
+ history.replace('/oauth?error=unauthorized&error_description=blah')
82
+ subject = createSubject({
83
+ callLoggedIn: callLoggedInHandler,
84
+ history,
85
+ auth: { handleRedirectCallback: handleRedirectCallback, isLoading: false },
86
+ setGlobalErrorState: setGlobalErrorStateHandler
87
+ })
88
+ })
89
+
90
+ it('alerts user they must validate their email', () => {
91
+ expect(setGlobalErrorStateHandler).toHaveBeenCalledWith(true, 'blah')
92
+ expect(history.location.pathname).toBe('/')
93
+ })
94
+
95
+ it('does not call the logged-in endpoint', done => {
96
+ setTimeout(() => {
97
+ expect(callLoggedInHandler).not.toHaveBeenCalled()
98
+ done()
99
+ })
100
+ })
101
+ })
102
+
103
+ describe('with an auth code in the URL but failed call to handle redirect', () => {
104
+ beforeEach(() => {
105
+ history.replace('/oauth?code=someauth0tokenstring')
106
+ subject = createSubject({
107
+ callLoggedIn: callLoggedInHandler,
108
+ history,
109
+ auth: { handleRedirectCallback: jest.fn(() => Promise.reject()), isLoading: false },
110
+ setGlobalErrorState: setGlobalErrorStateHandler
111
+ })
112
+ })
113
+
114
+ it('does not call the logged-in endpoint', done => {
115
+ setTimeout(() => {
116
+ expect(callLoggedInHandler).not.toHaveBeenCalled()
117
+ done()
118
+ })
119
+ })
120
+
121
+ it('alerts user there was an error', done => {
122
+ setTimeout(() => {
123
+ expect(setGlobalErrorStateHandler).toHaveBeenCalledWith(true, 'Login was not successful. Please try again.')
124
+ expect(history.location.pathname).toBe('/')
125
+ done()
126
+ })
127
+ })
128
+ })
129
+
130
+ describe('when loading', () => {
131
+ beforeEach(() => {
132
+ history.replace('/oauth')
133
+ subject = createSubject({
134
+ history,
135
+ auth: { handleRedirectCallback: jest.fn(() => Promise.reject()), isLoading: true }
136
+ })
137
+ })
138
+
139
+ it('displays the loading element', () => {
140
+ expect(subject.find(LoadingElement).length).toBe(1)
141
+ })
142
+
143
+ it('does not redirect', done => {
144
+ setTimeout(() => {
145
+ expect(history.location.pathname).not.toBe('/')
146
+ done()
147
+ })
148
+ })
149
+ })
150
+
151
+ describe('when not loading', () => {
152
+ beforeEach(() => {
153
+ history.replace('/oauth')
154
+ subject = createSubject({
155
+ history,
156
+ auth: { handleRedirectCallback: jest.fn(() => Promise.reject()), isLoading: false }
157
+ })
158
+ })
159
+
160
+ it('redirects to root', done => {
161
+ setTimeout(() => {
162
+ expect(history.location.pathname).toBe('/')
163
+ done()
164
+ })
165
+ })
166
+ })
167
+ })
168
+
169
+ const createSubject = (props = {}) => {
170
+ const authDefaultProps = { handleRedirectCallback: jest.fn(() => Promise.resolve()) }
171
+ const defaultProps = {
172
+ callLoggedIn: jest.fn(),
173
+ history: createMemoryHistory(),
174
+ auth: authDefaultProps,
175
+ setGlobalErrorState: jest.fn()
176
+ }
177
+
178
+ const propsWithDefaults = Object.assign({}, defaultProps, props)
179
+
180
+ let subject
181
+ act(() => {
182
+ subject = mount(
183
+ <Router history={props.history}>
184
+ <OAuthView
185
+ callLoggedIn={propsWithDefaults.callLoggedIn}
186
+ history={propsWithDefaults.history}
187
+ auth={propsWithDefaults.auth}
188
+ setGlobalErrorState={propsWithDefaults.setGlobalErrorState}
189
+ />
190
+ </Router>
191
+ )
192
+ })
193
+
194
+ return subject
195
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactRedux = require("react-redux");
8
+ var _queryView = _interopRequireDefault(require("./query-view"));
9
+ var _actions = require("../../store/actions");
10
+ var _querySelectors = require("../../store/query-selectors");
11
+ var _visualizationSelectors = require("../../store/visualization-selectors");
12
+ var _selectors = require("../../store/selectors");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ var mapStateToProps = function mapStateToProps(state) {
15
+ return {
16
+ dataSources: (0, _querySelectors.getVisualizationDataSources)(state),
17
+ recommendations: (0, _selectors.getDatasetRecommendations)(state),
18
+ usedDatasets: (0, _visualizationSelectors.visualizationUsedDatasets)(state),
19
+ datasetReferences: (0, _selectors.getDataSetReferences)(state),
20
+ isQueryLoading: (0, _querySelectors.getQueryIsLoading)(state),
21
+ freestyleQueryText: (0, _querySelectors.getFreestyleQueryText)(state),
22
+ queryData: (0, _querySelectors.getQueryData)(state),
23
+ queryFailureMessage: (0, _querySelectors.getQueryFailureMessage)(state),
24
+ isQueryDataAvailable: (0, _querySelectors.isQueryDataAvailable)(state)
25
+ };
26
+ };
27
+ var mapDispatchToProps = function mapDispatchToProps(dispatch) {
28
+ return {
29
+ executeQuery: function executeQuery(queryText) {
30
+ return dispatch((0, _actions.executeFreestyleQuery)(queryText));
31
+ },
32
+ cancelQuery: function cancelQuery() {
33
+ return dispatch((0, _actions.cancelFreestyleQuery)());
34
+ },
35
+ setQueryText: function setQueryText(queryText) {
36
+ return dispatch((0, _actions.setQueryText)(queryText));
37
+ }
38
+ };
39
+ };
40
+ var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_queryView.default);
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _connector = _interopRequireDefault(require("./connector"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ var _default = exports.default = _connector.default;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ require("./query-view.scss");
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _queryForm = _interopRequireDefault(require("../../components/query-form"));
11
+ var _dataView = _interopRequireDefault(require("../../components/data-view"));
12
+ var _loadingElement = _interopRequireDefault(require("../../components/generic-elements/loading-element"));
13
+ var _lodash = _interopRequireDefault(require("lodash"));
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
16
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
17
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
18
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
19
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
20
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
21
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
22
+ var QueryView = function QueryView(props) {
23
+ var dataSources = props.dataSources,
24
+ recommendations = props.recommendations,
25
+ usedDatasets = props.usedDatasets,
26
+ datasetReferences = props.datasetReferences,
27
+ isQueryLoading = props.isQueryLoading,
28
+ isQueryDataAvailable = props.isQueryDataAvailable,
29
+ freestyleQueryText = props.freestyleQueryText,
30
+ queryData = props.queryData,
31
+ queryFailureMessage = props.queryFailureMessage,
32
+ shouldAutoExecuteQuery = props.shouldAutoExecuteQuery,
33
+ executeQuery = props.executeQuery,
34
+ cancelQuery = props.cancelQuery,
35
+ setQueryText = props.setQueryText;
36
+ var _useState = (0, _react.useState)(0),
37
+ _useState2 = _slicedToArray(_useState, 2),
38
+ page = _useState2[0],
39
+ setPage = _useState2[1];
40
+ var onNextPageClicked = function onNextPageClicked(pageNumber) {
41
+ setPage(pageNumber);
42
+ };
43
+ _react.default.useEffect(function () {
44
+ if (shouldAutoExecuteQuery) {
45
+ executeQuery(freestyleQueryText);
46
+ }
47
+ }, [shouldAutoExecuteQuery]);
48
+ _react.default.useEffect(function () {
49
+ setPage(0);
50
+ }, [queryData]);
51
+ var numRecords = queryData ? queryData.length + ' records returned' : '';
52
+ if (isQueryLoading && queryData.length === 0) {
53
+ return /*#__PURE__*/_react.default.createElement("query-view", null, /*#__PURE__*/_react.default.createElement(_loadingElement.default, null));
54
+ }
55
+ return /*#__PURE__*/_react.default.createElement("query-view", {
56
+ "data-testid": "query-view"
57
+ }, /*#__PURE__*/_react.default.createElement(_queryForm.default, {
58
+ recommendations: recommendations,
59
+ usedDatasets: usedDatasets,
60
+ datasetReferences: datasetReferences,
61
+ queryFailureMessage: queryFailureMessage,
62
+ isQueryLoading: isQueryLoading,
63
+ isQueryDataAvailable: isQueryDataAvailable,
64
+ queryText: freestyleQueryText,
65
+ queryData: queryData,
66
+ executeQuery: executeQuery,
67
+ cancelQuery: cancelQuery,
68
+ setQueryText: setQueryText
69
+ }), /*#__PURE__*/_react.default.createElement("div", {
70
+ id: "dataset-preview-table"
71
+ }, /*#__PURE__*/_react.default.createElement("div", {
72
+ id: "numRecords"
73
+ }, numRecords), /*#__PURE__*/_react.default.createElement(_dataView.default, {
74
+ data: queryData,
75
+ page: page,
76
+ columns: Object.keys(dataSources),
77
+ onNextPageClicked: onNextPageClicked
78
+ })));
79
+ };
80
+ var _default = exports.default = QueryView;
@@ -0,0 +1,39 @@
1
+ @import "../../styles/mixins.scss";
2
+ @import "../../styles/variables.scss";
3
+
4
+ query-view {
5
+ .button {
6
+ @include button();
7
+ padding: 1rem;
8
+ background-color: $light-blue;
9
+ color: white;
10
+ letter-spacing: 0.05rem;
11
+ margin: 1rem;
12
+ min-width: 9rem;
13
+ text-align: center;
14
+ font-weight: bold;
15
+ }
16
+
17
+ #data-view {
18
+ border: 1px solid $light-grey;
19
+ }
20
+
21
+ #dataset-preview-table {
22
+ color: $almost-black;
23
+ padding: 1rem;
24
+
25
+ .table-header {
26
+ background-color: $header-grey;
27
+ text-align: left;
28
+ font-weight: 800;
29
+ }
30
+ }
31
+
32
+ .success-message {
33
+ color: #158655;
34
+ }
35
+
36
+ loading-element {
37
+ @include default-loading-icon();
38
+ }
39
+ }