@journeyapps-labs/reactor-mod-data-browser 3.0.2 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/@types/actions/connections/SetConnectionColorAction.d.ts +11 -0
  3. package/dist/@types/actions/saved-queries/OpenSavedQueryAction.d.ts +10 -0
  4. package/dist/@types/actions/saved-queries/RemoveSavedQueryAction.d.ts +9 -0
  5. package/dist/@types/core/AbstractConnection.d.ts +2 -0
  6. package/dist/@types/core/SchemaModelDefinition.d.ts +5 -0
  7. package/dist/@types/core/connection-colors.d.ts +10 -0
  8. package/dist/@types/core/query/AbstractQuery.d.ts +1 -0
  9. package/dist/@types/core/query/StandardModelFields.d.ts +5 -0
  10. package/dist/@types/core/query/filters.d.ts +46 -5
  11. package/dist/@types/core/query/query-changed/ChangedModelQuery.d.ts +1 -0
  12. package/dist/@types/core/query/query-simple/SimplePage.d.ts +2 -0
  13. package/dist/@types/core/query/query-simple/SimpleQuery.d.ts +14 -4
  14. package/dist/@types/core/query/query-simple/SimpleQueryColumns.d.ts +12 -0
  15. package/dist/@types/core/query/query-simple/SimpleQueryFilterState.d.ts +37 -0
  16. package/dist/@types/core/query/query-simple/SimpleQueryPlanner.d.ts +4 -0
  17. package/dist/@types/core/query/query-simple/SimpleQuerySortState.d.ts +23 -0
  18. package/dist/@types/core/query/query-simple/SimpleQueryTypes.d.ts +24 -0
  19. package/dist/@types/core/query/widgets/ColumnDisplayWidget.d.ts +1 -0
  20. package/dist/@types/core/query/widgets/PeekRelationshipButton.d.ts +7 -0
  21. package/dist/@types/core/query/widgets/SmartColumnWidget.d.ts +3 -0
  22. package/dist/@types/core/query/widgets/SmartFilterWidget.d.ts +6 -0
  23. package/dist/@types/entities/ConnectionEntityDefinition.d.ts +2 -0
  24. package/dist/@types/entities/SavedQueryEntityDefinition.d.ts +8 -0
  25. package/dist/@types/entities.d.ts +2 -1
  26. package/dist/@types/forms/APIConnectionForm.d.ts +1 -0
  27. package/dist/@types/forms/TypeEngine.d.ts +3 -21
  28. package/dist/@types/forms/types/attachment-handler.d.ts +2 -0
  29. package/dist/@types/forms/types/boolean-handler.d.ts +2 -0
  30. package/dist/@types/forms/types/date-handler.d.ts +2 -0
  31. package/dist/@types/forms/types/filters/ClearableFilterFormDialogDirective.d.ts +10 -0
  32. package/dist/@types/forms/types/filters/ConditionalFilterForm.d.ts +23 -0
  33. package/dist/@types/forms/types/image-handler.d.ts +2 -0
  34. package/dist/@types/forms/types/location-handler.d.ts +2 -0
  35. package/dist/@types/forms/types/multiple-choice-handler.d.ts +2 -0
  36. package/dist/@types/forms/types/multiple-choice-integer-handler.d.ts +2 -0
  37. package/dist/@types/forms/types/number-handler.d.ts +2 -0
  38. package/dist/@types/forms/types/shared/type-handler.d.ts +37 -0
  39. package/dist/@types/forms/types/shared/ui.d.ts +768 -0
  40. package/dist/@types/forms/types/single-choice-handler.d.ts +2 -0
  41. package/dist/@types/forms/types/single-choice-integer-handler.d.ts +2 -0
  42. package/dist/@types/forms/types/text-handler.d.ts +3 -0
  43. package/dist/@types/index.d.ts +1 -0
  44. package/dist/@types/panels/_shared/SharedConnectionPanelFactory.d.ts +19 -0
  45. package/dist/@types/panels/_shared/SharedModelPanelFactory.d.ts +5 -2
  46. package/dist/@types/panels/query/QueryPanelFactory.d.ts +7 -2
  47. package/dist/@types/panels/query/TableControlsWidget.d.ts +2 -0
  48. package/dist/@types/panels/query/table-controls/ChangesControlsWidget.d.ts +8 -0
  49. package/dist/@types/panels/query/table-controls/FilterControlsWidget.d.ts +7 -0
  50. package/dist/@types/panels/query/table-controls/PageControlsWidget.d.ts +9 -0
  51. package/dist/@types/panels/query/table-controls/QueryControlsWidget.d.ts +11 -0
  52. package/dist/@types/panels/query/table-controls/SortChipWidget.d.ts +10 -0
  53. package/dist/@types/panels/query/table-controls/SortControlsWidget.d.ts +7 -0
  54. package/dist/@types/preferences/QueryControlPreferences.d.ts +7 -0
  55. package/dist/@types/stores/SavedQueryStore.d.ts +34 -0
  56. package/dist/@types/widgets/EmptyValueWidget.d.ts +7 -0
  57. package/dist/DataBrowserModule.js +21 -7
  58. package/dist/DataBrowserModule.js.map +1 -1
  59. package/dist/actions/connections/AddConnectionAction.js +2 -2
  60. package/dist/actions/connections/AddConnectionAction.js.map +1 -1
  61. package/dist/actions/connections/RemoveConnectionAction.js +2 -2
  62. package/dist/actions/connections/RemoveConnectionAction.js.map +1 -1
  63. package/dist/actions/connections/SetConnectionColorAction.js +63 -0
  64. package/dist/actions/connections/SetConnectionColorAction.js.map +1 -0
  65. package/dist/actions/saved-queries/OpenSavedQueryAction.js +58 -0
  66. package/dist/actions/saved-queries/OpenSavedQueryAction.js.map +1 -0
  67. package/dist/actions/saved-queries/RemoveSavedQueryAction.js +43 -0
  68. package/dist/actions/saved-queries/RemoveSavedQueryAction.js.map +1 -0
  69. package/dist/actions/schema-definitions/CreateModelAction.js +2 -2
  70. package/dist/actions/schema-definitions/CreateModelAction.js.map +1 -1
  71. package/dist/actions/schema-definitions/QuerySchemaModelAction.js +2 -2
  72. package/dist/actions/schema-definitions/QuerySchemaModelAction.js.map +1 -1
  73. package/dist/actions/schema-model/EditSchemaModelAction.js +2 -2
  74. package/dist/actions/schema-model/EditSchemaModelAction.js.map +1 -1
  75. package/dist/actions/schema-model/ViewSchemaModelAsJsonAction.js +2 -2
  76. package/dist/actions/schema-model/ViewSchemaModelAsJsonAction.js.map +1 -1
  77. package/dist/core/AbstractConnection.js +116 -90
  78. package/dist/core/AbstractConnection.js.map +1 -1
  79. package/dist/core/SchemaModelDefinition.js +14 -0
  80. package/dist/core/SchemaModelDefinition.js.map +1 -1
  81. package/dist/core/connection-colors.js +36 -0
  82. package/dist/core/connection-colors.js.map +1 -0
  83. package/dist/core/query/AbstractQuery.js.map +1 -1
  84. package/dist/core/query/StandardModelFields.js +10 -0
  85. package/dist/core/query/StandardModelFields.js.map +1 -0
  86. package/dist/core/query/filters.js +86 -4
  87. package/dist/core/query/filters.js.map +1 -1
  88. package/dist/core/query/query-changed/ChangedModelQuery.js +7 -0
  89. package/dist/core/query/query-changed/ChangedModelQuery.js.map +1 -1
  90. package/dist/core/query/query-simple/SimplePage.js +2 -4
  91. package/dist/core/query/query-simple/SimplePage.js.map +1 -1
  92. package/dist/core/query/query-simple/SimpleQuery.js +71 -69
  93. package/dist/core/query/query-simple/SimpleQuery.js.map +1 -1
  94. package/dist/core/query/query-simple/SimpleQueryColumns.js +88 -0
  95. package/dist/core/query/query-simple/SimpleQueryColumns.js.map +1 -0
  96. package/dist/core/query/query-simple/SimpleQueryFilterState.js +136 -0
  97. package/dist/core/query/query-simple/SimpleQueryFilterState.js.map +1 -0
  98. package/dist/core/query/query-simple/SimpleQueryPlanner.js +14 -0
  99. package/dist/core/query/query-simple/SimpleQueryPlanner.js.map +1 -0
  100. package/dist/core/query/query-simple/SimpleQuerySortState.js +140 -0
  101. package/dist/core/query/query-simple/SimpleQuerySortState.js.map +1 -0
  102. package/dist/core/query/query-simple/SimpleQueryTypes.js +44 -0
  103. package/dist/core/query/query-simple/SimpleQueryTypes.js.map +1 -0
  104. package/dist/core/query/widgets/BelongsToDisplayWidget.js +14 -7
  105. package/dist/core/query/widgets/BelongsToDisplayWidget.js.map +1 -1
  106. package/dist/core/query/widgets/CellDisplayWidget.js +5 -9
  107. package/dist/core/query/widgets/CellDisplayWidget.js.map +1 -1
  108. package/dist/core/query/widgets/ColumnDisplayWidget.js +13 -12
  109. package/dist/core/query/widgets/ColumnDisplayWidget.js.map +1 -1
  110. package/dist/core/query/widgets/PeekRelationshipButton.js +128 -0
  111. package/dist/core/query/widgets/PeekRelationshipButton.js.map +1 -0
  112. package/dist/core/query/widgets/SmartColumnWidget.js +18 -3
  113. package/dist/core/query/widgets/SmartColumnWidget.js.map +1 -1
  114. package/dist/core/query/widgets/SmartFilterWidget.js +88 -51
  115. package/dist/core/query/widgets/SmartFilterWidget.js.map +1 -1
  116. package/dist/entities/ConnectionEntityDefinition.js +33 -7
  117. package/dist/entities/ConnectionEntityDefinition.js.map +1 -1
  118. package/dist/entities/SavedQueryEntityDefinition.js +68 -0
  119. package/dist/entities/SavedQueryEntityDefinition.js.map +1 -0
  120. package/dist/entities/SchemaModelDefinitionEntityDefinition.js +9 -1
  121. package/dist/entities/SchemaModelDefinitionEntityDefinition.js.map +1 -1
  122. package/dist/entities.js +1 -0
  123. package/dist/entities.js.map +1 -1
  124. package/dist/forms/APIConnectionForm.js +11 -2
  125. package/dist/forms/APIConnectionForm.js.map +1 -1
  126. package/dist/forms/TypeEngine.js +30 -306
  127. package/dist/forms/TypeEngine.js.map +1 -1
  128. package/dist/forms/types/attachment-handler.js +29 -0
  129. package/dist/forms/types/attachment-handler.js.map +1 -0
  130. package/dist/forms/types/boolean-handler.js +22 -0
  131. package/dist/forms/types/boolean-handler.js.map +1 -0
  132. package/dist/forms/types/date-handler.js +97 -0
  133. package/dist/forms/types/date-handler.js.map +1 -0
  134. package/dist/forms/types/filters/ClearableFilterFormDialogDirective.js +25 -0
  135. package/dist/forms/types/filters/ClearableFilterFormDialogDirective.js.map +1 -0
  136. package/dist/forms/types/filters/ConditionalFilterForm.js +87 -0
  137. package/dist/forms/types/filters/ConditionalFilterForm.js.map +1 -0
  138. package/dist/forms/types/image-handler.js +82 -0
  139. package/dist/forms/types/image-handler.js.map +1 -0
  140. package/dist/forms/types/location-handler.js +49 -0
  141. package/dist/forms/types/location-handler.js.map +1 -0
  142. package/dist/forms/types/multiple-choice-handler.js +37 -0
  143. package/dist/forms/types/multiple-choice-handler.js.map +1 -0
  144. package/dist/forms/types/multiple-choice-integer-handler.js +37 -0
  145. package/dist/forms/types/multiple-choice-integer-handler.js.map +1 -0
  146. package/dist/forms/types/number-handler.js +79 -0
  147. package/dist/forms/types/number-handler.js.map +1 -0
  148. package/dist/forms/types/shared/type-handler.js +2 -0
  149. package/dist/forms/types/shared/type-handler.js.map +1 -0
  150. package/dist/forms/types/shared/ui.js +33 -0
  151. package/dist/forms/types/shared/ui.js.map +1 -0
  152. package/dist/forms/types/single-choice-handler.js +41 -0
  153. package/dist/forms/types/single-choice-handler.js.map +1 -0
  154. package/dist/forms/types/single-choice-integer-handler.js +41 -0
  155. package/dist/forms/types/single-choice-integer-handler.js.map +1 -0
  156. package/dist/forms/types/text-handler.js +170 -0
  157. package/dist/forms/types/text-handler.js.map +1 -0
  158. package/dist/index.js +1 -0
  159. package/dist/index.js.map +1 -1
  160. package/dist/panels/_shared/SharedConnectionPanelFactory.js +48 -0
  161. package/dist/panels/_shared/SharedConnectionPanelFactory.js.map +1 -0
  162. package/dist/panels/_shared/SharedModelPanelFactory.js +7 -2
  163. package/dist/panels/_shared/SharedModelPanelFactory.js.map +1 -1
  164. package/dist/panels/query/PageResultsWidget.js +28 -11
  165. package/dist/panels/query/PageResultsWidget.js.map +1 -1
  166. package/dist/panels/query/QueryPanelFactory.js +20 -2
  167. package/dist/panels/query/QueryPanelFactory.js.map +1 -1
  168. package/dist/panels/query/QueryPanelWidget.js +55 -9
  169. package/dist/panels/query/QueryPanelWidget.js.map +1 -1
  170. package/dist/panels/query/TableControlsWidget.js +29 -67
  171. package/dist/panels/query/TableControlsWidget.js.map +1 -1
  172. package/dist/panels/query/table-controls/ChangesControlsWidget.js +36 -0
  173. package/dist/panels/query/table-controls/ChangesControlsWidget.js.map +1 -0
  174. package/dist/panels/query/table-controls/FilterControlsWidget.js +106 -0
  175. package/dist/panels/query/table-controls/FilterControlsWidget.js.map +1 -0
  176. package/dist/panels/query/table-controls/PageControlsWidget.js +65 -0
  177. package/dist/panels/query/table-controls/PageControlsWidget.js.map +1 -0
  178. package/dist/panels/query/table-controls/QueryControlsWidget.js +85 -0
  179. package/dist/panels/query/table-controls/QueryControlsWidget.js.map +1 -0
  180. package/dist/panels/query/table-controls/SortChipWidget.js +75 -0
  181. package/dist/panels/query/table-controls/SortChipWidget.js.map +1 -0
  182. package/dist/panels/query/table-controls/SortControlsWidget.js +65 -0
  183. package/dist/panels/query/table-controls/SortControlsWidget.js.map +1 -0
  184. package/dist/preferences/QueryControlPreferences.js +28 -0
  185. package/dist/preferences/QueryControlPreferences.js.map +1 -0
  186. package/dist/stores/ConnectionStore.js +2 -0
  187. package/dist/stores/ConnectionStore.js.map +1 -1
  188. package/dist/stores/SavedQueryStore.js +131 -0
  189. package/dist/stores/SavedQueryStore.js.map +1 -0
  190. package/dist/tsconfig.tsbuildinfo +1 -1
  191. package/dist/widgets/EmptyValueWidget.js +15 -0
  192. package/dist/widgets/EmptyValueWidget.js.map +1 -0
  193. package/dist-module/bundle.js +181 -51
  194. package/dist-module/bundle.js.map +1 -1
  195. package/package.json +11 -11
  196. package/src/DataBrowserModule.ts +21 -7
  197. package/src/actions/connections/AddConnectionAction.tsx +2 -2
  198. package/src/actions/connections/RemoveConnectionAction.tsx +2 -2
  199. package/src/actions/connections/SetConnectionColorAction.ts +52 -0
  200. package/src/actions/saved-queries/OpenSavedQueryAction.ts +43 -0
  201. package/src/actions/saved-queries/RemoveSavedQueryAction.ts +27 -0
  202. package/src/actions/schema-definitions/CreateModelAction.ts +9 -2
  203. package/src/actions/schema-definitions/QuerySchemaModelAction.ts +9 -2
  204. package/src/actions/schema-model/EditSchemaModelAction.ts +9 -2
  205. package/src/actions/schema-model/ViewSchemaModelAsJsonAction.ts +9 -2
  206. package/src/core/AbstractConnection.ts +7 -1
  207. package/src/core/SchemaModelDefinition.ts +16 -0
  208. package/src/core/connection-colors.ts +49 -0
  209. package/src/core/query/AbstractQuery.ts +2 -0
  210. package/src/core/query/StandardModelFields.ts +9 -0
  211. package/src/core/query/filters.ts +121 -6
  212. package/src/core/query/query-changed/ChangedModelQuery.ts +8 -0
  213. package/src/core/query/query-simple/SimplePage.ts +4 -5
  214. package/src/core/query/query-simple/SimpleQuery.tsx +91 -87
  215. package/src/core/query/query-simple/SimpleQueryColumns.tsx +126 -0
  216. package/src/core/query/query-simple/SimpleQueryFilterState.ts +160 -0
  217. package/src/core/query/query-simple/SimpleQueryPlanner.ts +18 -0
  218. package/src/core/query/query-simple/SimpleQuerySortState.ts +133 -0
  219. package/src/core/query/query-simple/SimpleQueryTypes.ts +61 -0
  220. package/src/core/query/widgets/BelongsToDisplayWidget.tsx +19 -11
  221. package/src/core/query/widgets/CellDisplayWidget.tsx +5 -10
  222. package/src/core/query/widgets/ColumnDisplayWidget.tsx +24 -20
  223. package/src/core/query/widgets/PeekRelationshipButton.tsx +161 -0
  224. package/src/core/query/widgets/SmartColumnWidget.tsx +26 -4
  225. package/src/core/query/widgets/SmartFilterWidget.tsx +119 -69
  226. package/src/entities/ConnectionEntityDefinition.tsx +35 -4
  227. package/src/entities/SavedQueryEntityDefinition.ts +72 -0
  228. package/src/entities/SchemaModelDefinitionEntityDefinition.ts +11 -2
  229. package/src/entities.ts +2 -1
  230. package/src/forms/APIConnectionForm.tsx +15 -2
  231. package/src/forms/TypeEngine.tsx +35 -421
  232. package/src/forms/types/attachment-handler.tsx +35 -0
  233. package/src/forms/types/boolean-handler.tsx +28 -0
  234. package/src/forms/types/date-handler.tsx +125 -0
  235. package/src/forms/types/filters/ClearableFilterFormDialogDirective.ts +32 -0
  236. package/src/forms/types/filters/ConditionalFilterForm.tsx +109 -0
  237. package/src/forms/types/image-handler.tsx +90 -0
  238. package/src/forms/types/location-handler.tsx +53 -0
  239. package/src/forms/types/multiple-choice-handler.tsx +37 -0
  240. package/src/forms/types/multiple-choice-integer-handler.tsx +37 -0
  241. package/src/forms/types/number-handler.tsx +100 -0
  242. package/src/forms/types/shared/type-handler.ts +36 -0
  243. package/src/forms/types/shared/ui.tsx +40 -0
  244. package/src/forms/types/single-choice-handler.tsx +47 -0
  245. package/src/forms/types/single-choice-integer-handler.tsx +47 -0
  246. package/src/forms/types/text-handler.tsx +247 -0
  247. package/src/index.ts +1 -0
  248. package/src/panels/_shared/SharedConnectionPanelFactory.tsx +55 -0
  249. package/src/panels/_shared/SharedModelPanelFactory.tsx +8 -2
  250. package/src/panels/query/PageResultsWidget.tsx +40 -28
  251. package/src/panels/query/QueryPanelFactory.tsx +23 -2
  252. package/src/panels/query/QueryPanelWidget.tsx +64 -9
  253. package/src/panels/query/TableControlsWidget.tsx +42 -120
  254. package/src/panels/query/table-controls/ChangesControlsWidget.tsx +72 -0
  255. package/src/panels/query/table-controls/FilterControlsWidget.tsx +145 -0
  256. package/src/panels/query/table-controls/PageControlsWidget.tsx +97 -0
  257. package/src/panels/query/table-controls/QueryControlsWidget.tsx +127 -0
  258. package/src/panels/query/table-controls/SortChipWidget.tsx +119 -0
  259. package/src/panels/query/table-controls/SortControlsWidget.tsx +95 -0
  260. package/src/preferences/QueryControlPreferences.ts +34 -0
  261. package/src/stores/ConnectionStore.ts +2 -0
  262. package/src/stores/SavedQueryStore.ts +121 -0
  263. package/src/widgets/EmptyValueWidget.tsx +20 -0
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { useEffect, useState } from 'react';
2
+ import { useEffect, useRef, useState } from 'react';
3
3
  import { observer } from 'mobx-react';
