@oneuptime/common 11.7.2 → 11.7.3

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 (60) hide show
  1. package/Models/AnalyticsModels/KubernetesCostAllocation.ts +103 -0
  2. package/Models/DatabaseModels/TableView.ts +40 -0
  3. package/Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.ts +13 -0
  4. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
  5. package/Tests/Models/AnalyticsModels/KubernetesCostAllocation.test.ts +16 -0
  6. package/Tests/Types/JSONFunctions.test.ts +103 -1
  7. package/Tests/UI/Components/ModelTable/BaseModelTableColumnCustomization.test.tsx +679 -0
  8. package/Tests/UI/Components/ModelTable/ColumnCustomizationModal.test.tsx +572 -0
  9. package/Tests/UI/Components/ModelTable/ColumnPreference.test.ts +1678 -0
  10. package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +1094 -0
  11. package/Tests/Utils/UserPreferences.test.ts +563 -0
  12. package/Types/JSONFunctions.ts +7 -2
  13. package/Types/Kubernetes/KubernetesCostIngest.ts +37 -1
  14. package/UI/Components/MasterPage/MasterPage.tsx +65 -0
  15. package/UI/Components/ModelTable/BaseModelTable.tsx +387 -4
  16. package/UI/Components/ModelTable/Column.ts +17 -0
  17. package/UI/Components/ModelTable/ColumnCustomizationModal.tsx +420 -0
  18. package/UI/Components/ModelTable/ColumnPreference.ts +482 -0
  19. package/UI/Components/ModelTable/CustomFieldColumns.tsx +326 -0
  20. package/UI/Components/ModelTable/TableView.tsx +24 -2
  21. package/UI/Components/ModelTable/useCustomFieldColumns.ts +150 -0
  22. package/UI/Components/SideMenu/SideMenu.tsx +24 -4
  23. package/UI/Components/Table/Table.tsx +14 -1
  24. package/UI/Components/Table/TableRow.tsx +180 -175
  25. package/UI/Components/Table/Types/Column.ts +2 -0
  26. package/Utils/UserPreferences.ts +53 -0
  27. package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js +86 -0
  28. package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js.map +1 -1
  29. package/build/dist/Models/DatabaseModels/TableView.js +40 -0
  30. package/build/dist/Models/DatabaseModels/TableView.js.map +1 -1
  31. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.js +12 -0
  32. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.js.map +1 -0
  33. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
  34. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  35. package/build/dist/Types/JSONFunctions.js +8 -3
  36. package/build/dist/Types/JSONFunctions.js.map +1 -1
  37. package/build/dist/Types/Kubernetes/KubernetesCostIngest.js.map +1 -1
  38. package/build/dist/UI/Components/MasterPage/MasterPage.js +50 -1
  39. package/build/dist/UI/Components/MasterPage/MasterPage.js.map +1 -1
  40. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +239 -7
  41. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  42. package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js +189 -0
  43. package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js.map +1 -0
  44. package/build/dist/UI/Components/ModelTable/ColumnPreference.js +258 -0
  45. package/build/dist/UI/Components/ModelTable/ColumnPreference.js.map +1 -0
  46. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js +168 -0
  47. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js.map +1 -0
  48. package/build/dist/UI/Components/ModelTable/TableView.js +13 -2
  49. package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
  50. package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js +84 -0
  51. package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js.map +1 -0
  52. package/build/dist/UI/Components/SideMenu/SideMenu.js +15 -5
  53. package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
  54. package/build/dist/UI/Components/Table/Table.js +15 -2
  55. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  56. package/build/dist/UI/Components/Table/TableRow.js +11 -6
  57. package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
  58. package/build/dist/Utils/UserPreferences.js +33 -0
  59. package/build/dist/Utils/UserPreferences.js.map +1 -1
  60. package/package.json +1 -1
