@quillsql/react 2.12.3 → 2.12.4

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 (53) hide show
  1. package/dist/cjs/Chart.d.ts.map +1 -1
  2. package/dist/cjs/Chart.js +2 -0
  3. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  4. package/dist/cjs/ChartBuilder.js +21 -30
  5. package/dist/cjs/Context.d.ts +1 -0
  6. package/dist/cjs/Context.d.ts.map +1 -1
  7. package/dist/cjs/Context.js +58 -30
  8. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  9. package/dist/cjs/ReportBuilder.js +14 -60
  10. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  11. package/dist/cjs/SQLEditor.js +12 -26
  12. package/dist/cjs/Table.d.ts.map +1 -1
  13. package/dist/cjs/Table.js +2 -0
  14. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  15. package/dist/cjs/components/Dashboard/DataLoader.js +4 -0
  16. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  17. package/dist/cjs/hooks/useQuill.js +2 -0
  18. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  19. package/dist/cjs/internals/ReportBuilder/PivotModal.js +2 -1
  20. package/dist/cjs/utils/schema.d.ts +6 -0
  21. package/dist/cjs/utils/schema.d.ts.map +1 -0
  22. package/dist/cjs/utils/schema.js +118 -0
  23. package/dist/cjs/utils/tableProcessing.d.ts +1 -1
  24. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  25. package/dist/cjs/utils/tableProcessing.js +5 -3
  26. package/dist/cjs/utils/valueFormatter.js +1 -1
  27. package/dist/esm/Chart.d.ts.map +1 -1
  28. package/dist/esm/Chart.js +3 -1
  29. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  30. package/dist/esm/ChartBuilder.js +21 -30
  31. package/dist/esm/Context.d.ts +1 -0
  32. package/dist/esm/Context.d.ts.map +1 -1
  33. package/dist/esm/Context.js +57 -29
  34. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  35. package/dist/esm/ReportBuilder.js +15 -61
  36. package/dist/esm/SQLEditor.d.ts.map +1 -1
  37. package/dist/esm/SQLEditor.js +13 -27
  38. package/dist/esm/Table.d.ts.map +1 -1
  39. package/dist/esm/Table.js +3 -1
  40. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  41. package/dist/esm/components/Dashboard/DataLoader.js +5 -1
  42. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  43. package/dist/esm/hooks/useQuill.js +3 -1
  44. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  45. package/dist/esm/internals/ReportBuilder/PivotModal.js +3 -2
  46. package/dist/esm/utils/schema.d.ts +6 -0
  47. package/dist/esm/utils/schema.d.ts.map +1 -0
  48. package/dist/esm/utils/schema.js +113 -0
  49. package/dist/esm/utils/tableProcessing.d.ts +1 -1
  50. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  51. package/dist/esm/utils/tableProcessing.js +5 -3
  52. package/dist/esm/utils/valueFormatter.js +1 -1
  53. package/package.json +1 -1
@@ -0,0 +1,113 @@
1
+ const parseResponse = (results) => {
2
+ if (results.data?.data) {
3
+ if (results.data.data.queries &&
4
+ results.data.data.queries.queryResults.length > 0) {
5
+ return results.data.data.queries.queryResults;
6
+ }
7
+ else {
8
+ return results.data.data.tables;
9
+ }
10
+ }
11
+ else {
12
+ if (results.queries &&
13
+ results.queries.queryResults &&
14
+ results.queries.queryResults.length > 0) {
15
+ return results.queries.queryResults;
16
+ }
17
+ else {
18
+ return results.data.tables;
19
+ }
20
+ }
21
+ };
22
+ export const getCustomFieldInfo = async (client, caller = 'se') => {
23
+ let customFieldsByTableUnique = [];
24
+ try {
25
+ const { queryEndpoint, queryHeaders, publicKey, databaseType, customerId } = client;
26
+ let response = await fetch(`${queryEndpoint}?cfr-${caller}`, {
27
+ method: 'POST',
28
+ headers: {
29
+ ...queryHeaders,
30
+ 'Content-Type': 'application/json',
31
+ },
32
+ body: JSON.stringify({
33
+ metadata: {
34
+ clientId: publicKey,
35
+ publicKey,
36
+ task: 'custom-field-records',
37
+ databaseType: databaseType,
38
+ orgId: customerId,
39
+ },
40
+ }),
41
+ });
42
+ let result = await response.json();
43
+ const extractedData = parseResponse(result);
44
+ const customFieldsByTable = [];
45
+ extractedData.forEach((table) => {
46
+ if (!table.rows) {
47
+ return;
48
+ }
49
+ table.rows.forEach((row) => {
50
+ customFieldsByTable.push({
51
+ ref_table: row.ref_table,
52
+ field: row.field,
53
+ ref_column: row.ref_column,
54
+ type: row.type,
55
+ });
56
+ });
57
+ });
58
+ // make sure the are no duplicate records in extractedData
59
+ const customFieldsByTableSet = new Set();
60
+ customFieldsByTableUnique = customFieldsByTable.filter((item) => {
61
+ if (customFieldsByTableSet.has(item.ref_table + item.field + item.ref_column + item.type)) {
62
+ return false;
63
+ }
64
+ customFieldsByTableSet.add(item.ref_table + item.field + item.ref_column + item.type);
65
+ return true;
66
+ });
67
+ }
68
+ catch (e) {
69
+ console.error('CUSTOM FIELDS DISABLED');
70
+ }
71
+ return customFieldsByTableUnique;
72
+ };
73
+ export const getSchemaInfoWithCustomFields = async (client, caller = 'se') => {
74
+ const { queryEndpoint, queryHeaders, publicKey, databaseType, customerId } = client;
75
+ let customFieldsByTableUnique = [];
76
+ let getCustomFields = true;
77
+ if (!customerId || customerId !== '*') {
78
+ try {
79
+ customFieldsByTableUnique = await getCustomFieldInfo(client, caller);
80
+ }
81
+ catch (e) {
82
+ getCustomFields = false;
83
+ }
84
+ }
85
+ const response = await fetch(`${queryEndpoint}?schema-${caller}`, {
86
+ method: 'POST',
87
+ headers: {
88
+ ...queryHeaders,
89
+ 'Content-Type': 'application/json',
90
+ },
91
+ body: JSON.stringify({
92
+ metadata: {
93
+ clientId: publicKey,
94
+ publicKey: publicKey,
95
+ task: 'schema',
96
+ removeCustomerField: true,
97
+ getCustomFields: !client.customerId ||
98
+ client.customerId === '*' ||
99
+ (customFieldsByTableUnique.length === 0 && !getCustomFields)
100
+ ? false
101
+ : true,
102
+ orgId: client.customerId || '*',
103
+ customFieldsByTable: customFieldsByTableUnique,
104
+ gatherSchemaData: true,
105
+ },
106
+ }),
107
+ });
108
+ const result = await response.json();
109
+ return {
110
+ schemaData: parseResponse(result),
111
+ customFieldsByTable: customFieldsByTableUnique,
112
+ };
113
+ };
@@ -1,6 +1,6 @@
1
1
  import { Column } from '../models/Columns';