4
4
  import styled from '@emotion/styled';
5
5
  import { BorderLayoutWidget, LoadingPanelWidget } from '@journeyapps-labs/reactor-mod';
@@ -15,7 +15,14 @@ var S;
15
15
  `;
16
16
  })(S || (S = {}));
17
17
  export const QueryPanelWidget = observer((props) => {
18
- const [page, setPage] = useState(null);
18
+ const [displayPage, setDisplayPage] = useState(null);
19
+ const [loading, setLoading] = useState(false);
20
+ const displayPageRef = useRef(null);
21
+ const pendingDisposerRef = useRef(null);
22
+ const setVisiblePage = (page) => {
23
+ displayPageRef.current = page;
24
+ setDisplayPage(page);
25
+ };
19
26
  useEffect(() => {
20
27
  if (!props.model.query) {
21
28
  return;
@@ -24,21 +31,60 @@ export const QueryPanelWidget = observer((props) => {
24
31
  }, [props.model.query]);
25
32
  useEffect(() => {
26
33
  return autorun(() => {
34
+ var _a, _b;
27
35
  if (props.model.query) {
28
- setPage(props.model.query.getPage(props.model.current_page));
36
+ const nextPage = props.model.query.getPage(props.model.current_page);
37
+ const currentPage = displayPageRef.current;
38
+ if (!currentPage) {
39
+ setVisiblePage(nextPage);
40
+ setLoading(!!(nextPage === null || nextPage === void 0 ? void 0 : nextPage.loading));
41
+ return;
42
+ }
43
+ if (nextPage === currentPage) {
44
+ setLoading(!!nextPage.loading);
45
+ return;
46
+ }
47
+ if (!nextPage.loading) {
48
+ (_a = pendingDisposerRef.current) === null || _a === void 0 ? void 0 : _a.call(pendingDisposerRef);
49
+ pendingDisposerRef.current = null;
50
+ setVisiblePage(nextPage);
51
+ setLoading(false);
52
+ return;
53
+ }
54
+ setLoading(true);
55
+ (_b = pendingDisposerRef.current) === null || _b === void 0 ? void 0 : _b.call(pendingDisposerRef);
56
+ pendingDisposerRef.current = autorun(() => {
57
+ var _a;
58
+ if (!nextPage.loading) {
59
+ (_a = pendingDisposerRef.current) === null || _a === void 0 ? void 0 : _a.call(pendingDisposerRef);
60
+ pendingDisposerRef.current = null;
61
+ setVisiblePage(nextPage);
62
+ setLoading(false);
63
+ }
64
+ });
29
65
  }
30
66
  });
31
67
  }, [props.model.query]);
32
- return (React.createElement(LoadingPanelWidget, { loading: !props.model.query || !page }, () => {
68
+ useEffect(() => {
69
+ return () => {
70
+ var _a;
71
+ (_a = pendingDisposerRef.current) === null || _a === void 0 ? void 0 : _a.call(pendingDisposerRef);
72
+ pendingDisposerRef.current = null;
73
+ };
74
+ }, []);
75
+ const activePage = displayPage || (props.model.query ? props.model.query.getPage(props.model.current_page) : null);
76
+ return (React.createElement(LoadingPanelWidget, { loading: !props.model.query || !activePage }, () => {
33
77
  return (React.createElement(S.Container, null,
34
- React.createElement(BorderLayoutWidget, { top: React.createElement(TableControlsWidget, { query: props.model.query, current_page: page, goToPage: (index) => {
35
- setPage(props.model.query.getPage(index));
78
+ React.createElement(BorderLayoutWidget, { top: React.createElement(TableControlsWidget, { query: props.model.query, current_page: activePage, loading: loading, onLoadSavedQuery: async (id) => {
79
+ await props.model.loadSavedQuery(id);
80
+ }, goToPage: (index) => {
36
81
  props.model.current_page = index;
37
- } }), bottom: React.createElement(TableControlsWidget, { query: props.model.query, current_page: page, goToPage: (index) => {
38
- setPage(props.model.query.getPage(index));
82
+ } }), bottom: React.createElement(TableControlsWidget, { query: props.model.query, current_page: activePage, loading: loading, onLoadSavedQuery: async (id) => {
83
+ await props.model.loadSavedQuery(id);
84
+ }, goToPage: (index) => {
39
85
  props.model.current_page = index;
40
86
  } }) },
41
- React.createElement(PageResultsWidget, { query: props.model.query, page: page }))));
87
+ React.createElement(PageResultsWidget, { query: props.model.query, page: activePage }))));
42
88
  }));
43
89
  });
44
90
  //# sourceMappingURL=QueryPanelWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryPanelWidget.js","sourceRoot":"","sources":["../../../src/panels/query/QueryPanelWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAM/B,IAAU,CAAC,CAMV;AAND,WAAU,CAAC;IACI,WAAS,GAAG,MAAM,CAAC,GAAG,CAAA;;;;GAIlC,CAAC;AACJ,CAAC,EANS,CAAC,KAAD,CAAC,QAMV;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAoC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;IAClF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAO,IAAI,CAAC,CAAC;IAC7C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAExB,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,OAAO,CAAC,GAAG,EAAE;YAClB,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAExB,OAAO,CACL,oBAAC,kBAAkB,IAAC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,IACrD,GAAG,EAAE;QACJ,OAAO,CACL,oBAAC,CAAC,CAAC,SAAS;YACV,oBAAC,kBAAkB,IACjB,GAAG,EACD,oBAAC,mBAAmB,IAClB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EACxB,YAAY,EAAE,IAAI,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;wBAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC1C,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;oBACnC,CAAC,GACD,EAEJ,MAAM,EACJ,oBAAC,mBAAmB,IAClB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EACxB,YAAY,EAAE,IAAI,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;wBAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC1C,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;oBACnC,CAAC,GACD;gBAGJ,oBAAC,iBAAiB,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,GAAI,CACxC,CACT,CACf,CAAC;IACJ,CAAC,CACkB,CACtB,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"QueryPanelWidget.js","sourceRoot":"","sources":["../../../src/panels/query/QueryPanelWidget.tsx"],"names":[],"mappings":"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"}
@@ -1,85 +1,47 @@
1
1
  import * as React from 'react';
2
- import { ioc, PanelButtonWidget, PanelDropdownWidget, setupTooltipProps, styled, theme, ThemeStore, TooltipPosition, WorkspaceStore } from '@journeyapps-labs/reactor-mod';
2
+ import { IconWidget, ioc, PrefsStore, styled } from '@journeyapps-labs/reactor-mod';
3
3
  import { observer } from 'mobx-react';
4
4
  import * as _ from 'lodash';
5
- import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
6
- import { SimplePage } from '../../core/query/query-simple/SimplePage';
7
- import { QueryPanelModel } from './QueryPanelFactory';
8
- import { ChangedModelQuery } from '../../core/query/query-changed/ChangedModelQuery';
9
5
  import { SimpleQuery } from '../../core/query/query-simple/SimpleQuery';
6
+ import { SavedQueryStore } from '../../stores/SavedQueryStore';
7
+ import { PageControlsWidget } from './table-controls/PageControlsWidget';
8
+ import { QueryControlsWidget } from './table-controls/QueryControlsWidget';
9
+ import { SortControlsWidget } from './table-controls/SortControlsWidget';
10
+ import { ChangesControlsWidget } from './table-controls/ChangesControlsWidget';
11
+ import { FilterControlsWidget } from './table-controls/FilterControlsWidget';
12
+ import { QueryControlPreferences } from '../../preferences/QueryControlPreferences';
10
13
  export const TableControlsWidget = observer((props) => {
11
- var _a;
12
- const _theme = ioc.get(ThemeStore).getCurrentTheme(theme);
13
- const dirtyObjects = props.query.getDirtyObjects();
14
+ const prefsStore = ioc.get(PrefsStore);
15
+ const simpleQuery = props.query instanceof SimpleQuery ? props.query : null;
16
+ const savedQueries = simpleQuery ? ioc.get(SavedQueryStore).getSavedForQuery(simpleQuery) : [];
17
+ const activeSavedQuery = simpleQuery &&
18
+ (savedQueries.find((saved) => {
19
+ return _.isEqual(saved.query, simpleQuery.serialize());
20
+ }) ||
21
+ null);
22
+ const showSortControls = prefsStore.getPreference(QueryControlPreferences.SHOW_SORT_CONTROLS).checked;
23
+ const showFilterControls = prefsStore.getPreference(QueryControlPreferences.SHOW_FILTER_CONTROLS).checked;
14
24
  return (React.createElement(S.Container, { className: props.className },
15
- React.createElement(PanelButtonWidget, { disabled: ((_a = props.current_page) === null || _a === void 0 ? void 0 : _a.index) === 0, label: "Prev", action: () => {
16
- props.goToPage(props.current_page.index - 1);
17
- } }),
18
- React.createElement(PanelButtonWidget, { disabled: props.query.totalPages == props.current_page.index + 1, label: "Next", action: () => {
19
- props.goToPage(props.current_page.index + 1);
20
- } }),
21
- React.createElement(S.PageSelector, null,
22
- React.createElement(PanelDropdownWidget, { onChange: ({ key }) => {
23
- props.goToPage(parseInt(key));
24
- }, selected: `${props.current_page.index}`, items: _.range(0, props.query.totalPages).map((r) => {
25
- return {
26
- title: `${r + 1}`,
27
- key: `${r}`
28
- };
29
- }) }),
30
- React.createElement(S.TotalPages, null,
31
- "/ ",
32
- props.query.totalPages)),
33
- props.current_page instanceof SimplePage ? (React.createElement(PanelButtonWidget, { label: "Page", tooltip: "Reload page", icon: "refresh", action: async () => {
34
- await props.current_page.load();
35
- } })) : null,
36
- React.createElement(PanelButtonWidget, { tooltip: "Reload Query", icon: "refresh", action: async (event, loading) => {
37
- await props.query.load();
38
- } }),
39
- dirtyObjects.length > 0 ? (React.createElement(React.Fragment, null,
40
- React.createElement(PanelButtonWidget, { label: `Save all [${dirtyObjects.length}]`, icon: "save", iconColor: _theme.status.success, action: async (event, loading) => {
41
- props.query.batchSave();
42
- } }),
43
- React.createElement("span", Object.assign({}, setupTooltipProps({
44
- tooltip: 'Discard all edits',
45
- tooltipPos: TooltipPosition.RIGHT
46
- })),
47
- React.createElement(S.RevertButton, { icon: "arrow-rotate-back", onClick: () => {
48
- props.current_page.reset();
49
- } })),
50
- props.query instanceof SimpleQuery ? (React.createElement("span", Object.assign({}, setupTooltipProps({
51
- tooltip: 'View changed models',
52
- tooltipPos: TooltipPosition.RIGHT
53
- })),
54
- React.createElement(S.RevertButton, { icon: "eye", onClick: () => {
55
- ioc
56
- .get(WorkspaceStore)
57
- .addModel(new QueryPanelModel(new ChangedModelQuery(props.query)));
58
- } }))) : null)) : null));
25
+ React.createElement(PageControlsWidget, { query: props.query, currentPage: props.current_page, goToPage: props.goToPage }),
26
+ React.createElement(QueryControlsWidget, { query: props.query, simpleQuery: simpleQuery, activeSavedQueryName: (activeSavedQuery === null || activeSavedQuery === void 0 ? void 0 : activeSavedQuery.name) || null, onLoadSavedQuery: props.onLoadSavedQuery }),
27
+ simpleQuery && showFilterControls ? (React.createElement(FilterControlsWidget, { simpleQuery: simpleQuery, goToPage: props.goToPage })) : null,
28
+ simpleQuery && showSortControls ? (React.createElement(SortControlsWidget, { simpleQuery: simpleQuery, goToPage: props.goToPage })) : null,
29
+ React.createElement(ChangesControlsWidget, { query: props.query, currentPage: props.current_page }),
30
+ props.loading ? React.createElement(S.Loading, { icon: "spinner", spin: true }) : null));
59
31
  });
60
32
  var S;
61
33
  (function (S) {
62
34
  S.Container = styled.div `
