@quillsql/admin 1.3.7 → 1.3.9

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 (153) hide show
  1. package/dist/cjs/Admin.d.ts +0 -5
  2. package/dist/cjs/Admin.d.ts.map +1 -1
  3. package/dist/cjs/Admin.js +56 -108
  4. package/dist/cjs/AdminProvider.d.ts +9 -5
  5. package/dist/cjs/AdminProvider.d.ts.map +1 -1
  6. package/dist/cjs/AdminProvider.js +73 -84
  7. package/dist/cjs/api/ConnectionClient.d.ts +12 -10
  8. package/dist/cjs/api/ConnectionClient.d.ts.map +1 -1
  9. package/dist/cjs/api/ConnectionClient.js +102 -30
  10. package/dist/cjs/assets/ArrowDownHeadIcon.d.ts +5 -0
  11. package/dist/cjs/assets/ArrowDownHeadIcon.d.ts.map +1 -0
  12. package/dist/cjs/assets/ArrowDownHeadIcon.js +5 -0
  13. package/dist/cjs/assets/XIcon.d.ts +5 -0
  14. package/dist/cjs/assets/XIcon.d.ts.map +1 -0
  15. package/dist/cjs/assets/XIcon.js +5 -0
  16. package/dist/cjs/assets/index.d.ts +3 -0
  17. package/dist/cjs/assets/index.d.ts.map +1 -0
  18. package/dist/cjs/assets/index.js +10 -0
  19. package/dist/cjs/components/DatabaseMismatchCard.d.ts +6 -0
  20. package/dist/cjs/components/DatabaseMismatchCard.d.ts.map +1 -0
  21. package/dist/cjs/components/DatabaseMismatchCard.js +18 -0
  22. package/dist/cjs/components/DatabaseSelector.d.ts +2 -1
  23. package/dist/cjs/components/DatabaseSelector.d.ts.map +1 -1
  24. package/dist/cjs/components/DatabaseSelector.js +2 -2
  25. package/dist/cjs/components/DropDownMenuWithLabel.d.ts +2 -1
  26. package/dist/cjs/components/DropDownMenuWithLabel.d.ts.map +1 -1
  27. package/dist/cjs/components/DropDownMenuWithLabel.js +160 -39
  28. package/dist/cjs/components/DynamicBanner.d.ts +11 -0
  29. package/dist/cjs/components/DynamicBanner.d.ts.map +1 -0
  30. package/dist/cjs/components/DynamicBanner.js +22 -0
  31. package/dist/cjs/components/EnvSelectPopover.d.ts.map +1 -1
  32. package/dist/cjs/components/EnvSelectPopover.js +0 -1
  33. package/dist/cjs/components/OrgSelect.d.ts +23 -0
  34. package/dist/cjs/components/OrgSelect.d.ts.map +1 -1
  35. package/dist/cjs/components/OrgSelect.js +55 -15
  36. package/dist/cjs/components/SqlTextEditor.d.ts +7 -0
  37. package/dist/cjs/components/SqlTextEditor.d.ts.map +1 -0
  38. package/dist/cjs/components/SqlTextEditor.js +44 -0
  39. package/dist/cjs/components/UiComponents.d.ts +119 -0
  40. package/dist/cjs/components/UiComponents.d.ts.map +1 -0
  41. package/dist/cjs/components/UiComponents.js +268 -0
  42. package/dist/cjs/forms/client_onboard/ConnectDatabase.d.ts +3 -2
  43. package/dist/cjs/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
  44. package/dist/cjs/forms/client_onboard/ConnectDatabase.js +101 -43
  45. package/dist/cjs/forms/client_onboard/ConnectSchema.d.ts +3 -1
  46. package/dist/cjs/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
  47. package/dist/cjs/forms/client_onboard/ConnectSchema.js +13 -14
  48. package/dist/cjs/forms/client_onboard/CreateSqlViews.d.ts +10 -1
  49. package/dist/cjs/forms/client_onboard/CreateSqlViews.d.ts.map +1 -1
  50. package/dist/cjs/forms/client_onboard/CreateSqlViews.js +13 -13
  51. package/dist/cjs/forms/sql_views/CreateEditSqlView.d.ts +23 -0
  52. package/dist/cjs/forms/sql_views/CreateEditSqlView.d.ts.map +1 -0
  53. package/dist/cjs/forms/sql_views/CreateEditSqlView.js +161 -0
  54. package/dist/cjs/modals/NewDashboardModal.js +1 -1
  55. package/dist/cjs/primitives/TextInputPrimitive.d.ts +1 -0
  56. package/dist/cjs/primitives/TextInputPrimitive.d.ts.map +1 -1
  57. package/dist/cjs/primitives/TextInputPrimitive.js +2 -2
  58. package/dist/cjs/public_components/CreateEnvironment.d.ts.map +1 -1
  59. package/dist/cjs/public_components/CreateEnvironment.js +34 -8
  60. package/dist/cjs/public_components/DashboardBuilder.d.ts.map +1 -1
  61. package/dist/cjs/public_components/DashboardBuilder.js +30 -16
  62. package/dist/cjs/public_components/DashboardManager.d.ts.map +1 -1
  63. package/dist/cjs/public_components/DashboardManager.js +114 -104
  64. package/dist/cjs/public_components/SQLViewManager.d.ts.map +1 -1
  65. package/dist/cjs/public_components/SQLViewManager.js +252 -333
  66. package/dist/cjs/utils/dataEditor.d.ts +4 -0
  67. package/dist/cjs/utils/dataEditor.d.ts.map +1 -0
  68. package/dist/cjs/utils/dataEditor.js +144 -0
  69. package/dist/cjs/utils/dataFetcher.d.ts +3 -0
  70. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -0
  71. package/dist/cjs/utils/dataFetcher.js +68 -0
  72. package/dist/cjs/utils/databases.d.ts +13 -2
  73. package/dist/cjs/utils/databases.d.ts.map +1 -1
  74. package/dist/cjs/utils/databases.js +52 -9
  75. package/dist/cjs/utils/table.d.ts +2 -0
  76. package/dist/cjs/utils/table.d.ts.map +1 -1
  77. package/dist/esm/Admin.d.ts +0 -5
  78. package/dist/esm/Admin.d.ts.map +1 -1
  79. package/dist/esm/Admin.js +56 -107
  80. package/dist/esm/AdminProvider.d.ts +9 -5
  81. package/dist/esm/AdminProvider.d.ts.map +1 -1
  82. package/dist/esm/AdminProvider.js +71 -85
  83. package/dist/esm/api/ConnectionClient.d.ts +12 -10
  84. package/dist/esm/api/ConnectionClient.d.ts.map +1 -1
  85. package/dist/esm/api/ConnectionClient.js +99 -29
  86. package/dist/esm/assets/ArrowDownHeadIcon.d.ts +5 -0
  87. package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +1 -0
  88. package/dist/esm/assets/ArrowDownHeadIcon.js +3 -0
  89. package/dist/esm/assets/XIcon.d.ts +5 -0
  90. package/dist/esm/assets/XIcon.d.ts.map +1 -0
  91. package/dist/esm/assets/XIcon.js +3 -0
  92. package/dist/esm/assets/index.d.ts +3 -0
  93. package/dist/esm/assets/index.d.ts.map +1 -0
  94. package/dist/esm/assets/index.js +2 -0
  95. package/dist/esm/components/DatabaseMismatchCard.d.ts +6 -0
  96. package/dist/esm/components/DatabaseMismatchCard.d.ts.map +1 -0
  97. package/dist/esm/components/DatabaseMismatchCard.js +15 -0
  98. package/dist/esm/components/DatabaseSelector.d.ts +2 -1
  99. package/dist/esm/components/DatabaseSelector.d.ts.map +1 -1
  100. package/dist/esm/components/DatabaseSelector.js +2 -2
  101. package/dist/esm/components/DropDownMenuWithLabel.d.ts +2 -1
  102. package/dist/esm/components/DropDownMenuWithLabel.d.ts.map +1 -1
  103. package/dist/esm/components/DropDownMenuWithLabel.js +137 -39
  104. package/dist/esm/components/DynamicBanner.d.ts +11 -0
  105. package/dist/esm/components/DynamicBanner.d.ts.map +1 -0
  106. package/dist/esm/components/DynamicBanner.js +16 -0
  107. package/dist/esm/components/EnvSelectPopover.d.ts.map +1 -1
  108. package/dist/esm/components/EnvSelectPopover.js +0 -1
  109. package/dist/esm/components/OrgSelect.d.ts +23 -0
  110. package/dist/esm/components/OrgSelect.d.ts.map +1 -1
  111. package/dist/esm/components/OrgSelect.js +52 -16
  112. package/dist/esm/components/SqlTextEditor.d.ts +7 -0
  113. package/dist/esm/components/SqlTextEditor.d.ts.map +1 -0
  114. package/dist/esm/components/SqlTextEditor.js +38 -0
  115. package/dist/esm/components/UiComponents.d.ts +119 -0
  116. package/dist/esm/components/UiComponents.d.ts.map +1 -0
  117. package/dist/esm/components/UiComponents.js +254 -0
  118. package/dist/esm/forms/client_onboard/ConnectDatabase.d.ts +3 -2
  119. package/dist/esm/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
  120. package/dist/esm/forms/client_onboard/ConnectDatabase.js +102 -44
  121. package/dist/esm/forms/client_onboard/ConnectSchema.d.ts +3 -1
  122. package/dist/esm/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
  123. package/dist/esm/forms/client_onboard/ConnectSchema.js +13 -14
  124. package/dist/esm/forms/client_onboard/CreateSqlViews.d.ts +10 -1
  125. package/dist/esm/forms/client_onboard/CreateSqlViews.d.ts.map +1 -1
  126. package/dist/esm/forms/client_onboard/CreateSqlViews.js +12 -14
  127. package/dist/esm/forms/sql_views/CreateEditSqlView.d.ts +23 -0
  128. package/dist/esm/forms/sql_views/CreateEditSqlView.d.ts.map +1 -0
  129. package/dist/esm/forms/sql_views/CreateEditSqlView.js +155 -0
  130. package/dist/esm/modals/NewDashboardModal.js +1 -1
  131. package/dist/esm/primitives/TextInputPrimitive.d.ts +1 -0
  132. package/dist/esm/primitives/TextInputPrimitive.d.ts.map +1 -1
  133. package/dist/esm/primitives/TextInputPrimitive.js +2 -2
  134. package/dist/esm/public_components/CreateEnvironment.d.ts.map +1 -1
  135. package/dist/esm/public_components/CreateEnvironment.js +12 -9
  136. package/dist/esm/public_components/DashboardBuilder.d.ts.map +1 -1
  137. package/dist/esm/public_components/DashboardBuilder.js +30 -16
  138. package/dist/esm/public_components/DashboardManager.d.ts.map +1 -1
  139. package/dist/esm/public_components/DashboardManager.js +115 -105
  140. package/dist/esm/public_components/SQLViewManager.d.ts.map +1 -1
  141. package/dist/esm/public_components/SQLViewManager.js +254 -335
  142. package/dist/esm/utils/dataEditor.d.ts +4 -0
  143. package/dist/esm/utils/dataEditor.d.ts.map +1 -0
  144. package/dist/esm/utils/dataEditor.js +138 -0
  145. package/dist/esm/utils/dataFetcher.d.ts +3 -0
  146. package/dist/esm/utils/dataFetcher.d.ts.map +1 -0
  147. package/dist/esm/utils/dataFetcher.js +63 -0
  148. package/dist/esm/utils/databases.d.ts +13 -2
  149. package/dist/esm/utils/databases.d.ts.map +1 -1
  150. package/dist/esm/utils/databases.js +52 -9
  151. package/dist/esm/utils/table.d.ts +2 -0
  152. package/dist/esm/utils/table.d.ts.map +1 -1
  153. package/package.json +2 -2
