@quillsql/admin 1.5.2 → 1.6.0

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 (141) hide show
  1. package/dist/cjs/Admin.d.ts +19 -72
  2. package/dist/cjs/Admin.d.ts.map +1 -1
  3. package/dist/cjs/Admin.js +200 -994
  4. package/dist/cjs/AdminProvider.d.ts +0 -11
  5. package/dist/cjs/AdminProvider.d.ts.map +1 -1
  6. package/dist/cjs/AdminProvider.js +16 -10
  7. package/dist/cjs/api/ConnectionClient.d.ts +11 -0
  8. package/dist/cjs/api/ConnectionClient.d.ts.map +1 -1
  9. package/dist/cjs/api/ConnectionClient.js +71 -10
  10. package/dist/cjs/components/DropDownMenu.js +1 -1
  11. package/dist/cjs/components/DropDownMenuWithLabel.d.ts.map +1 -1
  12. package/dist/cjs/components/DropDownMenuWithLabel.js +16 -54
  13. package/dist/cjs/components/OrgSelect.d.ts.map +1 -1
  14. package/dist/cjs/components/OrgSelect.js +10 -20
  15. package/dist/cjs/components/QuillSelect.d.ts +3 -0
  16. package/dist/cjs/components/QuillSelect.d.ts.map +1 -0
  17. package/dist/cjs/components/QuillSelect.js +137 -0
  18. package/dist/cjs/components/SegmentedControl.d.ts +7 -0
  19. package/dist/cjs/components/SegmentedControl.d.ts.map +1 -0
  20. package/dist/cjs/components/SegmentedControl.js +54 -0
  21. package/dist/cjs/components/UiComponents.d.ts +18 -30
  22. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  23. package/dist/cjs/components/UiComponents.js +39 -84
  24. package/dist/cjs/forms/client_onboard/ConnectSchema.d.ts +2 -1
  25. package/dist/cjs/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
  26. package/dist/cjs/forms/client_onboard/ConnectSchema.js +143 -68
  27. package/dist/cjs/forms/client_onboard/CreateSqlViews.d.ts.map +1 -1
  28. package/dist/cjs/forms/client_onboard/CreateSqlViews.js +39 -10
  29. package/dist/cjs/forms/sql_views/CreateEditSqlView.d.ts +7 -4
  30. package/dist/cjs/forms/sql_views/CreateEditSqlView.d.ts.map +1 -1
  31. package/dist/cjs/forms/sql_views/CreateEditSqlView.js +28 -25
  32. package/dist/cjs/hooks/useOnClickOutside.d.ts +3 -0
  33. package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -0
  34. package/dist/cjs/hooks/useOnClickOutside.js +20 -0
  35. package/dist/cjs/modals/EditFiltersModal.d.ts +17 -0
  36. package/dist/cjs/modals/EditFiltersModal.d.ts.map +1 -0
  37. package/dist/cjs/modals/EditFiltersModal.js +345 -0
  38. package/dist/cjs/modals/NewDashboardModal.d.ts +1 -3
  39. package/dist/cjs/modals/NewDashboardModal.d.ts.map +1 -1
  40. package/dist/cjs/modals/NewDashboardModal.js +62 -45
  41. package/dist/cjs/modals/PromoteDashModal.d.ts.map +1 -1
  42. package/dist/cjs/modals/PromoteDashModal.js +10 -3
  43. package/dist/cjs/modals/ReorderDashboardModal.d.ts.map +1 -1
  44. package/dist/cjs/modals/ReorderDashboardModal.js +42 -45
  45. package/dist/cjs/modals/index.d.ts +0 -1
  46. package/dist/cjs/modals/index.d.ts.map +1 -1
  47. package/dist/cjs/modals/index.js +1 -3
  48. package/dist/cjs/primitives/ButtonPrimitive.d.ts +3 -1
  49. package/dist/cjs/primitives/ButtonPrimitive.d.ts.map +1 -1
  50. package/dist/cjs/primitives/ButtonPrimitive.js +5 -3
  51. package/dist/cjs/primitives/TogglePrimitive.js +5 -5
  52. package/dist/cjs/public_components/CreateEnvironment.d.ts.map +1 -1
  53. package/dist/cjs/public_components/CreateEnvironment.js +1 -1
  54. package/dist/cjs/public_components/DashboardBuilder.d.ts.map +1 -1
  55. package/dist/cjs/public_components/DashboardBuilder.js +41 -6
  56. package/dist/cjs/public_components/DashboardManager.d.ts.map +1 -1
  57. package/dist/cjs/public_components/DashboardManager.js +47 -83
  58. package/dist/cjs/public_components/SQLViewManager.d.ts.map +1 -1
  59. package/dist/cjs/public_components/SQLViewManager.js +69 -20
  60. package/dist/cjs/utils/schema.d.ts +6 -0
  61. package/dist/cjs/utils/schema.d.ts.map +1 -1
  62. package/dist/cjs/utils/table.d.ts +1 -0
  63. package/dist/cjs/utils/table.d.ts.map +1 -1
  64. package/dist/cjs/utils/table.js +13 -0
  65. package/dist/cjs/utils/textProcessing.d.ts +2 -0
  66. package/dist/cjs/utils/textProcessing.d.ts.map +1 -0
  67. package/dist/cjs/utils/textProcessing.js +9 -0
  68. package/dist/esm/Admin.d.ts +19 -72
  69. package/dist/esm/Admin.d.ts.map +1 -1
  70. package/dist/esm/Admin.js +203 -987
  71. package/dist/esm/AdminProvider.d.ts +0 -11
  72. package/dist/esm/AdminProvider.d.ts.map +1 -1
  73. package/dist/esm/AdminProvider.js +16 -10
  74. package/dist/esm/api/ConnectionClient.d.ts +11 -0
  75. package/dist/esm/api/ConnectionClient.d.ts.map +1 -1
  76. package/dist/esm/api/ConnectionClient.js +69 -9
  77. package/dist/esm/components/DropDownMenu.js +1 -1
  78. package/dist/esm/components/DropDownMenuWithLabel.d.ts.map +1 -1
  79. package/dist/esm/components/DropDownMenuWithLabel.js +16 -54
  80. package/dist/esm/components/OrgSelect.d.ts.map +1 -1
  81. package/dist/esm/components/OrgSelect.js +6 -19
  82. package/dist/esm/components/QuillSelect.d.ts +3 -0
  83. package/dist/esm/components/QuillSelect.d.ts.map +1 -0
  84. package/dist/esm/components/QuillSelect.js +130 -0
  85. package/dist/esm/components/SegmentedControl.d.ts +7 -0
  86. package/dist/esm/components/SegmentedControl.d.ts.map +1 -0
  87. package/dist/esm/components/SegmentedControl.js +50 -0
  88. package/dist/esm/components/UiComponents.d.ts +18 -30
  89. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  90. package/dist/esm/components/UiComponents.js +36 -83
  91. package/dist/esm/forms/client_onboard/ConnectSchema.d.ts +2 -1
  92. package/dist/esm/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
  93. package/dist/esm/forms/client_onboard/ConnectSchema.js +145 -70
  94. package/dist/esm/forms/client_onboard/CreateSqlViews.d.ts.map +1 -1
  95. package/dist/esm/forms/client_onboard/CreateSqlViews.js +40 -11
  96. package/dist/esm/forms/sql_views/CreateEditSqlView.d.ts +7 -4
  97. package/dist/esm/forms/sql_views/CreateEditSqlView.d.ts.map +1 -1
  98. package/dist/esm/forms/sql_views/CreateEditSqlView.js +29 -26
  99. package/dist/esm/hooks/useOnClickOutside.d.ts +3 -0
  100. package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -0
  101. package/dist/esm/hooks/useOnClickOutside.js +18 -0
  102. package/dist/esm/modals/EditFiltersModal.d.ts +17 -0
  103. package/dist/esm/modals/EditFiltersModal.d.ts.map +1 -0
  104. package/dist/esm/modals/EditFiltersModal.js +338 -0
  105. package/dist/esm/modals/NewDashboardModal.d.ts +1 -3
  106. package/dist/esm/modals/NewDashboardModal.d.ts.map +1 -1
  107. package/dist/esm/modals/NewDashboardModal.js +62 -45
  108. package/dist/esm/modals/PromoteDashModal.d.ts.map +1 -1
  109. package/dist/esm/modals/PromoteDashModal.js +10 -3
  110. package/dist/esm/modals/ReorderDashboardModal.d.ts.map +1 -1
  111. package/dist/esm/modals/ReorderDashboardModal.js +43 -46
  112. package/dist/esm/modals/index.d.ts +0 -1
  113. package/dist/esm/modals/index.d.ts.map +1 -1
  114. package/dist/esm/modals/index.js +0 -1
  115. package/dist/esm/primitives/ButtonPrimitive.d.ts +3 -1
  116. package/dist/esm/primitives/ButtonPrimitive.d.ts.map +1 -1
  117. package/dist/esm/primitives/ButtonPrimitive.js +5 -3
  118. package/dist/esm/primitives/TogglePrimitive.js +5 -5
  119. package/dist/esm/public_components/CreateEnvironment.d.ts.map +1 -1
  120. package/dist/esm/public_components/CreateEnvironment.js +1 -1
  121. package/dist/esm/public_components/DashboardBuilder.d.ts.map +1 -1
  122. package/dist/esm/public_components/DashboardBuilder.js +41 -6
  123. package/dist/esm/public_components/DashboardManager.d.ts.map +1 -1
  124. package/dist/esm/public_components/DashboardManager.js +49 -85
  125. package/dist/esm/public_components/SQLViewManager.d.ts.map +1 -1
  126. package/dist/esm/public_components/SQLViewManager.js +69 -20
  127. package/dist/esm/utils/schema.d.ts +6 -0
  128. package/dist/esm/utils/schema.d.ts.map +1 -1
  129. package/dist/esm/utils/table.d.ts +1 -0
  130. package/dist/esm/utils/table.d.ts.map +1 -1
  131. package/dist/esm/utils/table.js +11 -1
  132. package/dist/esm/utils/textProcessing.d.ts +2 -0
  133. package/dist/esm/utils/textProcessing.d.ts.map +1 -0
  134. package/dist/esm/utils/textProcessing.js +5 -0
  135. package/package.json +1 -1
  136. package/dist/cjs/modals/EditDashboardsModal.d.ts +0 -20
  137. package/dist/cjs/modals/EditDashboardsModal.d.ts.map +0 -1
  138. package/dist/cjs/modals/EditDashboardsModal.js +0 -94
  139. package/dist/esm/modals/EditDashboardsModal.d.ts +0 -20
  140. package/dist/esm/modals/EditDashboardsModal.d.ts.map +0 -1
  141. package/dist/esm/modals/EditDashboardsModal.js +0 -91
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // @ts-nocheck
3
3
  import { useEffect, useState } from 'react';