@@ -0,0 +1,258 @@
1
+ export const EmptyColumnPreference = {
2
+ order: [],
3
+ hidden: [],
4
+ };
5
+ const slugify = (value) => {
6
+ return value
7
+ .toLowerCase()
8
+ .replace(/[^a-z0-9]+/g, "-")
9
+ .replace(/^-+|-+$/g, "");
10
+ };
11
+ /*
12
+ * The identity a column would have if no other column competed for it. An
13
+ * explicit `id` always wins; otherwise it is the field the column reads,
14
+ * which is the one thing about a column that survives re-ordering, renaming
15
+ * and re-styling. `selectedProperty` is part of it so that every custom field
16
+ * on one JSON column gets its own id ("customFields.Severity").
17
+ */
18
+ export const getColumnBaseId = (column) => {
19
+ if (column.id) {
20
+ return column.id;
21
+ }
22
+ const fieldKey = column.field
23
+ ? Object.keys(column.field)[0]
24
+ : undefined;
25
+ if (fieldKey) {
26
+ return column.selectedProperty
27
+ ? `${fieldKey}.${column.selectedProperty}`
28
+ : fieldKey;
29
+ }
30
+ return slugify(column.title || "") || "column";
31
+ };
32
+ /*
33
+ * Ids for a whole column set, in declaration order and guaranteed unique.
34
+ *
35
+ * Collisions are real and common: a table often carries several cells that
36
+ * render from `getElement` off the same placeholder `field: { _id: true }`.
37
+ * Those are disambiguated by title first (stable, and what the viewer
38
+ * actually sees in the picker) and only then by position, which is the one
39
+ * part that can shift when a column is inserted. A shifted id is harmless -
40
+ * it simply reads as a new column, so it defaults to visible.
41
+ */
42
+ export const getColumnIds = (columns) => {
43
+ const baseIds = columns.map((column) => {
44
+ return getColumnBaseId(column);
45
+ });
46
+ const baseIdCounts = {};
47
+ for (const baseId of baseIds) {
48
+ baseIdCounts[baseId] = (baseIdCounts[baseId] || 0) + 1;
49
+ }
50
+ const candidateIds = columns.map((column, index) => {
51
+ const baseId = baseIds[index];
52
+ if ((baseIdCounts[baseId] || 0) < 2) {
53
+ return baseId;
54
+ }
55
+ const titleSlug = slugify(column.title || "");
56
+ return titleSlug ? `${baseId}:${titleSlug}` : baseId;
57
+ });
58
+ const usedIds = {};
59
+ const ids = [];
60
+ for (const candidateId of candidateIds) {
61
+ const timesUsed = usedIds[candidateId] || 0;
62
+ usedIds[candidateId] = timesUsed + 1;
63
+ ids.push(timesUsed === 0 ? candidateId : `${candidateId}#${timesUsed + 1}`);
64
+ }
65
+ return ids;
66
+ };
67
+ const isHiddenByDefault = (column) => {
68
+ return Boolean(column.isHiddenByDefault) && !column.isNotCustomizable;
69
+ };
70
+ /*
71
+ * The picker's model: every column the viewer may act on, already in the
72
+ * order they arranged them, each tagged with whether it is currently on.
73
+ *
74
+ * Pinned columns keep their declared position rather than being dragged
75
+ * around by a stale layout - they are not in the picker, so the viewer has no
76
+ * way to put them back if a persisted `order` moved them.
77
+ */
78
+ export const getCustomizableColumns = (data) => {
79
+ const { columns, preference } = data;
80
+ const ids = getColumnIds(columns);
81
+ const entries = columns.map((column, index) => {
82
+ const id = ids[index];
83
+ const isPinned = Boolean(column.isNotCustomizable);
84
+ let isVisible = !isHiddenByDefault(column);
85
+ if (preference && !isPinned) {
86
+ if (preference.hidden.includes(id)) {
87
+ isVisible = false;
88
+ }
89
+ else if (preference.order.includes(id)) {
90
+ /*
91
+ * The viewer has arranged this column at least once and did not
92
+ * put it in `hidden`, so it is on - even if the table now ships it
93
+ * hidden by default.
94
+ */
95
+ isVisible = true;
96
+ }
97
+ }
98
+ return { id, column, isVisible, isPinned };
99
+ });
100
+ if (!preference || preference.order.length === 0) {
101
+ return entries;
102
+ }
103
+ const orderIndexById = {};
104
+ preference.order.forEach((id, index) => {
105
+ if (orderIndexById[id] === undefined) {
106
+ orderIndexById[id] = index;
107
+ }
108
+ });
109
+ /*
110
+ * A column the layout does not mention keeps its declared neighbours: it
111
+ * sorts just after the last arranged column that precedes it in the
112
+ * declaration, so a newly shipped column appears where its author put it
113
+ * rather than being swept to the end.
114
+ */
115
+ const sortKeys = [];
116
+ let lastKnownOrderIndex = -1;
117
+ entries.forEach((entry) => {
118
+ const knownIndex = entry.isPinned
119
+ ? undefined
120
+ : orderIndexById[entry.id];
121
+ if (knownIndex !== undefined) {
122
+ lastKnownOrderIndex = knownIndex;
123
+ sortKeys.push(knownIndex);
124
+ return;
125
+ }
126
+ sortKeys.push(lastKnownOrderIndex + 0.5);
127
+ });
128
+ return entries
129
+ .map((entry, index) => {
130
+ return { entry, key: sortKeys[index], at: index };
131
+ })
132
+ .sort((a, b) => {
133
+ // Stable: equal keys keep declaration order.
134
+ return a.key === b.key ? a.at - b.at : a.key - b.key;
135
+ })
136
+ .map((item) => {
137
+ return item.entry;
138
+ });
139
+ };
140
+ /*
141
+ * The column set the table should actually render. Refuses to return an empty
142
+ * set: a layout that hides everything would replace the table with an empty
143
+ * shell the viewer cannot get out of, so it falls back to showing everything.
144
+ */
145
+ export const applyColumnPreference = (data) => {
146
+ const entries = getCustomizableColumns(data);
147
+ const visible = entries
148
+ .filter((entry) => {
149
+ return entry.isVisible;
150
+ })
151
+ .map((entry) => {
152
+ return entry.column;
153
+ });
154
+ if (visible.length === 0) {
155
+ return entries.map((entry) => {
156
+ return entry.column;
157
+ });
158
+ }
159
+ return visible;
160
+ };
161
+ /*
162
+ * The inverse of getCustomizableColumns: turn what the picker is showing back
163
+ * into something storable. Pinned columns are left out entirely - they are
164
+ * not the viewer's to arrange, so recording them would only create entries
165
+ * that go stale when a table stops pinning a column.
166
+ */
167
+ export const buildColumnPreference = (entries) => {
168
+ const order = [];
169
+ const hidden = [];
170
+ for (const entry of entries) {
171
+ if (entry.isPinned) {
172
+ continue;
173
+ }
174
+ order.push(entry.id);
175
+ if (!entry.isVisible) {
176
+ hidden.push(entry.id);
177
+ }
178
+ }
179
+ return { order, hidden };
180
+ };
181
+ /*
182
+ * Drop everything that no longer names a column on this table. A stored
183
+ * layout outlives the release that produced it, so it routinely mentions
184
+ * columns that have since been renamed, removed, or - for custom fields -
185
+ * deleted from the project.
186
+ */
187
+ export const sanitizeColumnPreference = (data) => {
188
+ const { preference, knownColumnIds } = data;
189
+ if (!preference) {
190
+ return null;
191
+ }
192
+ const known = new Set(knownColumnIds);
193
+ const keep = (ids) => {
194
+ const seen = new Set();
195
+ return ids.filter((id) => {
196
+ if (!known.has(id) || seen.has(id)) {
197
+ return false;
198
+ }
199
+ seen.add(id);
200
+ return true;
201
+ });
202
+ };
203
+ const sanitized = {
204
+ order: keep(preference.order),
205
+ hidden: keep(preference.hidden),
206
+ };
207
+ if (sanitized.order.length === 0 && sanitized.hidden.length === 0) {
208
+ return null;
209
+ }
210
+ return sanitized;
211
+ };
212
+ export const isEmptyColumnPreference = (preference) => {
213
+ return Boolean(!preference ||
214
+ (preference.order.length === 0 && preference.hidden.length === 0));
215
+ };
216
+ // A layout that changes nothing is stored as nothing.
217
+ export const toJSON = (preference) => {
218
+ if (isEmptyColumnPreference(preference)) {
219
+ return null;
220
+ }
221
+ return {
222
+ order: [...preference.order],
223
+ hidden: [...preference.hidden],
224
+ };
225
+ };
226
+ /*
227
+ * Read a stored layout back. Anything on the way in is untrusted - it may
228
+ * have been hand-edited in devtools or written by an older release - so each
229
+ * list is validated on its own and a malformed one degrades to empty instead
230
+ * of taking the other down with it.
231
+ */
232
+ export const fromJSON = (json) => {
233
+ if (!json || typeof json !== "object" || Array.isArray(json)) {
234
+ return null;
235
+ }
236
+ const readIds = (value) => {
237
+ if (!Array.isArray(value)) {
238
+ return [];
239
+ }
240
+ const seen = new Set();
241
+ return value.filter((entry) => {
242
+ if (typeof entry !== "string" || entry.length === 0 || seen.has(entry)) {
243
+ return false;
244
+ }
245
+ seen.add(entry);
246
+ return true;
247
+ });
248
+ };
249
+ const preference = {
250
+ order: readIds(json["order"]),
251
+ hidden: readIds(json["hidden"]),
252
+ };
253
+ if (isEmptyColumnPreference(preference)) {
254
+ return null;
255
+ }
256
+ return preference;
257
+ };
258
+ //# sourceMappingURL=ColumnPreference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnPreference.js","sourceRoot":"","sources":["../../../../../UI/Components/ModelTable/ColumnPreference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,168 @@
1
+ import FieldType from "../Types/FieldType";
2
+ import CustomFieldType from "../../../Types/CustomField/CustomFieldType";
3
+ import React from "react";
4
+ export const CustomFieldsColumnKey = "customFields";
5
+ /*
6
+ * Dropdown options are stored as one option per line, the same format the
7
+ * settings page writes.
8
+ */
9
+ export const parseDropdownOptions = (value) => {
10
+ if (typeof value !== "string" || !value) {
11
+ return [];
12
+ }
13
+ return value
14
+ .split("\n")
15
+ .map((line) => {
16
+ return line.trim();
17
+ })
18
+ .filter((line) => {
19
+ return line.length > 0;
20
+ });
21
+ };
22
+ /*
23
+ * Normalise whatever the definition API returned into a plain, sorted list.
24
+ *
25
+ * Sorting matters: the definition models carry no ordering column and the
26
+ * list endpoint is queried with an empty sort, so Postgres is free to hand
27
+ * back a different order on every request. Without a deterministic order
28
+ * here, a viewer's saved column layout would appear to shuffle itself
29
+ * between page loads.
30
+ */
31
+ export const getCustomFieldDefinitions = (items) => {
32
+ const definitions = [];
33
+ const seenNames = new Set();
34
+ for (const item of items || []) {
35
+ const name = item === null || item === void 0 ? void 0 : item["name"];
36
+ if (typeof name !== "string" || name.trim().length === 0) {
37
+ continue;
38
+ }
39
+ const trimmedName = name.trim();
40
+ if (seenNames.has(trimmedName)) {
41
+ continue;
42
+ }
43
+ seenNames.add(trimmedName);
44
+ const description = item["description"];
45
+ const customFieldType = item["customFieldType"];
46
+ const dropdownOptions = item["dropdownOptions"];
47
+ definitions.push({
48
+ name: trimmedName,
49
+ description: typeof description === "string" ? description : undefined,
50
+ customFieldType: typeof customFieldType === "string"
51
+ ? customFieldType
52
+ : undefined,
53
+ dropdownOptions: typeof dropdownOptions === "string" ? dropdownOptions : undefined,
54
+ });
55
+ }
56
+ return definitions.sort((a, b) => {
57
+ return a.name.localeCompare(b.name);
58
+ });
59
+ };
60
+ export const getCustomFieldValue = (item, name) => {
61
+ const customFields = item === null || item === void 0 ? void 0 : item[CustomFieldsColumnKey];
62
+ if (!customFields || typeof customFields !== "object") {
63
+ return undefined;
64
+ }
65
+ return customFields[name];
66
+ };
67
+ const badge = (data) => {
68
+ return (React.createElement("span", { key: data.key, className: "inline-flex items-center gap-x-1.5 px-2 py-1 rounded-md bg-indigo-50 text-indigo-700 text-xs font-medium ring-1 ring-inset ring-indigo-700/10" },
69
+ React.createElement("svg", { className: "h-1.5 w-1.5 fill-indigo-500", viewBox: "0 0 6 6", "aria-hidden": "true" },
70
+ React.createElement("circle", { cx: 3, cy: 3, r: 3 })),
71
+ data.label));
72
+ };
73
+ export const renderCustomFieldValue = (data) => {
74
+ var _a;
75
+ const { value, definition } = data;
76
+ const noValueMessage = (_a = data.noValueMessage) !== null && _a !== void 0 ? _a : "-";
77
+ const empty = (React.createElement("span", { className: "text-gray-400" }, noValueMessage));
78
+ if (value === undefined || value === null || value === "") {
79
+ return empty;
80
+ }
81
+ if (definition.customFieldType === CustomFieldType.Boolean) {
82
+ /*
83
+ * A boolean custom field renders "No" rather than falling into the empty
84
+ * branch above - `false` is a real answer, not a missing one.
85
+ */
86
+ const isTrue = value === true || value === "true";
87
+ return (React.createElement("span", { className: isTrue
88
+ ? "inline-flex items-center px-2 py-1 rounded-md bg-green-50 text-green-700 text-xs font-medium ring-1 ring-inset ring-green-600/20"
89
+ : "inline-flex items-center px-2 py-1 rounded-md bg-gray-50 text-gray-600 text-xs font-medium ring-1 ring-inset ring-gray-500/10" }, isTrue ? "Yes" : "No"));
90
+ }
91
+ if (definition.customFieldType === CustomFieldType.MultiSelectDropdown) {
92
+ /*
93
+ * Tolerant on the way out: an older single-select value that was later
94
+ * switched to multi-select is still a bare string in the JSON.
95
+ */
96
+ const values = Array.isArray(value) ? value : [value];
97
+ const labels = values
98
+ .filter((entry) => {
99
+ return entry !== undefined && entry !== null && entry !== "";
100
+ })
101
+ .map((entry) => {
102
+ return String(entry);
103
+ });
104
+ if (labels.length === 0) {
105
+ return empty;
106
+ }
107
+ return (React.createElement("div", { className: "flex flex-wrap gap-1.5" }, labels.map((label, index) => {
108
+ return badge({ label, key: `${label}-${index}` });
109
+ })));
110
+ }
111
+ if (definition.customFieldType === CustomFieldType.Dropdown) {
112
+ return badge({ label: String(value), key: String(value) });
113
+ }
114
+ if (Array.isArray(value)) {
115
+ return React.createElement("span", null, value.join(", "));
116
+ }
117
+ if (typeof value === "object") {
118
+ return React.createElement("span", null, JSON.stringify(value));
119
+ }
120
+ return React.createElement("span", null, String(value));
121
+ };
122
+ /*
123
+ * Custom field columns default to hidden. A project is free to define a dozen
124
+ * of them, and turning every one on by default would push the columns the
125
+ * table was designed around off the side of the screen the first time anyone
126
+ * opens it. They are all listed in the column picker, one click away.
127
+ */
128
+ export const getCustomFieldColumns = (data) => {
129
+ const isHidden = data.isHiddenByDefault !== false;
130
+ return (data.definitions || []).map((definition) => {
131
+ return {
132
+ id: `${CustomFieldsColumnKey}.${definition.name}`,
133
+ field: {
134
+ [CustomFieldsColumnKey]: true,
135
+ },
136
+ selectedProperty: definition.name,
137
+ title: definition.name,
138
+ description: definition.description,
139
+ type: FieldType.Element,
140
+ /*
141
+ * See the file header: sorting a jsonb key is not something the
142
+ * query path can express.
143
+ */
144
+ disableSort: true,
145
+ isHiddenByDefault: isHidden,
146
+ getExportValue: (item) => {
147
+ const value = getCustomFieldValue(item, definition.name);
148
+ if (value === undefined || value === null) {
149
+ return "";
150
+ }
151
+ if (Array.isArray(value)) {
152
+ return value.join(", ");
153
+ }
154
+ if (typeof value === "object") {
155
+ return JSON.stringify(value);
156
+ }
157
+ return String(value);
158
+ },
159
+ getElement: (item) => {
160
+ return renderCustomFieldValue({
161
+ value: getCustomFieldValue(item, definition.name),
162
+ definition: definition,
163
+ });
164
+ },
165
+ };
166
+ });
167
+ };
168
+ //# sourceMappingURL=CustomFieldColumns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomFieldColumns.js","sourceRoot":"","sources":["../../../../../UI/Components/ModelTable/CustomFieldColumns.tsx"],"names":[],"mappings":"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"}
@@ -49,6 +49,7 @@ const TableViewElement = (props) => {
49
49
  query: true,
50
50
  name: true,
51
51
  facets: true,
52
+ columns: true,
52
53
  },
