@oneuptime/common 10.5.30 → 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.
- package/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.ts +45 -0
- package/Models/AnalyticsModels/AuditLog.ts +3 -0
- package/Models/AnalyticsModels/ExceptionInstance.ts +3 -0
- package/Models/AnalyticsModels/Index.ts +2 -0
- package/Models/AnalyticsModels/Log.ts +3 -0
- package/Models/AnalyticsModels/Metric.ts +3 -0
- package/Models/AnalyticsModels/Span.ts +3 -0
- package/Models/DatabaseModels/Index.ts +4 -0
- package/Models/DatabaseModels/MetricSavedView.ts +334 -0
- package/Models/DatabaseModels/TraceSavedView.ts +334 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780645560183-AddMetricAndTraceSavedView.ts +81 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
- package/Server/Services/MetricSavedViewService.ts +109 -0
- package/Server/Services/TraceSavedViewService.ts +109 -0
- package/Types/Telemetry/TelemetrySavedViewState.ts +26 -0
- package/UI/Components/Table/TableHeader.tsx +6 -2
- package/UI/Components/TelemetryViewer/components/SavedViewsDropdown.tsx +175 -0
- package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js +32 -0
- package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/AuditLog.js +2 -0
- package/build/dist/Models/AnalyticsModels/AuditLog.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +2 -0
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Index.js +2 -0
- package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Log.js +2 -0
- package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Metric.js +2 -0
- package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Span.js +2 -0
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +4 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MetricSavedView.js +356 -0
- package/build/dist/Models/DatabaseModels/MetricSavedView.js.map +1 -0
- package/build/dist/Models/DatabaseModels/TraceSavedView.js +356 -0
- package/build/dist/Models/DatabaseModels/TraceSavedView.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780645560183-AddMetricAndTraceSavedView.js +34 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780645560183-AddMetricAndTraceSavedView.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/MetricSavedViewService.js +82 -0
- package/build/dist/Server/Services/MetricSavedViewService.js.map +1 -0
- package/build/dist/Server/Services/TraceSavedViewService.js +82 -0
- package/build/dist/Server/Services/TraceSavedViewService.js.map +1 -0
- package/build/dist/Types/Telemetry/TelemetrySavedViewState.js +9 -0
- package/build/dist/Types/Telemetry/TelemetrySavedViewState.js.map +1 -0
- package/build/dist/UI/Components/Table/TableHeader.js +2 -2
- package/build/dist/UI/Components/Table/TableHeader.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js +58 -0
- package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js.map +1 -0
- 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":"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"}
|
|
@@ -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":"AAAA,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAG3C,OAAO,SAAS,EAAE,EAChB,sBAAsB,GACvB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,QAAQ,MAAM,8BAA8B,CAAC;AACpD,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,EAAgB,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAoBjE,MAAM,WAAW,GAAwB,CACvC,KAAwB,EACV,EAAE;IAChB,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAChD,4CAA4C;IAC5C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAEzD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAAe,GAAS,EAAE;YACzC,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,gBAAgB;QACxD,CAAC,CAAC;QAEF,WAAW,EAAE,CAAC;QACd,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE/C,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,wBAAwB,GAAY,OAAO,CAC/C,KAAK,CAAC,2BAA2B,IAAI,KAAK,CAAC,aAAa,CACzD,CAAC;IAEF,OAAO,CACL,+BAAO,SAAS,EAAC,YAAY,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE;QACxC;YACG,KAAK,CAAC,iBAAiB,IAAI,CAC1B,4BAAI,KAAK,EAAC,KAAK;gBACb,8BAAM,SAAS,EAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../../../UI/Components/Table/TableHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAG3C,OAAO,SAAS,EAAE,EAChB,sBAAsB,GACvB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,QAAQ,MAAM,8BAA8B,CAAC;AACpD,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,EAAgB,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAoBjE,MAAM,WAAW,GAAwB,CACvC,KAAwB,EACV,EAAE;IAChB,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAChD,4CAA4C;IAC5C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAEzD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAAe,GAAS,EAAE;YACzC,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,gBAAgB;QACxD,CAAC,CAAC;QAEF,WAAW,EAAE,CAAC;QACd,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE/C,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,wBAAwB,GAAY,OAAO,CAC/C,KAAK,CAAC,2BAA2B,IAAI,KAAK,CAAC,aAAa,CACzD,CAAC;IAEF,OAAO,CACL,+BAAO,SAAS,EAAC,YAAY,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE;QACxC;YACG,KAAK,CAAC,iBAAiB,IAAI,CAC1B,4BAAI,KAAK,EAAC,KAAK;gBACb,8BAAM,SAAS,EAAC,SAAS,IACtB,eAAe,CAAC,iBAAiB,CAAC,CAC9B,CACJ,CACN;YACA,KAAK,CAAC,oBAAoB,IAAI,CAC7B,4BAAI,KAAK,EAAC,KAAK;gBACb,8BAAM,SAAS,EAAC,SAAS,IACtB,eAAe,CAAC,kBAAkB,CAAC,CAC/B;gBACP,6BAAK,SAAS,EAAC,MAAM;oBACnB,oBAAC,eAAe,IACd,QAAQ,EAAE,CAAC,KAAK,CAAC,aAAa,EAC9B,KAAK,EAAE,wBAAwB,EAC/B,QAAQ,EAAE,CAAC,KAAc,EAAE,EAAE;4BAC3B,IAAI,KAAK,EAAE,CAAC;gCACV,IAAI,KAAK,CAAC,2BAA2B,EAAE,CAAC;oCACtC,KAAK,CAAC,2BAA2B,EAAE,CAAC;gCACtC,CAAC;4BACH,CAAC;iCAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;gCACtC,KAAK,CAAC,oBAAoB,EAAE,CAAC;4BAC/B,CAAC;wBACH,CAAC,GACD,CACE,CACH,CACN;YACA,KAAK,CAAC,OAAO;iBACX,MAAM,CAAC,CAAC,MAAiB,EAAE,EAAE;gBAC5B,OAAO,CAAC,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC;YAC5C,CAAC,CAAC;iBACD,GAAG,CAAC,CAAC,MAAiB,EAAE,CAAS,EAAE,EAAE;;gBACpC,MAAM,OAAO,GAAY,CAAC,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAEpE,MAAM,QAAQ,GAAY,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC;gBACjE,MAAM,QAAQ,GACZ,QAAQ;oBACN,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC;oBACzC,CAAC,CAAC,OAAO;wBACP,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,SAAS,CAAC;gBAElB,OAAO,CACL,4BACE,GAAG,EAAE,CAAC,EACN,KAAK,EAAC,KAAK,eACA,QAAQ,EACnB,SAAS,EAAE,2DACT,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAC/B,EAAE,EACF,OAAO,EAAE,GAAG,EAAE;wBACZ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;4BAChB,OAAO;wBACT,CAAC;wBAED,IAAI,CAAC,OAAO,EAAE,CAAC;4BACb,OAAO;wBACT,CAAC;wBAED,MAAM,SAAS,GACb,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;4BACrC,CAAC,CAAC,SAAS,CAAC,UAAU;4BACtB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC;wBAE1B,MAAM,iBAAiB,GAAY,MAAM,CAAC,GAAG,CAAC;wBAE9C,KAAK,CAAC,aAAa,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;oBACpD,CAAC;oBAED,6BACE,SAAS,EAAE,QACT,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO;4BAC/B,CAAC,CAAC,aAAa;4BACf,CAAC,CAAC,eACN,EAAE,IAED,MAAA,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAI,MAAM,CAAC,KAAK;wBAC7C,OAAO;4BACN,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG;4BAC3B,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,IAAI,CACzC,oBAAC,IAAI,IACH,IAAI,EAAE,QAAQ,CAAC,SAAS,EACxB,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,SAAS,EAAC,uFAAuF,GACjG,CACH;wBACF,OAAO;4BACN,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG;4BAC3B,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,UAAU,IAAI,CAC1C,oBAAC,IAAI,IACH,IAAI,EAAE,QAAQ,CAAC,WAAW,EAC1B,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,SAAS,EAAC,sFAAsF,GAChG,CACH,CACC,CACH,CACN,CAAC;YACJ,CAAC,CAAC,CACD,CACC,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -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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"}
|