package/dist/esm/Admin.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  // @ts-nocheck
3
3
  import { useState, useEffect } from 'react';
4
- import { QuillProvider, useQuill, Chart, Table, SQLEditor, AddToDashboardModal, ChartEditor, useDashboard, } from '@quillsql/react';
4
+ import { QuillProvider, useQuill, Chart, ChartEditor, useDashboard, QuillTable, } from '@quillsql/react';
5
5
  import prismTheme from 'prism-react-renderer/themes/nightOwlLight';
6
6
  import Highlight, { defaultProps } from 'prism-react-renderer';
7
7
  import { DndContext, closestCenter, KeyboardSensor, PointerSensor, useSensor, useSensors, MeasuringStrategy, TouchSensor, } from '@dnd-kit/core';
@@ -16,6 +16,7 @@ import DashboardBuilder from './public_components/DashboardBuilder';
16
16
  import SQLViewManager from './public_components/SQLViewManager';
17
17
  import { InitialDateRangeOptions, QUILL_SERVER, defaultDateRange, } from './utils/constants';
18
18
  import TogglePrimitive from './primitives/TogglePrimitive';
19
+ // chartColors: ["#6269E9", "#E14F62"],
19
20
  const defaultTheme = {
20
21
  fontFamily: 'Inter; Helvetica',
21
22
  backgroundColor: '#FFFFFF',
@@ -24,7 +25,6 @@ const defaultTheme = {
24
25
  chartLabelFontFamily: 'Inter; Helvetica',
25
26
  chartLabelColor: '#666666',
26
27
  chartTickColor: '#CCCCCC',
27
- // chartColors: ["#6269E9", "#E14F62"],
28
28
  borderColor: '#E5E7EB',
29
29
  primaryButtonColor: '#364153',
30
30
  borderWidth: 1,
@@ -55,7 +55,7 @@ export function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, cli
55
55
  setIsDateComparison(!!state.dateFilter?.comparison ?? false);
56
56
  }, [state.dateFilter]);
