@oneuptime/common 10.5.31 → 10.5.32

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 (52) hide show
  1. package/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.ts +45 -0
  2. package/Models/AnalyticsModels/AuditLog.ts +3 -0
  3. package/Models/AnalyticsModels/ExceptionInstance.ts +3 -0
  4. package/Models/AnalyticsModels/Index.ts +2 -0
  5. package/Models/AnalyticsModels/Log.ts +3 -0
  6. package/Models/AnalyticsModels/Metric.ts +3 -0
  7. package/Models/AnalyticsModels/Span.ts +3 -0
  8. package/Models/DatabaseModels/Index.ts +4 -0
  9. package/Models/DatabaseModels/MetricSavedView.ts +334 -0
  10. package/Models/DatabaseModels/TraceSavedView.ts +334 -0
  11. package/Server/Infrastructure/Postgres/SchemaMigrations/1780645560183-AddMetricAndTraceSavedView.ts +81 -0
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
  13. package/Server/Services/MetricSavedViewService.ts +109 -0
  14. package/Server/Services/TraceSavedViewService.ts +109 -0
  15. package/Types/Telemetry/TelemetrySavedViewState.ts +26 -0
  16. package/UI/Components/Table/TableHeader.tsx +6 -2
  17. package/UI/Components/TelemetryViewer/components/SavedViewsDropdown.tsx +175 -0
  18. package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js +32 -0
  19. package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js.map +1 -1
  20. package/build/dist/Models/AnalyticsModels/AuditLog.js +2 -0
  21. package/build/dist/Models/AnalyticsModels/AuditLog.js.map +1 -1
  22. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +2 -0
  23. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
  24. package/build/dist/Models/AnalyticsModels/Index.js +2 -0
  25. package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
  26. package/build/dist/Models/AnalyticsModels/Log.js +2 -0
  27. package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
  28. package/build/dist/Models/AnalyticsModels/Metric.js +2 -0
  29. package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
  30. package/build/dist/Models/AnalyticsModels/Span.js +2 -0
  31. package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
  32. package/build/dist/Models/DatabaseModels/Index.js +4 -0
  33. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  34. package/build/dist/Models/DatabaseModels/MetricSavedView.js +356 -0
  35. package/build/dist/Models/DatabaseModels/MetricSavedView.js.map +1 -0
  36. package/build/dist/Models/DatabaseModels/TraceSavedView.js +356 -0
  37. package/build/dist/Models/DatabaseModels/TraceSavedView.js.map +1 -0
  38. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780645560183-AddMetricAndTraceSavedView.js +34 -0
  39. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780645560183-AddMetricAndTraceSavedView.js.map +1 -0
  40. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
  41. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  42. package/build/dist/Server/Services/MetricSavedViewService.js +82 -0
  43. package/build/dist/Server/Services/MetricSavedViewService.js.map +1 -0
  44. package/build/dist/Server/Services/TraceSavedViewService.js +82 -0
  45. package/build/dist/Server/Services/TraceSavedViewService.js.map +1 -0
  46. package/build/dist/Types/Telemetry/TelemetrySavedViewState.js +9 -0
  47. package/build/dist/Types/Telemetry/TelemetrySavedViewState.js.map +1 -0
  48. package/build/dist/UI/Components/Table/TableHeader.js +2 -2
  49. package/build/dist/UI/Components/Table/TableHeader.js.map +1 -1
  50. package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js +58 -0
  51. package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js.map +1 -0
  52. package/package.json +1 -1