4
4
  import { useAdmin } from '../AdminProvider';
@@ -7,18 +7,14 @@ import { arrayMove, rectSortingStrategy, SortableContext, sortableKeyboardCoordi
7
7
  import { CSS } from '@dnd-kit/utilities';
8
8
  import { DndContext, closestCenter, KeyboardSensor, PointerSensor, useSensor, useSensors, TouchSensor, } from '@dnd-kit/core';
9
9
  import { Chart } from '@quillsql/react';
10
+ import { LoadingSpinner } from '../components/UiComponents';
10
11
  export default function ReorderDashboardModal({ isOpen, setIsOpen, client, onSave, ModalComponent, ButtonComponent, selectedDashboard, organizationId, }) {
11
- // const [client] = useContext(ClientContext);
12
- const [dashboardItems, setDashboardItems] = useState([]);
12
+ const { state } = useAdmin();
13
+ const [sections, setSections] = useState([]);
14
+ const [metrics, setMetrics] = useState({});
15
+ const [charts, setCharts] = useState({});
16
+ const [tables, setTables] = useState({});
13
17
  const [loading, setLoading] = useState(false);
14
- const [doesDashboardHaveTables, setDoesDashboardHaveTables] = useState(false);
15
- const [doesDashboardHaveCharts, setDoesDashboardHaveCharts] = useState(false);
16
- const [doesDashboardHaveMetrics, setDoesDashboardHaveMetrics] = useState(false);
17
- const [itemMap, setItemMap] = useState(null);
18
- const [metrics, setMetrics] = useState([]);
19
- const [charts, setCharts] = useState([]);
20
- const [tables, setTables] = useState([]);
21
- const { state, dispatch } = useAdmin();
22
18
  useEffect(() => {
23
19
  async function getDashboardItems() {
24
20
  const { _id, environment } = state.client;
@@ -37,41 +33,23 @@ export default function ReorderDashboardModal({ isOpen, setIsOpen, client, onSav
37
33
  },
38
34
  });
39
35
  const responseData = await response.json();
40
- let flattened = [];
41
- for (let key in responseData.sections) {
42
- flattened = flattened.concat(responseData.sections[key]);
43
- }
44
- setDashboardItems(flattened);
45
- setMetrics(flattened.filter((elem) => elem.chartType === 'metric'));
46
- setTables(flattened.filter((elem) => elem.chartType === 'table'));
47
- setCharts(flattened.filter((elem) => !['metric', 'table'].includes(elem.chartType)));
36
+ const sections = responseData.sections;
37
+ setSections(Object.keys(sections));
38
+ const isMetric = (elem) => elem.chartType === 'metric';
39
+ const isChart = (elem) => !['metric', 'table'].includes(elem.chartType);
40
+ const isTable = (elem) => elem.chartType === 'table';
41
+ setMetrics(Object.fromEntries(Object.entries(sections).map(([k, v]) => [k, v.filter(isMetric)])));
42
+ setCharts(Object.fromEntries(Object.entries(sections).map(([k, v]) => [k, v.filter(isChart)])));
43
+ setTables(Object.fromEntries(Object.entries(sections).map(([k, v]) => [k, v.filter(isTable)])));
48
44
  setLoading(false);
49
45
  }
50
46
  if (selectedDashboard && state.client) {
51
47
  getDashboardItems();
52
48
  }
53
49
  }, [selectedDashboard, state.client]);
54
- useEffect(() => {
55
- const itemMap = new Map();
56
- dashboardItems.forEach((item) => {
57
- if (item.chartType === 'table') {
58
- setDoesDashboardHaveTables(true);
59
- }
60
- else if (item.chartType === 'metric') {
61
- setDoesDashboardHaveMetrics(true);
62
- }
63
- else {
64
- setDoesDashboardHaveCharts(true);
65
- }
66
- itemMap.set(item._id, item);
67
- });
68
- setItemMap(itemMap);
69
- }, [dashboardItems]);
70
50
  const handleSaveChanges = async () => {
71
51
  if (!client)
72
52
  return;
73
- if (!dashboardItems.length)
74
- return;
75
53
  try {
76
54
  const response = await fetch(`${QUILL_SERVER}/dashorder/`, {
77
55
  method: 'POST',
@@ -80,7 +58,11 @@ export default function ReorderDashboardModal({ isOpen, setIsOpen, client, onSav
80
58
  },
81
59
  body: JSON.stringify({
82
60
  publicKey: client._id,
83
- orderArray: [...metrics, ...charts, ...tables],
61
+ orderArray: [
62
+ ...Object.values(metrics).flat(),
63
+ ...Object.values(charts).flat(),
64
+ ...Object.values(tables).flat(),
65
+ ],
84
66
  }),
85
67
  });
86
68
  if (!response.ok) {
@@ -102,7 +84,7 @@ export default function ReorderDashboardModal({ isOpen, setIsOpen, client, onSav
102
84
  flexDirection: 'column',
103
85
  width: 'calc(100vw - 80px)',
104
86
  height: 'calc(100vh - 80px)',
105
- }, children: [_jsx("h1", { style: { fontSize: 22, fontWeight: 600, width: '100%' }, children: "Reorder Items" }), loading ? _jsx("div", { children: "Loading..." }) : null, _jsx("div", { style: {
87
+ }, children: [_jsx("h1", { style: { fontSize: 22, fontWeight: 600, width: '100%' }, children: "Reorder Items" }), loading ? _jsx(LoadingSpinner, {}) : null, _jsx("div", { style: {
106
88
  display: 'flex',
107
89
  flexDirection: 'column',
108
90
  gap: 20,
@@ -110,7 +92,18 @@ export default function ReorderDashboardModal({ isOpen, setIsOpen, client, onSav
110
92
  width: '100%',
111
93
  height: 'calc(100% - 20px)',
112
94
  zIndex: 100,
113
- }, children: _jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: 20 }, children: dashboardItems.length > 0 && itemMap.size > 0 && (_jsxs(_Fragment, { children: [doesDashboardHaveMetrics && (_jsx(ReorderableGrid, { type: 'metrics', items: metrics, setItems: setMetrics })), doesDashboardHaveCharts && (_jsx(ReorderableGrid, { type: 'charts', items: charts, setItems: setCharts })), doesDashboardHaveTables && (_jsx(ReorderableGrid, { type: 'tables', items: tables, setItems: setTables }))] })) }) }), _jsx("div", { style: {
95
+ }, children: _jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: 20 }, children: sections
96
+ .sort((a, b) => a.length - b.length)
97
+ .map((sectionName, sectionIndex) => (_jsxs("div", { style: {
98
+ display: 'flex',
99
+ flexDirection: 'column',
100
+ gap: 20,
101
+ }, children: [sectionName && (_jsx("div", { style: { display: 'flex', flexDirection: 'column' }, children: _jsx("h1", { style: {
102
+ fontSize: 22,
103
+ fontWeight: 'bold',
104
+ textAlign: 'left',
105
+ marginTop: sectionIndex > 0 ? 20 : 0,
106
+ }, children: sectionName }) })), metrics[sectionName]?.length > 0 && (_jsx(ReorderableGrid, { type: 'metrics', section: sectionName, items: metrics[sectionName], setItems: setMetrics })), charts[sectionName]?.length > 0 && (_jsx(ReorderableGrid, { type: 'charts', section: sectionName, items: charts[sectionName], setItems: setCharts })), tables[sectionName]?.length > 0 && (_jsx(ReorderableGrid, { type: 'tables', section: sectionName, items: tables[sectionName], setItems: setTables }))] }))) }) }), _jsx("div", { style: {
114
107
  width: '100%',
115
108
  display: 'flex',
116
109
  flexDirection: 'row',
@@ -154,13 +147,15 @@ const SortableItem = (props) => {
154
147
  fontSize: 18,
155
148
  fontWeight: '500',
156
149
  flexGrow: 1,
157
- }, children: props.value }), _jsx(HandleButton, {})] }), _jsx(Chart, { chartId: props.id, containerStyle: {
150
+ }, children: props.value }), _jsx(HandleButton, {})] }), _jsx(Chart, { reportId: props.id, containerStyle: {
158
151
  padding: 10,
159
152
  height: props.chartType === 'metric' ? 80 : 250,
160
153
  width: 'calc(100% - 20px)',
161
154
  } })] }) }) }));