53
54
  sort: {
54
55
  name: SortOrder.Ascending,
@@ -129,6 +130,13 @@ const TableViewElement = (props) => {
129
130
  return false;
130
131
  }));
131
132
  const hasActiveFilters = hasQueryFilters || hasFacetState;
133
+ /*
134
+ * A customized column layout is worth saving on its own - "the columns I
135
+ * care about, in my order" is a view even when nothing is filtered.
136
+ */
137
+ const hasColumnLayout = Boolean(props.currentColumns &&
138
+ Object.keys(props.currentColumns).length > 0);
139
+ const hasSavableState = hasActiveFilters || hasColumnLayout;
132
140
  const getMenuContents = () => {
133
141
  if (isLoading) {
134
142
  return [React.createElement(BarLoader, { key: -1, color: "var(--ou-link, #4f46e5)" })];
@@ -137,7 +145,7 @@ const TableViewElement = (props) => {
137
145
  if (allTableViews.length > 0) {
138
146
  elements.push(React.createElement(MoreMenuSection, { title: "Saved Views" }, getViewItems()));
139
147
  }
140
- if (hasActiveFilters) {
148
+ if (hasSavableState) {
141
149
  elements.push(React.createElement(MoreMenuItem, { key: "save-new-view", text: "Save as New View", className: "bg-gray-50 hover:bg-gray-100 text-gray-700 hover:text-gray-900 font-medium -mt-2", icon: IconProp.Add, iconClassName: "", onClick: () => {
142
150
  setShowCreateNewViewModel(true);
143
151
  } }));
@@ -200,6 +208,9 @@ const TableViewElement = (props) => {
200
208
  if (props.currentFacetState) {
201
209
  tableView.facets = props.currentFacetState;
202
210
  }
211
+ if (props.currentColumns) {
212
+ tableView.columns = props.currentColumns;
213
+ }
203
214
  return Promise.resolve(tableView);
204
215
  }, onSuccess: async (tableView) => {
205
216
  var _a;
@@ -262,7 +273,7 @@ const TableViewElement = (props) => {
262
273
  };
263
274
  if (!isLoading &&
264
275
  allTableViews.length === 0 &&
265
- !hasActiveFilters &&
276
+ !hasSavableState &&
266
277
  !currentlySelectedView) {
267
278
  return React.createElement(React.Fragment, null);
268
279
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TableView.js","sourceRoot":"","sources":["../../../../../UI/Components/ModelTable/TableView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TableView.js","sourceRoot":"","sources":["../../../../../UI/Components/ModelTable/TableView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { getCustomFieldColumns, getCustomFieldDefinitions, } from "./CustomFieldColumns";
2
+ import ModelAPI from "../../Utils/ModelAPI/ModelAPI";
3
+ import ProjectUtil from "../../Utils/Project";
4
+ import { Logger } from "../../Utils/Logger";
5
+ import { LIMIT_PER_PROJECT } from "../../../Types/Database/LimitMax";
6
+ import { useEffect, useMemo, useState } from "react";
7
+ const useCustomFieldColumns = (data) => {
8
+ var _a;
9
+ const { customFieldsModelType } = data;
10
+ const [definitions, setDefinitions] = useState([]);
11
+ const [isLoading, setIsLoading] = useState(false);
12
+ const [error, setError] = useState("");
13
+ const projectId = (_a = data.projectId) !== null && _a !== void 0 ? _a : ProjectUtil.getCurrentProjectId();
14
+ const projectIdString = (projectId === null || projectId === void 0 ? void 0 : projectId.toString()) || "";
15
+ const modelName = (customFieldsModelType === null || customFieldsModelType === void 0 ? void 0 : customFieldsModelType.name) || "";
16
+ useEffect(() => {
17
+ if (!customFieldsModelType || !projectId) {
18
+ setDefinitions([]);
19
+ return;
20
+ }
21
+ let isCancelled = false;
22
+ const load = async () => {
23
+ setIsLoading(true);
24
+ setError("");
25
+ try {
26
+ const result = await ModelAPI.getList({
27
+ modelType: customFieldsModelType,
28
+ query: {
29
+ projectId: projectId,
30
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
+ },
32
+ limit: LIMIT_PER_PROJECT,
33
+ skip: 0,
34
+ select: {
35
+ name: true,
36
+ customFieldType: true,
37
+ description: true,
38
+ dropdownOptions: true,
39
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
+ },
41
+ sort: {},
42
+ });
43
+ if (isCancelled) {
44
+ return;
45
+ }
46
+ setDefinitions(getCustomFieldDefinitions(result.data || []));
47
+ }
48
+ catch (err) {
49
+ if (isCancelled) {
50
+ return;
51
+ }
52
+ /*
53
+ * Custom fields are a paid feature and the caller may not have read
54
+ * access to the definition table, so a failure here is expected in
55
+ * normal operation. It costs the viewer some optional columns; it must
56
+ * never take the table down with it.
57
+ */
58
+ Logger.warn(`Could not load custom field definitions for ${modelName}: ${(err === null || err === void 0 ? void 0 : err.message) || String(err)}`);
59
+ setDefinitions([]);
60
+ setError((err === null || err === void 0 ? void 0 : err.message) || "");
61
+ }
62
+ finally {
63
+ if (!isCancelled) {
64
+ setIsLoading(false);
65
+ }
66
+ }
67
+ };
68
+ load().catch(() => {
69
+ // load() already funnels every failure into the catch above.
70
+ });
71
+ return () => {
72
+ isCancelled = true;
73
+ };
74
+ }, [modelName, projectIdString]);
75
+ const columns = useMemo(() => {
76
+ if (definitions.length === 0) {
77
+ return [];
78
+ }
79
+ return getCustomFieldColumns({ definitions });
80
+ }, [definitions]);
81
+ return { columns, definitions, isLoading, error };
82
+ };
83
+ export default useCustomFieldColumns;
84
+ //# sourceMappingURL=useCustomFieldColumns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCustomFieldColumns.js","sourceRoot":"","sources":["../../../../../UI/Components/ModelTable/useCustomFieldColumns.ts"],"names":[],"mappings":"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"}