@@ -0,0 +1,82 @@
1
+ import DatabaseService from "./DatabaseService";
2
+ import Model from "../../Models/DatabaseModels/TraceSavedView";
3
+ import QueryHelper from "../Types/Database/QueryHelper";
4
+ import LIMIT_MAX from "../../Types/Database/LimitMax";
5
+ export class Service extends DatabaseService {
6
+ constructor() {
7
+ super(Model);
8
+ }
9
+ async onBeforeCreate(createBy) {
10
+ if (createBy.data.isDefault === undefined && createBy.data.projectId) {
11
+ const existingDefaultView = await this.findOneBy({
12
+ query: {
13
+ projectId: createBy.data.projectId,
14
+ isDefault: true,
15
+ },
16
+ select: {
17
+ _id: true,
18
+ },
19
+ props: {
20
+ isRoot: true,
21
+ },
22
+ });
23
+ createBy.data.isDefault = !existingDefaultView;
24
+ }
25
+ if (createBy.data.projectId) {
26
+ await this.unsetOtherDefaultsIfNeeded({
27
+ projectId: createBy.data.projectId,
28
+ isDefault: createBy.data.isDefault || false,
29
+ });
30
+ }
31
+ return { createBy, carryForward: null };
32
+ }
33
+ async onBeforeUpdate(updateBy) {
34
+ if (updateBy.data.isDefault !== true) {
35
+ return { updateBy, carryForward: null };
36
+ }
37
+ const itemsToUpdate = await this.findBy({
38
+ query: updateBy.query,
39
+ select: {
40
+ _id: true,
41
+ projectId: true,
42
+ },
43
+ props: {
44
+ isRoot: true,
45
+ },
46
+ limit: LIMIT_MAX,
47
+ skip: 0,
48
+ });
49
+ for (const item of itemsToUpdate) {
50
+ if (item.projectId) {
51
+ await this.unsetOtherDefaultsIfNeeded({
52
+ projectId: item.projectId,
53
+ isDefault: true,
54
+ excludeIds: item._id ? [item._id] : [],
55
+ });
56
+ }
57
+ }
58
+ return { updateBy, carryForward: null };
59
+ }
60
+ async unsetOtherDefaultsIfNeeded(data) {
61
+ if (!data.projectId || !data.isDefault) {
62
+ return;
63
+ }
64
+ await this.updateBy({
65
+ query: Object.assign({ projectId: data.projectId, isDefault: true }, (data.excludeIds && data.excludeIds.length > 0
66
+ ? {
67
+ _id: QueryHelper.notInOrNull(data.excludeIds),
68
+ }
69
+ : {})),
70
+ data: {
71
+ isDefault: false,
72
+ },
73
+ props: {
74
+ isRoot: true,
75
+ },
76
+ limit: LIMIT_MAX,
77
+ skip: 0,
78
+ });
79
+ }
80
+ }
81
+ export default new Service();
82
+ //# sourceMappingURL=TraceSavedViewService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TraceSavedViewService.js","sourceRoot":"","sources":["../../../../Server/Services/TraceSavedViewService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,4CAA4C,CAAC;AAK/D,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,SAAS,MAAM,+BAA+B,CAAC;AAEtD,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEkB,KAAK,CAAC,cAAc,CACrC,QAAyB;QAEzB,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrE,MAAM,mBAAmB,GAAiB,MAAM,IAAI,CAAC,SAAS,CAAC;gBAC7D,KAAK,EAAE;oBACL,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS;oBAClC,SAAS,EAAE,IAAI;iBAChB;gBACD,MAAM,EAAE;oBACN,GAAG,EAAE,IAAI;iBACV;gBACD,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb;aACF,CAAC,CAAC;YAEH,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,mBAAmB,CAAC;QACjD,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,0BAA0B,CAAC;gBACpC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS;gBAClC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK;aAC5C,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAEkB,KAAK,CAAC,cAAc,CACrC,QAAyB;QAEzB,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YACrC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,aAAa,GAAiB,MAAM,IAAI,CAAC,MAAM,CAAC;YACpD,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,MAAM,EAAE;gBACN,GAAG,EAAE,IAAI;gBACT,SAAS,EAAE,IAAI;aAChB;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;YACD,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,CAAC;SACR,CAAC,CAAC;QAEH,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,0BAA0B,CAAC;oBACpC,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,SAAS,EAAE,IAAI;oBACf,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;iBACvC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,IAIxC;QACC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC;YAClB,KAAK,kBACH,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,SAAS,EAAE,IAAI,IACZ,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBAC/C,CAAC,CAAC;oBACE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;iBAC9C;gBACH,CAAC,CAAC,EAAE,CAAC,CACR;YACD,IAAI,EAAE;gBACJ,SAAS,EAAE,KAAK;aACjB;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;YACD,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,CAAC;SACR,CAAC,CAAC;IACL,CAAC;CACF;AAED,eAAe,IAAI,OAAO,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ /*
2
+ * Serializable view state for the Metrics and Traces explorers. Stored in the
3
+ * `query` JSONB column of MetricSavedView / TraceSavedView. This is the same
4
+ * state each viewer already mirrors to the URL (search string, facet filter
5
+ * tuples, time range, page size), so capture/apply reuses logic that is proven
6
+ * to round-trip.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=TelemetrySavedViewState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetrySavedViewState.js","sourceRoot":"","sources":["../../../../Types/Telemetry/TelemetrySavedViewState.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -23,9 +23,9 @@ const TableHeader = (props) => {
23
23
  return (React.createElement("thead", { className: "bg-gray-50", id: props.id },
24
24
  React.createElement("tr", null,
25
25
  props.enableDragAndDrop && (React.createElement("th", { scope: "col" },
26
- React.createElement("span", { className: "sr-only" }, "Drag to reorder"))),
26
+ React.createElement("span", { className: "sr-only" }, translateString("Drag to reorder")))),
27
27
  props.isBulkActionsEnabled && (React.createElement("th", { scope: "col" },
28
- React.createElement("span", { className: "sr-only" }, "Select all items"),
28
+ React.createElement("span", { className: "sr-only" }, translateString("Select all items")),
29
29
  React.createElement("div", { className: "ml-5" },
30
30
  React.createElement(CheckboxElement, { disabled: !props.hasTableItems, value: selectBulkSelectCheckbox, onChange: (value) => {
31
31
  if (value) {
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../../../UI/Components/Table/TableHeader.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../../../UI/Components/Table/TableHeader.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import React from "react";
2
+ import useComponentOutsideClick from "../../../Types/UseComponentOutsideClick";
3
+ 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";
4
+ const SavedViewsDropdown = (props) => {
5
+ const { ref, isComponentVisible, setIsComponentVisible } = useComponentOutsideClick(false);
6
+ const selectedView = props.savedViews.find((view) => {
7
+ return view.id === props.selectedSavedViewId;
8
+ });
9
+ return (React.createElement("div", { className: "relative", ref: ref },
10
+ React.createElement("button", { type: "button", className: triggerButtonClassName, onClick: () => {
11
+ setIsComponentVisible(!isComponentVisible);
12
+ }, "aria-haspopup": "dialog", "aria-expanded": isComponentVisible },
13
+ React.createElement("span", { className: "max-w-40 truncate" }, (selectedView === null || selectedView === void 0 ? void 0 : selectedView.name) || "Saved Views"),
14
+ React.createElement("span", { className: "text-xs text-gray-400" }, props.savedViews.length.toLocaleString())),
15
+ isComponentVisible && (React.createElement("div", { className: "absolute left-0 z-20 mt-2 w-72 rounded-lg border border-gray-200 bg-white shadow-xl" },
16
+ React.createElement("div", { className: "max-h-72 overflow-y-auto py-1" },
17
+ props.savedViews.length === 0 && (React.createElement("div", { className: "px-3 py-6 text-center text-xs text-gray-400" }, "No saved views yet.")),
18
+ props.savedViews.map((view) => {
19
+ const isSelected = view.id === props.selectedSavedViewId;
20
+ return (React.createElement("div", { key: view.id, className: `group flex items-center justify-between gap-2 px-3 py-1.5 ${isSelected ? "bg-indigo-50" : "hover:bg-gray-50"}` },
21
+ React.createElement("button", { type: "button", className: "flex min-w-0 flex-1 items-center gap-2 text-left", onClick: () => {
22
+ props.onSelect(view.id);
23
+ setIsComponentVisible(false);
24
+ } },
25
+ React.createElement("span", { className: "w-4 shrink-0 text-center text-xs" }, isSelected ? (React.createElement("span", { className: "text-indigo-600" }, "\u2713")) : ("")),
26
+ React.createElement("span", { className: `truncate text-sm ${isSelected
27
+ ? "font-medium text-indigo-700"
28
+ : "text-gray-700"}` }, view.name),
29
+ view.isDefault && (React.createElement("span", { className: "shrink-0 text-[10px] text-gray-400" }, "default"))),
30
+ React.createElement("div", { className: "flex shrink-0 items-center gap-0.5 opacity-0 group-hover:opacity-100" },
31
+ isSelected && props.onUpdateCurrent && (React.createElement("button", { type: "button", className: "rounded px-1.5 py-0.5 text-[11px] text-indigo-600 transition-colors hover:bg-indigo-100", onClick: (event) => {
32
+ var _a;
33
+ event.stopPropagation();
34
+ (_a = props.onUpdateCurrent) === null || _a === void 0 ? void 0 : _a.call(props);
35
+ setIsComponentVisible(false);
36
+ } }, "Update")),
37
+ props.onEdit && (React.createElement("button", { type: "button", className: "rounded px-1.5 py-0.5 text-[11px] text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700", onClick: (event) => {
38
+ var _a;
39
+ event.stopPropagation();
40
+ (_a = props.onEdit) === null || _a === void 0 ? void 0 : _a.call(props, view.id);
41
+ setIsComponentVisible(false);
42
+ } }, "Edit")),
43
+ props.onDelete && (React.createElement("button", { type: "button", className: "rounded px-1.5 py-0.5 text-[11px] text-red-500 transition-colors hover:bg-red-50 hover:text-red-600", onClick: (event) => {
44
+ var _a;
45
+ event.stopPropagation();
46
+ (_a = props.onDelete) === null || _a === void 0 ? void 0 : _a.call(props, view.id);
47
+ setIsComponentVisible(false);
48
+ } }, "Delete")))));
49
+ })),
50
+ props.onCreate && (React.createElement("div", { className: "border-t border-gray-100 px-3 py-2" },
51
+ React.createElement("button", { type: "button", className: "w-full rounded-md px-2 py-1.5 text-left text-xs font-medium text-indigo-600 transition-colors hover:bg-indigo-50", onClick: () => {
52
+ var _a;
53
+ (_a = props.onCreate) === null || _a === void 0 ? void 0 : _a.call(props);
54
+ setIsComponentVisible(false);
55
+ } }, "+ Save Current View")))))));
56
+ };
57
+ export default SavedViewsDropdown;
58
+ //# sourceMappingURL=SavedViewsDropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SavedViewsDropdown.js","sourceRoot":"","sources":["../../../../../../UI/Components/TelemetryViewer/components/SavedViewsDropdown.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneuptime/common",
3
- "version": "10.5.31",
3
+ "version": "10.5.32",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",