162
155
  };
163
- function ReorderableGrid({ type, items, setItems }) {
156
+ function ReorderableGrid({ type, section, items, setItems }) {
157
+ if (!items)
158
+ return null;
164
159
  const sensors = useSensors(useSensor(PointerSensor), useSensor(KeyboardSensor, {
165
160
  coordinateGetter: sortableKeyboardCoordinates,
166
161
  }), useSensor(TouchSensor, {
@@ -171,10 +166,12 @@ function ReorderableGrid({ type, items, setItems }) {
171
166
  if (!active || !over)
172
167
  return;
173
168
  if (active.id !== over.id) {
174
- setItems((itemList) => {
175
- const oldIndex = itemList.findIndex((item) => item._id === active.id);
176
- const newIndex = itemList.findIndex((item) => item._id === over.id);
177
- return arrayMove(itemList, oldIndex, newIndex);
169
+ setItems((items) => {
170
+ const list = items[section];
171
+ const oldIndex = list.findIndex((item) => item._id === active.id);
172
+ const newIndex = list.findIndex((item) => item._id === over.id);
173
+ const newOrder = arrayMove(list, oldIndex, newIndex);
174
+ return { ...items, [section]: newOrder };
178
175
  });
179
176
  }
180
177
  };
@@ -1,5 +1,4 @@
1
1
  export { default as PromoteDashModal } from './PromoteDashModal';
2
- export { default as EditDashboardsModal } from './EditDashboardsModal';
3
2
  export { default as PromoteViewModal } from './PromoteViewModal';
4
3
  export { default as ReorderDashboardModal } from './ReorderDashboardModal';
5
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modals/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modals/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,4 +1,3 @@
1
1
  export { default as PromoteDashModal } from './PromoteDashModal';
2
- export { default as EditDashboardsModal } from './EditDashboardsModal';
3
2
  export { default as PromoteViewModal } from './PromoteViewModal';
4
3
  export { default as ReorderDashboardModal } from './ReorderDashboardModal';
@@ -7,6 +7,8 @@ type ButtonPrimitiveProps = {
7
7
  style?: React.CSSProperties;
8
8
  variant?: 'primary' | 'secondary' | 'danger';
9
9
  };
10
- declare const ButtonPrimitive: React.FC<ButtonPrimitiveProps>;
10
+ declare const ButtonPrimitive: React.FC<ButtonPrimitiveProps & {
11
+ isLoading?: boolean;
12
+ }>;
11
13
  export default ButtonPrimitive;
12
14
  //# sourceMappingURL=ButtonPrimitive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonPrimitive.d.ts","sourceRoot":"","sources":["../../../src/primitives/ButtonPrimitive.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAyB,MAAM,UAAU,CAAC;AAE7D,KAAK,oBAAoB,GAAG;IAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;CAC9C,CAAC;AAEF,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAqEnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"ButtonPrimitive.d.ts","sourceRoot":"","sources":["../../../src/primitives/ButtonPrimitive.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAyB,MAAM,UAAU,CAAC;AAG7D,KAAK,oBAAoB,GAAG;IAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;CAC9C,CAAC;AAEF,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAC7B,oBAAoB,GAAG;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAoFF,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { theme as defaultTheme } from '../Admin';
3
- const ButtonPrimitive = ({ onClick, label, theme = defaultTheme, style, variant = 'primary', }) => {
3
+ import { LoadingSpinner } from '../components/UiComponents';
4
+ const ButtonPrimitive = ({ onClick, isLoading = false, label, theme = defaultTheme, style, variant = 'primary', }) => {
4
5
  if (variant === 'danger') {
5
6
  return (_jsxs("button", { style: {
6
7
  height: 36,
@@ -18,7 +19,7 @@ const ButtonPrimitive = ({ onClick, label, theme = defaultTheme, style, variant
18
19
  paddingLeft: 20,
19
20
  paddingRight: 20,
20
21
  ...style,
21
- }, onClick: onClick, className: "quill--danger-button", children: [_jsx("style", { children: ` .quill--danger-button { background: #e7e7e7 } .quill--danger-button:hover { background: #DCDCDC }` }), label] }));
22
+ }, onClick: onClick, className: "quill--danger-button", children: [_jsx("style", { children: ` .quill--danger-button { background: #e7e7e7 } .quill--danger-button:hover { background: #DCDCDC }` }), isLoading ? (_jsx("div", { style: { padding: '32px 0px' }, children: _jsx(LoadingSpinner, {}) })) : (label)] }));
22
23
  }
23
24
  return (_jsxs("button", { style: {
24
25
  height: 36,
@@ -32,6 +33,7 @@ const ButtonPrimitive = ({ onClick, label, theme = defaultTheme, style, variant
32
33
  fontFamily: theme?.fontFamily,
33
34
  fontWeight: theme?.buttonFontWeight || 600,
34
35
  border: 'none',
36
+ whiteSpace: 'nowrap',
35
37
  fontSize: 14,
36
38
  paddingLeft: 20,
37
39
  paddingRight: 20,
@@ -42,6 +44,6 @@ const ButtonPrimitive = ({ onClick, label, theme = defaultTheme, style, variant
42
44
  }
43
45
  .quill-button:hover {
44
46
  background: rgba(0,0,0,0.75);
45
- }` }), label] }));
47
+ }` }), isLoading ? (_jsx("div", { style: { padding: '0px 16px' }, children: _jsx(LoadingSpinner, {}) })) : (label)] }));
46
48
  };
47
49
  export default ButtonPrimitive;
@@ -4,8 +4,8 @@ const TogglePrimitive = ({ value, onClick }) => {
4
4
  container: {
5
5
  display: 'inline-block',
6
6
  position: 'relative',
7
- width: '70px',
8
- height: '38px',
7
+ width: '50px',
8
+ height: '30px',
9
9
  borderRadius: '24px',
10
10
  backgroundColor: value ? '#212121' : '#ccc',
11
11
  cursor: 'pointer',
@@ -14,9 +14,9 @@ const TogglePrimitive = ({ value, onClick }) => {
14
14
  circle: {
15
15
  position: 'absolute',
16
16
  top: '3px',
17
- left: value ? '35px' : '3px',
18
- width: '32px',
19
- height: '32px',
17
+ left: value ? '23px' : '3px',
18
+ width: '24px',
19
+ height: '24px',
20
20
  borderRadius: '50%',
21
21
  backgroundColor: '#FFF',
22
22
  transition: 'left 0.4s',
@@ -1 +1 @@
1
- {"version":3,"file":"CreateEnvironment.d.ts","sourceRoot":"","sources":["../../../src/public_components/CreateEnvironment.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAuB,MAAM,OAAO,CAAC;AAuClE,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,0BAA0B,EAC1B,cAAc,GACf,EAAE;IACD,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC,2CAqMA"}
1
+ {"version":3,"file":"CreateEnvironment.d.ts","sourceRoot":"","sources":["../../../src/public_components/CreateEnvironment.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAuB,MAAM,OAAO,CAAC;AAuClE,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,0BAA0B,EAC1B,cAAc,GACf,EAAE;IACD,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC,2CAsMA"}
@@ -117,7 +117,7 @@ export default function CreateEnvironment({ navigateToDashboardManager, containe
117
117
  setCreateEnvSteps(updatedSteps);
118
118
  setAllSchemaInfo(schemaDetails);
119
119
  openStep('createSQLViews');
120
- }, allSchemaInfo: allSchemaInfo, environmentDetails: environmentDetails, initialError: initialError, clientId: clientId })) : (_jsx(StepDisplay, { label: "Connect Schema", completed: createEnvSteps.connectSchema.completed, header1Style: header1Style, onClick: () => {
120
+ }, allSchemaInfo: allSchemaInfo, environmentDetails: environmentDetails, initialError: initialError, clientId: clientId, state: state })) : (_jsx(StepDisplay, { label: "Connect Schema", completed: createEnvSteps.connectSchema.completed, header1Style: header1Style, onClick: () => {
121
121
  openStep('connectSchema');
122
122
  setInitialError(undefined);
123
123
  } })), createEnvSteps.createSQLViews.open ? (_jsx(CreateSQLViews, { containerStyle: {
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardBuilder.d.ts","sourceRoot":"","sources":["../../../src/public_components/DashboardBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwC,MAAM,OAAO,CAAC;AAa5E,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,0BAA0B,EAC1B,cAAc,EACd,SAAgB,GACjB,EAAE;IACD,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,2CA8ZA"}
1
+ {"version":3,"file":"DashboardBuilder.d.ts","sourceRoot":"","sources":["../../../src/public_components/DashboardBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwC,MAAM,OAAO,CAAC;AAY5E,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,0BAA0B,EAC1B,cAAc,EACd,SAAgB,GACjB,EAAE;IACD,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,2CAgcA"}
@@ -7,7 +7,6 @@ import { ReportBuilder, SQLEditor } from '@quillsql/react';
7
7
  import { QUILL_SERVER } from '../utils/constants';
8
8
  import Banner from '../components/Banner';
9
9
  import DatabaseMismatchCard from '../components/DatabaseMismatchCard';
10
- import { ButtonPrimitive } from '../primitives';
11
10
  const modeToggleOptions = ['SQL Editor', 'Report Builder'];
12
11
  export default function DashboardBuilder({ navigateToDashboardManager, containerStyle, sqlEditor = true, }) {
13
12
  const parentRef = useRef(null);
@@ -155,7 +154,7 @@ export default function DashboardBuilder({ navigateToDashboardManager, container
155
154
  borderLeftWidth: 0,
156
155
  borderRightWidth: 0,
157
156
  borderStyle: 'solid',
158
- borderColor: state.theme.borderColor,
157
+ borderColor: state.theme?.borderColor,
159
158
  paddingBottom: 20,
160
159
  // boxShadow: "0px 1px 4px 0px rgba(0, 0, 0, 0.07)",
161
160
  // paddingRight: '50px',
@@ -232,7 +231,12 @@ export default function DashboardBuilder({ navigateToDashboardManager, container
232
231
  // and don't refetch when switching back and forth.
233
232
  height: toggleMode === 'Report Builder' ? '100%' : 0,
234
233
  overflow: 'hidden',
235
- }, children: _jsx(ReportBuilder, { admin: true, initialTableName: state.tables.length > 0 && state.tables[0].name, onAddToDashboardComplete: () => {
234
+ }, children: _jsx(ReportBuilder, { isAdminEnabled: true,
235
+ // initialTableName={state.tables.length > 0 && state.tables[0]!.name}
236
+ onSubmitCreateReport: (report) => {
237
+ const dashboard = state.dashboards.find((dash) => {
238
+ return dash.name === report.dashboardName;
239
+ });
236
240
  dispatch({ type: 'SET_ACTIVE_QUERY', payload: '' });
237
241
  dispatch({ type: 'SET_ACTIVE_EDIT_ITEM', payload: null });
238
242
  if (state.navigateToDashboardManager) {
@@ -240,14 +244,41 @@ export default function DashboardBuilder({ navigateToDashboardManager, container
240
244
  type: 'SET_ACTIVE_COMPONENT',
241
245
  payload: 'Dashboards',
242
246
  });
247
+ dispatch({
248
+ type: 'SET_SELECTED_DASHBOARD',
249
+ payload: dashboard,
250
+ });
251
+ state.navigateToDashboardManager();
252
+ }
253
+ }, onSubmitEditReport: (report) => {
254
+ const dashboard = state.dashboards.find((dash) => {
255
+ return dash.name === report.dashboardName;
256
+ });
257
+ dispatch({ type: 'SET_ACTIVE_QUERY', payload: '' });
258
+ dispatch({ type: 'SET_ACTIVE_EDIT_ITEM', payload: null });
259
+ if (state.navigateToDashboardManager) {
260
+ dispatch({
261
+ type: 'SET_ACTIVE_COMPONENT',
262
+ payload: 'Dashboards',
263
+ });
264
+ dispatch({
265
+ type: 'SET_SELECTED_DASHBOARD',
266
+ payload: dashboard,
267
+ });
243
268
  state.navigateToDashboardManager();
244
269
  }
245
270
  }, organizationName: state.organizations.find((org) => {
246
271
  return (org.id && String(org.id) === String(state.organizationId));
247
- })?.name }) }), sqlEditor && !state.databaseTypeMismatch.show && (_jsx("div", { style: {
272
+ })?.name, containerStyle: {
273
+ height: '100%',
274
+ width: '100%',
275
+ } }) }), sqlEditor && !state.databaseTypeMismatch.show && (_jsx("div", { style: {
248
276
  height: toggleMode === 'SQL Editor' ? '100%' : 0,
249
277
  overflow: 'hidden',
250
- }, children: _jsx(SQLEditor, { chartBuilderEnabled: true, showAccessControlOptions: true, showDateFieldOptions: true, showTableFormatOptions: true, defaultQuery: query, isEditMode: !!state.activeQuery, addToDashboardButtonLabel: state.activeQuery ? 'Save changes' : 'Add to dashboard', chartBuilderTitle: state.activeQuery ? 'Save changes' : 'Add to dashboard', dashboardItem: state.activeQuery ? state.activeEditItem : undefined, onAddToDashboardComplete: () => {
278
+ }, children: _jsx(SQLEditor, { isChartBuilderEnabled: true, showAccessControlOptions: true, showDateFieldOptions: true, showTableFormatOptions: true, defaultQuery: query, addToDashboardButtonLabel: state.activeQuery ? 'Save changes' : 'Add to dashboard', chartBuilderTitle: state.activeQuery ? 'Save changes' : 'Add to dashboard', report: state.activeQuery ? state.activeEditItem : undefined, onAddToDashboardComplete: (report) => {
279
+ const dashboard = state.dashboards.find((dash) => {
280
+ return dash.name === report.dashboardName;
281
+ });
251
282
  dispatch({ type: 'SET_ACTIVE_QUERY', payload: '' });
252
283
  dispatch({ type: 'SET_ACTIVE_EDIT_ITEM', payload: null });
253
284
  if (state.navigateToDashboardManager) {
@@ -255,6 +286,10 @@ export default function DashboardBuilder({ navigateToDashboardManager, container
255
286
  type: 'SET_ACTIVE_COMPONENT',
256
287
  payload: 'Dashboards',
257
288
  });
289
+ dispatch({
290
+ type: 'SET_SELECTED_DASHBOARD',
291
+ payload: dashboard,
292
+ });
258
293
  state.navigateToDashboardManager();
259
294
  }
260
295
  }, containerStyle: {
@@ -264,5 +299,5 @@ export default function DashboardBuilder({ navigateToDashboardManager, container
264
299
  // paddingTop: 25,
265
300
  }, organizationName: state.organizations.find((org) => {
266
301
  return (org.id && String(org.id) === String(state.organizationId));
267
- })?.name, ButtonComponent: ButtonPrimitive }) }))] }) }));
302
+ })?.name }) }))] }) }));
268
303
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardManager.d.ts","sourceRoot":"","sources":["../../../src/public_components/DashboardManager.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA+B,MAAM,OAAO,CAAC;AAiCnE,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,0BAA0B,EAC1B,cAAc,GACf,EAAE;IACD,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC,2CAukBA"}
1
+ {"version":3,"file":"DashboardManager.d.ts","sourceRoot":"","sources":["../../../src/public_components/DashboardManager.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA+B,MAAM,OAAO,CAAC;AA0BnE,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,0BAA0B,EAC1B,cAAc,GACf,EAAE;IACD,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC,2CAofA"}
@@ -2,43 +2,37 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { useEffect, useRef, useState } from 'react';
3
3
  import { useAdmin } from '../AdminProvider';
4
4
  import { OrgSelect, EnvSelectPopover, DashboardSelectPopover, } from '../components';
5
- import { EditDashboardsModal, PromoteDashModal, ReorderDashboardModal, } from '../modals';
5
+ import { PromoteDashModal, ReorderDashboardModal } from '../modals';
6
6
  import { Dashboard, useDashboard } from '@quillsql/react';
7
- import { EditFiltersModal, AddFilterModal, AddDashboardModal, ReportWrapper, } from '../Admin';
7
+ import { ReportWrapper } from '../Admin';
8
8
  import { ButtonPrimitive, HeaderPrimitive, ModalPrimitive, SecondaryButtonPrimitive, SelectPrimitive, TextInputPrimitive, } from '../primitives';
9
9
  import { NewDashboardModal } from '../modals/NewDashboardModal';
10
10
  import { QUILL_SERVER } from '../utils/constants';
11
11
  import EmptyDashboardComponent from '../components/EmptyDashboardComponent';
12
12
  import DatabaseMismatchCard from '../components/DatabaseMismatchCard';
13
13
  import { MemoizedModal } from '../components/UiComponents';
14
+ import { QuillSelectComponent } from '../components/QuillSelect';
15
+ import { EditFiltersModal } from '../modals/EditFiltersModal';
14
16
  export default function DashboardManager({ navigateToDashboardBuilder, containerStyle, }) {
15
17
  const { state, dispatch } = useAdmin();
16
18
  const parentRef = useRef(null);
17
19
  const [initialLoad, setInitialLoad] = useState(true);
18
20
  const [dashboards, setDashboards] = useState([]);
19
21
  const [reloadFlag, setReloadFlag] = useState(false);
20
- const [selectedEditDashboard, setSelectedEditDashboard] = useState('');
21
22
  const [selectedReorderDashboard, setSelectedReorderDashboard] = useState('');
22
- const [addFilterModalIsOpen, setAddFilterModalIsOpen] = useState(false);
23
- const [isAddDashboardModalOpen, setIsAddDashboardModalOpen] = useState(false);
24
23
  const [newDashboardModalIsOpen, setNewDashboardModalIsOpen] = useState(false);
25
24
  const [editFilterModalIsOpen, setEditFilterModalIsOpen] = useState(false);
26
- const { reload: reloadDashboard } = useDashboard(state.selectedDashboard);
25
+ const { reload: reloadDashboard } = useDashboard(state.selectedDashboard?.name);
27
26
  const [isReorderDashboardModalOpen, setIsReorderDashboardModalOpen] = useState(false);
28
27
  const [dashboardData, setDashboardData] = useState(null);
29
- // const [activeComponent, setActiveComponent] = useContext(
30
- // ActiveComponentContext
31
- // );
32
- const [isEditDashboardModalOpen, setIsEditDashboardModalOpen] = useState(false);
33
28
  const [isPromoteDashModalOpen, setIsPromoteDashModalOpen] = useState(false);
34
- const [isOpen, setIsOpen] = useState(false);
35
29
  // A useless flag that just turns itself off.
36
30
  useEffect(() => {
37
31
  if (reloadFlag) {
38
32
  setReloadFlag(false);
39
33
  }
40
34
  }, [reloadFlag]);
41
- async function getDashNames() {
35
+ async function getDashNames(dashboardName) {
42
36
  const response = await fetch(`${state.queryEndpoint}`, {
43
37
  method: 'POST',
44
38
  headers: {
@@ -58,20 +52,19 @@ export default function DashboardManager({ navigateToDashboardBuilder, container
58
52
  const data = await response.json();
59
53
  setInitialLoad(false);
60
54
  if (!data.data.dashboardNames || !data.data.dashboardNames.length) {
55
+ dispatch({ type: 'SET_DASHBOARDS', payload: [] });
61
56
  return;
62
57
  }
63
- const dashNames = data.data.dashboardNames.map((elem) => {
64
- if (!elem) {
65
- return { name: 'null' };
66
- }
67
- return { name: elem };
58
+ let selectedDashboard = data.data.dashboards.find((dash) => {
59
+ return dash.name === dashboardName;
68
60
  });
69
- dispatch({ type: 'SET_DASHBOARDS', payload: dashNames });
61
+ if (!selectedDashboard) {
62
+ selectedDashboard = data.data.dashboards[0];
63
+ }
64
+ dispatch({ type: 'SET_DASHBOARDS', payload: data.data.dashboards });
70
65
  dispatch({
71
66
  type: 'SET_SELECTED_DASHBOARD',
72
- payload: dashNames.some((dash) => dash.name === state.selectedDashboard)
73
- ? state.selectedDashboard
74
- : dashNames[0].name,
67
+ payload: selectedDashboard,
75
68
  });
76
69
  }
77
70
  useEffect(() => {
@@ -88,7 +81,7 @@ export default function DashboardManager({ navigateToDashboardBuilder, container
88
81
  useEffect(() => {
89
82
  let isSubscribed = true;
90
83
  if (isSubscribed) {
91
- getDashNames();
84
+ getDashNames(state.selectedDashboard?.name || '');
92
85
  }
93
86
  return () => {
94
87
  isSubscribed = false;
@@ -143,21 +136,10 @@ export default function DashboardManager({ navigateToDashboardBuilder, container
143
136
  }
144
137
  setData(responseData);
145
138
  }
146
- if (state.selectedEditDashboard) {
147
- getDashboardData(state.selectedEditDashboard, (data) => {
148
- dispatch({ type: 'SET_EDIT_DASHBOARD_DATA', payload: data });
149
- });
150
- return;
151
- }
152
139
  if (state.selectedDashboard && state.client) {
153
- getDashboardData(state.selectedDashboard, setDashboardData);
140
+ getDashboardData(state.selectedDashboard.name, setDashboardData);
154
141
  }
155
- }, [
156
- state.selectedDashboard,
157
- state.selectedEditDashboard,
158
- state.organizationId,
159
- state.client,
160
- ]);
142
+ }, [state.selectedDashboard, state.organizationId, state.client]);
161
143
  return (_jsxs("div", { style: containerStyle, children: [_jsxs("div", { style: {
162
144
  display: 'flex',
163
145
  flexDirection: 'column',
@@ -183,7 +165,7 @@ export default function DashboardManager({ navigateToDashboardBuilder, container
183
165
  borderLeftWidth: 0,
184
166
  borderRightWidth: 0,
185
167
  borderStyle: 'solid',
186
- borderColor: state.theme.borderColor,
168
+ borderColor: state.theme?.borderColor,
187
169
  paddingBottom: 20,
188
170
  // boxShadow: "0px 1px 4px 0px rgba(0, 0, 0, 0.07)",
189
171
  // paddingRight: '50px',
@@ -208,17 +190,18 @@ export default function DashboardManager({ navigateToDashboardBuilder, container
208
190
  return { value: elem.name, label: elem.name };
209
191
  })
210
192
  : [], setDashboard: (dashboard) => {
193
+ const selectedDashboard = state.dashboards.find((dash) => {
194
+ return dash.name === dashboard;
195
+ });
211
196
  dispatch({
212
197
  type: 'SET_SELECTED_DASHBOARD',
213
- payload: dashboard,
198
+ payload: selectedDashboard,
214
199
  });
215
- }, dashboard: state.selectedDashboard ? state.selectedDashboard : '', theme: state.theme, onClickNewDashboard: () => {
200
+ }, dashboard: state.selectedDashboard
201
+ ? state.selectedDashboard.name
202
+ : '', theme: state.theme, onClickNewDashboard: () => {
216
203
  setNewDashboardModalIsOpen(true);
217
204
  }, setSelectedEditDashboard: (d) => {
218
- dispatch({
219
- type: 'SET_SELECTED_EDIT_DASHBOARD',
220
- payload: d,
221
- });
222
205
  setEditFilterModalIsOpen(true);
223
206
  } })] })), _jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx("h1", { style: {
224
207
  fontSize: '14px',
@@ -263,64 +246,45 @@ export default function DashboardManager({ navigateToDashboardBuilder, container
263
246
  paddingLeft: 12,
264
247
  borderRadius: 4,
265
248
  cursor: 'pointer',
266
- }, className: "quill-hover-button", children: "Create new dashboard" })] })] }) })), reloadFlag ? null : (_jsx(Dashboard, { name: state.selectedDashboard, containerStyle: { padding: 25 }, onClickDashboardItem: (elem) => {
267
- dispatch({ type: 'SET_REPORT_ID', payload: elem._id });
268
- dispatch({
269
- type: 'SET_ACTIVE_COMPONENT',
270
- payload: 'Report',
271
- });
272
- }, EmptyDashboardComponent: EmptyDashboardComponent }))] }), _jsx(EditDashboardsModal, { clientId: state.client._id, isOpen: isEditDashboardModalOpen, setIsOpen: setIsEditDashboardModalOpen, ModalComponent: ModalPrimitive, ButtonComponent: ButtonPrimitive, SecondaryButtonComponent: SecondaryButtonPrimitive, TextInputComponent: TextInputPrimitive, openEditFilterModal: (dashboardName) => {
273
- dispatch({
274
- type: 'SET_SELECTED_EDIT_DASHBOARD',
275
- payload: dashboardName,
276
- });
277
- setEditFilterModalIsOpen(true);
278
- // setIsEditDashboardModalOpen(false);
279
- }, openAddDashboardModal: () => {
280
- setIsAddDashboardModalOpen(true);
281
- // setIsEditDashboardModalOpen(false);
282
- }, openEditOrderModal: (dashboardName) => {
249
+ }, className: "quill-hover-button", children: "Create new dashboard" })] })] }) })), reloadFlag
250
+ ? null
251
+ : (state.dashboards.length || initialLoad) && (_jsx(Dashboard, { name: state.selectedDashboard?.name, containerStyle: { padding: 25 }, onClickReport: (elem) => {
252
+ dispatch({ type: 'SET_REPORT_ID', payload: elem._id });
253
+ dispatch({
254
+ type: 'SET_ACTIVE_COMPONENT',
255
+ payload: 'Report',
256
+ });
257
+ }, EmptyDashboardComponent: EmptyDashboardComponent }))] }), state.selectedDashboard && (_jsx(PromoteDashModal, { clientId: state.client._id, client: state.client, clients: state.clients, isOpen: isPromoteDashModalOpen, setIsOpen: setIsPromoteDashModalOpen, ModalComponent: ModalPrimitive, dashboards: state.dashboards, selectedDashboard: state.selectedDashboard?.name, theme: state.theme, ButtonComponent: ButtonPrimitive })), state.selectedDashboard && (_jsx(EditFiltersModal, { selectedDashboard: state.selectedDashboard, dashboardData: state.selectedDashboard, isOpen: editFilterModalIsOpen, setIsOpen: setEditFilterModalIsOpen, openEditOrderModal: (dashboardName) => {
283
258
  setSelectedReorderDashboard(dashboardName);
284
259
  setIsReorderDashboardModalOpen(true);
285
- }, HeaderComponent: HeaderPrimitive, setDashboardData: setDashboardData, dashboards: state.dashboards, getDashNames: getDashNames }), _jsx(PromoteDashModal, { clientId: state.client._id, client: state.client, clients: state.clients, isOpen: isPromoteDashModalOpen, setIsOpen: setIsPromoteDashModalOpen, ModalComponent: ModalPrimitive, dashboards: state.dashboards, selectedDashboard: state.selectedDashboard, theme: state.theme, ButtonComponent: ButtonPrimitive }), _jsx(EditFiltersModal, { selectedDashboard: state.selectedDashboard, dashboardData: state.editDashboardData, isOpen: editFilterModalIsOpen, setIsOpen: setEditFilterModalIsOpen, openAddFilterModal: () => {
286
- setAddFilterModalIsOpen(true);
287
- // setEditFilterModalIsOpen(false);
288
- }, openEditOrderModal: (dashboardName) => {
289
- setSelectedReorderDashboard(dashboardName);
290
- setIsReorderDashboardModalOpen(true);
291
- }, onSave: async () => {
292
- await getDashNames();
260
+ }, onSave: async (dashName) => {
261
+ await getDashNames(dashName);
293
262
  setReloadFlag(true);
294
- reloadDashboard();
295
- }, client: state.client, ModalComponent: ModalPrimitive, ButtonComponent: ButtonPrimitive, SecondaryButtonComponent: SecondaryButtonPrimitive, TextInputComponent: TextInputPrimitive, HeaderComponent: HeaderPrimitive, SelectComponent: SelectPrimitive, dashNames: state.dashboards, setSelectedEditDashboard: (d) => dispatch({ type: 'SET_SELECTED_EDIT_DASHBOARD', payload: d }) }), _jsx(NewDashboardModal, { isOpen: newDashboardModalIsOpen, setIsOpen: setNewDashboardModalIsOpen, openEditOrderModal: (dashboardName) => {
263
+ reloadDashboard(dashName);
264
+ }, client: state.client, ModalComponent: ModalPrimitive, ButtonComponent: ButtonPrimitive, SecondaryButtonComponent: SecondaryButtonPrimitive, TextInputComponent: TextInputPrimitive, HeaderComponent: HeaderPrimitive, SelectComponent: QuillSelectComponent, dashNames: state.dashboards })), _jsx(NewDashboardModal, { isOpen: newDashboardModalIsOpen, setIsOpen: setNewDashboardModalIsOpen, openEditOrderModal: (dashboardName) => {
296
265
  setSelectedReorderDashboard(dashboardName);
297
266
  setIsReorderDashboardModalOpen(true);
298
- }, onSave: (name) => {
299
- dispatch({ type: 'SET_SELECTED_DASHBOARD', payload: name });
267
+ }, onSave: (dashboard) => {
268
+ dispatch({
269
+ type: 'SET_SELECTED_DASHBOARD',
270
+ payload: dashboard,
271
+ });
300
272
  dispatch({
301
273
  type: 'SET_DASHBOARDS',
302
- payload: [...state.dashboards, { name }],
274
+ payload: [...state.dashboards, { ...dashboard }],
303
275
  });
304
276
  setReloadFlag(true);
305
- reloadDashboard();
306
- }, client: state.client, ModalComponent: ModalPrimitive, ButtonComponent: ButtonPrimitive, SecondaryButtonComponent: SecondaryButtonPrimitive, TextInputComponent: TextInputPrimitive, HeaderComponent: HeaderPrimitive, SelectComponent: SelectPrimitive, dashNames: state.dashboards, setSelectedEditDashboard: (d) => dispatch({ type: 'SET_SELECTED_EDIT_DASHBOARD', payload: d }) }), _jsx(ReorderDashboardModal, { organizationId: state.organizationId, isOpen: isReorderDashboardModalOpen, client: state.client, onSave: () => {
277
+ reloadDashboard(state.selectedDashboard?.name);
278
+ }, client: state.client, ModalComponent: ModalPrimitive, ButtonComponent: ButtonPrimitive, SecondaryButtonComponent: SecondaryButtonPrimitive, TextInputComponent: TextInputPrimitive, HeaderComponent: HeaderPrimitive, SelectComponent: QuillSelectComponent, dashNames: state.dashboards }), _jsx(ReorderDashboardModal, { organizationId: state.organizationId, isOpen: isReorderDashboardModalOpen, client: state.client, onSave: () => {
307
279
  setReloadFlag(true);
308
- reloadDashboard();
309
- }, setIsOpen: setIsReorderDashboardModalOpen, ModalComponent: ModalPrimitive, ButtonComponent: ButtonPrimitive, selectedDashboard: selectedReorderDashboard }), _jsx(AddFilterModal, { selectedDashboard: state.selectedEditDashboard, isOpen: addFilterModalIsOpen, setIsOpen: setAddFilterModalIsOpen, client: state.client, ModalComponent: ModalPrimitive, TextInputComponent: TextInputPrimitive, SelectComponent: SelectPrimitive, HeaderComponent: HeaderPrimitive, ButtonComponent: ButtonPrimitive, openAddDashboardModal: () => {
310
- setIsAddDashboardModalOpen(true);
311
- // setAddFilterModalIsOpen(false);
312
- } }), _jsx(AddDashboardModal, { selectedDashboard: state.selectedDashboard, isOpen: isAddDashboardModalOpen, setIsOpen: setIsAddDashboardModalOpen, client: state.client, ModalComponent: ModalPrimitive, TextInputComponent: TextInputPrimitive, SelectComponent: SelectPrimitive, HeaderComponent: HeaderPrimitive, ButtonComponent: ButtonPrimitive, dashNames: state.dashboards,
313
- // @ts-ignore
314
- openAddFilterModal: () => {
315
- setAddFilterModalIsOpen(true);
316
- // setIsAddDashboardModalOpen(false);
317
- }, organizationId: state.organizationId, getDashNames: getDashNames })] }))] }), _jsx(ReportWrapper, { isOpen: state.activeComponent === 'Report', setIsOpen: (isOpen) => {
280
+ reloadDashboard(state.selectedDashboard?.name);
281
+ }, setIsOpen: setIsReorderDashboardModalOpen, ModalComponent: ModalPrimitive, ButtonComponent: ButtonPrimitive, selectedDashboard: selectedReorderDashboard })] }))] }), _jsx(ReportWrapper, { isOpen: state.activeComponent === 'Report', setIsOpen: (isOpen) => {
318
282
  dispatch({
319
283
  type: 'SET_ACTIVE_COMPONENT',
320
284
  payload: isOpen ? 'Report' : 'Dashboards',
321
285
  });
322
286
  }, ButtonComponent: ButtonPrimitive, SecondaryButtonComponent: SecondaryButtonPrimitive, ModalComponent: MemoizedModal, SelectComponent: SelectPrimitive, OrganizationSelectComponent: OrgSelect, organizationId: state.organizationId, queryEndpoint: state.queryEndpoint, queryHeaders: state.queryHeaders, withCredentials: state.withCredentials, reloadDashboard: () => {
323
287
  setReloadFlag(true);
324
- reloadDashboard();
288
+ reloadDashboard(state.selectedDashboard?.name);
325
289
  } })] }));
326
290
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SQLViewManager.d.ts","sourceRoot":"","sources":["../../../src/public_components/SQLViewManager.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA+B,MAAM,OAAO,CAAC;AA0BnE,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,cAAc,GACf,EAAE;IACD,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC,2CA8VA"}
1
+ {"version":3,"file":"SQLViewManager.d.ts","sourceRoot":"","sources":["../../../src/public_components/SQLViewManager.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA+B,MAAM,OAAO,CAAC;AAyBnE,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,cAAc,GACf,EAAE;IACD,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC,2CAgaA"}