57
57
  useEffect(() => {
58
- if (state.tables.length) {
58
+ if (state.tables?.length) {
59
59
  const defaultTable = state.tables[0];
60
60
  const name = state.editDashboardData?.filters[0]?.table;
61
61
  const table = state.tables.find((t) => t.name === name) ?? defaultTable;
@@ -72,7 +72,7 @@ export function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, cli
72
72
  }
73
73
  }, [dashboardData]);
74
74
  const handleAddFilter = async () => {
75
- setNewFilters([...newFilters, { label: '', field }]);
75
+ setNewFilters([...newFilters, { label: '' }]);
76
76
  };
77
77
  const handleSubmitDashboardChanges = async () => {
78
78
  if (!selectedDashboardName ||
@@ -88,9 +88,10 @@ export function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, cli
88
88
  return;
89
89
  }
90
90
  const updatedFilters = newFilters.map((filter) => {
91
- const filterType = getPostgresBasicType(selectedTable.columns.find((col) => col.name === filter.field));
91
+ const table = state.tables.find((table) => table.name === filter.table);
92
+ const filterType = getPostgresBasicType(table.columns.find((col) => col.name === filter.field));
92
93
  return {
93
- table: selectedTable.name,
94
+ table: filter.table,
94
95
  field: filter.field,
95
96
  labelField: filter.field,
96
97
  label: filter.label,
@@ -135,12 +136,15 @@ export function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, cli
135
136
  const body = {
136
137
  newDashboardName: selectedDashboardName,
137
138
  filters: updatedFilters,
138
- dateFilter: newDateFilter ? {
139
- ...newDateFilter,
140
- comparison: isDateComparison,
141
- primaryRange: initialRange,
142
- } : null,
139
+ dateFilter: newDateFilter
140
+ ? {
141
+ ...newDateFilter,
142
+ comparison: isDateComparison,
143
+ primaryRange: initialRange,
144
+ }
145
+ : null,
143
146
  name: selectedDashboard,
147
+ databaseType: state.client.databaseType,
144
148
  };
145
149
  dispatch({ type: 'SET_DATE_FILTER', payload: body.dateFilter });
146
150
  const headers = {
@@ -180,7 +184,10 @@ export function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, cli
180
184
  await fetch(URL, {
181
185
  method: 'DELETE',
182
186
  headers: { 'Content-Type': 'application/json' },
183
- body: JSON.stringify({ clientId: client._id }),
187
+ body: JSON.stringify({
188
+ clientId: client._id,
189
+ databaseType: state.client.databaseType,
190
+ }),
184
191
  });
185
192
  setIsOpen(false);
186
193
  setNewFilters([]);
@@ -282,13 +289,22 @@ export function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, cli
282
289
  ? { ...otherFilter, label: e.target.value }
283
290
  : otherFilter);
284
291
  setNewFilters(updatedFilters);
285
- } })] }), _jsxs("div", { style: {
292
+ }, width: "230px" })] }), _jsxs("div", { style: {
286
293
  display: 'flex',
287
294
  flexDirection: 'column',
288
295
  maxWidth: 300,
289
- }, children: [index === 0 && _jsx(InputLabel, { children: "Table" }), _jsx(SelectComponent, { defaultValue: "", value: selectedTable ? selectedTable.name : '', onChange: (e) => setSelectedTable(state.tables.find((table) => table.name === e)), options: state.tables.map((table) => {
290
- return { label: table.name, value: table.name };
291
- }) })] }), _jsxs("div", { style: {
296
+ }, children: [index === 0 && _jsx(InputLabel, { children: "Table" }), _jsx(SelectComponent, { defaultValue: "", value: filter.table, onChange: (e) => {
297
+ const updatedFilters = newFilters.map((otherFilter, i) => index === i
298
+ ? { ...otherFilter, table: e }
299
+ : otherFilter);
300
+ setNewFilters(updatedFilters);
301
+ }, options: [
302
+ { label: 'Select', value: '' },
303
+ ...state.tables.map((table) => {
304
+ return { label: table.name, value: table.name };
305
+ }),
306
+ ,
307
+ ] })] }), _jsxs("div", { style: {
292
308
  display: 'flex',
293
309
  flexDirection: 'column',
294
310
  maxWidth: 300,
@@ -300,7 +316,9 @@ export function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, cli
300
316
  display: 'flex',
301
317
  flexDirection: 'row',
302
318
  alignItems: 'center',
303
- }, children: [_jsx(SelectComponent, { defaultValue: "", value: filter && filter.field ? filter.field : '', options: selectedTable?.columns.map((column) => {
319
+ }, children: [_jsx(SelectComponent, { defaultValue: "", value: filter && filter.field ? filter.field : '', options: state.tables
320
+ .find((table) => table.name === filter.table)
321
+ ?.columns.map((column) => {
304
322
  return {
305
323
  label: column.name,
306
324
  value: column.name,
@@ -317,7 +335,7 @@ export function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, cli
317
335
  justifyContent: 'center',
318
336
  display: 'flex',
319
337
  cursor: 'pointer',
320
- }, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "#4C5462", width: "20", height: "20", children: _jsx("path", { fillRule: "evenodd", d: "M5.47 5.47a.75.75 0 011.06 0L12 10.94l5.47-5.47a.75.75 0 111.06 1.06L13.06 12l5.47 5.47a.75.75 0 11-1.06 1.06L12 13.06l-5.47 5.47a.75.75 0 01-1.06-1.06L10.94 12 5.47 6.53a.75.75 0 010-1.06z", clipRule: "evenodd" }) }) })] }) })] })] }));
338
+ }, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "#4C5462", width: "20", height: "20", children: _jsx("path", { fillRule: "evenodd", d: "M5.47 5.47a.75.75 0 011.06 0L12 10.94l5.47-5.47a.75.75 0 111.06 1.06L13.06 12l5.47 5.47a.75.75 0 11-1.06 1.06L12 13.06l-5.47 5.47a.75.75 0 01-1.06-1.06L10.94 12 5.47 6.53a.75.75 0 010-1.06z", clipRule: "evenodd" }) }) })] }) })] })] }, index));
321
339
  }) })), _jsx("div", { style: { height: 12 } }), _jsx(SecondaryButtonComponent, { onClick: handleAddFilter, label: "Add filter +" })] }), _jsx(CardSection, { children: "Chart order" }), _jsx("div", { style: { maxWidth: 230 }, children: _jsx(SecondaryButtonComponent, { onClick: () => openEditOrderModal(selectedDashboardName), label: "Edit chart order" }) }), _jsx(CardSection, { children: "Danger Zone" }), _jsx("div", { style: { maxWidth: 230 }, children: _jsx(SecondaryButtonComponent, { onClick: handleDeleteDashboard, label: "Delete Dashboard" }) }), _jsx("div", { style: { height: 18 } }), _jsx("div", { style: { maxWidth: 230 }, children: _jsx(ButtonComponent, { onClick: handleSubmitDashboardChanges, label: "Save changes" }) })] }) }));
