@oneuptime/common 10.2.4 → 10.2.7
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.
- package/Models/DatabaseModels/Service.ts +26 -0
- package/Server/API/GlobalConfigAPI.ts +13 -16
- package/Server/Infrastructure/Postgres/SchemaMigrations/1778582583897-MigrationName.ts +15 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
- package/Server/Services/OpenTelemetryIngestService.ts +15 -0
- package/Server/Services/ServiceService.ts +37 -0
- package/Server/Types/Database/QueryHelper.ts +38 -0
- package/Server/Types/Database/QueryUtil.ts +77 -0
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +52 -0
- package/Types/BaseDatabase/MultiSearch.ts +53 -0
- package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
- package/Types/Dashboard/DashboardComponents/DashboardChartComponent.ts +2 -0
- package/Types/JSON.ts +3 -0
- package/Types/SerializableObjectDictionary.ts +2 -0
- package/UI/Components/Header/ProjectPicker/ProjectPicker.tsx +11 -6
- package/UI/Components/LogsViewer/components/ColumnSelector.tsx +58 -4
- package/UI/Components/ModelTable/BaseModelTable.tsx +1026 -10
- package/UI/Components/ModelTable/TableView.tsx +58 -32
- package/UI/Utils/GlobalConfig.ts +55 -0
- package/Utils/Dashboard/Components/DashboardChartComponent.ts +11 -0
- package/build/dist/Models/DatabaseModels/Service.js +28 -0
- package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
- package/build/dist/Server/API/GlobalConfigAPI.js +10 -16
- package/build/dist/Server/API/GlobalConfigAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778582583897-MigrationName.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778582583897-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +11 -0
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/ServiceService.js +34 -0
- package/build/dist/Server/Services/ServiceService.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +33 -0
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryUtil.js +64 -0
- package/build/dist/Server/Types/Database/QueryUtil.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +44 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Types/BaseDatabase/MultiSearch.js +44 -0
- package/build/dist/Types/BaseDatabase/MultiSearch.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
- package/build/dist/Types/JSON.js +1 -0
- package/build/dist/Types/JSON.js.map +1 -1
- package/build/dist/Types/SerializableObjectDictionary.js +2 -0
- package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
- package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js +2 -2
- package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/ColumnSelector.js +33 -3
- package/build/dist/UI/Components/LogsViewer/components/ColumnSelector.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +618 -12
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/TableView.js +25 -18
- package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
- package/build/dist/UI/Utils/GlobalConfig.js +38 -0
- package/build/dist/UI/Utils/GlobalConfig.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardChartComponent.js +9 -0
- package/build/dist/Utils/Dashboard/Components/DashboardChartComponent.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useMemo, useState, } from "react";
|
|
2
|
-
import { DEFAULT_LOGS_TABLE_COLUMNS, normalizeLogsTableColumns, } from "../types";
|
|
2
|
+
import { DEFAULT_LOGS_TABLE_COLUMNS, getLogsAttributeColumnId, normalizeLogsTableColumns, } from "../types";
|
|
3
3
|
import useComponentOutsideClick from "../../../Types/UseComponentOutsideClick";
|
|
4
4
|
const triggerButtonClassName = "inline-flex items-center gap-1.5 rounded-md border border-gray-200 bg-white px-2.5 py-1.5 text-xs font-medium text-gray-700 shadow-sm transition-colors hover:border-gray-300 hover:bg-gray-50";
|
|
5
5
|
const actionButtonClassName = "rounded-md px-2 py-1 text-xs font-medium text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700";
|
|
@@ -34,6 +34,18 @@ const ColumnSelector = (props) => {
|
|
|
34
34
|
return column.label.toLowerCase().includes(normalizedSearchQuery);
|
|
35
35
|
});
|
|
36
36
|
}, [props.availableColumns, searchQuery, selectedColumnIds]);
|
|
37
|
+
const trimmedAttributeKey = searchQuery.trim();
|
|
38
|
+
const customAttributeColumnId = trimmedAttributeKey
|
|
39
|
+
? getLogsAttributeColumnId(trimmedAttributeKey)
|
|
40
|
+
: "";
|
|
41
|
+
const isCustomAttributeAlreadySelected = customAttributeColumnId !== "" &&
|
|
42
|
+
selectedColumnIds.includes(customAttributeColumnId);
|
|
43
|
+
const isCustomAttributeAlreadyAvailable = availableColumns.some((column) => {
|
|
44
|
+
return column.id === customAttributeColumnId;
|
|
45
|
+
});
|
|
46
|
+
const canAddCustomAttribute = trimmedAttributeKey !== "" &&
|
|
47
|
+
!isCustomAttributeAlreadySelected &&
|
|
48
|
+
!isCustomAttributeAlreadyAvailable;
|
|
37
49
|
const updateColumns = (columns) => {
|
|
38
50
|
props.onChange(normalizeLogsTableColumns(columns));
|
|
39
51
|
};
|
|
@@ -100,9 +112,27 @@ const ColumnSelector = (props) => {
|
|
|
100
112
|
React.createElement("p", { className: "text-[11px] font-semibold uppercase tracking-wider text-gray-400" }, "Available"),
|
|
101
113
|
React.createElement("input", { value: searchQuery, onChange: (event) => {
|
|
102
114
|
setSearchQuery(event.target.value);
|
|
103
|
-
},
|
|
115
|
+
}, onKeyDown: (event) => {
|
|
116
|
+
if (event.key === "Enter" && canAddCustomAttribute) {
|
|
117
|
+
event.preventDefault();
|
|
118
|
+
addColumn(customAttributeColumnId);
|
|
119
|
+
setSearchQuery("");
|
|
120
|
+
}
|
|
121
|
+
}, placeholder: "Search or type attribute", className: "w-48 rounded-md border border-gray-200 px-2 py-1 text-xs text-gray-600 focus:border-indigo-300 focus:outline-none focus:ring-2 focus:ring-indigo-100" })),
|
|
104
122
|
React.createElement("div", { className: "max-h-72 space-y-2 overflow-y-auto pr-1" },
|
|
105
|
-
|
|
123
|
+
canAddCustomAttribute && (React.createElement("div", { className: "flex items-center justify-between rounded-md border border-dashed border-indigo-200 bg-indigo-50/50 px-3 py-2" },
|
|
124
|
+
React.createElement("div", { className: "min-w-0 flex-1" },
|
|
125
|
+
React.createElement("p", { className: "truncate text-sm text-gray-700" },
|
|
126
|
+
React.createElement("span", { className: "text-gray-500" }, "Attribute: "),
|
|
127
|
+
React.createElement("span", { className: "font-mono" }, trimmedAttributeKey)),
|
|
128
|
+
React.createElement("p", { className: "text-[11px] text-gray-500" }, "Add as a column to show this attribute's value.")),
|
|
129
|
+
React.createElement("button", { type: "button", className: "ml-3 rounded-md px-2 py-1 text-xs font-medium text-indigo-600 transition-colors hover:bg-indigo-100 hover:text-indigo-700", onClick: () => {
|
|
130
|
+
addColumn(customAttributeColumnId);
|
|
131
|
+
setSearchQuery("");
|
|
132
|
+
} }, "Add attribute"))),
|
|
133
|
+
availableColumns.length === 0 && !canAddCustomAttribute && (React.createElement("div", { className: "rounded-md border border-dashed border-gray-200 px-3 py-4 text-sm text-gray-500" }, trimmedAttributeKey
|
|
134
|
+
? "No matching columns available."
|
|
135
|
+
: "Type an attribute name above to add it as a column.")),
|
|
106
136
|
availableColumns.map((column) => {
|
|
107
137
|
return (React.createElement("div", { key: column.id, className: "flex items-center justify-between rounded-md border border-gray-100 px-3 py-2" },
|
|
108
138
|
React.createElement("span", { className: "min-w-0 truncate text-sm text-gray-700" }, column.label),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnSelector.js","sourceRoot":"","sources":["../../../../../../UI/Components/LogsViewer/components/ColumnSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAIZ,OAAO,EACP,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EACL,0BAA0B,
|
|
1
|
+
{"version":3,"file":"ColumnSelector.js","sourceRoot":"","sources":["../../../../../../UI/Components/LogsViewer/components/ColumnSelector.tsx"],"names":[],"mappings":"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"}
|