63
35
  display: flex;
64
36
  flex-direction: row;
65
- column-gap: 5px;
37
+ column-gap: 20px;
38
+ row-gap: 20px;
66
39
  padding: 5px 5px;
67
40
  align-items: center;
41
+ flex-wrap: wrap;
68
42
  `;
69
- S.PageSelector = styled.div `
70
- display: flex;
71
- flex-direction: row;
72
- align-items: center;
73
- `;
74
- S.TotalPages = styled.div `
75
- color: ${(p) => p.theme.text.primary};
76
- padding-left: 5px;
77
- `;
78
- S.RevertButton = styled(FontAwesomeIcon) `
79
- color: ${(p) => p.theme.status.success};
80
- font-size: 12px;
81
- padding: 5px;
82
- cursor: pointer;
43
+ S.Loading = styled(IconWidget) `
44
+ color: ${(p) => p.theme.button.icon};
83
45
  `;
84
46
  })(S || (S = {}));
85
47
  //# sourceMappingURL=TableControlsWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableControlsWidget.js","sourceRoot":"","sources":["../../../src/panels/query/TableControlsWidget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TableControlsWidget.js","sourceRoot":"","sources":["../../../src/panels/query/TableControlsWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAkB,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAEpG,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAWpF,MAAM,CAAC,MAAM,mBAAmB,GAAuC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;IACxF,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,MAAM,gBAAgB,GACpB,WAAW;QACX,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC;YACA,IAAI,CAAC,CAAC;IACV,MAAM,gBAAgB,GAAG,UAAU,CAAC,aAAa,CAAiB,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC;IACtH,MAAM,kBAAkB,GAAG,UAAU,CAAC,aAAa,CACjD,uBAAuB,CAAC,oBAAoB,CAC7C,CAAC,OAAO,CAAC;IAEV,OAAO,CACL,oBAAC,CAAC,CAAC,SAAS,IAAC,SAAS,EAAE,KAAK,CAAC,SAAS;QACrC,oBAAC,kBAAkB,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAI;QACrG,oBAAC,mBAAmB,IAClB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,KAAI,IAAI,EACpD,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,GACxC;QACD,WAAW,IAAI,kBAAkB,CAAC,CAAC,CAAC,CACnC,oBAAC,oBAAoB,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAI,CAC7E,CAAC,CAAC,CAAC,IAAI;QACP,WAAW,IAAI,gBAAgB,CAAC,CAAC,CAAC,CACjC,oBAAC,kBAAkB,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAI,CAC3E,CAAC,CAAC,CAAC,IAAI;QACR,oBAAC,qBAAqB,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,GAAI;QAC7E,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAC,CAAC,CAAC,OAAO,IAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAE,IAAI,GAAI,CAAC,CAAC,CAAC,IAAI,CACpD,CACf,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAU,CAAC,CAcV;AAdD,WAAU,CAAC;IACI,WAAS,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;GAQlC,CAAC;IAEW,SAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;aAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI;GACpC,CAAC;AACJ,CAAC,EAdS,CAAC,KAAD,CAAC,QAcV"}