322
340
  }
323
341
  export function AddFilterModal({ isOpen, selectedDashboard, client, setIsOpen, ModalComponent, TextInputComponent, SelectComponent, HeaderComponent, ButtonComponent, openAddDashboardModal, }) {
@@ -328,7 +346,7 @@ export function AddFilterModal({ isOpen, selectedDashboard, client, setIsOpen, M
328
346
  const [dateRange, setDateRange] = useState([new Date(), new Date()]);
329
347
  const { state, dispatch } = useAdmin();
330
348
  useEffect(() => {
331
- if (state.tables.length) {
349
+ if (state.tables?.length) {
332
350
  setSelectedTable(state.tables[0]);
333
351
  // setField(tables[0].columns.map((elem) => elem.name));
334
352
  setField(state.tables[0].columns[0].name);
@@ -532,6 +550,7 @@ export const theme = {
532
550
  borderWidth: 1,
533
551
  primaryButtonColor: '#212121',
534
552
  primaryButtonTextColor: '#FFFFFF',
553
+ hoverBackgroundColor: '#F4F4F5',
535
554
  };
536
555
  export function convertPostgresColumn(column) {
537
556
  let format;
@@ -625,7 +644,7 @@ export function AddDashboardModal({ selectedDashboard, isOpen, setIsOpen, client
625
644
  const [newFilters, setNewFilters] = useState([]);
626
645
  const [newDateFilter, setNewDateFilter] = useState(null);
627
646
  useEffect(() => {
628
- if (state.tables.length) {
647
+ if (state.tables?.length) {
629
648
  setSelectedTable(state.tables[0]);
630
649
  // setField(tables[0].columns.map((elem) => elem.name));
631
650
  setField(state.tables[0].columns[0].name);
@@ -785,7 +804,7 @@ export function TableCell({ table, clickTableCell }) {
785
804
  minWidth: '540px',
786
805
  maxWidth: '540px',
787
806
  cursor: 'pointer',
788
- }, children: [_jsx("div", { style: { display: 'flex', flexDirection: 'row', alignItems: 'center' }, children: _jsx("h3", { style: { color: '#384151' }, children: table.displayName }) }), _jsx(Highlight, { ...defaultProps, theme: prismTheme, code: table.viewQuery, language: "sql", children: ({ className, style, tokens, getLineProps, getTokenProps }) => (_jsx("pre", { className: className, style: {
807
+ }, children: [_jsx("div", { style: { display: 'flex', flexDirection: 'row', alignItems: 'center' }, children: _jsx("h3", { style: { color: '#384151' }, children: table.displayName }) }), _jsx(Highlight, { ...defaultProps, theme: prismTheme, code: table?.viewQuery || '', language: "sql", children: ({ className, style, tokens, getLineProps, getTokenProps }) => (_jsx("pre", { className: className, style: {
789
808
  ...style,
790
809
  textAlign: 'left',
791
810
  margin: '1em 0',
@@ -795,50 +814,8 @@ export function TableCell({ table, clickTableCell }) {
795
814
  maxWidth: 520,
796
815
  // lineHeight: "1.3em",
797
816
  // height: "1.3em",
798
- }, children: tokens.map((line, i) => (_jsx("div", { ...getLineProps({ line, key: i }), children: line.map((token, key) => (_jsx("span", { ...getTokenProps({ token, key }) }, key))) }, i))) })) })] }, table.displayName));
817
+ }, children: tokens.map((line, i) => (_jsx("div", { ...getLineProps({ line, key: i }), children: line.map((token, key) => (_jsx("span", { ...getTokenProps({ token, key }) }, key))) }, i))) })) })] }, table._id));
799
818
  }
800
- export const SQLEditorComponent = ({ query, setQuery,
801
- // handleRunQuery,
802
- theme,
803
- // defineEditorTheme,
804
- // setEditorTheme,
805
- }) => {
806
- const [isOpen, setIsOpen] = useState(false);
807
- const [rows, setRows] = useState([]);
808
- const [columns, setColumns] = useState([]);
809
- const [fields, setFields] = useState([]);
810
- // const [activeQuery] = useContext(ActiveQueryContext);
811
- const { state, dispatch } = useAdmin();
812
- return (_jsxs("div", { style: {
813
- background: theme.backgroundColor,
814
- // maxHeight: 700,
815
- // width: "100%",
816
- minWidth: 450,
817
- // overflowY: "scroll",
818
- // padding: "20px 30px 20px 20px",
819
- // marginLeft: 20,
820
- borderRadius: 6,
821
- overflow: 'hidden',
822
- }, children: [_jsx(SQLEditor, { containerStyle: { height: 'calc(100vh - 270px)', width: '100%' }, onChangeQuery: (query) => setQuery(query), onChangeData: (data) => setRows(data), onChangeColumns: (columns) => setColumns(columns), onChangeFields: (fields) => setFields(fields), defaultQuery: state.activeQuery ? state.activeQuery : '' }), rows.length > 0 && (_jsx("button", { style: {
823
- height: 36,
824
- marginLeft: 250,
825
- marginTop: 20,
826
- background: theme.primaryButtonColor,
827
- color: theme.backgroundColor,
828
- display: 'flex',
829
- borderRadius: 6,
830
- alignItems: 'center',
831
- justifyContent: 'center',
832
- outline: 'none',
833
- cursor: 'pointer',
834
- fontFamily: theme.fontFamily,
835
- fontWeight: theme.buttonFontWeight || 600,
836
- border: 'none',
837
- fontSize: 14,
838
- paddingLeft: 20,
839
- paddingRight: 20,
840
- }, onClick: () => setIsOpen(true), children: "Add to dashboard" })), _jsx(AddToDashboardModal, { isOpen: isOpen, setIsOpen: setIsOpen, rows: rows, columns: columns, query: query, showTableFormatQuillOptions: true, showDateFieldQuillOptions: true, showAccessControlQuillOptions: true, fields: fields })] }));
841
- };
842
819
  const SchemaListComponent = ({ schema, theme }) => {
843
820
  return (_jsx("div", { style: {
844
821
  background: theme.backgroundColor,
@@ -1016,33 +993,6 @@ const FORMAT_QuillOptionS = [
1016
993
  function Report({ reportId, saveDashboardItem, isOpen, setIsOpen, isEditQueryOpen, SecondaryButtonComponent, ButtonComponent, deleteReport, updateQuery, OrganizationSelectComponent, ModalComponent, NavigateToDashboardBuilder, }) {
1017
994
  const { data, loading, error } = useQuill(reportId);
1018
995
  const { state, dispatch } = useAdmin();
1019
- const downloadCSV = () => {
1020
- // report.rows
1021
- if (!data) {
1022
- return;
1023
- }
1024
- const json = data.rows; // JSON data passed as a prop
1025
- const fields = Object.keys(json[0]); // Assumes all objects have same keys
1026
- const csvRows = [];
1027
- // Header row
1028
- csvRows.push(fields.join(','));
1029
- // Data rows
1030
- for (let row of json) {
1031
- let values = fields.map((field) => JSON.stringify(row[field] || ''));
1032
- csvRows.push(values.join(','));
1033
- }
1034
- // Create CSV string and create a 'blob' with it
1035
- const csvString = csvRows.join('\r\n');
1036
- const csvBlob = new Blob([csvString], { type: 'text/csv' });
1037
- // Create a download link and click it
1038
- const downloadLink = document.createElement('a');
1039
- downloadLink.download = 'download.csv';
1040
- downloadLink.href = URL.createObjectURL(csvBlob);
1041
- downloadLink.style.display = 'none';
1042
- document.body.appendChild(downloadLink);
1043
- downloadLink.click();
1044
- document.body.removeChild(downloadLink);
1045
- };
1046
996
  const goBack = () => {
1047
997
  // setActiveComponent("Dashboards");
1048
998
  dispatch({ type: 'SET_ACTIVE_COMPONENT', payload: 'Dashboards' });
@@ -1119,13 +1069,15 @@ function Report({ reportId, saveDashboardItem, isOpen, setIsOpen, isEditQueryOpe
1119
1069
  dispatch({ type: 'SET_ACTIVE_QUERY', payload: data.queryString });
1120
1070
  dispatch({ type: 'SET_ACTIVE_EDIT_ITEM', payload: data });
1121
1071
  state.navigateToDashboardBuilder();
1122
- } })), _jsx(SecondaryButtonComponent, { label: "Delete", onClick: deleteReport })] }), data.chartType !== 'table' && (_jsx(Table, { containerStyle: { height: 400, width: '100%', marginTop: 24 }, chartId: reportId })), _jsx(EditVisualizationModal, { isOpen: isOpen, setIsOpen: setIsOpen, report: data, isEditMode: !!state.activeQuery, data: data.rows, query: data.queryString, columns: data.columns, fields: data.fields })] }));
1072
+ } })), _jsx(SecondaryButtonComponent, { label: "Delete", onClick: deleteReport })] }), data.chartType !== 'table' && (_jsx(QuillTable, { containerStyle: { height: 400, width: '100%', marginTop: 24 }, rows: data.rows, columns: data.columns, showDownloadCSVButton: true })), _jsx(EditVisualizationModal, { isOpen: isOpen, setIsOpen: setIsOpen, report: data, isEditMode: !!state.activeQuery, data: data.rows, query: data.queryString, columns: data.columns, fields: data.fields, state: state, goBack: goBack })] }));
1123
1073
  }