2
2
  export declare const hasColumnAlias: (columns: Column[], referencedColumns: string[]) => boolean;
3
- export declare const getUniqueValuesByColumns: (columns: Column[], query: string, rows: any, client: any) => Promise<{
3
+ export declare const getUniqueValuesByColumns: (columns: Column[], query: string, rows: any, client: any, customFields: any[]) => Promise<{
4
4
  [column: string]: {
5
5
  [value: string]: boolean;
6
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,eAAO,MAAM,cAAc,YAChB,MAAM,EAAE,qBACE,MAAM,EAAE,KAC1B,OAUF,CAAC;AAEF,eAAO,MAAM,wBAAwB,YAC1B,MAAM,EAAE,SACV,MAAM,QACP,GAAG,UACD,GAAG;;;;SA2DZ,CAAC"}
1
+ {"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,eAAO,MAAM,cAAc,YAChB,MAAM,EAAE,qBACE,MAAM,EAAE,KAC1B,OAUF,CAAC;AAEF,eAAO,MAAM,wBAAwB,YAC1B,MAAM,EAAE,SACV,MAAM,QACP,GAAG,UACD,GAAG,gBACG,GAAG,EAAE;;;;SA6DpB,CAAC"}
@@ -11,7 +11,7 @@ export const hasColumnAlias = (columns, referencedColumns) => {
11
11
  }
12
12
  return false;
13
13
  };
14
- export const getUniqueValuesByColumns = async (columns, query, rows, client) => {
14
+ export const getUniqueValuesByColumns = async (columns, query, rows, client, customFields) => {
15
15
  const stringNames = columns.map((column) => column.field);
16
16
  const uniqueValues = {};
17
17
  if (!client.databaseType ||
@@ -24,6 +24,7 @@ export const getUniqueValuesByColumns = async (columns, query, rows, client) =>
24
24
  orgId: client.customerId || '*',
25
25
  clientId: client.publicKey,
26
26
  databaseType: client?.databaseType,
27
+ customFieldsByTable: customFields,
27
28
  },
28
29
  };
29
30
  const cloudBody = { query };
@@ -46,7 +47,7 @@ export const getUniqueValuesByColumns = async (columns, query, rows, client) =>
46
47
  }
47
48
  else {
48
49
  const distinctValueQuery = generateDistinctQuery(stringNames, query);
49
- const distinctStrings = await fetchDistinctStrings(distinctValueQuery, client);
50
+ const distinctStrings = await fetchDistinctStrings(distinctValueQuery, client, customFields);
50
51
  if (!distinctStrings) {
51
52
  return {};
52
53
  }
@@ -56,7 +57,7 @@ export const getUniqueValuesByColumns = async (columns, query, rows, client) =>
56
57
  }
57
58
  return uniqueValues;
58
59
  };
59
- const fetchDistinctStrings = async (query, client) => {
60
+ const fetchDistinctStrings = async (query, client, customFields) => {
60
61
  try {
61
62
  const hostedBody = {
62
63
  metadata: {
@@ -65,6 +66,7 @@ const fetchDistinctStrings = async (query, client) => {
65
66
  orgId: client.customerId || '*',
66
67
  clientId: client.publicKey,
67
68
  databaseType: client?.databaseType,
69
+ customFieldsByTable: customFields,
68
70
  },
69
71
  };
70
72
  const cloudBody = { query };
@@ -100,7 +100,7 @@ export const quillFormat = ({ value, format, }) => {
100
100
  */
101
101
  const formatString = (value) => {
102
102
  if (value === null || value === undefined) {
103
- return 'null';
103
+ return '-';
104
104
  }
105
105
  if (typeof value === 'object') {
106
106
  return JSON.stringify(value);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quillsql/react",
3
- "version": "2.12.3",
3
+ "version": "2.12.4",
4
4
  "exports": {
5
5
  ".": {
6
6
  "import": "./dist/esm/index.js",