@@ -0,0 +1,36 @@
1
+ import * as React from 'react';
2
+ import { InputContainerWidget, ioc, PanelButtonWidget, styled, theme, ThemeStore, WorkspaceStore } from '@journeyapps-labs/reactor-mod';
3
+ import { ChangedModelQuery } from '../../../core/query/query-changed/ChangedModelQuery';
4
+ import { SimpleQuery } from '../../../core/query/query-simple/SimpleQuery';
5
+ import { QueryPanelModel } from '../QueryPanelFactory';
6
+ import { observer } from 'mobx-react';
7
+ export const ChangesControlsWidget = observer((props) => {
8
+ const _theme = ioc.get(ThemeStore).getCurrentTheme(theme);
9
+ const dirtyObjects = props.query.getDirtyObjects();
10
+ if (dirtyObjects.length === 0) {
11
+ return null;
12
+ }
13
+ return (React.createElement(InputContainerWidget, { label: "Changes" },
14
+ React.createElement(S.Group, null,
15
+ React.createElement(PanelButtonWidget, { label: `Save all [${dirtyObjects.length}]`, icon: "save", iconColor: _theme.status.success, action: async () => {
16
+ props.query.batchSave();
17
+ } }),
18
+ React.createElement(PanelButtonWidget, { tooltip: "Discard all edits", icon: "arrow-rotate-back", action: () => {
19
+ props.currentPage.reset();
20
+ } }),
21
+ props.query instanceof SimpleQuery ? (React.createElement(PanelButtonWidget, { tooltip: "View changed models", icon: "eye", action: () => {
22
+ ioc.get(WorkspaceStore).addModel(new QueryPanelModel(new ChangedModelQuery(props.query)));
23
+ } })) : null)));
24
+ });
25
+ var S;
26
+ (function (S) {
27
+ S.Group = styled.div `
28
+ display: flex;
29
+ flex-direction: row;
30
+ align-items: center;
31
+ column-gap: 5px;
32
+ row-gap: 5px;
33
+ flex-wrap: wrap;
34
+ `;
35
+ })(S || (S = {}));
36
+ //# sourceMappingURL=ChangesControlsWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangesControlsWidget.js","sourceRoot":"","sources":["../../../../src/panels/query/table-controls/ChangesControlsWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,GAAG,EACH,iBAAiB,EACjB,MAAM,EACN,KAAK,EACL,UAAU,EACV,cAAc,EACf,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAOtC,MAAM,CAAC,MAAM,qBAAqB,GAAyC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;IAC5F,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;IAEnD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,oBAAC,oBAAoB,IAAC,KAAK,EAAC,SAAS;QACnC,oBAAC,CAAC,CAAC,KAAK;YACN,oBAAC,iBAAiB,IAChB,KAAK,EAAE,aAAa,YAAY,CAAC,MAAM,GAAG,EAC1C,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAChC,MAAM,EAAE,KAAK,IAAI,EAAE;oBACjB,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC1B,CAAC,GACD;YACF,oBAAC,iBAAiB,IAChB,OAAO,EAAC,mBAAmB,EAC3B,IAAI,EAAC,mBAAmB,EACxB,MAAM,EAAE,GAAG,EAAE;oBACX,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;gBAC5B,CAAC,GACD;YACD,KAAK,CAAC,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,CACpC,oBAAC,iBAAiB,IAChB,OAAO,EAAC,qBAAqB,EAC7B,IAAI,EAAC,KAAK,EACV,MAAM,EAAE,GAAG,EAAE;oBACX,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,KAAoB,CAAC,CAAC,CAAC,CAAC;gBAC3G,CAAC,GACD,CACH,CAAC,CAAC,CAAC,IAAI,CACA,CACW,CACxB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAU,CAAC,CASV;AATD,WAAU,CAAC;IACI,OAAK,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;GAO9B,CAAC;AACJ,CAAC,EATS,CAAC,KAAD,CAAC,QASV"}
@@ -0,0 +1,106 @@
1
+ import * as React from 'react';
2
+ import { ComboBoxStore2, InputContainerWidget, PanelButtonMode, PanelButtonWidget, SimpleComboBoxDirective, ioc, styled } from '@journeyapps-labs/reactor-mod';
3
+ import { SmartFilterMetadataWidget } from '../../../core/query/widgets/SmartFilterWidget';
4
+ export const FilterControlsWidget = (props) => {
5
+ const showAddFilterMenu = async (event) => {
6
+ const fields = props.simpleQuery.filterState.getFilterableFields();
7
+ if (fields.length === 0) {
8
+ return;
9
+ }
10
+ const directive = await ioc.get(ComboBoxStore2).show(new SimpleComboBoxDirective({
11
+ title: 'Add filter',
12
+ event: event,
13
+ items: fields.map((field) => {
14
+ return {
15
+ key: field.key,
16
+ title: field.label,
17
+ action: async () => {
18
+ var _a;
19
+ await props.simpleQuery.filterState.setupFilterForField(field.key, event.nativeEvent);
20
+ (_a = props.goToPage) === null || _a === void 0 ? void 0 : _a.call(props, 0);
21
+ }
22
+ };
23
+ })
24
+ }));
25
+ directive.getSelectedItem();
26
+ };
27
+ const filters = props.simpleQuery.filterState.getActiveFilters();
28
+ return (React.createElement(InputContainerWidget, { label: "Filters" },
29
+ React.createElement(S.Group, null,
30
+ React.createElement(PanelButtonWidget, { icon: "plus", tooltip: "Add filter", action: async (event) => {
31
+ await showAddFilterMenu(event);
32
+ } }),
33
+ filters.map((entry) => {
34
+ const key = entry.variable.name;
35
+ const label = entry.variable.label || entry.variable.name;
36
+ return (React.createElement(S.FilterItem, { key: key, onContextMenu: async (event) => {
37
+ event.preventDefault();
38
+ event.stopPropagation();
39
+ const directive = await ioc.get(ComboBoxStore2).show(new SimpleComboBoxDirective({
40
+ title: label,
41
+ event: event,
42
+ items: [
43
+ {
44
+ key: 'edit',
45
+ title: 'Edit filter',
46
+ icon: 'pencil',
47
+ action: async () => {
48
+ var _a;
49
+ await props.simpleQuery.filterState.setupFilterForField(key, event.nativeEvent);
50
+ (_a = props.goToPage) === null || _a === void 0 ? void 0 : _a.call(props, 0);
51
+ }
52
+ },
53
+ {
54
+ key: 'clear',
55
+ title: 'Clear filter',
56
+ icon: 'trash',
57
+ action: async () => {
58
+ var _a;
59
+ entry.filter.delete();
60
+ (_a = props.goToPage) === null || _a === void 0 ? void 0 : _a.call(props, 0);
61
+ }
62
+ }
63
+ ]
64
+ }));
65
+ directive.getSelectedItem();
66
+ } },
67
+ React.createElement(S.FilterLabel, null, label),
68
+ React.createElement(SmartFilterMetadataWidget, { filter: entry.filter, variable: entry.filter.variable }),
69
+ React.createElement(S.CloseButton, { mode: PanelButtonMode.LINK, icon: "close", tooltip: `Clear ${label} filter`, action: async () => {
70
+ var _a;
71
+ entry.filter.delete();
72
+ (_a = props.goToPage) === null || _a === void 0 ? void 0 : _a.call(props, 0);
73
+ } })));
74
+ }))));
75
+ };
76
+ var S;
77
+ (function (S) {
78
+ S.Group = styled.div `
79
+ display: flex;
80
+ flex-direction: row;
81
+ align-items: center;
82
+ column-gap: 5px;
83
+ row-gap: 5px;
84
+ flex-wrap: wrap;
85
+ `;
86
+ S.FilterItem = styled.div `
87
+ display: flex;
88
+ flex-direction: row;
89
+ align-items: center;
90
+ border-radius: 4px;
91
+ padding: 1px 3px;
92
+
93
+ &:hover {
94
+ background: ${(p) => p.theme.forms.groupBorder};
95
+ }
96
+ `;
97
+ S.CloseButton = styled(PanelButtonWidget) `
98
+ padding: 2px;
99
+ `;
100
+ S.FilterLabel = styled.div `
101
+ font-size: 12px;
102
+ color: ${(p) => p.theme.text.secondary};
103
+ padding-right: 4px;
104
+ `;
105
+ })(S || (S = {}));
106
+ //# sourceMappingURL=FilterControlsWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterControlsWidget.js","sourceRoot":"","sources":["../../../../src/panels/query/table-controls/FilterControlsWidget.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import * as React from 'react';
2
+ import { IconWidget, InputContainerWidget, PanelButtonWidget, PanelDropdownWidget, styled } from '@journeyapps-labs/reactor-mod';
3
+ import * as _ from 'lodash';
4
+ import { observer } from 'mobx-react';
5
+ export const PageControlsWidget = observer((props) => {
6
+ var _a, _b;
7
+ const hasCurrentPage = !!props.currentPage;
8
+ const currentPageIndex = (_b = (_a = props.currentPage) === null || _a === void 0 ? void 0 : _a.index) !== null && _b !== void 0 ? _b : 0;
9
+ return (React.createElement(InputContainerWidget, { label: "Page" },
10
+ React.createElement(S.Group, null,
11
+ React.createElement(PanelButtonWidget, { disabled: !hasCurrentPage || currentPageIndex === 0, label: "Prev", action: () => {
12
+ var _a;
13
+ if (!hasCurrentPage) {
14
+ return;
15
+ }
16
+ (_a = props.goToPage) === null || _a === void 0 ? void 0 : _a.call(props, currentPageIndex - 1);
17
+ } }),
18
+ React.createElement(PanelButtonWidget, { disabled: !hasCurrentPage || props.query.totalPages === currentPageIndex + 1, label: "Next", action: () => {
19
+ var _a;
20
+ if (!hasCurrentPage) {
21
+ return;
22
+ }
23
+ (_a = props.goToPage) === null || _a === void 0 ? void 0 : _a.call(props, currentPageIndex + 1);
24
+ } }),
25
+ React.createElement(S.PageSelector, null,
26
+ React.createElement(PanelDropdownWidget, { onChange: ({ key }) => {
27
+ var _a;
28
+ (_a = props.goToPage) === null || _a === void 0 ? void 0 : _a.call(props, parseInt(key));
29
+ }, selected: `${currentPageIndex}`, items: _.range(0, props.query.totalPages).map((r) => {
30
+ return {
31
+ title: `${r + 1}`,
32
+ key: `${r}`
33
+ };
34
+ }) }),
35
+ React.createElement(S.TotalPages, null,
36
+ "/ ",
37
+ props.query.totalPages === 0 ? React.createElement(S.Spinner, { icon: "spinner", spin: true }) : props.query.totalPages)))));
38
+ });
39
+ var S;
40
+ (function (S) {
41
+ S.Group = styled.div `
42
+ display: flex;
43
+ flex-direction: row;
44
+ align-items: center;
45
+ column-gap: 5px;
46
+ row-gap: 5px;
47
+ flex-wrap: wrap;
48
+ `;
49
+ S.PageSelector = styled.div `
50
+ display: flex;
51
+ flex-direction: row;
52
+ align-items: center;
53
+ `;
54
+ S.TotalPages = styled.div `
55
+ color: ${(p) => p.theme.text.primary};
56
+ padding-left: 5px;
57
+ display: flex;
58
+ flex-direction: row;
59
+ align-items: center;
60
+ `;
61
+ S.Spinner = styled(IconWidget) `
62
+ color: ${(p) => p.theme.text.secondary};
63
+ `;
64
+ })(S || (S = {}));
65
+ //# sourceMappingURL=PageControlsWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageControlsWidget.js","sourceRoot":"","sources":["../../../../src/panels/query/table-controls/PageControlsWidget.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import * as React from 'react';
2
+ import { ComboBoxStore2, DialogStore, InputContainerWidget, ioc, PanelButtonWidget, SimpleComboBoxDirective, styled } from '@journeyapps-labs/reactor-mod';
3
+ import { SavedQueryStore } from '../../../stores/SavedQueryStore';
4
+ import { observer } from 'mobx-react';
5
+ export const QueryControlsWidget = observer((props) => {
6
+ const savedQueryStore = ioc.get(SavedQueryStore);
7
+ const savedQueries = props.simpleQuery ? savedQueryStore.getSavedForQuery(props.simpleQuery) : [];
8
+ const showSavedQueryMenu = async (event) => {
9
+ if (!props.simpleQuery) {
10
+ return;
11
+ }
12
+ const queryChildren = savedQueries.length > 0
13
+ ? savedQueries.map((saved) => {
14
+ return {
15
+ title: saved.name,
16
+ key: `query-${saved.id}`,
17
+ icon: 'search',
18
+ action: async () => {
19
+ var _a;
20
+ await ((_a = props.onLoadSavedQuery) === null || _a === void 0 ? void 0 : _a.call(props, saved.id));
21
+ }
22
+ };
23
+ })
24
+ : [{ title: 'No saved queries', key: 'no-queries', disabled: true }];
25
+ const deleteChildren = savedQueries.length > 0
26
+ ? savedQueries.map((saved) => {
27
+ return {
28
+ title: saved.name,
29
+ key: `delete-${saved.id}`,
30
+ icon: 'trash',
31
+ action: async () => {
32
+ await savedQueryStore.removeSavedQuery(saved.id);
33
+ }
34
+ };
35
+ })
36
+ : [{ title: 'No saved queries', key: 'no-delete-queries', disabled: true }];
37
+ const directive = await ioc.get(ComboBoxStore2).show(new SimpleComboBoxDirective({
38
+ title: 'Saved queries',
39
+ event: event,
40
+ items: [
41
+ {
42
+ title: 'Save query',
43
+ key: 'save-query',
44
+ icon: 'bookmark',
45
+ action: async () => {
46
+ const suggestedName = `${props.simpleQuery.options.definition.definition.label} query`;
47
+ const name = await ioc.get(DialogStore).showInputDialog({
48
+ title: 'Save query',
49
+ initialValue: suggestedName
50
+ });
51
+ if (!name) {
52
+ return;
53
+ }
54
+ await savedQueryStore.saveQuery(name, props.simpleQuery);
55
+ }
56
+ },
57
+ { title: 'Queries', key: 'queries', icon: 'list', children: queryChildren },
58
+ { title: 'Delete query', key: 'delete-query', icon: 'trash', children: deleteChildren }
59
+ ]
60
+ }));
61
+ directive.getSelectedItem();
62
+ };
63
+ return (React.createElement(InputContainerWidget, { label: "Query" },
64
+ React.createElement(S.Group, null,
65
+ React.createElement(PanelButtonWidget, { tooltip: "Reload query", icon: "refresh", action: async () => {
66
+ await props.query.load();
67
+ } }),
68
+ props.simpleQuery ? (React.createElement(PanelButtonWidget, { tooltip: props.activeSavedQueryName
69
+ ? `Saved query active: ${props.activeSavedQueryName}`
70
+ : 'Unsaved or modified query', icon: "bookmark", highlight: !!props.activeSavedQueryName, action: async (event) => {
71
+ await showSavedQueryMenu(event);
72
+ } })) : null)));
73
+ });
74
+ var S;
75
+ (function (S) {
76
+ S.Group = styled.div `
77
+ display: flex;
78
+ flex-direction: row;
79
+ align-items: center;
80
+ column-gap: 5px;
81
+ row-gap: 5px;
82
+ flex-wrap: wrap;
83
+ `;
84
+ })(S || (S = {}));
85
+ //# sourceMappingURL=QueryControlsWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryControlsWidget.js","sourceRoot":"","sources":["../../../../src/panels/query/table-controls/QueryControlsWidget.tsx"],"names":[],"mappings":"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"}