1124
- function EditVisualizationModal({ isOpen, setIsOpen, report, data, isEditMode, }) {
1074
+ function EditVisualizationModal({ isOpen, setIsOpen, report, data, isEditMode, state, goBack, }) {
1125
1075
  if (!report && !data?.length) {
1126
1076
  return null;
1127
1077
  }
1128
- return (_jsx(_Fragment, { children: isOpen && (_jsxs("div", { className: "inset-0 overflow-y-auto relative", style: { zIndex: 120 }, children: [_jsx("div", { className: "absolute inset-0 bg-black/30", "aria-hidden": "true", onClick: () => setIsOpen(false) }), _jsx("div", { className: "flex min-h-full items-center justify-center p-4", children: _jsx("div", { className: "bg-white px-7 py-7 rounded-lg", children: _jsx(ChartEditor, { isOpen: isOpen, setIsOpen: setIsOpen, isEditMode: isEditMode, chartId: report._id, admin: true }) }) })] })) }));
1078
+ return (_jsx(_Fragment, { children: isOpen && (_jsxs("div", { className: "inset-0 overflow-y-auto relative", style: { zIndex: 120 }, children: [_jsx("div", { className: "absolute inset-0 bg-black/30", "aria-hidden": "true", onClick: () => setIsOpen(false) }), _jsx("div", { className: "flex min-h-full items-center justify-center p-4", children: _jsx("div", { className: "bg-white px-7 py-7 rounded-lg", children: _jsx(ChartEditor, { isOpen: isOpen, setIsOpen: setIsOpen, isEditMode: isEditMode, chartId: report._id, admin: true, organizationName: state.organizations.find((org) => {
1079
+ return (org.id && String(org.id) === String(state.organizationId));
1080
+ })?.name, onDelete: goBack }) }) })] })) }));
1129
1081
  }
1130
1082
  export function ReportWrapper({ SecondaryButtonComponent, ButtonComponent, ModalComponent, SelectComponent, OrganizationSelectComponent, organizationId, queryEndpoint, queryHeaders, withCredentials, }) {
1131
1083
  const { state, dispatch } = useAdmin();
@@ -1147,8 +1099,9 @@ export function ReportWrapper({ SecondaryButtonComponent, ButtonComponent, Modal
1147
1099
  metadata: {
1148
1100
  task: 'edit_query',
1149
1101
  id: state.reportId,
1102
+ databaseType: state.client.databaseType,
1150
1103
  query,
1151
- ...(organizationId && { orgId: organizationId }),
1104
+ orgId: organizationId || '*',
1152
1105
  },
1153
1106
  }),
1154
1107
  credentials: withCredentials ? 'include' : 'omit',
@@ -1205,18 +1158,13 @@ export function ReportWrapper({ SecondaryButtonComponent, ButtonComponent, Modal
1205
1158
  'Content-Type': 'application/json',
1206
1159
  },
1207
1160
  body: JSON.stringify({
1208
- metadata: organizationId
1209
- ? {
1210
- orgId: organizationId,
1211
- task: 'delete',
1212
- dashboardItemId: state.reportId,
1213
- clientId: state.client._id,
1214
- }
1215
- : {
1216
- task: 'delete',
1217
- dashboardItemId: state.reportId,
1218
- clientId: state.client._id,
1219
- },
1161
+ metadata: {
1162
+ orgId: organizationId || '*',
1163
+ task: 'delete',
1164
+ dashboardItemId: state.reportId,
1165
+ clientId: state.client._id,
1166
+ databaseType: state.client.databaseType,
1167
+ },
1220
1168
  }),
1221
1169
  credentials: withCredentials ? 'include' : 'omit', // If withCredentials is true, set to 'include'. Otherwise, set to 'omit'.
1222
1170
  });
@@ -1226,6 +1174,7 @@ export function ReportWrapper({ SecondaryButtonComponent, ButtonComponent, Modal
1226
1174
  const url = `${QUILL_SERVER}/deletedash/${state.client._id}/${organizationId}/`;
1227
1175
  const requestBody = {
1228
1176
  dashboardItemId: state.reportId,
1177
+ databaseType: state.client.databaseType,
1229
1178
  };
1230
1179
  const response = await fetch(url, {
1231
1180
  method: 'POST',
@@ -28,6 +28,10 @@ interface State {
28
28
  navigateToDashboardManager?: () => void;
29
29
  navigateToDashboardBuilder?: () => void;
30
30
  domainName?: string;
31
+ databaseTypeMismatch: {
32
+ show: boolean;
33
+ backendDatabaseType: string;
34
+ };
31
35
  }
32
36
  type Action = {
33
37
  type: 'SET_LOADING';
@@ -53,9 +57,6 @@ type Action = {
53
57
  } | {
54
58
  type: 'SET_ENVIRONMENT';
55
59
  payload: string;
56
- } | {
57
- type: 'SET_ORGANIZATION';
58
- payload: any;
59
60
  } | {
60
61
  type: 'SET_ORGANIZATIONS';
61
62
  payload: any[];
@@ -105,8 +106,11 @@ type Action = {
105
106
  type: 'SET_NAVIGATE_TO_DASHBOARD_BUILDER';
106
107
  payload: () => void;
107
108
  } | {
108
- type: 'SET_ORGANIZATION_ID_SET';
109
- payload: boolean;
109
+ type: 'SET_DATABASE_TYPE_MISMATCH';
110
+ payload: {
111
+ show: boolean;
112
+ backendDatabaseType: string;
113
+ };
110
114
  };
111
115
  declare const useAdmin: () => {
112
116
  state: State;
@@ -1 +1 @@
1
- {"version":3,"file":"AdminProvider.d.ts","sourceRoot":"","sources":["../../src/AdminProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AdminProvider.d.ts","sourceRoot":"","sources":["../../src/AdminProvider.tsx"],"names":[],"mappings":"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"}